Pico4 headset and tracker setup¶
- Components: the standalone tracker that ships with the Pico4 Ultra Enterprise mounts on top of the gripper and provides the 6-DoF pose; XTac UMI XR (the VR client app) on the headset sends it to the collection unit.
- Two editions: only the three rows below differ; those steps are split into "Backpack Kit / Developer Kit" tabs.
| Backpack Kit | Developer Kit | |
|---|---|---|
| Where the headset plugs in | The backpack's PICO port, wired only |
The collection PC's Type-C port (wired USB network sharing), or the same Wi-Fi as the collection PC |
| Where the pose service runs | The XenseVR runtime is built into XTac UMI Collector and is up once the backpack boots | The XenseVR PC Service on the collection PC, started by hand before every session |
| How the app connects | Choose "XTac" (selected by default on first launch; connects to 192.168.100.1) → tap "Connect" |
Wired: choose "USB Network" (connects to 192.168.58.1) → tap "Connect"; Wi-Fi: choose "WiFi Network", enter the collection PC's IP under "PC IP" and save → tap "Connect" |
- Factory-configured: developer mode, power policy, app, tracker binding and tracking mode survive power cycles (redo them only after a factory reset or a headset swap); start at Network connection.
- Every session: plug in, short-press the tracker's power button until the blue light comes on, connect in the app, align at startup.
Unboxing and the system update¶
-
Unbox: peel off the front-panel sticker, the controller tape and the lens stickers, then hold the power button to switch on.
-
Update the system: a new unit ships on an older build and must be updated before you pair trackers or install the app. Join a Wi-Fi network with internet access, go to Settings → "System Update" and tap "Download and Install" to reach Pico OS 5.15.5.U or later (about 1.9GB).
System settings: developer mode and power policy¶
-
Enable developer mode: Settings → About → tap "Software Version" several times (with the controller, pull the index trigger repeatedly while pointing at it) → "Developer" appears on the left → turn on "USB Debug".
-
Disable sleep and screen-off: Developer → "Business Settings" → "System" → "Power Management" (Enterprise edition only; the consumer edition cannot set "Never"). By default, the screen turns off after 30s, the system sleeps after 5min, and the battery icon is hidden. Change them in order:
- "System Goes to Sleep After" = "Never";
- "Turn Off Screen After" = "Never";
- "Battery and Charging Status Icons" at the bottom = "Always show", to check the charge mid-session.
Sleep first, screen-off second; the order cannot be reversed
Screen-off ("Turn Off Screen After") is bounded by system sleep ("System Goes to Sleep After"): while sleep is still at its default, screen-off's "Never" is clamped back to a finite value, so it looks set but is not in effect. Leave Settings and come back to confirm both read "Never".
Otherwise, screen-off or sleep between episodes (also triggered by taking the headset off and setting it down) suspends or kills XTac UMI XR, and restarting it resets the world frame (see Frame alignment).
Installing XTac UMI XR¶
The APK is named XTac-UMI-XR-<version>.apk; the current version is 0.3.6. Install it from the headset's file manager:
-
Connect the headset to the collection PC over USB and copy the APK into the headset's
Download/directory. -
Put the headset on, open the file manager from the taskbar, go to "All Files" and open "Download".
-
Tap the APK and tap "Install" in the installation prompt; XTac UMI XR then appears in the "Library".
Network connection¶
Tracking data goes to the XenseVR pose service on the collection unit. The Backpack Kit is wired only; the Developer Kit is wired by default, with Wi-Fi for quick debugging only. A direct Type-C connection gives the headset a dedicated link with stable latency.
On the Developer Kit, wireless is for quick debugging only, never for real collection
Over Wi-Fi the headset competes for the channel with everything on site, so pose data arrives late: at best stutter and jitter, at worst dropped frames. None of it shows while recording and it is hard to tell from other causes afterwards, so the whole batch has to be recollected.
On both editions, set up USB and networking on the headset first:
- Network settings: set the headset as the Host device (Developer → "Business Settings" → "Basic Settings" → scroll to the bottom → "Network Settings").
- Settings path: Settings → Developer → enable "USB Debug" → set "USB Connection" to "File Transfer".
- Re-check after re-plugging: "USB Connection" reverts to its default whenever the cable is reconnected; if you cannot select it, reboot the Pico.
- Run the headset cable (Pico → Pack, Type-C to Type-C) from the headset's side Type-C port to the backpack's
PICOport; see Unboxing, cabling and power. The connection is the same whether the backpack runs on the adapter or a power bank. The headset cannot use Wi-Fi on the Backpack Kit. - Power on the backpack (the pose service starts with it).
- Open XTac UMI XR, choose "XTac" as the connection (selected by default on first launch; the address is fixed to the backpack at
192.168.100.1), then tap "Connect".
- Start the service on the collection PC first with
runService.sh(see Start the XenseVR PC Service); otherwise the app cannot connect. - Connect the headset directly to the collection PC with a Type-C cable; the headset assigns the collection PC an IP.
- Open XTac UMI XR, choose "USB Network" as the connection and tap "Connect": the app connects to the collection PC (
192.168.58.1) by itself and Status changes to "Connected" (see The app's screen).
Over Wi-Fi: put the headset and the collection PC on the same network, choose "WiFi Network", tap "PC IP", enter the collection PC's IP and save, then tap "Connect".
On the wired link, turn the collection PC's Wi-Fi off
The wired shared network contends with other networks on the collection PC (Wi-Fi above all) for routing and interfaces, leaving the tracker unreachable or its pose unstable; keep only the headset's shared network.
Binding the tracker to the headset¶
On first use, or after swapping a tracker, bind the PICO Motion Tracker to this headset first; otherwise the headset cannot track it and neither XTac UMI XR nor the collection unit will discover its SN.
Before pairing:
- Scan the QR code on the back of the tracker with your phone for its full SN, and mount it odd-left / even-right (see Serial numbers and side identification).
- The six digits in the red box are the number shown in the "My Motion Trackers" list after pairing (e.g.
Tracker 150311).
| Scan this | You get this |
|---|---|
1 before the G, odd → left gripper |
-
Open the "PICO Motion Tracker" app from the Library and tap the top-right icon on the main screen to enter pairing.
-
Hold the tracker's power button for about 6 seconds, until the indicator alternates blue and red (Bluetooth pairing mode).
- Tap "Start Pairing". The headset beeps on success and the tracker appears in "My Motion Trackers" with its battery level and number (e.g.
Tracker 150399), marked "Connected". -
Bind one per gripper; the top of the list should read "2 Motion Trackers paired".
Power-on is a short press; only pairing needs the hold
Everyday power-on is a short press until the blue light comes on; that is not pairing mode and the app will not find it. First-time binding needs the ~6s hold until it alternates blue and red.
The binding is stored on the headset and survives power cycles and app restarts. Re-bind after swapping trackers, moving to another headset, a factory reset or pairing the wrong one: unpair from the ⓘ on the right of the list entry, then bind the new one.
In independent tracking mode the tracker must stay in the headset's view
A tracker occluded for long by your body, the desk edge or the other hand loses tracking (pose jumps or a frozen pose).
Reading a tracker SN¶
- Purpose: it sets the side (the digit before the
G, odd-left / even-right) and is how the collection unit identifies a tracker. - From the QR code: the full SN (shaped like
PC2310MLL3200496G) comes from the QR code on the back of the tracker; the "PICO Motion Tracker" app only shows a short number (e.g.Tracker 150399), and the SN on XTac UMI XR's Network panel (e.g.PA9410MGL…) is the headset's own.
The SN comes only from the QR code; there is no command-line interface. Once connected, shake one gripper at a time in the pose view of the console's "Live monitor" page to confirm the sides are not swapped.
Read it with the PC Service's Python interface:
import xensevr_pc_service_sdk as xrt
xrt.init()
print(xrt.get_motion_tracker_serial_numbers()) # e.g. ['PC2310MLL3200496G', ...]
- Prerequisites: tracker bound and on → XTac UMI XR "Connected" → PC Service running on the collection PC; miss one and you get an empty list.
- Pin the SN:
--robot.tracker_serial=<SN>skips auto-matching; shake one gripper at a time to confirm which SN is which hand before writing it into your config.
Tracking mode¶
Once bound, open "PICO Motion Tracker" on the headset → Settings → "Tracking Mode", select "Object Tracking" and tap "Confirm"; the row should read "Object Tracking". The factory default "Full-Body Tracking" follows a human body; "Object Tracking" follows an object the tracker is fixed to.
The app's screen¶
With the headset on, open XTac UMI XR from the Library to reach the "XENSE XR Console". Connecting only uses these items on the left:
| Item | What it means |
|---|---|
| Tracker Mode | Should read "object tracking" (Pico's "Object Tracking" mode); if not, redo Tracking mode |
| Pico Hardware | Should read "Enterprise" |
| Status | Until "Connected", the collection unit reads no pose |
| Connection | "XTac": Backpack Kit, connects to the backpack at 192.168.100.1, selected by default on first launch; "USB Network": Developer Kit wired, connects to the collection PC at 192.168.58.1; "WiFi Network": Developer Kit wireless. Cannot be changed while connected or connecting |
| PC IP | Under "XTac" it shows the backpack's address and cannot be edited; under "WiFi Network" tap it, enter the collection PC's IP and save; under "USB Network" nothing to enter |
| Connect / Disconnect | Tap "Connect"; once connected the button turns into "Disconnect" |
Choose the connection as in the table and tap "Connect"; once Status reads "Connected", you can start collecting. From then on XR reconnects automatically with the last connection each time it opens; after you tap "Disconnect" it stops reconnecting until you tap "Connect" again.
How the two editions differ:
- Panel icon: appears when tracker accuracy degrades or the link to the backpack drops.
- Check the poses: the pose view on the console's "Live monitor" page should show the headset and both gripper poses.
- Record button not ready: it states the reason; both can appear together:
- "Pico not ready": headset disconnected or timed out, pose data or clock synchronization missing or timed out;
- "Tracker not ready": tracker out of view or stationary for over 5 seconds.
- Disconnect while recording: the recording stops at once, see Headset disconnects while recording.
- Never connects: usually the network is not up or the collection PC's Wi-Fi is still on.
- Confirm the collection PC gets data: "Connected" on the headset does not mean the collection PC receives data; confirm a pose with an
sncomes through viaConsoleDemoin/opt/apps/roboticsservice/orpython -m lerobot.robots.taccap_gripper.check_tracker.
Startup and frame alignment¶
- Launch: face the same direction as the robot (towards the robot's front) when you launch XTac UMI XR, then connect in the app; the world frame's origin and orientation freeze at launch.
- World frame definition: axes, origin, freeze rule and diagram are in Coordinate frames; every pose in the dataset is referenced to it.
Face the same direction as the robot at launch; do not restart XTac UMI XR between episodes
- Same direction: this aligns world X with the robot's forward direction; only your heading matters, not where you stand.
- Do not restart: a restart changes the origin and orientation, leaving poses inside one dataset in different frames.










