← BotGear Projects

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

oakdarduinoservo

GitHub 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 the servo_controller capability.
  • 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

QuantityComponentModelPurposeRequired/Optional
1Depth cameraLuxonis OAK-D LiteRGB and stereo-depth perceptionRequired
2ServoFeetech FS5106BOne pan axis and one tilt axisRequired
2Cross/4-point servo horn with screws25-tooth horn, measured unitConnect servos to printed horn adaptersRequired
8Servo ear self-tapping screwsDiameter must be verifiedFasten servos to Base and TiltCageRequired
9Internal joint self-tapping screwsFor 2.6 mm pilot / 3.0 mm clearance designThree screws at each printed jointRequired
2M4 × 8 mm screwM4Fasten camera through factory VESA threadsRequired
1 setPrinted partsPLA: Base, YokeChassis, TiltCage, CameraPlate, HornAdapter ×2Mechanical structureRequired
1MicrocontrollerArduino compatible with BotGearServo-controller interfaceRequired 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

  1. Verify the actual servo ear screw diameter before printing; the current PILOT_SERVO value of 2.2 mm is an assumption.
  2. Print Base, YokeChassis, TiltCage, CameraPlate, and two HornAdapters in PLA.
  3. Print Base and TiltCage with the servo shaft axis vertical. Their post geometry relies on this orientation.
  4. Print YokeChassis on its low flat base, CameraPlate flat, and HornAdapters flat.

Mechanical Assembly

  1. Install the pan servo in Base with four ear screws.
  2. Center the servo and attach its horn to establish the forward reference.
  3. Attach a HornAdapter to the horn and fasten YokeChassis to the adapter.
  4. Install the tilt servo in TiltCage, then bolt TiltCage to the servo-side YokeChassis upright.
  5. Center the tilt servo, attach its horn and second HornAdapter, then fasten CameraPlate.
  6. Insert CameraPlate’s passive pivot into the idler hole.
  7. 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

  1. Install or enable the exact oakd, arduino, and servo services.
  2. Configure the Arduino as the servo-controller provider.
  3. Create distinct configured servo instances for pan and tilt and attach them to the Arduino.
  4. Apply the OAK-D udev rule and verify required device-group membership on the host machine.
  5. 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

  1. Hand-sweep both axes and confirm that nothing binds.
  2. Start the Arduino/controller, pan-servo, tilt-servo, and OAK-D services.
  3. Verify camera USB speed and live RGB/depth data.
  4. Center both servos at a conservative position.
  5. Test a limited motion range from BotGear UI controls before expanding toward the verified CAD range.
  6. 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_controller and 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

Your email address will not be published. Required fields are marked *