build details

# 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.