Motion · Vision
OAK-D Lite Pan/Tilt
A printable two-axis yoke and BotGear service setup for steering a Luxonis OAK-D Lite depth camera, developed as Work-E’s perception head.

- Status
- Work in Progress
- Difficulty
- Intermediate
- Build time
- TODO: validate after first build
- BotGear version
- TODO: record tested version
BotGear service keys
oakdarduinoservoGitHub configuration
Repository · TODO: add project configuration path · Revision TODO: pin tested commit or tag
A printable two-axis yoke that gives the Luxonis OAK-D Lite depth camera controlled pan and tilt. It is being developed as Work-E’s steerable perception head and as a reusable BotGear component.
Current state: The v2 CAD design is complete, print-ready, and interference-checked, but it has not yet been printed, assembled, wired, or tested as a complete system.
<<TODO — add photo of assembly put together>>
See It In Action
<<TODO — add video of complete working system>>
Planned demonstrations include manual pan/tilt from BotGear UI controls and, later, automatic person tracking using OAK-D detections.
What It Does
- Mounts an OAK-D Lite between a driven tilt pivot and a passive idler pivot.
- Rotates the complete yoke around a vertical pan servo.
- Keeps pan centered exactly through the camera center.
- Places the tilt axis 10.25 mm from the camera’s depth center, an accepted constraint of the one-face VESA mounting arrangement.
- Provides steerable RGB/depth perception for Work-E while remaining reusable outside that robot.
BotGear Services / Service Keys
The exact repository service keys currently required are:
oakd— OAK-D Lite camera and depth/vision data.arduino— hardware controller implementing theservo_controllercapability.servo— servo control service used for pan and tilt.
<<TODO — add the exact configured instance keys for the OAK-D, pan servo, tilt servo, and Arduino after the authoritative project configuration is committed>>
Hardware
| Quantity | Component | Model | Purpose | Required/Optional |
|---|---|---|---|---|
| 1 | Depth camera | Luxonis OAK-D Lite | RGB and stereo-depth perception | Required |
| 2 | Servo | Feetech FS5106B | One pan axis and one tilt axis | Required |
| 2 | Cross/4-point servo horn with screws | 25-tooth horn, measured unit | Connect servos to printed horn adapters | Required |
| 8 | Servo ear self-tapping screws | Diameter must be verified | Fasten servos to Base and TiltCage | Required |
| 9 | Internal joint self-tapping screws | For 2.6 mm pilot / 3.0 mm clearance design | Three screws at each printed joint | Required |
| 2 | M4 × 8 mm screw | M4 | Fasten camera through factory VESA threads | Required |
| 1 set | Printed parts | PLA: Base, YokeChassis, TiltCage, CameraPlate, HornAdapter ×2 | Mechanical structure | Required |
| 1 | Microcontroller | Arduino compatible with BotGear | Servo-controller interface | Required for powered operation |
How It Works
The camera sits on a CameraPlate spanning a U-shaped yoke. A horizontal FS5106B drives tilt on one side; a printed-clearance passive pivot supports the opposite side. The YokeChassis attaches through a reusable HornAdapter to a second, vertically oriented FS5106B for pan.
Base + pan servo
→ HornAdapter
→ YokeChassis
→ TiltCage + tilt servo
→ HornAdapter
→ CameraPlate + OAK-D Lite
→ passive idler pivot
BotGear’s oakd service supplies camera data. An arduino service exposes the servo_controller capability, and servo services command the two axes through servo_attach, servo_write, and servo_detach.
Build
Prepare Parts
- Verify the actual servo ear screw diameter before printing; the current
PILOT_SERVOvalue of 2.2 mm is an assumption. - Print Base, YokeChassis, TiltCage, CameraPlate, and two HornAdapters in PLA.
- Print Base and TiltCage with the servo shaft axis vertical. Their post geometry relies on this orientation.
- Print YokeChassis on its low flat base, CameraPlate flat, and HornAdapters flat.
Mechanical Assembly
- Install the pan servo in Base with four ear screws.
- Center the servo and attach its horn to establish the forward reference.
- Attach a HornAdapter to the horn and fasten YokeChassis to the adapter.
- Install the tilt servo in TiltCage, then bolt TiltCage to the servo-side YokeChassis upright.
- Center the tilt servo, attach its horn and second HornAdapter, then fasten CameraPlate.
- Insert CameraPlate’s passive pivot into the idler hole.
- Fasten the OAK-D Lite with two M4 × 8 mm screws through its factory VESA holes.
<<TODO — add assembly photographs for each major step>>
Electronics / Wiring
- Wire both servos through Work-E’s Arduino servo-controller interface.
- Route USB-C and servo power/signal wiring with strain relief so neither cable pulls on the pan axis.
- Use a USB 3 port and cable for the OAK-D Lite; BotGear reports negotiated speed on
/state.usb_speed.
<<TODO — add verified wiring diagram, Arduino pins, power distribution, and cable-routing photos>>
Software / BotGear Setup
- Install or enable the exact
oakd,arduino, andservoservices. - Configure the Arduino as the servo-controller provider.
- Create distinct configured servo instances for pan and tilt and attach them to the Arduino.
- Apply the OAK-D udev rule and verify required device-group membership on the host machine.
- Confirm the camera negotiates USB 3 speed before testing vision workloads.
BotGear Configuration
GitHub will be the source of truth for the runnable project configuration. This article describes the build but must not become the authoritative copy of service configuration.
<<TODO — commit the Work-E OAK-D pan/tilt configuration, then add its repository path and pin a tested revision/commit/tag in Project Details>>
Running the Project
- Hand-sweep both axes and confirm that nothing binds.
- Start the Arduino/controller, pan-servo, tilt-servo, and OAK-D services.
- Verify camera USB speed and live RGB/depth data.
- Center both servos at a conservative position.
- Test a limited motion range from BotGear UI controls before expanding toward the verified CAD range.
- Watch for cable strain, horn slip, unexpected current draw, or mechanical contact.
<<TODO — add exact launch commands and validated service-instance keys from the committed configuration>>
Expected Result
- Live OAK-D Lite RGB/depth data appears in BotGear.
- UI controls move the camera left/right and up/down independently.
- The camera performs a genuine nod on tilt rather than rotating around its boresight.
- The mechanism moves without binding or colliding through the validated operating range.
- Cables remain slack and strain-relieved throughout pan and tilt movement.
<<TODO — replace these design expectations with measured results after the first complete build>>
Troubleshooting
- Camera is unstable or missing: confirm USB 3 negotiation and inspect
/state.usb_speed. - Servo will not attach: confirm the Arduino service implements
servo_controllerand that the configured controller instance key is exact. - Printed servo fit is wrong: verify the real ear screws and case dimensions before changing the CAD.
- Motion binds: disconnect power, hand-sweep the assembly, inspect fasteners and the 0.3 mm radial idler clearance.
- Camera points backward at center: re-center the servo and mechanically recalibrate the horn’s forward reference.
Downloads
The local design set currently contains the parametric FreeCAD model and print-ready STL exports for Base, YokeChassis, TiltCage, CameraPlate, and HornAdapter.
<<TODO — publish the reviewed CAD/STL package at a stable download URL and link it here>>
Source
BotGear source: github.com/BotGear-AI/botgear.
<<TODO — add permanent GitHub locations for the project configuration and the reviewed mechanical design files>>
Related Projects
This is a subproject of Work-E, where it will become the robot’s first steerable perception hardware.
<<TODO — link the Work-E project page after it is created>>
Discussion
Questions and build reports are welcome. Especially useful feedback includes real FS5106B ear-screw measurements, print-fit results, cable-routing approaches, and tested BotGear configurations.
Leave a Reply