Skip to content

Repository files navigation

BallBot

CI Testing CI Linting

A 4WD differential-drive robot running ROS 2 Humble that detects pickleballs on a court, navigates to them, picks them up with an onboard 6-DOF arm, and returns them to a base station — all while staying outside the court boundary so it doesn't get stepped on.

The original v1 platform paired a Raspberry Pi 4 with a Teensy 4.1 (motor/encoder/IMU via linorobot2), an RPLIDAR A1, and a USB webcam. The v2 redesign in progress swaps in a Jetson Orin Nano Super, a DOFBOT-SE 6-DOF arm, and an rpicam3.

Status: v2 in active development. See:

Hardware

Front view

Side view

Rear top view

Initial construction

v1 part list

Part
1 Raspberry Pi 4 (4 GB)being replaced by Jetson Orin Nano Super in v2
2 AmazonBasics 128 GB SD Card
3 Yahboom Aluminum 4WD ROS Robot Car Chassis
4 L298N Motor Drivers
5 DFRobot DC-DC Power Module 25W DFR0205
6 Screw-down Terminal Block Strips
7 RPLIDAR A1
8 GeeekPi Fan Hat with OLED
9 Teensy 4.1 (running linorobot2_hardware)
10 Various standoffs, wires, and crimped connectors

v2 additions (in progress)

  • Jetson Orin Nano Super (compute upgrade)
  • DOFBOT-SE 6-DOF arm + gripper (manipulation)
  • Raspberry Pi Camera Module 3 (CSI, replacing the USB webcam)

See ARCHITECTURE.md for the full v2 hardware story including the open question on whether to bypass the DOFBOT STM32 expansion board and drive it directly over I2C from the Orin.

Development

The project builds and runs in the VSCode devcontainers under .devcontainer/. Pick the variant matching your host:

  • linux-gpu/ — Linux host with NVIDIA GPU
  • wsl-gpu/ — WSL 2 with GPU passthrough

For GPU passthrough you'll first need the NVIDIA Container Toolkit.

Acknowledgments

About

ROS2 robot for learning and autonomous tennis ball retrieval

Topics

Resources

Contributing

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages