build details

Show: section status errors & todos local changes recent changes last change in-page changes feedback controls

Calibration - Inertial Measurement Unit Calibration

Modified 2020-03-04 by Timothy Scott

A Duckiebot set up according to Unit E-1 - Setup

An IMU.

The IMU is calibrated

The Intertial Measurement Unit (IMU) detects the linear acceleration and angular velocity of the Duckiebot. Without calibration, all of these measurements have a slight offset, so it must be calibrated.

Step 1: Use Portainer to stop the duckiebot-interface-dbv2 container.

Step 2: Use the following command to launch the calibration procedure:

$ docker -H duckiebot name.local run --privileged -it -v /data:/data \
  --name duckiebot-interface-calibration --network=host --rm \
  duckietown/dt-duckiebot-interface-dbv2:daffy-arm32v7 \
  roslaunch sensor_suite imu_calibration.launch

Step 3: Follow the instructions on the command line. You will be asked to place the Duckiebot on a level surface and leave it perfectly still for approximately 10 seconds. In this time, it will take many measurements from the IMU, average them, and use them to calculate offsets of both measurements in all 3 axes.

The results of the calibration will be stored in /data/config/calibrations/sensor_suite/imu/duckiebot name.yaml.

Validation

Modified 2022-11-14 by Andrea Censi

To validate that the calibration worked, do the following:

Step 1: Start the duckiebot-interface-dbv2 container in Portainer.

Step 2: Start GUI tools on your computer using Duckietown Shell:

$ dts start_gui_tools duckiebot name --base_image duckietown/dt-core:daffy

Step 3: Within GUI tools, run the command rqt_plot. A plot window should open.

Step 4: In the Plot window, select the topics /duckiebot name/imu_node/imu/linear_acceleration and /duckiebot name/imu_node/imu/angular_velocity, and click on the ‘plus’ button for each.

Step 5: Place the duckiebot on a level surface, and leave it perfectly still. All measurements should be at 0, except for linear_acceleration/z, which should be at 9.81. This is 1G, in m/s^2.