A 4WD differential drive robot is controlled using ROS2 Humble running on a Raspberry Pi 4 (running Ubuntu server 22.04). The vehicle is equipped with a camera for visual feedback and an RPLIDAR A1 sensor used for Simultaneous Localization and Mapping (SLAM), autonomous navigation and obstacle avoidance. The Linorobot2 project is leveraged through my use of a Teensy 4.1 running a Micro-ROS node to interface with 4 motors/encoders and an IMU.
The intent of the project is to explore robotics and computer vision by developing a robot that can detect a tennis ball, navigate toward it, and eventually return it to a person or designated base station — like a ball-retrieving assistant.
See the workspace template for workspace usage instructions.
(Work in Progress)
➡️ See the full task breakdown in docs/TODO.md
The following components were used in this project:
Some other tools or parts used in the project are as follows:
| Tool/Part | |
|---|---|
| 1 | Soldering iron |
| 2 | SOMELINE Ferrule Crimping Tool Kit |
| 3 | Screwdriver set |
| 4 | Hot Glue Gun |
| 5 | Hot Glue |
| 6 | iCrimp IWS-3220M Micro Connector Pin Crimping Tool |
| 7 | Connector Crimp Pin Cable Kit JST SYP Futaba |
| 8 | Zip ties |
The project can be built and developed in the VSCode devcontainers in .devcontainer .
For the devcontainers with GPU passthrough enabled, you first must install the nvidia container toolkit, either on Linux or on WSL2



