Skip to content
OnlyProjects
B.Tech / B.E. · Robotics & AutomationFor educational purposes only
Code included

ROS 2 Differential-Drive Robot with SLAM Mapping Study for a Warehouse Aisle

A buildable ROS 2 Humble robot that maps a modelled warehouse aisle, and a study of how odometry drift grows and SLAM corrects it

Mapped to your syllabusVTU 2022 Scheme (OBE/CBCS) · BXX685 Major Project Phase-I · Semester 6

Overview

1 min read

ROS 2 Differential-Drive Robot with SLAM Mapping Study for a Warehouse Aisle builds a working differential-drive robot on ROS 2 Humble and then uses it to answer a measurement question, not just to demo: how fast does wheel-odometry drift grow on a repeatable route, and how much of that drift does a 2D SLAM system actually remove?

Warehouse robotics is today's biggest industrial deployment of mobile robots in India — fulfilment centres around Bengaluru, Hyderabad and Bhiwandi run hundreds of aisle AMRs — and nearly all are differential-drive platforms with a 2D lidar, exactly what a student team can reproduce. Our robot pairs a Raspberry Pi 4 on Ubuntu 22.04 with an Arduino Nano motor controller: the Nano receives velocity commands and reports encoder ticks, the Pi integrates them into odometry, an MPU6050 IMU supplements the heading estimate, and an LD19-class 2D lidar feeds slam_toolbox, the pose-graph SLAM package behind ROS 2's Nav2 stack.

The study surface is a modelled warehouse aisle — cardboard shelving, pallets and a marked 10-metre closed loop on the lab floor. The team drives a fixed route, records the odometry trail against a taped floor plan, repeats the route with SLAM mapping active, and compares the two: drift in metres per loop, map quality against the floor plan at two grid resolutions, and the effect of loop closure. The complete ROS 2 workspace, firmware, launch files and evaluation scripts form the source bundle, so the next batch can rebuild the robot or the Gazebo-only simulation.

Relevant for
Karnataka
Level
Intermediate · 16 weeks · team of 4
Common at
Visvesvaraya Technological University, Anna University, Chennai, Dr. A.P.J. Abdul Kalam Technical University
Updated
Nov 2026

Syllabus alignment

VTU · 2022 Scheme (OBE/CBCS)

BXX685 · Major Project Phase-I · Semester 6 · 2 credits · CIE 100

Subjects this project applies
  • Python (ROS 2 nodes, evaluation scripts)
  • C / C++ (Arduino motor-controller firmware, rclcpp)
  • Arduino Uno/Nano embedded labs
  • Robotics: Kinematics and Control (branch core)
  • Sensors and Instrumentation (branch core)
How it is evaluated

Team: individual or group ≤ 4, single- or multi-disciplinary

report : presentation : Q&A = 50 : 25 : 25; same report marks for all batch-mates

Also fits: Anna University Regulation 2021, AKTU AICTE model (2020-21 onwards).

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

5 min read

Problem statement

Warehouse AMRs are differential-drive robots that localise with 2D lidar SLAM, and they are now a major employment sector for robotics graduates in India's e-commerce supply chain. Yet students meet this technology either as black-box commercial platforms they cannot inspect, or as kit tutorials they cannot extend into a defensible study. Without building the stack themselves, graduates cannot explain where odometry comes from, why it drifts, what a pose graph does, or how map resolution trades detail against memory.

There is a need for a buildable, budget-scale differential-drive robot on ROS 2 Humble — with team-written firmware bridge, odometry, transforms and SLAM integration — together with a repeatable mapping study protocol on a modelled warehouse aisle that quantifies odometry drift, measures SLAM-corrected map quality against a floor plan, and makes the numbers reproducible by others, all within a two-semester major-project structure.

Synopsis

Abstract

This project constructs a differential-drive mobile robot on ROS 2 Humble with encoder odometry, an IMU, a 2D lidar and slam_toolbox, and conducts a quantitative mapping study on a modelled warehouse aisle. The study measures wheel-odometry drift over repeated closed loops, evaluates SLAM-corrected maps against a taped floor plan at two resolutions, and shows where the correction comes from.

Introduction

Every mobile robot answers two questions — where are my wheels, and where am I really? Wheel odometry answers the first cheaply but integrates error: wheel slip, unequal radii and encoder quantisation accumulate until the estimate is useless. SLAM answers the second by matching lidar scans into a consistent map, correcting drift when the robot recognises places it has seen. Industrial AMRs run this loop thousands of times a day in controlled, structured aisles — which makes the warehouse aisle the right first problem for a student-built platform.

Existing System and Its Limits

  • Commercial AMR platforms (₹1.5–4 lakh) are black boxes: students see behaviour, never the TF tree, the QoS choices or the pose graph.
  • Kit platforms like TurtleBot3 demonstrate SLAM convincingly but ship canned tutorials; the mapping study — numbers, drift curves, resolution trade-offs — is left as an exercise.
  • Most college robotics projects stop at line-following or bluetooth cars, with no odometry model and no evaluation metric.
  • Limitation: an affordable, buildable ROS 2 platform paired with a repeatable protocol that quantifies what SLAM buys over odometry alone.

Proposed System

  • A hardware stack within student budget: 12 V encoder gear motors with a BTS7960 driver, an Arduino Nano running real-time motor firmware (velocity command → PWM, 20 Hz tick reporting), a Raspberry Pi 4 on Ubuntu 22.04 with ROS 2 Humble, an MPU6050 IMU and an LD19-class 2D lidar.
  • A ROS 2 software stack the team writes and owns: a firmware-bridge node, a kinematics node implementing the differential-drive model (v = (vL+vR)/2, ω = (vR−vL)/b) to publish /odom and the odom→base_link transform, IMU heading fusion via a complementary filter, lidar bring-up, and slam_toolbox for online mapping with the map→odom transform.
  • A modelled warehouse aisle: cardboard shelving and pallet mock-ups forming a 10-metre closed loop on a taped floor plan — the controlled environment a real aisle provides.
  • A mapping study protocol: five fixed-speed laps under odometry-only dead reckoning with the trail logged; five laps with slam_toolbox; map quality scored against the floor plan (wall alignment, corridor-width fidelity) at 0.05 m and 0.10 m resolutions; loop closures marked on the pose graph.

Feasibility

  • Technical: every component is documented and hobby-grade; ROS 2 Humble has LTS binaries for Ubuntu 22.04, and a Gazebo twin lets software work proceed before hardware is complete.
  • Economic: the BOM is ₹15,000–20,000, in line with a funded final-year project; the simulation-only path is free and exercises every software module.
  • Operational: 16 weeks cover build (6), integration (4), study campaign (3) and documentation (3), matching the VTU build-then-study phase structure.

Objectives

  1. 01Build a differential-drive robot with encoder motors, a Nano motor-controller publishing ticks at 20 Hz, a Raspberry Pi 4 running ROS 2 Humble, and an LD19-class 2D lidar.
  2. 02Implement the differential-drive kinematics node that converts encoder ticks to /odom and the odom→base_link transform, with an MPU6050 complementary filter for heading.
  3. 03Integrate slam_toolbox for online 2D SLAM with a correct map→odom→base_link TF tree, verified in RViz2.
  4. 04Create a modelled warehouse aisle with a taped 10-metre closed-loop floor plan and fixed start/home reference points.
  5. 05Quantify wheel-odometry drift over five closed loops by comparing the logged odometry trail against the taped plan.
  6. 06Evaluate SLAM map quality against the floor plan at 0.05 m and 0.10 m resolutions, scoring wall alignment and corridor-width fidelity, and document the loop-closure behaviour.

Scope

In scope

  • One differential-drive platform (two driven wheels plus caster(s)) with manual teleop control; no autonomous navigation stack.
  • Odometry from wheel encoders with IMU heading fusion; 2D SLAM via slam_toolbox in online mapping mode.
  • A modelled single-aisle-plus-loop environment and a manually driven fixed route at fixed speed.
  • Map-quality and drift metrics computed by team-written Python scripts from recorded rosbag data.

Out of scope

  • Autonomous goal navigation with Nav2, path planning or obstacle avoidance behaviours (planned follow-up).
  • Multi-floor or 3D SLAM; visual SLAM and cameras.
  • Multi-robot coordination; fleet software.
  • Outdoor operation and uneven terrain.

Methodology

The project follows a build → integrate → study sequence over 16 weeks, aligned to the two VTU project phases.

PhaseWeeksWorkDeliverable
Literature & definition (Phase-I)1–2Study ROS 2 concepts (nodes, topics, TF, QoS), differential-drive kinematics and pose-graph SLAM; finalise specificationsPhase-I report (BXX685)
Simulation twin3–4Gazebo model with matching kinematics; teleop, odom and slam_toolbox running in simulation; TF tree verifiedWorking sim stack
Hardware build5–8Chassis, motors, driver, Nano firmware (C), power system; lidar and IMU interfaced to the PiRolling robot
ROS 2 integration9–11Firmware bridge, kinematics/odom node, IMU fusion, lidar bring-up, slam_toolbox launch; calibration of wheel radius and track widthIntegrated robot
Mapping study12–13Drift laps, SLAM laps, map capture at two resolutions; evaluation scripts and metric tablesResults dataset
Documentation & viva14–16Phase-II report (BXX786), PPT, live demonstration with the modelled aisleFinal submission

Testing approach: unit level (firmware command/tick loopback tests, kinematics node verified against hand-computed poses), integration level (TF tree audit with tf2 tools, odom-vs-ground-truth straight-line and rotation tests), and system level (the study protocol itself: five laps per condition, logged rosbags, scripted metrics). The Gazebo twin doubles as a regression harness — every node is verified in simulation before it touches hardware.

Architecture & tech stack

1 diagram · 6 technologies · 2 min read

  • ROS 2 Humble on Ubuntu 22.04 (Raspberry Pi 4)
  • Python and C++ ROS 2 packages (rclpy/rclcpp)
  • slam_toolbox (pose-graph 2D SLAM)
  • 2D lidar (LD19/RPLIDAR class) and MPU6050 IMU
  • Arduino Nano motor-controller firmware (C)
  • RViz2, Gazebo Classic simulation, colcon build tool

The robot follows the standard ROS 2 layered architecture: real-time firmware, driver nodes, state estimation, SLAM and operator tools, connected by a documented TF tree and topic graph.

  1. Real-time layer — the Arduino Nano runs a fixed 50 Hz control loop: it parses velocity commands, drives the BTS7960 outputs, and reports left/right encoder ticks; timing here is deterministic because it is the only place PWM must not jitter.
  2. Driver layer — a Python firmware-bridge node on the Pi publishes /cmd_vel down and /ticks up over USB serial; lidar and IMU drivers publish /scan and /imu.
  3. Estimation layer — the kinematics node implements the differential-drive model to publish /odom and the odom→base_link transform; a complementary filter fuses gyro heading with the encoder-derived heading.
  4. SLAM layer — slam_toolbox consumes /scan and /odom, builds the pose graph, publishes the map and the map→odom transform, correcting odometry drift at loop closures.
  5. Operator layer — RViz2 visualisation, keyboard teleop, rosbag recording and the evaluation scripts that turn bags into the study's metric tables.
flowchart LR
  TEL["Keyboard teleop"] -->|"/cmd_vel"| BR["Firmware bridge node"]
  BR -->|"velocity frame over USB"| NANO["Arduino Nano motor firmware (C)"]
  NANO -->|"PWM + direction"| DRV["BTS7960 driver"]
  DRV --> MTR["Encoder gear motors"]
  MTR -->|"ticks at 20 Hz"| BR
  BR -->|"/ticks"| KIN["Kinematics node: v = (vL+vR)/2, omega = (vR-vL)/b"]
  IMU["MPU6050"] -->|"/imu"| KIN
  KIN -->|"/odom + odom->base_link TF"| SLAM["slam_toolbox pose-graph SLAM"]
  LID["2D lidar"] -->|"/scan"| SLAM
  SLAM -->|"/map + map->odom TF"| RV["RViz2 + rosbag + evaluation scripts"]
  KIN --> RV
  AISLE["Modelled warehouse aisle + taped floor plan"] -->|"scans and laps"| LID

The TF tree is the architecture's contract: map→odom published only by SLAM, odom→base_link only by odometry. Keeping that ownership strict is what makes the drift study meaningful — the gap between map→odom and identity is the drift that slam_toolbox removes.

Modules

4 modules

  1. Module 01

    Chassis, Drive & Power (Member 1)

    Owns the physical robot: chassis layout with correct track width and centre of mass, motor mounting, caster selection, BTS7960 wiring, buck-converter power tree separating 12 V drive from 5 V Pi supply, and the wiring harness documentation that the rest of the team plugs into.

  2. Module 02

    Motor Firmware & Real-Time Loop (Member 2)

    Writes and tests the Arduino Nano firmware in C: 50 Hz loop reading encoder interrupts, parsing velocity frames from USB serial, closed-loop PWM via a simple P controller per wheel, and tick reporting at 20 Hz with overflow-safe counters. Delivers loopback tests proving command/tick fidelity before ROS integration.

  3. Module 03

    ROS 2 Nodes, TF & Odometry (Member 3)

    Implements the firmware-bridge node, the differential-drive kinematics node publishing /odom and odom→base_link, the MPU6050 complementary filter, and the wheel-radius/track-width calibration procedure. Owns the TF tree audit and the straight-line and rotation ground-truth tests that validate odometry before any SLAM claims.

  4. Module 04

    SLAM Integration & Mapping Study (Member 4)

    Brings up the lidar driver and slam_toolbox with tuned parameters, owns the study: the modelled aisle construction, route scripts, rosbag capture plan, and the Python evaluation scripts that compute drift and map-alignment metrics from the bags, producing the results tables and plots for the report.

Slides

12 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    ROS 2 Differential-Drive Robot with SLAM Mapping Study

  2. Slide 2

    Warehouse AMRs and the Skills Gap

  3. Slide 3

    Problem Statement

  4. Slide 4

    System Design — Hardware

  5. Slide 5

    System Design — Software and TF

  6. Slide 6

    Kinematics & Odometry

  7. Slide 7

    SLAM with slam_toolbox

  8. Slide 8

    The Modelled Warehouse Aisle

  9. Slide 9

    Study Results — Drift and Map Quality

  10. Slide 10

    Individual Contribution

  11. Slide 11

    Limitations

  12. Slide 12

    Conclusion & Future Scope

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 14 answered free · 11 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    What is SLAM and why can't wheel odometry alone localise a mobile robot?

    SLAM — simultaneous localisation and mapping — builds a map from sensor observations while estimating the robot's pose within it, so both map and pose improve together. Wheel odometry integrates encoder motion and therefore integrates every error source too: wheel slip, unequal wheel diameters and surface irregularities accumulate without bound, so odometry is reliable over seconds and metres but drifts hopelessly over loops, which our study measured directly.

  2. 02Concept

    Explain the TF tree of your robot and who publishes each transform.

    There are two transforms: map→odom, published exclusively by slam_toolbox, representing the accumulated correction between the map frame and odometry; and odom→base_link, published exclusively by our kinematics node from encoder and IMU data. This strict ownership matters because the map→odom gap is exactly the drift SLAM corrects — if a second node published either transform, the tree would fight itself and the study's numbers would be meaningless.

  3. 03Concept

    Why ROS 2 and not ROS 1 for a new student robot?

    ROS 2 Humble is the current LTS with industry adoption in exactly the warehouse-AMR sector we study, it removes the ROS 1 master through DDS discovery, gives us per-message QoS control that matters for lidar streams, and slam_toolbox and Nav2 are now maintained on ROS 2 first. Starting a new build on ROS 1 would mean inheriting a deprecated ecosystem and no migration path.

+11 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

8 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

8 steps · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

280 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

280 words · ~1 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

288 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

288 words · ~1 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

4 sources

  1. ROS 2 Humble Documentation — Open Robotics (installation, concepts, tutorials)
  2. slam_toolbox — Steve Macenski (pose-graph 2D SLAM for ROS/ROS 2, Nav2-supported)
  3. ROBOTIS TurtleBot3 e-Manual — SLAM and differential-drive platform reference
  4. Thrun, S., Burgard, W. & Fox, D., Probabilistic Robotics, MIT Press

Cite this bundle

OnlyProjects. (2026). ROS 2 Differential-Drive Robot with SLAM Mapping Study for a Warehouse Aisle: B.Tech / B.E. Robotics & Automation project bundle [Educational resource]. https://onlyprojects.online/projects/btech-robotics-ros2-differential-drive-slam-mapping-study

Future scope

1 min read

  • Autonomous navigation: layer Nav2 on the saved map with AMCL localisation for goal-driven aisle traversal, completing the AMR pipeline.
  • Fleet slice: two robots sharing the aisle with ROS 2 domain partitioning and a simple traffic rule, demonstrating coordination basics.
  • Sensor upgrade study: replace the LD19 with a higher-grade lidar and quantify the map-quality delta under the same protocol.
  • micro-ROS migration: move the motor firmware onto a micro-ROS node to unify the stack under ROS 2, removing the custom serial bridge.
  • Field trial: run the mapping protocol in a real storeroom or the college library stack area and compare metrics against the modelled aisle.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.

B.Tech / B.E.Code included

Aerospace / Aeronautical

Low-Speed Open-Circuit Wind Tunnel with Force Balance for Aerofoil Lift-Drag Measurement

Build a subsonic test tunnel on a student budget, then trace lift and drag on a 3D-printed NACA 0012 against theory

  • C / Arduino Uno (industry-standard extra) — HX711 load-cell and serial logging firmware
  • Python (NumPy, Matplotlib) — calibration, force coefficients and plots
  • MATLAB / Scilab — thin-airfoil theory overlay and regression
  • +4

intermediate14 wk4 students