Skip to content

Tuning robot localization

Emiliano Borghi edited this page Jul 5, 2020 · 35 revisions

Introduction

The idea behind this document is to define next steps to improve the localization of robot using robot_localization package. This means, providing a more stable transformation between /base_footprint and /odom.

This task will affect both the real robot and the simulation.

Proposal

robot_localization needs to have a proper sensor configuration in order to work correctly. So, first, the wheel encoders will be checked:

  • Topic names
  • Transformations (Tf)
  • Rates
  • Tweak the covariance matrix
  • Position in the robot description

One of the steps needed for this is to provide a stable IMU measurement but, for that, it's necessary to integrate the device with some filter:

  • Provide IMU and magnetometer raw information
  • Calibrate readings
  • Fuse readings to provide a single information

After this is done, we need to compare both Gazebo and real robot data before proceeding.

To integrate robot_localization we need to first test sensor data individually. But before, for debugging individually we need to have some tools:

  • Provide a pose taken from a laser scan matcher node
  • Have a script that moves the robot doing squares
  • Check ground truth readings for Gazebo

And finally, it's time to debug the robot_localization package. For that, these tasks are proposed:

  • Check control rates
  • Tune robot_localization parameters

Action items

TASK PULL REQUESTS FINISH DATE
Wheel odometry position in the robot_description - June 11th, 2020
Wheel odometry topic name - June 12th, 2020
Wheel odometry rate 205 June 11th, 2020
Wheel odometry covariance
Provide IMU and magnetometer raw information 209 June 20th, 2020
Calibrate readings 209 June 20th, 2020
Fuse IMU readings to provide a single information 209 June 20th, 2020
IMU topic name 209 June 20th, 2020
IMU rate 220, 1 June 27th, 2020
IMU covariance
IMU pose in the robot_description 208 June 14th, 2020
Robot transformations (Tf prefixes) and tests to prevent regressions
Compare wheel odometry readings in the real robot and simulation 57
Compare IMU readings in the real robot and simulation
Pose taken from a laser scan matcher node
Check ground truth readings for Gazebo 204 June 11th, 2020
Script to move the robot doing squares 213 June 25th, 2020
Check control rates
Tune robot_localization parameters 185 July 5th, 2020

Progress notes

IMU MPU9255

Calibrating IMU

Before starting make sure locale is set to en_US.UTF-8 to avoid having problems with decimals numbers (, vs .).

sudo update-locale LC_ALL=en_US.UTF-8

Open RTIMULibDemoGL and calibrate the accelerometer and gyro.

cd /home/create1/RTIMULib/RTEllipsoidFit
RTIMULibDemoGL

Rename the file RTIMULib.ini and createN.ini and move it to ca_imu/config directory.

Testing calibration

cd /home/create1/RTIMULib/RTEllipsoidFit
octave
run mag_cal.m

MPU9255 calibration

Calibration video

Mapping with the real robot and hector_mapping

Mapping with the real robot and hector_mapping

References