Ask Your Question

Move robotic arm with Moveit! without specifying end effector rotation

asked 2017-12-07 05:10:33 -0500

RyabkoMV gravatar image

Hello everybody. I face and issue which I think everybody who work with robotic arm should face, but surprisingly I can't find the solution through goggling, searching and keep trying. So I stuck.

I simulate phantomx arm (actually the model doesn't matters) to move it to desired position X,Y, Z. I can move the arm using Move Group Python Interface Tutorial when I set both position and rotation (7 values totally). This is fine when the end effector relative position doesn't change and I can calculate quaternion.

The issue starts when to reach some point (which is hight enough) I need to change the angle of end effector. Have a look on image illustration (sorry can't insert images)

I use Moveit! to find the joints values to reach the desired point, so I can't know beforehand the rotation of the end effector.

The question: Can I move my arm to the desired point without specifying rotation, just letting Moveit! to select any valid value as it does with other joints?

I have 2 ideas how to solve the issue:

  1. Probably rotation constraints are solution, but tutorial is in C++ and I can do in python only
  2. Add fake floating joint as an end effector, so that any rotation would be valid (because the joint is float it can take any values)

Please advice me the right way to solve the issue. I would be really really thankful because it is my headache now.


edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2017-12-07 12:41:25 -0500

This may be more a problem than you expect, firstly there is a difference between the 'dexterous' and 'reachable' workspaces of a robot arm. The dexterous workspace is the volume the end effector can reach in any orientation and the reachable workspace is the volume that can be reached with the end effector in a limited set of orientations. We generally avoid moving beyond the dexterous workspace if possible, since by definition you'll be near a singularity.

I don't know the workings of Moveit in too much detail but mathematically if you request the end effector to simply be in a particular location then there are potentially a great many solutions.

One solution would be to try and estimate an end effector orientation beforehand that would give you a good chance of reaching that point. Since the robot arm will be at almost full reach one simple way of doing this would be to orient the end effector so it's facing in the same direction as the vector from the robot base to the desired end point. This should allow the arm to reach almost all of it's reachable volume.

edit flag offensive delete link more


Thanks for your reply! Interesting proposition. I can move to desired position without changing relative orientation. But I want to do same with orientation change and without calculation of final orientation, to cover more points which I can reach.

RyabkoMV gravatar image RyabkoMV  ( 2017-12-08 00:45:53 -0500 )edit

Basically, what Moveit! does is calculation of joints orientations. I do not set orientations beforehand. So I guess it should be doable with end effector as well.

RyabkoMV gravatar image RyabkoMV  ( 2017-12-08 00:46:55 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2017-12-07 05:10:33 -0500

Seen: 916 times

Last updated: Dec 07 '17