LiDAR Mapping with Wheel Odometry
ROB521 Mobile Robotics and Perception
Spring 2026
Last Revised: February 25, 2026
,1 Introduction
This is the third laboratory exercise of ROB521-Mobile Robotics and Perception.
2 Objective
The objective of this lab is to develop wheel odometry pose estimates and use them to
construct an occupancy grid map of the environment. In particular, you are
• To learn about the robot’s hardware and its suite of sensors
• To design and perform an experiment to calibrate the robot’s wheel radius and base-
line
• To implement a dead-reckoning robot motion estimator using wheel encoder data
• To construct and update an occupancy grid map using live scan measurements and
pose estimates
2.1 Lab Deliverables
In this (and future) labs, look for deliverables that will be in bolded red text throughout the
manual, and follow the instructions for each. Additionally, a summary of the deliverables
and their mark distribution is at the end of the document. In this lab, you will submit
a pdf lab report and a video demonstrating the deliverables. You will also need to
demonstrate your mapping algorithm working on a Turtlebot during the in-person
lab session.
In your lab report, for each deliverable, include a short description of what your code
is doing, and what the robot does as a result of running the code. Provide context that will
allow the TA’s to understand what your robot is doing, in order for them to properly gauge
your success. Importantly, state whether you were able to complete the deliverable. If not,
explain why you weren’t able to complete the task. Do not write more than a paragraph for
each deliverable.
Finally, include a copy of your code for the TA’s to look over. The code itself will not be
marked, but it must be presented to demonstrate that each group has independently written
their solution. If the code does not look complete, TAs will run the code themselves to
confirm if the deliverables have been completed.
Last Revised: February 25, 2026 2
, 3 Getting Started
3.1 TurtleBot Topics
In the first lab we discussed the ROS topics subscribed to and published by our ROS
Gazebo simulation. In this lab we will use three topics: cmd_vel, odom, scan, and
sensor_state.
The cmd_vel topic uses a twist message type. The contents of this message are
shown by Figure 1 used to set the linear and angular velocity of the robot.
linear:
x: -0.000766990473494
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: -0.000899488280993
Figure 1: Example Twist message
The odom message provides a computed solution for the turtlebot3 based on the same
wheel odometry method presented in class combined with estimates from the imu, and is
accurate up to wheel slip (with some corrections from the imu) and teleportation by human
carrier. The message contains the components shown in Figure 2. The pose is expressed
with 7 parameters, a vector translation and quaternion rotation relative to the initialization
frame at launch, whereas the velocity (twist) is expressed with 6 parameters, 3 linear and 3
angular.
The scan message contains the LiDAR scan data, updated at 5 Hz. An example is
shown by Figure 3. A range measurement of inf in simulation means that the LiDAR
detected no return signal — on the actual robot the reading is 0.0. Therefore, you can
conclude that there are no objects between the robot and the max range measurement in
that direction.
Finally, the sensor_state topic contains the raw sensor values for a range of sensors
(Figure 4). Of our concern are two values right_wheel and left_wheel, which are
the number of encoder ticks that have been counted, by each wheel respectively, since the
last published sensor_state message.
Last Revised: February 25, 2026 3