Noetic support, Magni tipping over in gazebo

I’m trying to simulate Magni in gazebo on ROS noetic, and it all comes up fine, but when I tele-op the robot around it tips over to the front!

This didn’t happen in Kinetic, so I’m wondering: will Noetic be supported? Does anyone know how to fix this?

Yes, we are slowly starting the process of porting our entire list of packages to Noetic, but it’s gonna take a while.

Thanks. Any idea what this particular issue might be about? Happy to create a PR to help the porting effort if someone could point me in the right direction!

Honestly I’ve never seen anything as crazy as that, could be anything. It may be worth checking if there have been any changes to urdf and xacro since Kinetic, it’s probably something to do with the robot description.

As a starting point: maybe try looking into the friction between the wheels and the ground? Maybe some default changed between kinetic and noetic.

We would love it if you were able to make a PR to solve this, otherwise it may be a few months before we get around to it as @MoffKalast said.


Thanks for those pointers! I finally made some inroads on this. I still don’t fully understand it, but it seems to be related to the inertia matrix. Once I realized that the origin in the inertial element is not alone responsible for setting the location of the center of gravity (or at least so it seems), but that the inertia matrix is relevant, too, I was able to experiment with the right parameters.

I’ve found that if I make the following change in magni.urdf.xacro, magni behaves as expected and doesn’t tip over no matter how hard I try:

    <!-- <xacro:box_inertial_with_origin  x="0.398" y="0.221" z="0.150" mass="10.0">
      <origin xyz="-0.15 0 0.03" rpy="0 0 0" />

      <mass value="10" />
      <origin xyz="-0.15 0 0.03" rpy="0 0 0" />
      <inertia ixx="1" ixy="0.0" ixz="0.0"
        iyy="1" iyz="0.0"
        izz="1" />

When I check the center of gravity in gazebo, it now seem to be in a reasonable place (a bit behind the front-axis), whereas before it was directly above the front-axis.