Resources

Table of contents

  1. Software setup
    1. 1. Development machine
    2. 2. ROS 2
    3. 3. Python environment
    4. 4. MBot
    5. 5. Debugging tools you will actually use
  2. Reference material
  3. Supplementary reading
  4. Academic support

Software setup

Everyone works from the same environment so that a bug you hit is a bug we can reproduce. Do this before the first lab.

Version pinning is not filled in yet. Confirm the MBot image and ROS 2 distribution for this term before the first lab, and replace the TODO versions below.

1. Development machine

Requirement Version
OS Ubuntu TODO LTS (native, or via VM)
ROS 2 TODO distro
Python 3.TODO
Git any recent

2. ROS 2

Follow the official install for your Ubuntu release, then verify:

source /opt/ros/TODO/setup.bash
ros2 doctor          # should report no serious issues
ros2 topic list      # should not error

Add the source line to your ~/.bashrc so every new shell has it.

3. Python environment

python3 -m venv ~/rob330-venv
source ~/rob330-venv/bin/activate
pip install -r requirements.txt   # numpy, opencv-python, matplotlib, scipy

Activate the venv before building, and use the same one all term. Mixing a system NumPy with a venv OpenCV produces import errors that look like code bugs but aren’t.

4. MBot

# TODO: clone the course MBot workspace
git clone TODO_MBOT_REPO ~/rob330
cd ~/rob330 && TODO_BUILD_COMMAND

Check the robot is alive before you debug anything else:

# TODO: adapt to your stack
ros2 topic echo /odom --once     # wheel odometry publishing?
ros2 topic echo /scan --once     # LIDAR publishing?
ros2 run rviz2 rviz2             # see the frames

Camera. Modules 3 and 4 (sensor modeling, visual odometry) need one, and not every MBot configuration ships with a camera. Confirm your robot has the camera module attached and publishing before the visual-odometry lab.

5. Debugging tools you will actually use

Tool For
rviz2 Seeing frames, scans, and paths — the fastest way to spot a transform error
ros2 bag record / play Capturing a hardware run so you can debug offline instead of re-running the robot
ros2 topic hz Checking a sensor is publishing at the rate you assumed
tf2_tools view_frames Dumping the frame tree when a transform is missing or stale
plotjuggler Plotting logged signals over time

Record a bag of every graded run. When a result looks wrong at 2 am, replaying a bag beats rebooting a robot — and objective 7.5 asks you to make your experiments reproducible anyway.

Reference material

Resource What it’s good for
Thrun, Burgard & Fox, Probabilistic robotics The measurement and motion models behind modules 2, 3, and 6. Suggested, not required — see the syllabus
Szeliski, Computer Vision: Algorithms and Applications (free PDF) Camera models, features, two-view geometry for modules 3–4
Hartley & Zisserman, Multiple View Geometry The definitive treatment of epipolar geometry; a reference, not a first read
LaValle, Planning Algorithms (free online) Module 5 — configuration space and sampling-based planners
ROS 2 documentation TF2, message types, CLI tools
MBot software library (doxygen) Generated API reference for the MBot libraries
Grisetti et al., A Tutorial on Graph-Based SLAM The clearest short introduction to the module 6 back end

Supplementary reading

  • Olson, AprilTag: A robust and flexible visual fiducial system — how fiducials give you ground truth without a motion-capture rig.
  • Censi, An ICP variant using a point-to-line metric — a readable entry point to scan matching if module 6’s front end interests you.
  • Cadena et al., Past, Present, and Future of SLAM: Towards the Robust-Perception Age — where the field is, once you know the basics.

Academic support

Asking for help early is a strategy, not a confession. Every resource on this page exists because students before you used it.


Table of contents