I plan to make a mouse or a gesture control robot like this video on YouTube : ABB Externally guided motion

For a 6-axes robot, I could implement it by using ABB’s EGM (Externally Guided Motion) option, which allows to send a Cartesian position and pose of TCP, and all the tedious calculation was handled by its controller.

However, when I started to work on YuMi, I noticed that EGM’s position guide control cannot be applied to the 7-axes robot (For YuMi, a joint control mode in EGM is only available). Are there any recommendations to implement what I described above? 

Also, I'm guessing that I need to implement IK class to get the correct joints' angles from a desirable TCP position. Maybe using OpenRAVE or OMPL? If you have any recommendation to calculate IK / Inverse Jacobian, please let me know too.


1 Answer 1


You have to differ between motion planning and control approaches: What you want is control (no fancy planning algorithms in the loop).

Regarding the IK problem, this is the lib that you want to use: https://bitbucket.org/traclabs/trac_ik It is amazingly fast and super easy to use (given you have a URDF description of your robot). And it combines different IK approaches that run concurrently under the hood. It is also available as a ROS package.

BUT: You have to take care about pose changes! So with a six / seven axis robot you can reach TCP poses with a variety of joint configurations. And if you just query the IK algorithm, it could spit out altering configurations, which would mean huge motions for your robot. So thats why TracIK must be initialized with the current joint angles, so that it can chose a solution that is similar to the current one.

On top I would suggest a sanity check (accumulated joint distance threshold), so that you do not execute jumps, if Trac delivers a solution that implies a configuration change.

  • $\begingroup$ Thank you for your comment. Unfortunately, I don't use ROS for this (I mostly use Python). Are there any ways to use TRAC-IK without ROS? $\endgroup$
    – kangaroo
    May 11, 2017 at 4:58
  • $\begingroup$ Yep, I think it can also be used without ROS. But then it comes as an IK for KDL. But KDL is pretty leightweight dependency, compared to ROS. $\endgroup$
    – Squelsh
    May 24, 2017 at 13:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.