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
Hello,
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