zrt_teleop_bridge. The leader runs on the
operator machine, under /leader. The follower runs on the robot machine, under
/follower.
Settings
Set these in your params file. One file can serve both machines when the joint ranges come fromcalibration_profile, because each machine reads its own
calibration. With joint_min and joint_max, each machine needs its own values
for its own arm.
The room id and token come from the
ZERORUNTIME_MEETING_ID and
ZERORUNTIME_AUTH_TOKEN environment variables.
Services
All services arestd_srvs/srv/Trigger. The few that need input read it from
parameters, so set those first with ros2 param set. The full name is
/<namespace>/zrt_teleop_bridge/<service>. For example:
To answer calls on the robot, list the method names in its params file as
rpc_methods. Each call is published on rpc/requests, and the reply is the
rpc_reply_<method> parameter (JSON, default {"ok": true}).
Recording
Recording runs on the robot machine and goes to the cloud (billed). Start it withstart_recording, and wait until the log shows
cloud recording: ready. While it’s on, each take_control starts an episode
and each release_control ends it. If the cloud isn’t ready in time, it
records on the robot machine only; a local copy is kept there either way.
leave stops the recording. After join, call start_recording again.Cameras
Connect cameras to the robot machine. The operator sees them as video. By default the follower bridge streams every USB camera, ascam0, cam1, and
so on. To choose, set ZERORUNTIME_CAMERAS before you start it: camera names,
comma-separated, or none for no cameras. To list the names, run this on the
robot machine:
ZERORUNTIME_CAMERAS:
/dev/v4l/by-path/..., /dev/v4l/by-id/..., or
/dev/videoN (which can change after a reboot). A bare number like '0' is
not a camera: it streams a test pattern. camera_labels is optional. You can
also set camera_width, camera_height, and camera_fps (defaults 640, 480,
and 30).
Policy mode
A policy, such as a trained model, can control the robot instead of a leader arm. Start the leader bridge in policy mode:take_control as usual, and publish
trajectory_msgs/JointTrajectory messages to
/leader/zrt_teleop_bridge/action_chunk.
Each message is a short list of joint positions, evenly spaced in time, in the
same units as the leader’s topic. The robot plays them in order, and a new
message replaces the current one. Read the robot’s position from
/leader/zrt_teleop_bridge/remote/follower_states. max_misalignment is
ignored in policy mode, and release_control and estop work as usual.
The example project
shows how to start policy mode, and its fake_chunk shortcut sends one test
chunk.
Monitoring
Limitations
- The bridge can’t turn off the motors. When it stops, the robot holds its position.
- Only position control is supported.
What’s next
Quickstart
Connect your own ROS 2 robot.
ROS 2 adapters
Build your own ROS 2 node with the SDK.