Skip to content

Repository files navigation

ME495 Sensing, Navigation and Machine Learning For Robotics

  • Daniel Augustin
  • Winter 2026

Package List

nuturtle_description

Displays and configures TurtleBot3 models in RViz.

Features:

  • URDF models for TurtleBot3 Burger
  • Multi-robot visualization with color variants (red, blue, green, purple)
  • Launch files for loading robot descriptions
  • Differential drive parameters configuration

Launch:

# View single robot
ros2 launch nuturtle_description load_one.launch.xml color:=blue

# View all color variants
ros2 launch nuturtle_description load_all.launch.xml

nusim

2D simulator and visualizer for TurtleBot3 robots.

Features:

  • Ground-truth robot state simulation
  • Arena walls and cylindrical obstacles
  • Simulated sensor data (encoders, fake landmarks)
  • Noise models for wheel slip and sensor uncertainty

Launch:

ros2 launch nusim nusim.launch.xml

nuturtle_control

Control and odometry nodes for TurtleBot3.

Nodes:

  • turtle_control - Converts cmd_vel to wheel commands and publishes joint states
  • odometry - Computes odometry from wheel encoders using forward kinematics
  • circle - Generates circular motion trajectories

Launch:

# Simulation with circular motion
ros2 launch nuturtle_control start_robot.launch.xml cmd_src:=circle robot:=nusim

# Physical robot with teleop
ros2 launch nuturtle_control start_robot.launch.xml cmd_src:=teleop robot:=localhost

nuslam

EKF SLAM with cylindrical landmark detection from 2D lidar. Detects obstacles in laser scan data, builds a landmark map online, and corrects odometry drift in real time. Supports both simulation (known/unknown data association) and real TurtleBot3 deployment.

Nodes:

  • landmarks — Clusters lidar scan points, fits circles, classifies landmarks using the inscribed angle theorem; publishes detected positions as MarkerArray
  • slam — EKF SLAM with known data association (Task L.2, simulation only)
  • slam_uda — EKF SLAM with unknown (Euclidean-distance) data association (Tasks L.3 & L.4)

Launch:

# Task S — landmark detection only (simulation)
ros2 launch nuslam landmark_detect.launch.xml robot:=nusim

# Task L.3 — SLAM with unknown data association (simulation)
ros2 launch nuslam unknown_data_assoc.launch.xml cmd_src:=teleop

# Task L.4 — Real-world SLAM (split across robot and PC)
ros2 launch nuslam turtlebot_bringup.launch.xml          # on TurtleBot
ros2 launch nuslam pc_bringup.launch.xml cmd_src:=teleop # on workstation

Visualization:

  • Red robot — Ground truth (simulation only)
  • Blue robot — Raw odometry (accumulates drift, goes through walls)
  • Green robot — EKF SLAM estimate (landmark-corrected)

Task L.3 Results (simulation):

x (m) y (m) θ (rad)
Ground truth 0.037 0.827 0.369
Odometry -0.380 1.194 0.368
SLAM 0.037 0.824 0.368

SLAM position error: 0.003 m vs odometry 0.556 m

Task L.4 Results (real robot — Donatello):

x (m) y (m) θ (rad)
Odometry 0.741 -1.224 -0.879
SLAM 1.023 -0.539 1.254

SLAM Euclidean error from origin: 1.16 m vs odometry 1.43 m — SLAM outperformed odometry.


nuturtlebot_msgs

Custom message and service definitions for TurtleBot3 low-level interface.

Messages:

  • WheelCommands - Motor velocity commands
  • SensorData - Encoder readings and timestamps

Services:

  • Control - Set velocity and radius for circular motion
  • InitialPose - Reset odometry to specified pose

Library

turtlelib

C++ library for 2D rigid body transformations and differential drive kinematics.

Components:

  • se2d - 2D rigid body transformations (SE(2))
  • geometry2d - 2D geometric primitives (points, vectors, twists)
  • svg - SVG file generation for visualization
  • diff_drive - Differential drive robot kinematics (forward and inverse)

Videos

Robot driving in RViz (circle command, odometry enabled)

srencast.mp4

Real Robot driving (circle command, odometry enabled)

real_turtle_moving_in_circle.mp4

SLAM in Action (EKF SLAM with landmark corrections)

Video demonstration showing the green robot (SLAM estimate) being corrected by landmark observations while the blue robot (pure odometry) drifts away from ground truth.

slam_sim.webm

SLAM in Action deployed on turtlebot

realrobot_rviz_side_by_side.mp4

About

slam-AfricanDaniel created by GitHub Classroom

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages