Upper-Body Teleoperation
com.bxi.upper_body_teleop is a standalone Elf3 Mod. It bundles PICO access, MediaMTX, head-camera RTSP, Pinocchio dual-arm IK, and its runtime libraries. It only requires com.bxi.basic_actions; the legacy bxi_teleop_v2 and separate bringup nodes are not required.
- Mod:
com.bxi.upper_body_teleop(provided by HumansX to system users) - PICO client: XRoboToolkit-PICO-1.1.1.apk
Installation
Install the Mod in the independent directory that is not overwritten by App updates:
sudo mkdir -p /opt/bxi/mods
sudo git clone <provided-repo-url> /opt/bxi/mods/com.bxi.upper_body_teleop
Update an existing checkout:
cd /opt/bxi/mods/com.bxi.upper_body_teleop
git pull --ff-only
If an older project already contains the same Mod in its built-in mods or private_git_mods, back it up and move it outside the scanned directories. Two copies with the same Mod ID will prevent startup.
Startup
| Startup method | Project directory | Handling |
|---|---|---|
| Remote controller | ~/bxi_ws/bxi_rl_controller_ros2_example | Source tree; rebuild the main project after updates. The Mod is loaded from /opt/bxi/mods. |
| App | /opt/bxi/bxi_rl_controller_ros2_example | App-downloaded prebuilt tree; no manual build. The Mod is loaded from /opt/bxi/mods. |
Start the robot and the normal control program. The Mod nodes start automatically when com.bxi.upper_body_teleop/upper_body_teleop is entered. Do not run the legacy elf3_arm_bringup_nohand.launch.py, pico_bxi_server, or bxi_teleop_v2 scripts separately.
PICO Connection and Calibration
Use the same PICO connection and body-tracking calibration procedure as Sonic:
- Secure one Motion Tracker to each leg, with the button/indicator side facing upward, and power them on.
- Open Motion Tracker on the PICO home screen, confirm both trackers are connected, select Start Calibration, and complete the guided procedure.
- Select Adjust Floor and align the virtual floor with the physical floor.
- Open
XRoboToolkitand connect to the robot through Network → PC Service using the robot's LAN IP. - Confirm these settings:
Section Option Setting Tracking HeadSelected Tracking ControllerSelected PICO Motion Tracker ModeFull-bodyPICO Motion Tracker High-AccSelected PICO Motion Tracker Num2Data & Control SendSelected - Confirm the
Networkstatus isWORKINGand the log has no continuous errors. Then enter the Mod state and perform the button calibration.
Operation
- From
normal, pressLB + LT + X(btn_10=17) on the remote controller to enter upper-body teleoperation. - On PICO, enable Body Tracking, Controller, and Send. Confirm XRoboToolkit reports
WORKING. - Hold the standard upright posture and press
A+B+X+Yto calibrate. Successful calibration enters POSE automatically;A+Xis not required. - Hold the left or right grip to take over the corresponding arm. Releasing the grip smoothly returns that arm to its PD standing posture.
- The left and right triggers control the corresponding grippers. Each state entry performs a low-speed gripper limit calibration.
- Press
A+B+X+Yagain to recalibrate; both arms return to PD posture during calibration. - Exit through the standard system event to
normal,PD brake,recover, orzero-torque.
A+X no longer toggles following mode. If PICO temporarily disconnects, the lower body continues under the gait policy and both arms hold the PD posture.Video Streaming
MediaMTX and the head-camera node are managed by the Mod. The default URL is rtsp://<robot-ip>:2212/video. Select this address in the PICO app on the same LAN; no separate video script is required.
Acceptance and Troubleshooting
- Logs should show
mediamtx_server,head_camera_rtsp,pico_manager, andarm_ik_bridgestarting automatically; A+B+X+Yenters POSE, and the gripped arm follows the controller;- Triggers control the grippers, and child processes stop on state exit.
For a duplicate Mod ID error, keep only /opt/bxi/mods/com.bxi.upper_body_teleop and move the old project copy outside the scanned directories. If no PICO data arrives, wake the headset, enable Body Tracking and Send, and confirm WORKING.
Documentation