Gazebo | Ignition | Community
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Collision between static models, or should I move to non-static? Can I force non-static model to be immovable?

  • ROS2 Eloquent
  • Gazebo 9.14
  • SDF 1.6
  • Ubuntu 18.04


I am currently simulating my custom tandem one-armed wall-mounted pick-and-place robots in Gazebo. Currently they are static models <static>true</static> that know their position rotary encoders on the machine and I am simulating movement in gazebo by model_->GetJointController()->SetJointPosition(...). This means that I will not have collision information for these robots, since physics calculations are not run on static models. When I make my model non-static <static>false</static>, I can no longer move my joints using the method above, instead I use gazebo::common::PID and joint->SetForce(...) to move my machine around.

My issue is that I cannot both get collision data and directly control joint positions of my model. By the design of my robot, it is not stable and if I put it non-static, it will fall. Also the PID method is not preferable, and I would rather set positions directly. But, if I make my robot static, I cannot get collision data from it.

What is the best solution for this issue? Can I keep my model as static, but force the physics engine to calculate collision information? Can I put my model as non-static, but anchor the best to a certain position? Other solutions can be considered

Thank you for your help