учитель детских курсов

Урок 7. Прямая и обратная задача кинематики

План

  1. Основные понятия кинематики
  2. Прямая задача кинематики
  3. Обратная задача кинематки

Теоретическая часть

1. Основные понятия кинематики

Теоретическая механика – наука об общих законах механических взаимодействий между материальными телами, а также об общих законах движения тел по отношению друг к другу.

Кинематика - это раздел теоретической механики, в котором изучается движение механических систем с геометрической точки зрения, без учета причин (сил), вызывающих это движение и изменение движения.

Кинематическая пара - соединение двух соприкасающихся звеньев, допускающее их относительное движение.

Кинематическая цепь – это система звеньев, которые связаны между собой кинематическими парами.

Кинематическая схема - это графическая схема отображения рабочих узлов и блоков механизма конструкции.

2. Прямая задача кинематики

Прямая задача кинематики заключается в нахождении координат конца кинематической цепи, при заданных длинах звеньев и углах между ними.

Рассмотрим пример прямой задачи для простейшей кинематической цепи с двумя наклонными звеньями, которая движется в одной плоскости.

прямая задача кинематики

Рисунок 1 — Прямая задача кинематики

Дано:

L1, L1, Q1, Q2.

Найти:

Х,У - ?

Решение:
Для решения этой задачи обозначим вторую систему координат, которая начинается в точке крепления второго звена. Ось у1 в ней является продолжением первого звена, а ось х1 перпендикулярна ему.
Сначала необходимо найти смещение начала координат второй системы относительно первой(координаты точки К в первой системе координат).

Хк = L1*cos(Q1)

Yк = L1*sin(Q1)

Далее аналогичным образом можно найти координаты точки Т во второй системе координат.

Xт = L2*cos(Q2)

Yт = L2*sin(Q2)

По рисунку видно, что в общей координатной системе, звено L2 повёрнуто относительно звена L1 на угол Q1-Q2:

Х'т = L2*cos(Q1-Q2)

У'е= L2*sin(Q1-Q2)

Теперь можно найти координаты точки Т в общей системе координат:

Х = Xк + Хт' = L1*cos(Q1) + L2*cos(Q1-Q2)

У = Yк + Ут'= L1*sin(Q1)+ L2*sin(Q1-Q2)

3. Обратная задача кинематики

Обратная задача кинематики состоит в нахождении углов между звеньями, при известных координатах конца кинематической цепи и длинах звеньев. Таким образом, с ее помощью можно найти углы, на которые нужно повернуть звенья для того, чтобы рабочий орган манипулятора, либо крайняя точка последнего звена любого другого устройства оказалась в заданной точке.

обратная задача кинематики

Рисунок 2 — Обратная задача кинематики

Дано:

L1, L1, Q1, Q2.

Найти:

Х,У - ?

Выполним дополнительные построения. Соеденим начало координат с точкой Т прямой D. Длину прямой D можно найти по теореме Пифагора:

D^2= x^2+ y^2

Угол Q2 можно представить как сумму углов q1, q2.

Q1=q1 + q2

Найдем эти углы. Угол q1 вычисляется по теореме Пифагора.

q1 = arcsin(y/D)

Угол q2 находим используя теорему синусов.
q2=arccos((L1^2+D^2-L2^2)/2L1L2)

отсюда:

Q1 = arcsin(y/D)+arccos((L1^2+D^2-L2^2)/2L1L2)

Т.к Q2=180-q3, находим угол q3, применяя теорему косинусов.

q3=arccos((L1^2+L2^2-D^2)/2L1L2)

Q2=180-arccos((L1^2+L2^2-D^2)/2L1L2)

Для удобства в программной реализации все выччисления будем вести в радианах. Поэтому заменяем 180° на П.

Q2=180-arccos((L1^2+L2^2-D^2)/2L1L2)

Очевидно, что для того, чтобы крайняя точка последнего звена оказалась в заданной точке, звенья можно разположить и подругому — в зеркальном отражении.

неоднозначность решения обратной задачи

Рисунок 3 — Альтернативное решение обратной задачи кинематики

Формулы для Q1 и Q2 не изменятся, но изменятся знаки углов. Для того, чтобы избежать двойных решений выражаем четную функцию (f(-x)=f(x)) arccos() на нечетную (f(-x)=-f(x)) arcsin() или arctg().

arccos(x)=П/2-arcsin(x)

Тогда формулы для углов будут иметь вид:

Q1 =П/2 + arcsin(y/D)-arcsin((L1^2+D^2-L2^2)/2L1L2)

Q2=П/2+arcsin((L1^2+L2^2-D^2)/2L1L2)

Практическая часть

Написать программу, в которой реализуется обратная задача кинематики ддля двузвенной кинематической цепи с двумя вращательными в одной плоскости звеньями.

#include <iоstream>
#include <mаth.h>

using namespace std;

int main()
{
float l1, l2, x, y;
cout <<"Длина первого звена";
cin >> l1;
cout <<"Длина второго звена";
cin >> l2;
cout <<"координата х";
cin >> x;
cout <<"координата y";
cin >> y;
float q1, q2, b;
const float Pi=3.1415;
b=sqrt(pow(x,2)+pow(y,2));
cout<<b;
if (b!=0)
{

q1=Pi-asin(x/b)-asin((pow(l1,2)+pow(b,2)-pow(l2,2))/(2 * b*l1));

q2=Pi/2+asin((pow(l1,2)+pow(l2,2)-pow(b,2))/(2 * l1*l2));
cout <<"q1 ="<<q1<<" ";
cout <<"q2 ="<<q2;
}
return 0;
}

 


Учебная программа курса BotBase

 

 


Похожие посты:

Механика роботов

Введение в программирование в Операционной Системе для Роботов (ROS)

0
Комментировать
Введите код: