One command interface for teleoperation and learning, with shared retargeting and control.
Command sources share the server and controller. The bridge owns the plant; ROS 2 consumes state and supplies navigation goals.
Torso-frame estimation, shoulder-relative reach and palm-frame finger targets.
wRb = Rz(ψ) is the estimated gravity-aligned body-heading frame. The bounded displacement becomes torso lean; the residual becomes walking intent. Neck angles reproduce head orientation relative to that heading, with torso pitch removed. Subscript a marks a latched anchor; * marks a reference.
Arm IK matches palm position and palm-normal, finger-axis and elbow directions, using warm-started damped Gauss–Newton. Finger retargeting matches fingertip positions P and thumb-to-fingertip vectors δ in the palm frame. The wrist is already part of the eight-coordinate arm solve.
Raise the lift and compare acceleration, braking and measured tilt in MuJoCo.
The base-frame twist is νb = (v, ω). Module position rj is measured from the center of rotation; its velocity direction sets steering and its magnitude sets drive speed, scaled by cos ej for steering error. Each support edge has outward normal nk, CoM lever arm ℓk, and safety factor σk ≥ 1. The approximation fixes the planar CoM offset rc and neglects upper-body CoM motion.
Paper: Motion Model →Try joint targets, task-space targets and external forces. Compare impedance with gravity compensation.
Watch the real-robot compliance test ↗
The paper projects the two arm-and-wrist IK solutions (16 coordinates) onto the nearest admissible joint velocity. Jc = ∂dc/∂q is the clearance Jacobian for capsule pair c, ds is the margin, and κ sets the approach-rate bound. The arms and torso then track references with gravity and friction compensation plus low-gain impedance; hands, neck and lift use separate position control.
Paper: Whole-Body Teleoperation and Control →Inspect modules, review joint calibration and check live feedback in the terminal or browser.
Module → joint → calibration. The terminal and Studio use the same setup service.
The same modules and calibration windows, with an interactive robot view.
python3 setup/tui.py --sim --no-takeover
python3 setup/studio.py --sim --no-takeoverMILO’s launchers open the cockpit: robot state, module status, controls and logs in one terminal.
An actual terminal capture attached to the isolated MuJoCo instance.
./sim_run.sh --home./real_run.shThe recording uses a separate simulation instance. Real hardware setup and motor calibration require an operator at the robot.