Watson Speech To Text icon Watson Speech To Text Watson Speech-to-Text ARC plugin: cloud AI transcription with configurable models, selectable VAD (Windows/WebRTC), audio capture and visualization. Try it →
Asked

Vuzix AR Drift On Roli Pan/Tilt

I’ve got a Roli Rover (EZ-B v4 over WiFi, client mode) with the EZ-Robot pan/tilt and camera mounted up front (pan on D0, tilt on D1). Camera Device skill is streaming fine. I dug out a legacy Vuzix 920VR headset and added the Vuzix Augmented Reality skill in ARC. The headset shows up on the PC via USB with the old Vuzix driver/manager installed. In the Vuzix AR skill I mapped pan to D0 and tilt to D1 and set the servo ranges to 20-160 to avoid mechanical limits.

What I’m seeing: yaw tracks my head reasonably well for a few seconds but then the pan servo slowly creeps to the right until it hits the limit. Pitch is usable but jitters around "level" and occasionally jumps a few degrees even if I hold my head still. If I calibrate in the Vuzix manager first the drift reduces for a short while, but it returns after 30-60 seconds. Slowing both servos (Servo Speed 3) makes the jumps less violent but doesn’t eliminate the creep/jitter. Toggling invert on yaw/pitch and adjusting min/max offsets helps with direction but not the drift.

I don’t see an obvious "recenter" hotkey or deadband/smoothing option in the Vuzix Augmented Reality skill UI. I tried compensating by narrowing the servo range further and fine-tuning the centers in servo Fine Tune, but that just delays the inevitable creep to one side. I’d prefer to keep using the Vuzix skill rather than hack around it with a scripting loop, unless that’s the recommended approach for this legacy headset.

Is there a built-in way in the Vuzix Augmented Reality skill to zero/recenter the headset periodically and add a small deadband or smoothing so my Roli’s D0/D1 pan/tilt servos don’t drift and jitter, or is there a best-practice ARC workaround for stabilizing the 920VR inputs?



Related Hardware (view all EZB hardware)
Roli Rover by EZ-Robot
Roli WiFi planetary rover kit, customizable with 13 ez-bit ports for add-ons, built to traverse varied surfaces. Sold by EZ-Robot
Wi-Fi / USB
Servos 24
Camera
Audio
UART 3
I2C
ADC 8
Digital 24

Related Robot Skill (view all robot skills)
Connect Vuzix 920VR AR headset to ARC to map head movement to robot servos or drive, control camera pan/tilt; deprecated 920VR support only.

ARC Pro

Upgrade to ARC Pro

Don't limit your robot's potential – subscribe to ARC Pro and transform it into a dynamic, intelligent machine.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

What you’re describing sounds like sensor drift from the legacy 920VR headset, not a servo issue.

The Vuzix Augmented Reality skill was built around the old Vuzix 920VR and, in ARC, it doesn’t provide a built-in deadband, smoothing, or periodic recenter option in the skill UI. So if the headset’s orientation values slowly drift, ARC will faithfully keep moving the servos.

What to try first

1) Recalibrate the headset before each session

Since you noticed calibration helps briefly, do that after ARC starts and after the headset is fully settled. Also make sure:

  • the headset is warm/stable
  • you’re in the same head posture you’ll use while operating
  • nothing is magnetically interfering near the headset

2) Check whether the Vuzix driver is updating continuously

If the Vuzix manager is still running in the background, try closing anything nonessential except the driver itself. Sometimes legacy headset software layers can contribute to noisy readings.

3) Reduce the servo response using a small script layer

Since the skill itself doesn’t expose deadband/smoothing, the best ARC workaround is usually to route the input through a script or intermediary control so you can filter small movements before commanding D0 and D1.

That gives you:

  • deadband
  • smoothing
  • slower updates
  • optional recenter logic

Best-practice workaround in ARC

If you want stable pan/tilt, I’d recommend:

  • keep the Vuzix AR skill as the input source
  • but don’t send it straight to the servos
  • instead, send head values into a filtering script that:
    • ignores tiny changes
    • averages a few samples
    • limits servo update rate

ARC doesn’t provide a built-in deadband setting in that skill, so scripting is the cleanest path.

Why the creep happens

The slow pan drift to one side usually means the headset’s yaw zero point is not perfectly stable. Even a tiny offset, like 0.5 per sample, will accumulate over time and walk the servo to the limit.

A simple pattern is:

  1. Read headset movement
  2. Compare to last servo position
  3. If change is below threshold, ignore it
  4. If change exceeds threshold, move servo gradually

If you want, I can help you build that as a JavaScript robot skill in ARC.

Important note about the Vuzix skill

Since this is a legacy control, I wouldn’t expect new stabilization features to be added there. If you need reliable filtering, scripting is the right ARC solution.

Helpful references

If you want, I can help with one of these next:

  1. a JavaScript deadband + smoothing script for D0/D1
  2. a recenter button workflow in ARC
  3. a full pan/tilt stabilization setup using the Vuzix input

If you’d like, I can draft the script for Roli pan on D0 and tilt on D1 right now.


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.