Inconsistent contact behaviour on similar surfaces
Hello everyone!
I am using a mini robot I made in a gazebo 11 simulation. The robot has a cylindrical shape, 5 cm in diameter, with 3 supports on the bottom placed on the edges of an equilateral triangle. It uses vibration motors to move, while the motors spin the robot uses the friction created on the supports to move in space. As an analogy, you can think of this movement as a smartphone vibrating on a table, slowly moving in some direction but in the case of this micro robot this is done in a controlled manner. An important point is that the robot should always contact a surface on all 3 supports, otherwise it's impossible to control.
I managed to make a controller using ROS1 and successfully drive it to specific points. The problem is that the robot only has stable contacts on the gazebo's marble_table model but not on other objects with similar physics properties (e.g. a cube or the ground_plane with altered physics parameters).
Here is a picture of the robot on the marble table model, i have enabled the contacts visualization from gazebo. You can see 3 stable blue spheres on the place where the supports are.
And here is the robot on a cube that has the same properties as marble table but the contacts are continuously flashing all around the outer edge of the robot.
I have tried to eliminate the issue by tuning the max_vel, min_depth bounce_threshold and restitution_coefficient but nothing seems to work.
Is there a way to have stable contacts on all surfaces, is this a simulation stability issue?
Thank you for your time!