Кинематика перемещений: от простого к сложному

Кинематика перемещений: от простого к сложному

Сообщение sezam » 12 июн 2014, 07:05

Приветствую форумчан!

Посмотрев пару недель назад статью http://robocraft.ru/blog/mechanics/756.html про прямую и инверсную кинематику, решил сваять программку для автоматического расчета всех параметров на основе данных только положения конечной точки манипулятора. Инверсная кинематика работает и искомые углы поворотов находит правильно.

В статье приводится анализ манипулятора, состоящего из двух звеньев и все звенья расположены в одной плоскости. В моём случае, манипулятор состоит из трех звеньев, причем первое звено движется в горизонтальной плоскости, а два других - в вертикальной. Исходными данными для анализа являются длины всех звеньев (L1=30, L2=60, L3=120 мм) и углы отклонения звеньев (фи1=45, фи20=117.4696994, фи31*=319.1955623 гр). фи20 - идет до звена L2* (не соответствует рисунку).

Положение всего манипулятора в горизонтальном пространстве находится элементарно, т.к. весь манипулятор вращается вокруг крепления с координатами (0,0,0) и в горизонтальной плоскости представляет собой прямую линию ():

Код: Выделить всё
// Находим гипотенузу из двух звеньев-катетов вертикальной плоскости
Rh:=sqrt(sqr(l2)+sqr(l3)-2*l2*l3*cos(((phi31*-180)*pi/180)));
// Находим общую проекцию на оси в горизонтальной плоскости из длины первого звена и гипотенузы
xh:= l1*sin(phi1*pi/180)+Rh*sin(phi1*pi/180);
yh:= l1*cos(phi1*pi/180)+Rh*cos(phi1*pi/180);


Забыл сказать, по этим формулам у меня строится график расположений звеньев в двух плоскостях.

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

Так вот, при построении графика в вертикальной плоскости - возникли трудности с правильным решением (в области формул) поставленной задачи.
Конечная точка для второго звена будет:

Код: Выделить всё
yo3*:= l1*cos(phi1*pi/180)+l2*cos(phi1*pi/180);
zo3*:= l2*cos(phi2*pi/180);


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

Код: Выделить всё
yh:= l1*cos(phi1*pi/180)+Rh*cos(phi1*pi/180);
zh:= l2*cos(phi2*pi/180)+l3*cos((phi2+phi3)*pi/180);


А теперь вопрос:
Прошу проверить все мои расчеты. Может где-то закралась ошибка, т.к. при построении графика, конечная точка манипулятора постоянно уходит не по вертикали, а по горизонтали с вычерчиванием непонятной дуги при изменении одной лишь высоты. По приведенным параметрам углов, точка должна оказаться на расстоянии (170,170,0) от центра вращения. При ручной проверки формул - вроде бы так и выходит, но хочу, чтобы эти формулы проверили и другие участники форума.

Для пояснений приведу рисунок системы:
Изображение
На рисунке отсчет ведем для верхнего положения манипулятора !!!
sezam
 
Сообщения: 1
Зарегистрирован: 12 июн 2014, 05:55
programming: Delphi, PHP

Re: Кинематика перемещений: от простого к сложному

Сообщение noonv » 12 июн 2014, 17:10

рекомендую к просмотру Лекции Стэнфордского университета - Introduction to Robotics.
У нас даже есть перевод первых двух лекций (1, 2) :)
Аватара пользователя
noonv
Администратор
 
Сообщения: 557
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++


Вернуться в Механика

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron
© 2009-2019 |  О проекте  |  Политика Конфиденциальности  |