Gazebo/SDF (vs URDF) and MoveIt/PlanningScene
Hello Gazebo developers and users,
I'd much appreciate your thoughts on how to solve the following issue:
Context:
Robotics lab with multiple ROSified industrial robots that is simulated in Gazebo. Currently, each robot is modeled as .xacro (by xacro), which is converted to .urdf that in turn becomes an .sdf (through gzsdf). The relevant inventory in the lab is modeled as multiple .sdf models (using .dae meshes). SDFs <include>
feature is used to combine "ground" .sdf models into larger ones, i.e. a camera SDF together with a camera holder SDF. This is also done in order to attach different items to the robot (cameras, grippers, etc). Finally, a .world file brings together a couple of independent, i.e. not connected by joints, models to make up the whole lab.
This works out quite well, e.g. to change the current gripper I only have to modify one of the "composition" .sdf files - I have a hierarchical set of models that is easy to maintain and adjust to a changed situation in the lab.
Solved issues:
- Visualize current gazebo world together with simulated sensors in rviz. Use .sdf to contextualize real sensor data with static objects in lab. -> gazebo2rviz
Open issue:
- MoveIt integration: How to use the current gazebo world as PlanningScene for MoveIt?
What I want to achieve is the following:- Maintain only one description for each entity (automatically converted to other formats if necessary).
- Have a hierarchy of models, i.e. adding a gripper should not require to redefine the robot it is attached to.
- Use the same description as basis for MoveIt for the simulated and the real lab.
- I see the following obstacles - any hint at solving them is greatly appreciated:
- Where to attach end-effectors in a way that they are valid collision elements and taken into account for path planning? In .xacro, .sdf or add them through custom to the PlanningScene at runtime?
- Write sdf2moveit and gazebo2moveit (or *2planning_scene) myself? If so, how to properly combine the URDF necessary for MoveIt and the SDF necessary - and to be honest preferred - for gazebo?
- What to push to TF common to simulation and reality, for simulation only and for real robots only?
To recap: How can we achieve a better integration in different parts (here: Visual and collision models for Gazebo, Rviz and MoveIt) of ROS?
NOTE: I will cross-post this to the moveit mailing list (moveit-users at googlegroups dot com).
Update: here is the post and discussion
Kind regards, ahb