В робототехнике, есть две основные задачи кинематики:
прямая и обратная.
Рассмотрим эти задачи на стандартном примере манипулятора.
Прямая задача — это вычисление положения (X, Y, Z) рабочего органа манипулятора по его кинематической схеме и заданной ориентации (A1, A2… An) его звеньев (n — число степеней свободы манипулятора, A — углы поворота).
Обратная задача — это вычисление углов (A1, A2… An) по заданному положению (X, Y, Z) рабочего органа и опять же известной схеме его кинематики.
Т.о., решение прямой задачи говорит — где будет находиться рабочий орган манипулятора, при заданных углах его суставов, а обратная задача, наоборот, говорит: как нужно «вывернуться» манипулятору, чтобы его рабочий орган оказался в заданном положении.
Очевидно, что более распространённой и важной является именно обратная задача кинематики.
Но нужно иметь в виду, что эта задача редко может быть решена однозначно.
Дело в том, что хотя для углов (A1, A2, …, An) всегда существует ЕДИНСТВЕННОЕ положение (X, Y, Z) рабочего органа, но не факт, что для положения (X, Y, Z) отыщется такая же единственная комбинация углов (A1, A2, …, An).
Скорее всего, достичь заданного положения (X, Y, Z) возможно и при другой комбинации углов (A1′, A2′, …, An’).
При решении обратной задачи аналитически, эта неоднозначность проявляется в явном виде (например, через квадратные корни).
Рассмотрим пример прямой задачи кинематики.
у нас есть манипулятор, способный работать только в одной плоскости и имеющий два сустава.
Первый сустав L1 закреплён на основании и повёрнут на угол Q1,
второй сустав L2, крепится к концу первого сустава и повёрнут относительно него на угол Q2.
Рабочий орган манипулятора находится на конце второго сустава.
Прямая задача кинематики состоит в нахождении координат рабочего органа (x, y) по заданным L1, L2, Q1, Q2.
L1 и L2 — это, соответственно, длины плеча и локтя манипулятора; определены конструкцией манипулятора.
Решение:
здесь, мы имеем две системы отсчёта — первая, связанная с точкой крепления плеча L1 — O, а вторая — с началом координат в точке крепления локтя — A.
Найдём смещение второй системы относительно первой (координаты точки A в системе отсчёта O):
XA = L1*cos(Q1) YA = L1*sin(Q1)
Координаты (x, y) в системе отсчёта локтя:
x'' = L2*cos(Q2) y'' = L2*sin(Q2)
По рисунку видно, что в системе O, локоть L2 повёрнут относительно плеча на Q1+Q2:
x' = L2*cos(Q1+Q2) y' = L2*sin(Q1+Q2)
т.о.:
x = XA + x' = L1*cos(Q1) + L2*cos(Q1+Q2) y = YA + y' = L1*sin(Q1) + L2*sin(Q1+Q2)
Теперь, рассмотрим пример обратной задачи кинематики.
тот же рисунок, но теперь нужно найти такие углы Q1 и Q2, которые позволят манипулятору с плечом L1 и локтем L2 поместить рабочий орган в заданную точку (x, y)
Проведём прямую B, соединяющую начало координат O с заданной точкой (x, y).
B^2 = x^2 + y^2 x = B*cos(q1) y = B*sin(q1)
q1 — угол между осью OX и прямой B
q2 — угол между прямой B и плечом L1
отсюда:
Q1 = q1 - q2
q1 = arccos( x/B ) или q1 = arctg( y/x )
, а q2 находим при помощи теоремы косинусов, которая говорит:
Для плоского треугольника со сторонами a,b,c и углом alpha, противолежащим стороне a, справедливо соотношение:
a^2 = b^2 + c^2 - 2*b*c*cos(alpha)
в нашем случае, по теореме косинусов:
L2^2 = B^2 + L1^2 - 2*B*L1*cos(q2) => q2 = arccos( L1^2 - L2^2 + B^2 / 2*B*L1 ) Q1 = q1 - q2 = arccos( x/B ) - arccos( L1^2 - L2^2 + B^2 / 2*B*L1 )
по той же теореме косинусов найдём угол Q2:
как видно по рисунку, угол Q2 равен 180 — угол OAx
В^2 = L1^2 + L2^2 - 2*L1*L2*cos(PI - Q2) Q2 = PI - arccos( L1^2 + L2^2 - B^2 / 2*L1*L2 )
Очевидно, что руку можно расположить и по-другому:
формулы для Q1 и Q2 не изменятся, но изменятся знаки углов:
Q1 = q1 + q2
а Q2 нужно брать с противоположным знаком.
Откуда берётся изменение знака? Из вычисления квадратного корня, которое всегда даёт ответ со знаком плюс-минус.
Ссылки
http://ru.wikipedia.org/wiki/Прямая_кинематика
http://ru.wikipedia.org/wiki/Инверсная_кинематика
http://ru.wikipedia.org/wiki/Принципиальная_кинематическая_схема
http://ru.wikipedia.org/wiki/Теорема_косинусов
http://ru.wikipedia.org/wiki/Тригонометрические_формулы
Robot Forward Kinematics
Книги
К. Фу, Р. Гонсалес, К. Ли «Робототехника»
0 комментариев на «“Кинематика: прямая и обратная задачи”»
Что-то я силился понять, как автор решает обратную задачу, но так и не смог. А между тем простейшее и правильное решение приведено в готовом виде по последней ссылке:http://www.learnaboutrobots.com/forwardKinematics.htm . И не надо чередить ничего с «проведем прямую». Длины известны, углы известны, взяли и посчитали.
В смысле, что на последнем рисунке углы q2 и q1 _ни к чему не относятся_. Они висят в воздухе. А по ссылке углы при вершинах в точках А и Б — это углы пропорциональные длительности управляющего импульса серв.
На странице «по последней ссылке» рассматривается прямая задача кинематики. Естественно, приведенные там формулы столь же просты, как и в первой части данного поста.
А «проведение прямой» — это обратная задача кинематики. Как совершенно справедливо сказано -задача, чуть более сложная, чем та, где действительно, просто «взяли и посчитали».
На термехе не так интересно было, спасибо. Сейчас актуально. И спасибо за литературу
а что делать если точка задется тремя координатами, как тогда считать обратную кинематику?
Решение для трёхмерного пространства можно посмотреть в приведённой книге — К. Фу, Р. Гонсалес, К. Ли «Робототехника»:
метод обратных преобразований (от обобщённой матрицы поворота и углы Эйлера),
геометрический подход (по сути, схож с рассмотренным).
Спасибо, интересный материал. А что будет если координаты X и Y < 0?