SkateArm v0.8 · sim-first today · the real R.Botic Skate is en route
Documentation · rbt API

Skate Commander docs.

Drive the R.Botic Skate digital twin from your browser — and, with one switch, the real robot. One-command quick start, the cockpit tour, the rbt program API and the safety model.

early access · sim-first · v0.8

Quick start

No hardware needed — it runs sim-first in MuJoCo.

# 1. the cockpit
git clone https://github.com/dsl-robotics/skatearm.git
cd skatearm/tools/skate_commander

# 2. the official robot model — once (meshes aren't redistributed)
git clone https://github.com/Rbotic/skate_teleop.git

# 3. install + launch
pip install -r requirements.txt mujoco
python3 -m skate_commander

On first run it auto-finds the skate_teleop model, builds the sim + collision models once, starts the sim endpoint, and opens the cockpit at http://127.0.0.1:8088 → press RESUME. Windows: use py -m pip install … and py -m skate_commander — a bare python/pip may be missing or open the Microsoft Store stub.

Drive a real Skate instead: python3 -m skate_commander --real (add --real-host <ip> if it isn't r.local).

The cockpit

An NVIDIA-Isaac-Sim-style robotics workstation, in the browser: a menu bar, a left vertical tool rail, a center 3D view, a right STAGE (scene hierarchy) over PROPERTY (inspector), and a bottom TIMELINE / CONSOLE / CONTENT browser — flat, token-driven dark theme. Everything goes over the same UDP wire the robot speaks, so the twin and the real robot are one switch apart.

Motion & IK

Programs & teaching

Manipulability & previews

Scene & planning

Vision & depth in development

Inspection & telemetry RViz · Foxglove · Isaac

Safety & access

Programs — the rbt API

Write Python in the PROG tab. Every motion runs through the same safe bridge as the panel — joint limits, the collision guard, E-STOP and overtemp all apply. RUN runs free; Click-to-Step pauses before each motion command; E-STOP or any manual panel input stops the program.

CallWhat it does
rbt.movej(joint, deg)Move one joint to an absolute angle (degrees). joint = "L1"–"L8", "R1"–"R8", "H1"/"H2", a URDF joint name, or a protocol index.
rbt.pose({joint: deg, …})Move several joints together as one coordinated motion (one guard check, no mirroring).
rbt.movel(arm, dx=, dy=, dz=)Glide the TCP a relative step in mm along world X/Y/Z. arm = "left"/"right". Auto-stops when blocked.
rbt.moveto(arm, x, y, z)Glide the TCP to an absolute world point (mm) — same IK + guard as the drag-gizmo.
rbt.moveto(arm, x, y, z, roll, pitch, yaw)…and hold a wrist orientation there too (degrees, fixed-axis — the URDF's convention, and the gizmo's). All three angles or none: a pose is a stricter request than the point it grew out of, so it can take longer or be refused where the point alone would go.
rbt.home()Glide to the documented safe pose.
rbt.gripper(arm, deg)Open/close one gripper (degrees). Same as movej("R8"/"L8", deg).
rbt.waypoint(i_or_name)Glide to a recorded sequencer pose (1-based index or saved name).
rbt.wait(seconds)Dwell.
rbt.tcp(arm="right")Read the current TCP position (world mm).
rbt.tcp_rpy(arm="right")Read the wrist orientation back as (roll, pitch, yaw) degrees — the same three numbers moveto takes, so a pose jogged by hand can be read off here and pasted into a program that reproduces it.
rbt.q()Read all 26 commanded joint angles (degrees).
rbt.status()Read the full state snapshot.

Units: joints in degrees, cartesian in millimeters, wrist orientation in fixed-axis roll/pitch/yaw degrees, world axes. Joints: L1–L8 left arm, R1–R8 right arm, H1–H2 head (16 of the 26-DoF body are the two arms). Sandbox: rbt, math and safe builtins (range, len, min, max, abs, round, enumerate, zip, sum, sorted, print…) — no imports or file access.

Example

rbt.home()
rbt.gripper("right", 30)            # open
rbt.moveto("right", 130, 350, 35)   # above the part
rbt.moveto("right", 130, 350, -43)  # down to it
rbt.gripper("right", 0)             # close
rbt.moveto("right", 130, 350, 75)   # lift
rbt.home()

The PROG tab has rbt. autocomplete (or Ctrl-Space) and a menu of ready examples.

Safety

The cockpit is a convenience tool for a trusted LAN, not a security boundary — see the repo for the full protocol and safety notes.