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

Adding objects in MoveIt: fixed in the world while the mobile manipulator is moving: confusion with root_joint, planning_frame and srdf structure

asked 2017-11-15 14:09:35 -0500

Damien gravatar image

updated 2017-11-15 14:10:57 -0500

Hi all, Sorry if this question is answered somewhere else, but I didn't find a clear answer.

In the context of a mobile manipulator, we use move_base for base navigation and moveIt for arm planning. We have an issue when adding parts and objects to the MoveIt planning scene: they are added "fixed" to the robot. So when the robot moves, the parts move with it... :-( Not the expected behavior! Another thing we'd like to do in the future but that our current issue will also not allow: having a rgbd sensor fixed to a wall and providing an octomap to MoveIt...

So, digging into it, I'm not sure if we have an issue with:

  • our custom robot urdf/srdf structure (we do use a virtual joint between /map and /base_footprint in the SRDF)

  • the overall concept of the Moving Planning scene, root_joint and planningFrame... and how they are linked to the gmapping's map.

So what we are expecting to do, is it even feasible? should the root_joint of my custom robot be base_link? or the map/world_frame? we can querry for the current PlanningFrame (getPlanningFrame() ), but there is no way to set it. So I guess it is generated at the construction of the PlanningScene... and thus will use the first frame of the URDF... which will never be the Map frame...

I think you got it: I'm missing a connection between all these concepts. Can someone help? Thanks


edit retag flag offensive close merge delete



I think this is an under-utilized aspect of MoveIt! and you are correct it is not clear the behavior in this use case. This use case should be feasible.

Dave Coleman gravatar image Dave Coleman  ( 2017-11-16 13:20:04 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2017-11-16 13:38:44 -0500

isucan gravatar image

updated 2017-11-16 13:51:10 -0500

Dave Coleman gravatar image

I'll try to answer at least some aspects of this: The notion of "fixed" here refers to a joint with 0 DOF. Essentially, this means the joint applies an identity transform to whatever frame is the parent joint. If you add that to the robot, your object will move with the robot.

If you would like to have the object not move, or do something like you suggest with the rgbd sensor, you have to consider the robot as being something that has the following structure.

     joint(floating) -> imaginary_link -> attachedObject
     joint(planar) -> base_link

I do not recall if this allows feeding base_frame into the planar joint above (it may be the case only virtual_joints allow that, but I don't think we implemented support for chained virtual joints, so you might have to feed in your transforms manually. When you attach the object, in a fixed fashion, it will only move if you adjust the transform for the floating joint.

Hope this helps.

edit flag offensive delete link more

Question Tools



Asked: 2017-11-15 14:09:35 -0500

Seen: 747 times

Last updated: Nov 16 '17