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
- PICO client: XRoboToolkit-PICO-1.1.1.apk
Safety
Validate in simulation before using the real robot. Use a gantry or equivalent protection, clear the arm workspace, keep the emergency stop reachable, and begin with slow, small motions.
Installation
Install the Mod in the independent directory that is not overwritten by App updates:
sudo mkdir -p /opt/bxi/mods
sudo git clone https://github.com/konodoki/com.bxi.upper_body_teleop.git /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 | Head | Selected |
| Tracking | Controller | Selected |
| PICO Motion Tracker | Mode | Full-body |
| PICO Motion Tracker | High-Acc | Selected |
| PICO Motion Tracker | Num | 2 |
| Data & Control | Send | Selected |
- 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.