ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

About self-collision checking and inverse kinematics

asked 2011-03-25 04:46:19 -0600

bit-pirate gravatar image

updated 2011-05-25 19:59:03 -0600

Hi there!

I am currently working on a teleoperation pipeline (more info: LINK) and just added the feature of self-collision checking. The process goes as follows: I first do the IK calculations, then check the result, if it would lead to self-collision, and if not so, the solution (desired joint positions) gets sent to the joint position controller.

In contrast to my solution, the get_constraint_aware_ik service of pr2_arm_kinematics_constraint_aware package seems far more complex. Thus, I am thinking, if I might have missed something important.

Could somebody give me a quick insight, if there are differences between both methods and if so, which they are?

For example, does the get_constraint_aware_ik service return a collision-free solution, which is closest to the optimal one, which however would result in collision? My design would just block any request, which would lead to self-collision and hence could result in positions, which are not the possible closest ones (only the last valid one).

I would already be happy with few lines about the general key differences!

Thanks for your help!

:-) Marcus

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2011-04-03 13:54:49 -0600

Sachin Chitta gravatar image

Hi Marcus

The get_constraint_ik_service in pr2_arm_kinematics_constraint_aware package will try to find a collision free IK solution for the desired pose of the end-effector. It will actually fail if it cannot find a IK solution - i.e. it won't give you back something that's "close".

We are working on using proximity information, i.e. information that tells you how close to the obstacles the robot is instead of just giving back binary "in collision" or "not in collision" results. This will allow you to "push" a IK solution that is "in collision" out of collision. This package is not ready for release yet though and won't be fully mature for a while. Depending on what your use-case is exactly, you should be able to modify this package to do what you need.

If you are not using the PR2, the other package to look at is the arm_kinematics_constraint_aware package that provides the same functionality as the pr2_arm_kinematics_constraint_aware package but for non-PR2 arms.

Regards, Sachin

edit flag offensive delete link more

Question Tools


Asked: 2011-03-25 04:46:19 -0600

Seen: 1,159 times

Last updated: Apr 03 '11