Преобразование системы координат для манипулятора

Автор темы forex 
ОбъявленияПоследний пост
ОбъявлениеПравила и принципы форума «Высшая математика»28.10.2009 15:17
ОбъявлениеЗапущен новый раздел «Задачки и головоломки»29.08.2019 00:42
ОбъявлениеОткрыта свободная публикация вакансий для математиков26.09.2019 16:34
01.12.2019 22:27
Преобразование системы координат для манипулятора
Здравствуйте!
Сделал манипулятор, назначение которого доставить свободный конец стержня в заданную точку. Манипулятор представляет собой два стержня AB и BC, закрепленных в шарнирных соединениях A и B (сервоприводах) таким образом, что первый шарнир крепится к опоре, а второй – к концу первого стержня.
Рисунок: https://yadi.sk/i/5Ep8-__BddpNjA
Управлять манипулятором могу, задавая углы поворота α и β качалок сервоприводов, которые обеспечивали бы помещение конца второго стержня C в заданную точку. Т.е. калибровка это ручной подбор пары углов для каждого положения. Если нужно переместить конец манипулятора в новую точку, то просто задаются конечные углы для каждого сервопривода. При таком способе конец описывает сложную траекторию, которая иногда выходит за пределы допустимой области. Хочу, чтобы при задании конечных углов (или новой позиции), конец перемещался по прямой. Координаты, которые может посетить точка C, выражаются системой:

$x = l_b * \cos(\alpha + \beta) + l_a * \cos(\alpha) + x_a$
$y = l_b * \sin(\alpha + \beta) + l_a * \sin(\alpha) + y_a$

Пытался преобразовать эту систему к виду α=f(x,y) и β=g(x,y), но у меня не получается.
В связи с этим хочу узнать, не встречал ли кто такие функции в готовом виде, может, кто ни будь может произвести необходимые преобразования, есть ли в математических пакетах типа Maple или Mathcad возможность выразить одни переменные через другие автоматически? Может, в данном случае, выразить углы через координаты в явном виде невозможно?



Редактировалось 1 раз(а). Последний 02.12.2019 00:15.
02.12.2019 09:18
По прямой
Добрый день.

А скоростью сервоприводов вы можете управлять ?
02.12.2019 14:46
Решение в Maple
Фактически вы ищите явное решение системы 2 уравнений с 2 неизвестными alpha и beta и большим числом параметров. Maple без особых проблем решает систему в общем виде, но решение весьма громоздко. Чуть менее громоздко решение, если указать значения параметров. Найдено 2 решения в диапазоне 0 .. 2*Pi . Конечно, требуется внимательный анализ этих решений, т.к. при каких-то значениях параметров решения могут оказаться комплексными, т.е. действительных решений может не существовать. Код в Maple ниже:

restart;
Sys:={x=lb*cos(alpha+beta)+la*cos(alpha)+xa, y=lb*sin(alpha+beta)+la*sin(alpha)+ya};
solve(Sys, {alpha,beta}, explicit,allsolutions); # Общее решение
Sys1:=eval(Sys,[la=1,lb=2,xa=3,ya=4]);
solve(Sys1, {alpha,beta}, explicit,allsolutions); # Решение при выбранных параметрах
02.12.2019 16:29
хм
По сути, для любой точки С(x,y) можно построить треугольник ABC, одна сторона которого - расстояние от С до узла A крепления манипулятора , а другие стороны - стержни манипулятора. при известных длинах сторон треугольника легко вычислить все его углы. Т.о. для параметрически заданых x и y можно найти зависимости изменения углов.
02.12.2019 20:54
kitonum
Спасибо за скрипт! Попробую.
02.12.2019 20:59
dmix
По сути, да. Результируюший угол поворота делится на несколько частей и через определенные интервалы времени производится частичный поворот на соответствующие приращения угла, до тех пор пока не будет достигнут целевой. Таким же способом можно управлять и ускорением поворота.
02.12.2019 21:06
А в 3d?
Задача становится интересной при наличии степеней свободы. Например, то же самое, но в 3d, или (и) количество звеньев больше 2.



Редактировалось 1 раз(а). Последний 02.12.2019 21:07.
02.12.2019 21:14
zklb (Дмитрий)
Действительно, возможно это самый простой подход, надо разобраться.
На данном этапе задачу я решил по другому, как нахождение точек пересечения двух окружностей с центрами в A и C. Для коодинат точки B получил явные представления, а дальше, через определения синуса и косинуса искомые углы. Здесь тоже много вычислений и поэтому хочу проверить, может решение системы двух алгебраических уравнений методом Ньютона будет быстрее, чем вычисления по явным формулам. Всё таки у меня 8-битный микроконтроллер))



Редактировалось 1 раз(а). Последний 02.12.2019 23:08.
02.12.2019 21:22
oneman
Очевидно. Но мне, к сожалению, (или к счастью) достаточно двух звеньев в одной плоскости.



Редактировалось 1 раз(а). Последний 02.12.2019 23:09.
Извините, только зарегистрированные пользователи могут публиковать сообщения в этом форуме.

Кликните здесь, чтобы войти