A differential-drive rover with a Raspberry Pi brain, 2D LiDAR, camera, and IMU ā capable of running full ROS2 Nav2 navigation, SLAM mapping, and on-device object detection. Everything below is priced in INR and sourced from common hobbyist electronics suppliers.
Raspberry Pi 4 (4GB) running Ubuntu 22.04 + ROS2 Humble, the same OS/framework combo used throughout the course.
RPLidar A1 for 360° 2D scanning, a Pi Camera for object detection, an IMU for orientation, and ultrasonic sensors as a backup bumper ring.
4WD chassis with encoder-equipped DC gear motors, driven by a dual-channel motor driver off a 12V Li-ion pack.
Core parts are required for the full course capstone (LiDAR-based Nav2 + SLAM). Optional rows are upgrades you can add later without changing anything else.
| Component | Purpose | Qty | Approx. Price |
|---|---|---|---|
| Raspberry Pi 4 Model B (4GB)Core | Main compute ā runs Ubuntu + ROS2 | 1 | ā¹6,500 |
| 32GB microSD card (A2, high-endurance) | OS + ROS2 workspace storage | 1 | ā¹700 |
| 4WD aluminum chassis + wheel set | Robot frame | 1 | ā¹2,200 |
| DC geared motors w/ quadrature encoders | Drive + odometry feedback | 4 | ā¹1,800 |
| Dual-channel motor driver (Cytron MDD10A / TB6612FNG) | Drives motors from Pi GPIO/PWM | 1 | ā¹900 |
| RPLidar A1M8 ā 360° 2D LiDAR | SLAM mapping & Nav2 costmap input | 1 | ā¹9,999 |
| Pi Camera Module v2 (or USB webcam) | Object detection input | 1 | ā¹1,200 |
| MPU6050 IMU module | Orientation for sensor fusion | 1 | ā¹250 |
| HC-SR04 ultrasonic sensor | Backup close-range bumper ring | 3 | ā¹300 |
| 12V 3S Li-ion battery pack (~3000mAh) + BMS | Main power supply | 1 | ā¹1,800 |
| 5V/3A buck converter module | Regulated power for Pi & sensors | 2 | ā¹500 |
| Power switch + emergency stop button | Safety cutoff | 1 | ā¹350 |
| Wiring, connectors, screws, standoffs | Assembly hardware | ā | ā¹600 |
| 3D-printed / acrylic sensor mounts | LiDAR/camera/IMU mounting | ā | ā¹700 |
| Contingency & spares (~10%) | Buffer for shipping/DOA parts | ā | ā¹2,800 |
| Coral USB Accelerator (Edge TPU)Optional | Real-time YOLO-class inference | 1 | ā¹4,500 |
| High-capacity 5200mAh battery upgrade | Longer runtime | 1 | ā¹1,700 |
| Metal-gear precision motor upgrade | Better torque & odometry accuracy | 1 | ā¹1,500 |
| Aluminum extrusion frame upgrade | Sturdier, more expandable chassis | 1 | ā¹1,200 |
| Spare parts kit (wheels, fuses, wire) | Field repairs | 1 | ā¹800 |
| Core total | ā¹30,600 | ||
| Core + all optional upgrades | ā¹40,300 | ||
On a tighter budget? Drop the RPLidar and use only the camera + ultrasonic ring for a ~ā¹20,600 build. You'll lose 360° SLAM mapping, but can still run ROS2, differential-drive control, and camera-based object detection ā great for modules 1ā6 before upgrading.
Each stage maps to a module in the curriculum ā do them in order and you'll have a fully verified subsystem before moving to the next.
Bolt the four gear motors to the chassis, attach wheels, and mount the caster (if your kit uses one). Route motor wires toward where the driver board will sit.
Connect the battery through the emergency-stop switch and a fuse before anything else. Wire the buck converters for the Pi's 5V rail separately from the motor driver's 12V rail ā never power the Pi directly off the motor supply.
Flash Ubuntu 22.04 (64-bit) to the microSD card, boot the Pi headless over SSH, then install ROS2 Humble and create your workspace (see the Software Setup section below).
Mount the IMU close to the robot's center of rotation, attach the camera facing forward, and space the three ultrasonic sensors around the front bumper. Connect the IMU over I²C and the ultrasonics to GPIO.
Write or install a ROS2 driver node that subscribes to /cmd_vel and converts it into PWM signals for each wheel. Confirm with ros2 topic pub /cmd_vel geometry_msgs/Twist that the robot drives, turns, and stops correctly.
Drive the robot exactly 1 meter in a straight line and compare against the encoder-reported distance; adjust your wheel-radius and wheel-base parameters until they match. Do the same for a 360° in-place rotation to calibrate angular odometry.
Mount the RPLidar A1 with a clear 360° view, bring up its ROS2 driver, and confirm /scan looks correct in rviz2. Launch slam_toolbox and drive the robot around a room to build your first map.
Load your saved map, bring up the full Nav2 stack, and send a "Nav2 Goal" from rviz2 to watch the global and local planners work together. Finally, launch your object-detection node and confirm detections publish correctly alongside navigation.
Safety first: Li-ion packs can be dangerous if punctured, short-circuited, or charged incorrectly ā always charge with a balance charger matched to your pack's cell count, never leave batteries charging unattended, and keep a fused, easily reachable emergency-stop switch on every powered test. Run early autonomous tests in an open, obstacle-padded area.
This mirrors what you'll do inside Module 11 ā the same commands, just gathered in one place for reference.
# 1. Install ROS2 Humble on Ubuntu 22.04 (Raspberry Pi) $ sudo apt update && sudo apt install ros-humble-desktop # 2. Install navigation & SLAM packages $ sudo apt install ros-humble-navigation2 \ ros-humble-nav2-bringup ros-humble-slam-toolbox \ ros-humble-robot-localization # 3. Create your workspace $ mkdir -p ~/robot_ws/src && cd ~/robot_ws $ colcon build --symlink-install $ source install/setup.bash # 4. Bring up your robot's drivers $ ros2 launch my_robot_bringup robot.launch.py # 5. Build a map, then navigate $ ros2 launch slam_toolbox online_async_launch.py $ ros2 launch nav2_bringup navigation_launch.py \ map:=~/robot_ws/maps/room.yaml
Full package list, driver recommendations, and links to datasheets live on the Resources page.
Every subsystem here ā kinematics, PID, planners, detection ā has a free interactive simulator. Get comfortable in the browser before you touch a soldering iron.