Meet Your TurtleBot 3 Waffle Pi
(Sensor & Actuator Programming)
ROB521: Mobile Robotics and Perception
Winter 2026
,Contents
1 Introduction 2
2 Objective 2
2.1 Lab Deliverables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3 Equipment & Software 3
3.1 TurtleBot 3 Waffle Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2.1 Raspberry Pi 3B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2.2 Lidar Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2.3 Dynamixel XM430 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2.4 OpenCR 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Simulated TurtleBot 3 Waffle Pi in Gazebo . . . . . . . . . . . . . . . . . . . . . . . 6
4 Development Environment 7
4.1 Setting up Simulation Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1.1 Installing ROS Noetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1.2 Install TurtleBot3 ROS Packages . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 Setting up Experiment Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5 Getting Started 10
5.1 Testing Simulation Setup: Remote Control of Robot . . . . . . . . . . . . . . . . . . 10
5.2 Testing Experiment Setup: Remote Control of Robot . . . . . . . . . . . . . . . . . . 11
5.3 TurtleBot 3 Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.3.1 Subscribed Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.3.2 Published Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.4 A Simple Publisher Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.5 A Simple Subscriber Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6 Assignment 16
6.1 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.1.1 Task 1: publish to ’cmd vel’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.1.2 Task 2: subscribe from ’odom’ . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.1.3 Task 3: Running subscriber node and publisher node simultaneously . . . . . 19
6.2 Lab Experiments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.2.1 Task 4: Verify simulation results . . . . . . . . . . . . . . . . . . . . . . . . . 19
7 Deliverable Summary 20
8 Additional Resources 20
1
, 1 Introduction
Welcome to ROB521—Mobile Robotics and Perception! This course will encompass a total of
four labs and a design project, all of which are to be completed within a week of the scheduled
practicum periods. Each of the four labs will grow in complexity and are intended to demonstrate
important robotic concepts presented during the lectures. It is imperative that you properly un-
derstand the concepts and methods studied in the lab as they will provide the basis of all future labs.
We will specify tasks you need to do in the Assignment section of the lab handout. For all
labs, assignments will have two components, simulation and experiments. Simulation tasks can
be finished entirely in simulator (without accessing a real robot). These tasks are set up so that
you could finish most, if not all, of the implementation before your in-person lab session. The
experiment tasks are to be finished during lab sessions, verifying your simulation results on a real
robot. It is quite difficult to complete all of the work during the lab times, even assuming good
programming experience in the team. Therefore, we strongly recommend that you complete the
simulation tasks before your lab time slot.
2 Objective
The objective of this laboratory exercise would be to familiarize you with the equipment and
software that will be used for all labs in ROB521. In particular, you are:
To set up ROS environment for running simulation
To learn about the robot’s hardware and its suite of sensors
To learn how to write ROS programs to command the robot in both simulation and on a real
robot, i.e.,
– How to write a simple Python ROS node
– How to acquire data from the sensors
– How to drive the actuators
Possessing these capabilities will permit you to tackle the future labs.
2.1 Lab Deliverables
There are no deliverables for this lab. However, for future labs, look for a summary of the de-
liverables and their mark distribution at the end of the document. If you have to submit a lab
report, 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. Avoid
writing 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, TA’s will have access to all of the computers, and will
be able to run the code themselves to confirm that the deliverables have been completed.
2