← All Projects

TurtleBot 4 Autonomous Delivery & Fleet Deployment

May 2026

ros2 humble Nav2 Slam toolbox YOLOv8n Apriltag/ArUco Oak-D Camera RPLidar A1 Ubuntu
TurtleBot 4 Autonomous Delivery & Fleet Deployment
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 →