Robots · Robot arms

OpenArm teleoperation: 7-DOF bimanual arms, bilateral force feedback and native LeRobot data

OpenArm is Enactic's open-source, human-scale 7-DOF arm, built on backdrivable motors and supported natively in LeRobot. It is designed for contact-rich bimanual work, which changes how you teleoperate it and what you record.

Enactic OpenArm (1.0 and 2.0), Open-source 7-DOF humanoid bimanual arm
AI-generated illustration of the Enactic OpenArm (1.0 and 2.0). For product photos, see Enactic.
Degrees of freedom
7 per arm + gripper, human-scale (for a person about 160 to 165 cm tall)
Payload per arm
4.1 kg nominal / 6.0 kg peak, including the end effector
Motors
Damiao QDD backdrivable: DM8009 (shoulder), DM4340 (shoulder rotation, elbow), DM4310 (wrist, gripper)
Communication
CAN-FD (LeRobot defaults 1 Mbps nominal, 5 Mbps data); Linux only
Repeatability
Not yet documented by the maker
Price
Listed at $6,500 for a complete bimanual system on Enactic's OpenArm GitHub as of October 2026
Leaders
Powered OpenArm leader (1.0); motorless KER backpack leader for 2.0 (not yet released)
License
Software Apache-2.0; hardware CERN-OHL-S-2.0

Updated

OpenArm is "an open-source 7DOF humanoid arm designed for physical AI research and deployment in contact-rich environments", run by Enactic. Each arm is sized for a person of about 160 to 165 cm, built on quasi-direct-drive backdrivable motors, and rated at 4.1 kg nominal and 6.0 kg peak. A complete bimanual system is listed at $6,500 on Enactic's OpenArm GitHub as of October 2026, as a DIY build or assembled through certified manufacturers. It is built into LeRobot, single and bimanual, and its own teleoperation stack offers bilateral force feedback. Seven joints, compliance and a native data path in one open design is what sets it apart.

OpenArm 1.0, 2.0 and the leader arms

Per What's new in 2.0, the 2.0 arm keeps the 1.0 form factor, motors (DM-J4310-2EC, DM4340, DM-J8009P) and payload, and adds a redesigned gripper with an in-hand camera and replaceable fingers that reaches into confined spaces more easily. The bigger change is the leader. In 1.0, the leader was a powered OpenArm driven leader-to-follower. For 2.0, Enactic is preparing KER, a motorless leader with magnetic encoders that is worn like a backpack, weighs 1.7 kg and attaches in about 30 seconds. Its joint structure matches OpenArm 2.0 with links scaled to 70%, which Enactic says allows 1:1 mapping without retargeting. KER is not yet released.

The leader question matters more on OpenArm than on small arms, because these are human-scale arms and a bimanual session means holding two of them up for hours. Enactic positions KER for long sessions, and its encoders and bearings are there to lower the operator's physical load. Whatever leader you use, fatigue shows in the data before the operator notices it: slower approaches, more hesitation, sloppier grasps toward the end of a shift. Plan rotations and breaks into the protocol, and compare clean-episode rates across the hours of a shift rather than only across operators.

Three ways to drive an OpenArm

LeRobot leader/follower

LeRobot's OpenArm guide runs `openarm_follower` with `openarm_leader`, or `bi_openarm_follower` with `bi_openarm_leader` for two arms, each arm on its own CAN interface. The leader's `manual_control` option defaults to True, which disables its torque so the operator can move it freely. That is unilateral control: the follower copies the leader, and nothing pushes back. LeRobot also ships `openarm_mini` and `bi_openarm_mini` teleoperators.

openarm_teleop, unilateral or bilateral

Enactic's teleoperation docs describe two modes for a 1:1 leader and follower. Unilateral sends position commands and suits free-space tasks. Bilateral control "enables two-way force feedback between the leader and follower arms", so the operator feels what the follower touches. These docs are for 1.0 and are no longer maintained; for 2.0, Enactic points to dora-rs dataflows that support KER, VR and WebXR, on hardware or in MuJoCo.

ROS 2

openarm_ros2 provides ros2_control and MoveIt packages, a route for teams that want MoveIt Servo, a 3D mouse or their own VR mapping.

Be clear about which stack gives you what. Bilateral force feedback comes from Enactic's own teleoperation stack. LeRobot's built-in OpenArm leader runs with torque off, which means position-only teleoperation, but it records straight into LeRobot datasets. Choose per task: bilateral for contact-heavy work where the operator needs to feel the contact, LeRobot unilateral when the priority is a simple, standard recording path.

Building the cell around the arms

OpenArm ships as arms, not as a workstation, so the data cell is your design. The choices you make here show up in every episode:

Mounting

Enactic's safety guidance asks for the arm to be fastened to a flat, stable surface with screws or clamps, and the 2.0 base plate has evenly spaced M6 taps. Fix the spacing between the two arms once and never move it.

CAN interfaces

Each arm gets its own CAN interface. LeRobot's bimanual example uses four, can0 to can3, for two followers and two leaders. `lerobot-setup-can` configures and tests them; label the cables to match.

Cameras

A wrist camera per arm plus a base view is the layout of the largest public OpenArm set. The 2.0 gripper adds an in-hand camera; decide whether it replaces or complements a separate wrist camera, and keep the choice fixed.

Lighting and background

Enactic is previewing OpenArm Cell, an evaluation enclosure that fixes background, lighting, cameras and mounting position. Until it ships, copy the idea: a fixed backdrop, fixed lights, and nothing that changes between morning and evening shifts.

Control loop, CAN-FD and remote operators

OpenArm talks CAN-FD to Damiao motors through a USB CAN adapter, and that adapter has no macOS driver and is untested on Windows, so the robot host runs Linux. LeRobot's follower defaults to CAN FD at a 1 Mbps nominal and 5 Mbps data bitrate, exposes per-joint `position_kp` and `position_kd` gains, and leaves `max_relative_target` at None. LeRobot's OpenArm recording example runs at 30 fps. At 30 fps a step is about 33 ms, and every remote millisecond counts twice on a bimanual 7-DOF setup, because the operator coordinates fourteen joints against a delayed picture.

Unilateral, remote

Workable with the usual rules: run the CAN loop on a Linux host next to the arms, carry the operator's leader stream over a VPN, and set a per-joint `max_relative_target` so delayed bursts cannot become jumps.

Bilateral, remote

Force feedback across a long network path is a much harder control problem than position streaming, because the operator's hand becomes part of a delayed loop. Keep bilateral sessions with operators on a short, stable link, and use unilateral or supervised modes for distant operators.

Gains

Do not raise `position_kp` to make a remote follower feel snappier. On a compliant arm, stiffness is a safety and data-quality decision, not a latency fix.

Our latency guide has budgets by task type; read it before assigning distant operators to an OpenArm cell.

Data: native LeRobot, and a very large public set

Because OpenArm is built into LeRobot, `lerobot-record` writes standard LeRobot datasets with no plugin. The largest public example is lerobot/full_folding: 5,688 episodes and over 14 million frames at 30 fps, in LeRobot format v3.0, with a 16-value state and action (seven joints plus a gripper per arm) and three cameras, two 1280×720 wrist views and a 640×480 base view. It is a useful reference for camera layout and for how long, contact-rich bimanual episodes look in practice.

For corrections on a trained policy, LeRobot's human-in-the-loop collection mode defaults to `bi_openarm_follower` with `bi_openarm_mini`: the operator pauses the policy, the leader moves to match the robot, the operator takes over to recover and correct, then hands back, all inside one recorded episode. Its examples use 30 fps with an interpolation multiplier that sends extra commands per policy step while recording stays at 30 fps. We deliver OpenArm episodes as LeRobot, RLDS or HDF5; the data collection guide has the QA checklist.

Payload and precision, honestly

OpenArm's payload figures are carefully defined, and worth reading before you plan a task. Nominal payload is what an arm can hold for one minute in its worst posture, fully extended; peak is what it can move down to that posture over 3 seconds and hold for 1 second. Both include the end effector, so a 1.5 kg end effector cuts nominal payload to 2.6 kg. Precision is the open question: a GitHub issue asking for precision and repeatability documentation is still open, with a maintainer replying that they need to run experiments first. Treat OpenArm as a compliance and contact platform, not a sub-millimetre placement arm.

What a good OpenArm operator does

Uses the seventh joint on purpose. A 7-DOF arm can reach the same hand pose with different elbow positions; consistent elbow placement across episodes gives the policy one strategy to learn.
Lets compliance work in contact. Pushing harder on a backdrivable arm just deflects it; slow down and let the contact settle.
Follows the safety basics Enactic lists: arm fastened to a stable surface, people outside the range of motion, goggles on, payload limits respected, E-stop within reach.
Checks for loose screws, damaged mechanical limits and unusual noise at the start of each shift, as Enactic's safety guidance asks.
Keeps both arms in fixed roles for the task, and parks the idle arm the same way each time.

OpenArm or a Trossen bimanual kit?

The closest alternative for bimanual teams is Trossen's Stationary AI, an ALOHA-style cell sold complete and recorded through Trossen's LeRobot plugin. OpenArm gives you a seventh joint per arm, backdrivable compliance, optional bilateral force feedback and native LeRobot support, but you build or source the rest of the cell yourself: frame, cameras, lighting and compute. For contact-rich tasks such as folding, or assembly where the operator needs to feel contact, OpenArm is the natural fit. For repeatable tabletop manipulation where you want a turnkey cell on day one, the Trossen kit is. Our Stationary AI page covers its specs and its data format, which differs from OpenArm's in joint count and camera layout.

How RoboPilots runs OpenArm teleoperation

Your arms stay in your lab. We agree the mode with you (LeRobot unilateral, Enactic's bilateral stack for operators on a short link, or supervised HIL collection), set up the Linux robot host on your side of a VPN, and train a dedicated group of operators on your unit and your task protocol before the first recorded episode.

One-week trial

A short run sets the clean-episodes-per-operator-hour baseline for your task at your latency. If bilateral or remote modes are not producing clean data, we tell you that week.

Coverage

Shifts across time zones, including US Pacific hours. One person on site handles resets and the safety checks.

Data

Episodes labeled by task and outcome, delivered as LeRobot, RLDS or HDF5.

Interfaces, specs and sources

  • LeRobot openarm_follower / bi_openarm_follower (built in)
  • LeRobot openarm_leader and openarm_mini
  • openarm_teleop (unilateral / bilateral)
  • OpenArm KER motorless leader (2.0)
  • openarm_ros2 (ros2_control, MoveIt)
  • CAN-FD on Linux

Specs are the maker's published figures, checked on . RoboPilots is not affiliated with Enactic; product names are trademarks of their owners.

Frequently asked questions

Does LeRobot support OpenArm?
Yes, natively. LeRobot includes openarm_follower and bi_openarm_follower robots, plus openarm_leader, bi_openarm_leader, openarm_mini and bi_openarm_mini teleoperators.
Does OpenArm support force-feedback teleoperation?
Yes, through Enactic's own teleoperation stack, which offers unilateral and bilateral modes. LeRobot's built-in OpenArm leader runs with torque off, so it is position-only.
How much does OpenArm cost?
Enactic's OpenArm GitHub lists $6,500 for a complete bimanual system as of October 2026, available as a DIY build or assembled through certified manufacturers.
What is the OpenArm payload?
Each arm is rated 4.1 kg nominal and 6.0 kg peak, including the end effector. Nominal means held for one minute fully extended; peak means moved to that posture over 3 seconds and held for 1 second.
What is the repeatability of OpenArm?
It is not documented yet. A GitHub issue requesting precision and repeatability figures is open, and a maintainer said experiments are needed before they can document it.
Can I run OpenArm from a Mac?
Not directly. The CAN bus USB adapter has no macOS driver and has not been tested on Windows, so the robot host must run Linux.