roboforum.ru

Технический форум по робототехнике.
Текущее время: 01 май 2025, 20:55

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 10:11 
Не в сети
Аватара пользователя

Зарегистрирован: 09 апр 2010, 10:01
Сообщения: 23
Откуда: Москва
прог. языки: C/C++; Matlab
ФИО: Петина Наталья
Помогите пожалуйста, может кому-то приходилось уже с этим сталкиваться.
У меня есть робот РМ-01. Мне нужно рассчитать к нему систему управления. В общем у меня есть координаты в пространстве (4 точки). Через них я провела траекторию методом кубических сплайнов. Теперь мне нужно посчитать обратную задачу (найти углы поворотов его сочленений). Но практически все улглы расчитываются при помощи arccos. А функция арккосинус определена от 0 до пи. Соответственно если углы у меня отрицательные, арккосинус все равно дает положительные. И соответственно траектория получается не правильная. Как можно сделать так, чтобы можно было автомотически правильно определить фазы углов (может алгоритм какой есть?).
:) Заранее благодарна.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 10:20 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Я в ужасе, вы знаете что такое кубические сплайны, но не можете с помощью IF'ов и arccos выстроить функцию определения угла по 2 координатам... :shock:

Может всё-таки моя мысль про IF'ы вас спасёт? :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 11:56 
Не в сети
Аватара пользователя

Зарегистрирован: 09 апр 2010, 10:01
Сообщения: 23
Откуда: Москва
прог. языки: C/C++; Matlab
ФИО: Петина Наталья
Может действительно я чего-то торможу... (просто у меня нет опыта в программировании). Я понимаю, что при помощи условных операторов (IF) я могу выбрать нужную четверть угла. Но я не могу придумать условие :( Я просто еще на 4-ом курсе института, у меня мало опыта :( Это мой первый проект :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 11:59 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
КАК? Как можно не придумать условие?

Есть 4 вариантов знаков:
x>0,y>0
x<0,y>0
x>0,y<0
x<0,y<0

Что тут думать??? Это же блин 9-й класс средней школы, какой еще "у меня мало опыта, всего 4-й курс" :shock:

Расстреляйте своих преподавателей по математике :P

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 12:07 
Не в сети
Аватара пользователя

Зарегистрирован: 09 апр 2010, 10:01
Сообщения: 23
Откуда: Москва
прог. языки: C/C++; Matlab
ФИО: Петина Наталья
А если 3 координаты и 5 углов, четыре из которых вычисляются arccos? И каждый из этих углов начинается не из начала координат?

Мда... преподов на мыло :)


Последний раз редактировалось Homamilae 12 апр 2010, 17:06, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 12:08 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Я вас не пойму - вы задачу инверсной кинематики что ли решаете? так она через 1 arccos и не решается, надо строить модель и разворачивать всё от исходной точки, к тому же у вас может быть неоднозначность решения.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 12:13 
Не в сети
Аватара пользователя

Зарегистрирован: 09 апр 2010, 10:01
Сообщения: 23
Откуда: Москва
прог. языки: C/C++; Matlab
ФИО: Петина Наталья
Да-да. Это у нас называется обратная задача кинематики. У меня есть алгоритм ее вычисления (правда я считаю ее в matlabе). (Могу для понятности сбросить код.). и что же делать с этой неоднозначностью? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 12:15 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Неоднозначность разрешать добавляя условия. Желательно гладкие :)

Неопределенность с arccos может быть только в процедуре перевода (x,y) в угол и расстояние.

Остальное уже сами :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 12:22 
Не в сети
Аватара пользователя

Зарегистрирован: 09 апр 2010, 10:01
Сообщения: 23
Откуда: Москва
прог. языки: C/C++; Matlab
ФИО: Петина Наталья
Уфф... Вот я и не могу понять какие это такие гладкие условия :) Может есть где почитать об этом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 12:41 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Ну нужно придумать какое-то условие, чтобы не было неоднозначности, например, добавить виртуальную пружину.

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

Но это я из общих рассуждений, тут вроде есть спецы кто это по учебе проходил, должны сказать как это называется и где читать :pardon:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 12:50 
Не в сети
Аватара пользователя

Зарегистрирован: 09 апр 2010, 10:01
Сообщения: 23
Откуда: Москва
прог. языки: C/C++; Matlab
ФИО: Петина Наталья
Спасибо большое :) Итак, вопрос по прежнему актуален :RTFM:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 14:53 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
код в студию + алгоритм или теорию по которой делался код...

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 14:57 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
есть очень большое подозрение, что вы изначально не правильно управление делаете.
если уж совсем тяжко, могу на мыло скинуть "Introduction to Mechanics and Control 3th ed John Craig" или на форум выложить, если разрешат или на трекер.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 09 апр 2010, 23:03 
Не в сети
Аватара пользователя

Зарегистрирован: 09 апр 2010, 10:01
Сообщения: 23
Откуда: Москва
прог. языки: C/C++; Matlab
ФИО: Петина Наталья
Duhas писал(а):
код в студию + алгоритм или теорию по которой делался код...

Код написан в matlabe. Суть в том, что у меня есть 4 точки в пространстве (x,y,z). Через них я провожу кубический сплайн (это гладкая траектория). Далее для этой траектории я считаю углы поворотов сочленений робота. По алгоритму отмеченному красным в прилагаемой методичке. После чего снова считаю прямую задачу кинематики, из полученных углов получаю координаты. Траектория должна быть такой же, но она отличается, и отличается она тогда, когда высчитываемые углы выходят за пределы области значений arccos(он начинает неправильно вычислять четверти углов). Ссылка на методичку http://files.mail.ru/S64ZJS
Как я понимаю было бы лучше если бы углы рассчитывались через arctg, т.к. там есть скачки значений углов при переходе области значений, которые можно устранить в правильную сторону, у arccos этого нет, поэтому определить четверть сложнее. А может я и не права...
Код:
clc
clear
%Обратная  задача
a2=431.8; s2=149.09; a3=433.07; s6=56.25;
qi=pi/3; qi2=pi/3;
a13=sin(qi)*sin(qi2);
a23=-sin(qi)*cos(qi2);
a33=cos(qi);
wx=cs1-s6*a13;
wy=cs2-s6*a23;
wz=cs3-s6*a33;
r=sqrt(wx.^2+wy.^2+wz.^2-s2^2);
q=asin(wz./r);



% Расчет и графики q3
cq3=(a2^2-r.^2+a3^2)/(2*a2*a3);
q3=acos(cq3);
         
q3g=(180/pi).*q3;

figure
subplot(5,3,7);
plot(ti,q3g, 'b');
grid on
title('q3 от t');
xlabel('t');
ylabel('q3');
sp1=diff(q3g);
n=301;
t1=ti(1):0.01:ti(n-1);
subplot(5,3,8);
plot(t1, sp1,'b-');
grid on
xlabel('t');
ylabel('q3`');
sp2=diff(q3g,2);
t2=ti(1):0.01:ti(n-2);
subplot(5,3,9);
plot(t2, sp2,'b-');
grid on
xlabel('t');
ylabel('q3"');

%Расчет и графики q2
b=acos((a2^2+r.^2-a3^2)./(2*a2.*r));
q2=b+q;
q2g=(180/pi).*q2;
subplot(5,3,4);
plot(ti,q2g, 'b');
grid on
title('q2 от t');
xlabel('t');
ylabel('q2');
sp3=diff(q2g);
subplot(5,3,5);
plot(t1, sp3,'b-');
grid on
xlabel('t');
ylabel('q2`');
sp4=diff(q2g,2);
subplot(5,3,6);
plot(t2, sp4,'b-');
grid on
xlabel('t');
ylabel('q2"');

%Расчет и графики q1
v=-s2.*wy-r.*cos(q).*wx;
m=-s2.*wx+r.*cos(q).*wy;
q1=atan2(v,m);
q1g=(180/pi).*q1;
subplot(5,3,1);
plot(ti,q1g, 'b');
grid on
title('q1 от t');
xlabel('t');
ylabel('q1');
sp5=diff(q1g);
subplot(5,3,2);
plot(t1, sp5,'b-');
grid on
title('Первые производ.');
xlabel('t');
ylabel('q1`');
sp6=diff(q1g,2);
subplot(5,3,3);
plot(t2, sp6,'b-');
grid on
title('Вторые производ.');
xlabel('t');
ylabel('q1"');

%Расчет и графики q5
q5=acos(sin(qi).*sin(q1).*sin(q2+q3)+cos(qi).*cos(q2+q3));
q5g=(180/pi).*q5;
subplot(5,3,13);
plot(ti,q5g, 'b');
grid on
title('q5 от t');
xlabel('t');
ylabel('q5');
sp7=diff(q5g);
subplot(5,3,14);
plot(t1, sp7,'b-');
grid on
xlabel('t');
ylabel('q5`');
sp8=diff(q5g,2);
subplot(5,3,15);
plot(t2, sp8,'b-');
grid on
xlabel('t');
ylabel('q5"');

%Расчет и графики q4
q4=acos(-sin(qi2).*sin(q1)+cos(qi2)*cos(qi).*cos(q1));
q4g=(180/pi).*q4;
subplot(5,3,10);
plot(ti,q4g, 'b');
grid on
title('q4 от t');
xlabel('t');
ylabel('q4');
sp9=diff(q4g);
subplot(5,3,11);
plot(t1, sp9,'b-');
grid on
xlabel('t');
ylabel('q4`');
sp10=diff(q4g,2);
subplot(5,3,12);
plot(t2, sp10,'b-');
grid on
xlabel('t');
ylabel('q4"');


%Прямая задача для проверки
m6=cos(q4).*sin(q5);
m7=cos(q).*sin(q4).*sin(q5)-sin(q).*cos(q5);
m8=sin(q).*sin(q4).*sin(q5)+cos(q).*cos(q5);

xk=cos(q1).*(s6*m6-s2)-sin(q1).*(s6*m7+r.*cos(q));
figure
subplot(2,2,1);
plot(ti,xk,t,x,'o');
grid on
xlabel('t');
ylabel('x');

yk=cos(q1).*(s6*m7+r.*cos(q))+sin(q1).*(s6*m6-s2);
subplot(2,2,2);
plot(ti,yk,t,y,'o');
grid on
xlabel('t');
ylabel('y');

zk=s6.*m8+r.*sin(q);
subplot(2,2,3);
plot(ti,zk,t,z,'o');
grid on
xlabel('t');
ylabel('z');

subplot(2,2,4);
plot3(xk,yk,zk,'-', x,y,z,'o');
grid on
xlabel('x');
ylabel('y');
zlabel('z');


Добавлено спустя 1 минуту 7 секунд:
Angel71 писал(а):
есть очень большое подозрение, что вы изначально не правильно управление делаете.
если уж совсем тяжко, могу на мыло скинуть "Introduction to Mechanics and Control 3th ed John Craig" или на форум выложить, если разрешат или на трекер.


Буду благодарна. Почта Homamilae123@mail.ru


Последний раз редактировалось Homamilae 23 фев 2011, 13:17, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Расчет траектории движения робота РМ-01(Puma 560)
СообщениеДобавлено: 10 апр 2010, 11:50 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
ну тут уже правильно Dead говорил, перед вычислением арккосинуса простыми ИФ-ами проверяйте четверть и все...


ПС мы обратную считали поисковыми методами...

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO