BillyBOT camera payload

An offline vision payload detects people and commands a pan/tilt camera on a faculty-directed campus guide robot.

My contribution
Camera payload development and team robot integration support
When
Jan 2025–May 2026
State
Prototype integrated and tested
Try pan/tilt simulation

Interactive pan/tilt troubleshooting demo with simulated readings.

Assembled camera payload: camera, pan/tilt mount, and mounting base
8.38 FPS structured scan-run average
7/7 servo command tests passed
0 out-of-bounds commands in those tests
On this page

Project brief

ProblemBuild an on-device person tracking camera for BillyBOT.
ConstraintRun without a cloud dependency and integrate with the robot hardware.
My responsibilityI selected and assembled the payload, built the ROS 2 vision/control path, and supported mounting and cross-device debugging.
Project scopeThe faculty-directed team owned the broader navigation, motor, LiDAR, GPS, and safety systems.

Decisions and iterations

Prototype the path

Detection and servo logic began on Raspberry Pi 3, then moved to Pi 5 for more performance headroom. The Jetson Orin Nano became the senior-design platform for accelerated inference.

Integrate physical hardware

The Arducam IMX477, Yahboom 2-DoF mount, digital servos, and PCA9685 driver were assembled as a serviceable payload. Separate camera and servo supplies kept the power paths clear; the PCA9685 provided the servo interface.

PCA9685 PWM driver and payload wiring during hardware integration

Build a modular control path

ROS 2 nodes separate capture, detection, target logic, and servo commands so stages can be debugged independently. Camera detection, image formats, pipeline latency, and communication were troubleshot during bring-up.

Check command limits and scan behavior

Structured scan-run testing recorded 8.38 FPS average. Seven servo command tests passed with zero out-of-bounds commands. The poster records that structured run separately from earlier bench trials.

Results and context

The tests measured scan-run frame rate and servo-command limits. Physical tracking accuracy and endurance remain later validation steps; navigation and robot safety were broader team responsibilities.

Test records: Symposium poster · page 1 ↗. The final design report · page 15 contains the earlier dry-run baseline.

Technical details

Hardware and wiring

The physical payload used a Jetson Orin Nano, Arducam IMX477 camera, Yahboom 2-DoF mount, DS3218MG-class servos, and PCA9685 PWM driver over I²C. The diagrams below explain the electrical and mechanical interfaces; build photographs remain in the archive.

Separate camera and servo power paths, with I²C connecting the Jetson to the PCA9685.
The tilt-axis bearing and servo interfaces shown in the pan/tilt assembly.
ROS 2 pipeline and iteration history

Capture, detection, target logic, and servo command paths were separated into ROS 2 stages. The platform progressed from Pi 3 to Pi 5 to Jetson. The final report describes the integration and test setup.

Five tracker states organize the control path: scan, track, hold, reacquire, and return to center.
Test method and results

The symposium poster records an 8.38 FPS structured scan run and seven passing command-bound tests with zero out-of-bounds commands. The final report also records an earlier 3.11 FPS, 10-frame dry run. These were different test setups; software dispatch time was measured separately from physical servo settling.

Symposium test records: scan-run frame rate, command bounds, and software dispatch timing. Broader live testing is listed as pending.
Earlier dry-run baseline: 10 frames at 3.11 FPS, recorded on page 15 of the final report.
Project values and components
ComputeJetson Orin Nano
CameraArducam IMX477
Pan/TiltYahboom 2-DoF mount
ServosDS3218MG-class digital
PWM DriverPCA9685 over I2C
FrameworkROS 2
Scan-run avg8.38 FPS
Servo tests7/7 passed · 0 out-of-bounds
Cloud dependencyNone — fully on-device

Photos and files

Reports and files

Continue