Robot base slowly drifting

asked 2016-03-30 04:33:49 -0500

mehdi gravatar image

After spawning my robot and without sending any Twist commands, I noticed that it slowly drifts. I checked the /gazebo/model_states topic and noticed that the twist of my base is not zero

linear: 
  x: 0.000147341651406
  y: 1.44766752077e-05
  z: 9.3220339335e-09
angular: 
  x: 7.15641334542e-09
  y: 1.36163145416e-08
  z: 0.000712493893403

Those are small values but integrated over a long time tend to make my robot change position. This is a big problem because I am working with laser scans and doing line detection iterated many times, which leads to line coefficients changing a lot in few seconds. I tried changing the friction of the wheels but it doesn't seem to help. How can I force the robot to stand still?

I am using a differential drive defined as follows:

  toru2_diff_drive_controller:
    type        : "diff_drive_controller/DiffDriveController"
    left_wheel  : 'toru2_left_axle'
    right_wheel : 'toru2_right_axle'
    publish_rate: 50.0               # default: 50
    pose_covariance_diagonal : [0.0001, 0.000001, 1000000.0,
1000000.0, 1000000.0, 0.0005]
    twist_covariance_diagonal: [0.0001, 0.000001, 1000000.0,
1000000.0, 1000000.0, 0.0005]

    # Wheel separation and diameter. These are both optional.
    # diff_drive_controller will attempt to read either one or both from the
    # URDF if not specified as a parameter
    wheel_separation : 0.512
    wheel_radius : 0.09
edit retag flag offensive close merge delete

Comments

2

Check if the inertia values are correct, and try playing with those a bit, increasing the mass might help as well.

AndreiHaidu gravatar imageAndreiHaidu ( 2016-03-30 07:00:23 -0500 )edit

I'm having the exact same problem using Gazebo 2.2.3 and ROS Indigo. Even without any control input, the angular z velocity of the robot is even higher than @mehdi. Mine is around 0.002 so the robot slowly rotates in place from the moment Gazebo is fired up. @AndreiHaidu, can you please give us a hint regarding inertia values to try? I've tried a bunch of settings including increasing the mass, and nothing fixes the problem.

Pi Robot gravatar imagePi Robot ( 2017-09-17 08:27:26 -0500 )edit

The same problem is present in my simulation using Gazebo 9.0.0 and ROS Kinetic. Did you ever find a fix?

raequin gravatar imageraequin ( 2018-03-21 13:50:46 -0500 )edit