motion_control().
step() instead of run() to integrate teleoperation into your own control loop:
VRTeleop.set_video_sources() forwards them to the VR server’s WebRTC relay (requires the GStreamer NVENC stack, installed by axol gst.install; see almond_axol.vr). Each value is a connected ZedCamera (registered directly) or any object exposing width / height / fps + wait_next:
teleop CLI command for the equivalent command-line entry point (--cameras wires the ZED cameras up automatically).
set_video_sources() runs the WebRTC relay in-process. The CLI instead prefers VRTeleop.set_video_manager(), which hands the camera grab/encode and WebRTC off to a dedicated subprocess (almond_axol.video.video_proc.VideoRelayProcess) so it can’t perturb the control loops. Both deliver the same headset video — see almond_axol.vr.VRTeleopConfig fields
Engage behaviour. From rest, both grip buttons together engage both arms. Once engaged, each grip acts per arm — a click toggles that arm between tracking and frozen (a frozen arm holds its pose and grasp while the other keeps tracking). Set
hold_to_engage for a dead-man scheme instead: hold both grips to start, release one to freeze that arm, hold on to keep it going. A rising edge on the reset button triggers a collision-aware trajectory back to the rest pose.