Path plannig using MoveIt in cartesian space with non-unique inverse kinematics

asked 2022-08-21 13:49:27 -0500

I am using ROS1 Noetic and MoveIt for path planning of a custom-defined robot.

My main challenge that I have is that the end-effector target pose is not completely defined (the rotation around the z-axis is arbitrary). The robot is moving along a rail, and a rotating, telescopic arm is used to reach a certain destination. I do not really care about where on the rail the robot is as long as it can reach the target; if the target is too close, I have to move away along the rail until the minimum distance is reached. But it is not clear where I should move on the rail since there can be obstacles in the way. And depending on where I am along the rail, the rotation of my end effector is different along the z-axis when reaching the same position.

I'm sorry I am not yet able to upload images to explain things a little better...

I have written an inverse kinematics which calculates the joint values for a specific target position and a given position along the rail; for such a combination, the solution is unique. I have also tried writing a InverseKinematics plugin for the MoveIt library and succeeded building it.

But I am neither sure how to correctly implement it since the solution is non-unique so long as the position along the rail is not fixed, and I am not sure how to correctly define the target of the path planning task:

  • If I use joint-based path planning, I have to decide up front where on the rail I should end up, and then providing a target pose in joint space is easy. However, I need more intelligence to determine the desired position along the rail.
  • If I provide an end-effector target pose, I need to also specify the orientation of the end-effector, and by specifying the rotation around the z-axis, the position along the rail is again uniquely determined (which I do not want).

What I would like to do is let the path planner decide on the ideal final position along the rail (probably even using a metric that favours positions close to the initial position). Along the same lines, I would like to ask the MoveIt library whether a certain point can be reached at all, from any position along the rail and without collisions.

I hope I could make my problem sufficiently clear and look forward to your ideas! Thank you!

edit retag flag offensive close merge delete

Comments

I think your first bullet is the way to go. In my thinking, your custom planner should evaluate different positions on the rail until it finds one or more solutions that work.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2022-08-23 19:07:27 -0500 )edit