2016-04-20 2 views
0

Я в момент попытки реализовать обратное кинематическое решение, способное находить все возможные Q-состояния, которые робот мог задавать положением инструмента: x, y, z ..Программирование обратного кинематического решения при условии, что только x, y, z инструмента

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

Моя реализация выглядит как таковая.

Eigen::MatrixXd jq(device_.get()->baseJend(state).e().cols(),device_.get()->baseJend(state).e().rows()); 
     jq = device_.get()->baseJend(state).e(); //Extract J(q) directly from robot 


     //Least square solver - [AtA]⁻1AtB 

     Eigen::MatrixXd A (6,6); 
     A = jq.transpose()*(jq*jq.transpose()).inverse(); 



     Eigen::VectorXd du(6); 
     du(0) = 0.1 - t_tool_base.P().e()[0]; 
     du(1) = 0 - t_tool_base.P().e()[1]; 
     du(2) = 0 - t_tool_base.P().e()[2]; 
     du(3) = 0; // Should these be set to something if i don't want the tool position to rotate? 
     du(4) = 0; 
     du(5) = 0; 

     ROS_ERROR("What you want!"); 
     Eigen::VectorXd q(6); 
     q = A*du; 


     cout << q << endl; // Least square solution - want a vector of solutions. 

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

+0

Почему бы не решить ее аналитически? –

+0

Я не уверен, как это сделать. – Lamda

+0

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

ответ

0

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

Для вашего робота, вот модель обратной кинематики: https://smartech.gatech.edu/bitstream/handle/1853/50782/ur_kin_tech_report_1.pdf

+0

Честно говоря, я не совсем уверен в том, как его реализовать. Я могу извлечь t_tool_base его текущего положения. Но имейте только x, y, z нужной позиции. – Lamda

Смежные вопросы