2016-04-20 23 views
0

Im Moment versuche ich eine inverse kinematische Lösung zu implementieren, die alle möglichen Q-Zustände eines Roboters finden kann, die die Position des Werkzeugs x, y, z haben ..Programmierung der inversen kinematischen Lösung nur mit x, y, z des Werkzeugs

Ich bin gewählt, um es mit der kleinsten quadratischen Ansatz zu tun, aber etwas sagt mir, dass es nicht alle mögliche Lösung, sondern nur die mit dem kleinsten Fehler, die in diesem Fall mich interessiert alle möglichen Q bieten wird - Zustände, die die Position des Werkzeugs erfüllen.

Meine Implementierung sieht so aus.

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. 

zunächst das inverse kin scheint nicht rechts, wie der Q-Zustand nicht, um den Roboter in die gewünschte Position bewegen. Ich kann nicht sehen, wo meine Implementierung falsch ist?

+0

Warum es nicht analytisch lösen? –

+0

Ich bin mir nicht sicher, wie es geht. – Lamda

+0

Analytische Lösung wird Ihnen die gesamte Lösung ohne irgendwelche Epsilon-Fehler bieten. Wenn Sie einen bekannten Roboter verwenden, sollten Sie ein fertiges Modell im Internet oder sogar im Handbuch des Roboters finden. –

Antwort

0

Die Lösung des inversen Kinematikproblems mit numerischer Lösung ist nicht die beste Option. Sie sollten diese Option wählen, falls Sie die analytische Lösung nicht finden können. BTW, gut konstruierte Roboter sollten ein klares inverses Kinematikmodell haben.

Für Ihre Roboter, hier ist die inverse Kinematik Modell: https://smartech.gatech.edu/bitstream/handle/1853/50782/ur_kin_tech_report_1.pdf

+0

Um ehrlich zu sein, bin ich mir nicht sicher, wie ich es implementieren soll. Ich bin in der Lage, die t_tool_base von ihrer aktuellen Position zu extrahieren. Aber hab nur die x, y, z der gewünschten Position. – Lamda