How unitreerobotics/uniarml1 works
UniArmL1 is an open-source 6-DOF arm teleoperation and data-collection framework. Its primary runtime flow is selecting keyboard, VR, or leader-arm input; converting that input into arm targets; controlling the follower arm while optionally reading camera frames; and recording timestamped episodes for downstream imitation-learning workflows. Calibration data and the URDF support arm setup and kinematics. The README documents the broader hardware-to-training workflow, but training and deployment are external. Some runtime wiring and optional integrations are represented only where supported by the README or sampled code.
Main entry points: teleop.py Teleop entry · uniarm_l1.py Follower arm · teleop_runner.py Teleop runner · input_leader.py Leader input
Components 21
Teleoperation
- Teleop entry
teleop/teleop.py - Teleop runner
teleop/robot_control/teleop_runner.py
Inputs and control
- Keyboard input
teleop/robot_control/input/input_keyboard.py - VR input
teleop/robot_control/input/input_vr.py - Leader input
teleop/robot_control/input/input_leader.py - Leader arm
teleop/robot_control/arm/uniarm_l1.py - Follower arm
teleop/robot_control/arm/uniarm_l1.py - Motor bus
teleop/robot_control/arm/uniarm_l1_bus.py - Arm kinematics
teleop/robot_control/arm/kinematics.py - Calibration data
teleop/robot_control/calibration - Arm model
assets/uniarml1/urdf/UniArmL1.urdf
Cameras
- Camera interface
teleop/image_server/camera.py - OpenCV camera
teleop/image_server/opencv/camera_opencv.py
Data workflow
- Episode recorder
teleop/robot_control/recorder.py - Episode writer
teleop/utils/episode_writer.py - Episode files
- Episode visualizer
teleop/utils/rerun_visualizer.py
Other components
- Operator
- Camera devices
- Training system
- XR service
Connections 26
- Operator → Teleop entry: selects mode
- Teleop entry → Teleop runner: starts
- Teleop entry → Keyboard input: selects input
- Teleop entry → VR input: selects input
- Teleop entry → Leader input: selects input
- Teleop entry → Follower arm: configures arm
- Teleop entry → Leader arm: configures leader
- Teleop entry → Episode recorder: configures recorder
- Teleop runner → Keyboard input: reads input
- Teleop runner → VR input: reads input
- Teleop runner → Leader input: reads input
- Leader input → Leader arm: reads joint state
- Teleop runner → Follower arm: sets targets
- Follower arm → Motor bus: commands motors
- Motor bus → Follower arm: returns feedback
- Follower arm → Arm kinematics: computes motion
- Follower arm → Calibration data: loads offsets
- Follower arm → Arm model: loads model
- XR service → VR input: provides poses
- Camera interface → OpenCV camera: implemented by
- Camera devices → OpenCV camera: provides frames
- Teleop runner → Episode recorder: records samples
- Episode recorder → Episode writer: writes episodes
- Episode writer → Episode files: saves images and data
- Episode files → Episode visualizer: loads episodes
- Episode files → Training system: supplies dataset