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