Skip to content
 
 

Repository files navigation

OpenArm

OpenArm is an open-source 7DOF humanoid arm designed for physical AI research and deployment in contact-rich environments. With high backdrivability and compliance, it is built with safe human-robot interaction in mind while delivering practical payload capabilities for real-world applications.

OpenArm in cell environment

OpenArm Cell (on the right) is a standardized environment with unified background, lighting, and camera placement. Research performed using OpenArm can be reproduced around the world in consistent evaluation conditions, facilitating the global discussion on state of the art physical AI research.

OpenArm features human-scale proportions, safety and compliance, and practical payloads. At $6,500 USD for a complete bimanual system, it provides a flexible platform for teleoperation, imitation learning, simulation, and real-world data collection in contact-rich tasks.

We're in continuous development and actively seeking contributors, research partners, and company collaborators to shape the next generation of practical humanoid systems. Ready to join the future of open-source robotics?

📦 Purchase Your OpenArm!

Get your OpenArm, assembled or DIY, and join the global community!
Browse verified and certified manufacturers worldwide.

Buy Now →

🔗 Quick Links

Platform Description Link
Website Project homepage and media openarm.dev
Documentation Complete technical guides docs.openarm.dev
Discord Community discussions Join Discord
Contact Direct communication openarm@enactic.ai

📁 Repositories

Repository Documentation License Description
openarm_hardware Hardware Docs CERN-OHL-S-2.0 Complete CAD data: STL files, STEP files, Fusion 360 assemblies
openarm_description Description Docs Apache-2.0 Robot description files with URDF/xacro for simulation
openarm_can CAN Docs Apache-2.0 CAN control library for low-level motor communication
openarm_ros2 ROS2 Docs Apache-2.0 ROS2 integration packages and nodes
openarm_teleop Teleop Docs Apache-2.0 Teleoperation packages with unilateral and bilateral control
openarm_isaac_lab Isaac Docs Apache-2.0 Isaac Lab simulation environment and training tasks
openarm_mujoco MuJoCo Docs Apache-2.0 MuJoCo specification files and assets for OpenArm
openarm_dataset Dataset Docs Apache-2.0 Dataset format, recording tools, and Python API
dora-openarm Dora Docs Apache-2.0 Dora dataflow nodes for data collection, inference, and teleop

solid-node simulation

The simulation/ package adds an intent-controlled model of the complete OpenArm 2.0 bimanual assembly. It imports the collision geometry and kinematics from a pinned OpenArm Description revision without modifying or redistributing those files.

With Python 3.11 or later and solid-node with its viewer extra installed, run:

python simulation/tools/fetch_sources.py
solid build
solid develop

The fetch helper checks out OpenArm Description commit 1fba2cbc05001f05b4514120b70130b4ac06f409 under the ignored .vendor/ directory and verifies its licence and generated OpenArm 2.0 URDF. solid build publishes _build/viewer.json; solid develop opens the complete interactive assembly. The untouched timeline starts in Rest geometry and waves the left wrist. Trigger the Rest instruction to settle that motion.

The root control surface describes intent rather than exposing 18 physical joint ports:

Driver Effect
reach Couples both elbows from bent to extended
elevation Raises both arms
spread Opens the arms away from the centreline
arm_twist Counter-rotates the upper arms
wrist_pitch Pitches both wrists
wrist_roll Counter-rotates the two wrists
grip Closes both two-finger pinch grippers
wave Sets the time-dependent left-wrist wave amplitude

Six two-second instructions demonstrate the machine: Rest, Ready, Present, Reach, Wave, and Grasp. The intermediate models provide a ground-up inspection sequence:

solid build simulation/parts.py:Body
solid build simulation/gripper.py:GrippersAtThirtyDegrees
solid build simulation/arm.py:ArmsAtRest
solid build

Run the exact contract suite one node file at a time:

solid test simulation/test_parts.py --exact
solid test simulation/test_arm.py --exact
solid test simulation/test_gripper.py --exact
solid test simulation/test_openarm.py --exact

Reproduce the reviewed WebGL evidence with:

solid snapshot --renderer web --time 0 --autocenter --viewall --imgsize 1400x1000 -o snapshot-rest.png
solid snapshot --renderer web --time 0.25 --autocenter --viewall --imgsize 1400x1000 -o snapshot-wave.png
solid snapshot --renderer web --time 0 --camera 3000,0,400,0,0,400 --imgsize 1400x1000 -o snapshot-front.png

This is an assembly simulation, not manufacturing output. The source body mesh is authored in millimetres but scaled to metres by the URDF; the arm and gripper meshes are authored in metres. The model normalizes both to solid-node millimetres, applies the URDF's selected left-hand reflections, and models joint 7 as the gripper's wrist transform because it has no separate link mesh. A named 0.05 mm finger seat gap removes coincident-face Boolean noise. The upstream link 5/link 6 and gripper-base/finger intersections are measured and bounded rather than hidden; see docs/measurements.md for the readings and mutation evidence. The separate openarm_hardware manufacturing CAD is not consumed.

📄 Code of Conduct

All participation in the OpenArm project is governed by our Code of Conduct.

About

A fully open-source humanoid arm for physical AI research and deployment in contact-rich environments.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages