BotManifold
Teleop and hardware

Teleop and hardware

Drive and record a real arm from Studio, locally or remotely, and run hardware diagnostics.

The teleop bridge is a small program you run on the computer a robot arm is plugged into. It connects the arm to the Studio Teleop panel, records demonstration episodes as LeRobot datasets, and runs hardware checks. Supported arms:

  • SO-100 / SO-101 (with a leader arm, or a synthetic or web-driven leader)
  • myCobot 280 (driven by manual jog from Studio, a synthetic sweep, or an SO-100 leader)

You can also run the bridge against a simulated arm (--robot without a --follower) to try Studio without hardware.

Install

pip install "botmanifold[bridge]"

This installs the bridge with MuJoCo, LeRobot and the arm drivers. Setup guides for each arm (serial ports, permissions, calibration) are in the repository under docs/guides: bridge-so100-setup.md and bridge-mycobot280-setup.md.

Drive an arm from Studio

botmanifold bridge serve --robot mycobot_280 --follower mycobot280 --leader web

serve prints a pairing token. In Studio, open Teleop, choose local and paste the token. A few things work differently from a normal web app, on purpose, because the browser is an untrusted surface for something that moves metal:

  • Taking control needs a confirmation at the bridge terminal (c then Enter). A valid token alone is not enough to move the arm.
  • Manual jog (--leader web) needs a second local confirmation (j then Enter).
  • Pairing tokens start new connections for 15 minutes. A browser that already paired reconnects by itself. Press p then Enter in the bridge terminal, or run botmanifold bridge pair <session-dir>, for a fresh token.

E-stop

The e-stop is latched. Any connected browser, the panel button or a driver fault trips it and torque stays off until someone resumes locally (r then Enter in the bridge terminal, or botmanifold bridge resume <session-dir>). Resume is never a command from the browser. Clear the workspace before resuming.

Remote use

To let someone on another network operate the arm without opening a port on your machine, start the bridge with the relay:

export BOTMANIFOLD_API_KEY=bm_...
botmanifold bridge serve --robot mycobot_280 --follower mycobot280 --relay

The bridge prints a remote id next to the pairing token. The remote user opens Studio → Teleop, chooses remote, and enters the remote id and the token (they must be signed in to BotManifold). Someone still has to be at the arm for the local confirmations above. Your API key is exchanged at the API for a short-lived relay token and never reaches the relay. The relay carries the traffic, including the pairing token, between your bridge and the browser.

Record episodes

botmanifold bridge teleop records a headless episode; recording from Studio saves into the session folder. Upload a session to your datasets with botmanifold bridge upload <session-dir>, and see it under Datasets.

To record cameras with every frame, add --camera name=device (for example --camera front=0) to teleop or serve; the frames are stored as video in the dataset.

Hardware diagnostics (myCobot 280)

The Teleop panel has a Diagnostics tab that checks a myCobot 280 the way the manufacturer's production test does, from the browser: servo communication and voltage, firmware versions, servo parameters, button and LED, end and base I/O loopback, the gripper, and motion tests with per-joint target-versus-actual results. Checks that only read run straight away. Checks that move the arm, write servo settings or run long tests need the session to be armed once locally (d then Enter, or botmanifold bridge confirm-diagnostics <session-dir>). A report can be downloaded as CSV or JSON.

Some checks need a person (LED colors, visual checklists) and take a pass or fail click. Checks for the Raspberry Pi and Jetson variants and firmware flashing are not available yet.

On this page