Sending orientation to MoveIt with 3DOF end effector

asked 2019-12-31 09:08:17 -0600

salmon gravatar image

I have a three degree-of-freedom (3DOF) end effector which I am currently moving to a point using MoveIt. Imagine it as an arm with a flat plane on the end. I want to position the last link of this end effector at a normal to a curved surface, in order that the planar end meets it properly, with some small (±5°) deviation allowed. The curved surface is formed from a laser scan that I have already created.

Given that the end effector is only 3DOF, I understand it is fully constrained just by giving the position in x, y and z. When this is done, however, the planar end does not adequately contact this surface, and by nature of its point-end of zero geometry, it can result in positions that are not actually achievable.

I understand that sending a constraint on roll and pitch (as expressed in quaternions) is not a mathematically valid operation for a fully-defined end effector.

One solution seems that multiple planning requests could be sent and the normal achieved would then be evaluated before being accepted or discarded but this seems like an inelegant solution. Ideally, some prescription of the internal joint limits (which dictate the normal of the end effector to the surface) could be sent to MoveIt, along with the end position.

Three situations then arise:

  1. The end position is achievable with the end effector at a normal to the surface
  2. The end position is achievable with the end effector not at a normal to the surface
  3. The end position is not achievable

In cases 2. and 3., an alternative position would then be sent, probably using the gradient of the surface to pick a direction for which a guess can be made.

My question, essentially: can I send orientation constraints to MoveIt as well as a position? If not, are there other IK libraries which will do this job? I have had a preliminary search and not found anything which seems sensible.

If not, then this seems to be a decision between sending multiple planning requests and measuring the normal of the end effector after the fact, or alternatively by building proprietary IK.

edit retag flag offensive close merge delete

Comments

1

Observation:

can I send orientation constraints to MoveIt as well as a position? If not, are there other IK libraries which will do this job?

MoveIt != "IK library".

For anything != 6dof I would recommend either generating or writing a custom IK solver, as KDL (and Trac IK fi) are not usable.

And:

I have a three degree-of-freedom (3DOF) end effector which I am currently moving to a point using MoveIt. Imagine it as an arm with a flat plane on the end. I want to position the last link of this end effector at a normal to a curved surface,

to do this properly, wouldn't you need a 4dof configuration at least?

gvdhoorn gravatar image gvdhoorn  ( 2019-12-31 10:03:34 -0600 )edit

Sorry, yes I am aware MoveIt is not IK, but for the purposes of sending the movement plans I was having issues with the number of degrees of freedom. I am currently using Trac IK. I found KDL not usable but why is Trac IK also not usable - I guess this could be part of the problem.

RE the 4dof, in reality we have a ball joint which means the normal does not have to be exactly matched. I am happy to be proven wrong and add an extra degree of freedom if required, but it seems that the ±5° degrees, on surfaces which are only slightly curved, should be achievable.

salmon gravatar image salmon  ( 2020-01-02 04:57:51 -0600 )edit