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

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

Damien

edit retag 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.

( 2017-11-16 13:20:04 -0600 )edit

Sort by » oldest newest most voted

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.

 virtual_joint(fixed)->


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.

more