← All Projects
TurtleBot 4 Autonomous Delivery & Fleet Deployment
May 2026
ros2 humble
Nav2
Slam toolbox
YOLOv8n
Apriltag/ArUco
Oak-D Camera
RPLidar A1
Ubuntu
Fleet infrastructure
Full-stack installation guide for 50 robots
Wrote a comprehensive 6-part student guide covering companion PC, Raspberry Pi, and iRobot Create 3 bring-up — from OS install through full ROS 2 stack verification. Hosted at github.com/skylargutman/Turtlebot4_FAU.
DDS discovery server for multi-robot operation
Configured Fast DDS in server/client mode so all 50 robots can operate simultaneously on the same network without broadcast flooding. Each robot registers through a central discovery server on the companion PC.
Wired network topology for concurrent operation
Designed the lab network so each companion PC connects to the Raspberry Pi over ethernet — decoupling robot-to-RPi traffic from the shared Wi-Fi and enabling many bots to run in parallel without interference.
Custom hardware & software
Custom LCD status display
Wrote a Python ROS 2 node that drives the SSD1306 OLED via I²C, showing live battery percentage, Wi-Fi IP address, and dock status. Runs as a systemd service on the RPi with proper QoS handling for Create 3 sensor topics.
LiDAR scan normalizer & position correction
Built a custom scan_normalizer node that resamples RPLidar A1 output to a fixed 1083-point scan via linear interpolation for SLAM Toolbox compatibility, and corrected the URDF mounting orientation (π rad yaw) to match physical hardware. Dynamic subscription logic powers down the LiDAR when docked.
Hardware remounting for student accessibility
Reinstalled internal components on all fleet bots so students can access the RPi, interface boards, and cabling without disassembly errors. Secured and audited all hardware to ensure fleet readiness before semester handoff.
Perception pipeline
YOLOv8n human detection node
Integrated Ultralytics YOLOv8n with the OAK-D camera's compressed image feed as a ROS 2 node, publishing detection results and a handoff-complete signal. Tuned confidence thresholds and used a lightweight flag + timer pattern to prevent callback starvation of other nodes.
AprilTag detection with 3D pose & map transform
Built a ROS 2 node using OpenCV's ArUco module (DICT_APRILTAG_36h11) with solvePnP for 3D pose estimation, publishing to /apriltag/pose and /apriltag/map_pose via TF2 transform lookup. Resolved camera intrinsics from live /camera_info and handled OpenCV API version differences with a try/except fallback.
Autonomous navigation
SLAM mapping with Slam Toolbox + LiDAR
Configured and ran Slam Toolbox on the physical robot using the normalized LiDAR scan topic. Diagnosed and fixed clock sync issues across RPi, Create 3, and offboard PC that caused TF frame delays of thousands of seconds.
NAV2 navigation with costmap obstacle avoidance
Configured NAV2 for physical hardware (use_sim_time: false), tuned global and local costmaps, and established the correct two-step launch order: localization first, then navigation. Robot navigates to goal poses while replanning around dynamic obstacles.
Stateful mission controller — full delivery pipeline
Built a mission_controller ROS 2 package orchestrating a full delivery state machine: IDLE → NAV_TO_PICKUP → WAIT_FOR_HUMAN → WAIT_FOR_HANDOFF → NAV_TO_HOME → DONE. Uses a ROS 2 service trigger, NAV2 action client with proximity tolerance, and integrates YOLO and AprilTag outputs into a unified autonomous mission.
Repository
Installation guide, custom scripts, and systemd services for the FAU TurtleBot 4 fleet.
View on GitHub →