roboforum.ru

Технический форум по робототехнике.


Расчет траектории движения робота РМ-01(Puma 560)

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Homamilae » 10 апр 2010, 12:59

Duhas писал(а):ну тут уже правильно Dead говорил, перед вычислением арккосинуса простыми ИФ-ами проверяйте четверть и все...


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


А где можно почитать про эти поисковые методы?
Насчет If'ов: Простыми if'ами тут не отделаешься. В обратной задаче все сложнее, т.к. 5 углов и 3 координаты, углы не из начала координат. Dead говорил про виртуальную пружину, которая реагирует на переход угла в другую четверть. У функции arccos переход плавный, там не на что реагировать. А у arctg происходит скачок, там можно поставить эту самую виртуальную пружину (в матлабе, кстати она есть). Может есть алгоритм расчета обратной задачи, где все углы находятся arctg-ами?
Аватара пользователя
Homamilae
 
Сообщения: 23
Зарегистрирован: 09 апр 2010, 10:01
Откуда: Москва
прог. языки: C/C++; Matlab
ФИО: Петина Наталья

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Duhas » 10 апр 2010, 13:18

ну как это не отделаешься ??

у вас проблема с аркосинусом.. можете процедуру написать и вставить ее вместо стандартной арккос, в которой будете сначала входные данные для функции арккос проверять ИФ-ами...

или мы вас не правильно понимаем..
тогда приведите примеры входных данных и верного результата - данных и неверного результата

поисковые методы - например симплексный или случайный поиск... ГА и т.д... в таком случае берутся некоторые значения углов сочленений, считается прямая задача, на основе расхождений цели и полученных координат взятые значения смещаются... и так далее.. минус в том, что не определено время поиска... но не нужно всегда считать всю математику... из расчетов - только прямая задача остается...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Angel71 » 10 апр 2010, 14:25

файлик утром отправил, письмо пришло?
попробуйте погуглить "matlab inverse kinematics", на вскидку инфы много.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Homamilae » 10 апр 2010, 15:58

Duhas писал(а):ну как это не отделаешься ??

у вас проблема с аркосинусом.. можете процедуру написать и вставить ее вместо стандартной арккос, в которой будете сначала входные данные для функции арккос проверять ИФ-ами...

или мы вас не правильно понимаем..
тогда приведите примеры входных данных и верного результата - данных и неверного результата

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


1. Как я могу проверять входные данные для arccos, если у меня 4 угла и они выходят не из начала координат? соответственно вариант "x<0, y>0" не подходит. Потому-что четверть меняется уже не зависимо от их значений.
2. Пример я выложила в коде, он как раз дает неправильное значение, т.к. углы вычисляются не из тех четвертей.

Добавлено спустя 45 секунд:
Angel71 писал(а):файлик утром отправил, письмо пришло?
попробуйте погуглить "matlab inverse kinematics", на вскидку инфы много.

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

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Duhas » 10 апр 2010, 15:59

ну искать по коду пример не оч удобно )
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Homamilae » 10 апр 2010, 16:32

Duhas писал(а):ну искать по коду пример не оч удобно )


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

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Duhas » 10 апр 2010, 17:01

оспади.. вы что функции arccos скармливаете ? всю обратную задачу? нет! одно число! или я чего то не понимаю...

ПС матлаб еще не был установлен после сноса форточки
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Homamilae » 10 апр 2010, 17:38

Duhas писал(а):оспади.. вы что функции arccos скармливаете ? всю обратную задачу? нет! одно число! или я чего то не понимаю...

ПС матлаб еще не был установлен после сноса форточки


Это вкратце:
Код: Выделить всёРазвернуть
%Обратная  задача
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)
cq3=(a2^2-r.^2+a3^2)/(2*a2*a3);
q3=acos(cq3);         
b=acos((a2^2+r.^2-a3^2)./(2*a2.*r));
q2=b+q;
v=-s2.*wy-r.*cos(q).*wx;
m=-s2.*wx+r.*cos(q).*wy;
q1=atan2(v,m);
q5=acos(sin(qi).*sin(q1).*sin(q2+q3)+cos(qi).*cos(q2+q3))
q4=acos(-sin(qi2).*sin(q1)+cos(qi2)*cos(qi).*cos(q1);


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

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Duhas » 10 апр 2010, 20:56

вот у вас есть:
acos(-sin(qi2).*sin(q1)+cos(qi2)*cos(qi).*cos(q1)
где, по-видимому, потеряна скобка.. вот то что у скобках у acos проверяйте ифами... на предмет нужной четверти...

acos((a2^2+r.^2-a3^2)./(2*a2.*r)) и тут также.. .чтобы вам не портить читаемость, напишите процедуру, например, my_acos в которой сначала будут ИФ-ы а потом cам acos...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Homamilae » 10 апр 2010, 21:24

Duhas писал(а):вот у вас есть:
acos(-sin(qi2).*sin(q1)+cos(qi2)*cos(qi).*cos(q1)
где, по-видимому, потеряна скобка.. вот то что у скобках у acos проверяйте ифами... на предмет нужной четверти...

acos((a2^2+r.^2-a3^2)./(2*a2.*r)) и тут также.. .чтобы вам не портить читаемость, напишите процедуру, например, my_acos в которой сначала будут ИФ-ы а потом cам acos...


А какие я буду писать условия? Если угол не в начале координат? Здесь уже нет прямой определяемой зависимости от x, y, z. На что я должна ссылаться в Ифах? Если бы там был не arccos а arctg, то там при переходе в другую четверть хотябы скачек углов был, его можно устранить. А arccos непрерывная функция. Там вообще непонятно когда переход угла в другую четверть...
Аватара пользователя
Homamilae
 
Сообщения: 23
Зарегистрирован: 09 апр 2010, 10:01
Откуда: Москва
прог. языки: C/C++; Matlab
ФИО: Петина Наталья

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение executer » 10 апр 2010, 21:41

все тут говорят гдето про следующее:

Код: Выделить всёРазвернуть
real my_acos(real:x)
{
if(x>=0) return acos(x) else return(-acos(abs(x)))
}


и в коде уже вызывайте свой my_acos(-sin(qi2).*sin(q1)+cos(qi2)*cos(qi).*cos(q1))
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Homamilae » 10 апр 2010, 21:58

executer писал(а):все тут говорят гдето про следующее:

Код: Выделить всёРазвернуть
real my_acos(real:x)
{
if(x>=0) return acos(x) else return(-acos(abs(x)))
}


и в коде уже вызывайте свой my_acos(-sin(qi2).*sin(q1)+cos(qi2)*cos(qi).*cos(q1))


Я понимаю о чем речь... Но вот это условие if(x>=0) - в данном случае не работает, т.е. при положительных координатах x,y, угол может быть как положительным так и отрицательным. Поэтому точно определить переход в данном случае я не могу... Если конечно нет какого-то специального условия, о котором я не знаю... А вот arctg может мне предоставить эти условия... Т.е. мне нужен алгоритм обратной задачи, который высчитывает углы arctg-ами.

Добавлено спустя 3 минуты 49 секунд:
Angel71 писал(а):файлик утром отправил, письмо пришло?
попробуйте погуглить "matlab inverse kinematics", на вскидку инфы много.

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

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Angel71 » 10 апр 2010, 22:14

пожалуйста. просмторел её на днях бегло. скелетное представление есть, векторы видел, углы эйлера упоминались, матрицы поворота тоже есть. книженция вроде считается классикой жанра. :) а вот использование кватерионов не обнаружил. :oops: в общем "забил" на неё.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Homamilae » 10 апр 2010, 23:10

Angel71 писал(а):пожалуйста. просмторел её на днях бегло. скелетное представление есть, векторы видел, углы эйлера упоминались, матрицы поворота тоже есть. книженция вроде считается классикой жанра. :) а вот использование кватерионов не обнаружил. :oops: в общем "забил" на неё.


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

Re: Расчет траектории движения робота РМ-01(Puma 560)

Сообщение Angel71 » 10 апр 2010, 23:43

:) не, спасибки. :crazy: я недавно десятками гиг выкачивал всякого обучающего видео и книжек по физике, математике,... :o хоть бы это переварить
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Пред.След.

Вернуться в Новичкам или основы основ роботостроения.

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

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