Getting Started with OpenArm
Project overview, platform guide, safety requirements, and how to contribute to the OpenArm open-source community.
Discover OpenArm
OpenArm is an open-source 7DOF humanoid arm designed for physical AI research and deployment in contact-rich environments. All hardware and software are completely open-source and ready for you to build, hack, and deploy!
The team is in continuous development and actively seeking contributors, research partners, and company collaborators to shape the next generation of practical humanoid systems.
What's Unique?
- Human-Scale Design — Designed with human-like proportions and dimensions, scaled for a person around 160–165 cm tall. This provides an optimal balance between practical reach and manageable inertia for safe, responsive operation.
- Safety-First Architecture — Built with QDD backdrivable motors and high compliance. Prioritizes safe human–robot interaction while maintaining practical payload capabilities (6.0 kg peak / 4.1 kg nominal) for real-world tasks.
- Built for Durability — Critical structural components use aluminum and stainless steel construction, ensuring robust performance for repetitive data collection and continuous research use.
- Fully Accessible & Buildable — Every component — from CNC parts and 3D-printed casings to electrical wiring — is designed to be purchasable and buildable by individual researchers and labs, with complete fabrication data provided.
- Practical & Affordable — At $6,500 USD for a complete bimanual system, OpenArm delivers research-grade capabilities at a fraction of traditional humanoid robot costs, making advanced robotics accessible to more teams and applications.
Project Overview & Structure
OpenArm spans multiple platforms for development, collaboration, and community engagement.
Platform Overview
| Platform | URL | Purpose |
|---|---|---|
| Main Website | openarm.dev | Project homepage with announcements, visualizations, and contact forms |
| Documentation | docs.openarm.dev | Complete technical guides and tutorials |
| GitHub | github.com/enactic/openarm | Open-source repositories with code, CAD files, issue tracking |
| Discord | discord.gg/GmYa262ETH | Real-time discussions, support, collaboration |
Repository Structure
| Repository | Description |
|---|---|
| openarm | Main project — ideas, issues, feature requests |
| openarm_hardware | CAD data: STL, STEP, Fusion 360 files |
| openarm_description | URDF/xacro robot description files |
| openarm_can | CAN control library |
| openarm_ros2 | ROS2 integration packages |
| openarm_teleop | Teleoperation control packages |
| openarm_isaac_lab | Isaac Lab simulation environment |
Get Help
- Discord — Real-time support from the community
- GitHub Issues — Bug reports and feature requests
- GitHub Discussions — Technical questions
Safety Guide
This guideline outlines key points you should be aware of to use OpenArm safely and responsibly.
Safe Use Requirements
1. Install in a Safe Location
When installing OpenArm, securely fasten it with screws or clamps to a flat and stable surface. Avoid placing it near fragile objects, flammable materials, or sources of moisture. Additionally, make sure there are no walkways or passages nearby where people frequently pass.
2. Maintain a Safe Distance
When operating OpenArm, always ensure that no part of your body or any objects enter its range of motion. When approaching the robot for adjustments, always check that the power is turned OFF, and make sure that people nearby do not accidentally turn it ON. If necessary, use barriers or markings to restrict access to the operating area.
3. Wear Appropriate Protective Equipment (PPE)
Always wear safety goggles when operating OpenArm. In addition, wear other protective equipment (PPE) such as safety shoes, helmets, or gloves as needed.
4. Operate Within Specified Limitations
Do not operate OpenArm beyond the specified payload limits for a single arm or both arms. When using an end-effector, also ensure that its payload capacity is not exceeded. As an example, a 1.5 kg end-effector leaves 2.6 kg nominal and 4.5 kg peak usable payload from the arm's rated capacity — always subtract end-effector weight from the arm's total rated payload before loading.
5. Prepare for an Emergency Stop
Familiarize yourself with the location and operation of the emergency stop device so that you can activate it immediately if something abnormal occurs. The emergency stop switch should be installed in a safe position at a sufficient distance from OpenArm.
6. Assess Risks and Continuously Improve
Record and regularly review any hazards or improvement points you notice during use. Safety must be continuously enhanced through the cooperation of all users — it cannot be ensured only once. By joining the community, you can take part in discussions about improving safety.
Safe Maintenance and Inspection
To keep OpenArm operating safely, daily inspections and maintenance are essential. Pay particular attention to the following points to detect any abnormalities or wear at an early stage.
Loosening of Base Fasteners and Screws
Repeated movement in certain postures or vibrations can cause screws or clamps to loosen unexpectedly. Loose screws at the base or around the arm's joints may lead to serious accidents. Always check for any looseness before operating OpenArm.
Damage to Mechanical Limits
Each joint is equipped with mechanical limits to prevent abnormal postures and protect wiring. These mechanical limits can become deformed or broken by strong impacts. If operation continues with damaged mechanical limits, they may fail to prevent abnormal joint movement in the event of a malfunction. Check the condition of these parts regularly and replace them if necessary.
Unusual Noises or Catching in Joints
Damage caused by excessive loads or impacts during operation can result in unusual noises or catching when moving joints. This is often caused by deformation of the frame or covers, damage to the motor gearbox, or cables getting caught. Identify the location of the noise or catching and investigate the cause thoroughly.
Damage to Wiring and Connectors
Repeated sharp bending or improper connection and disconnection can damage wiring and connectors. If cables or connectors are damaged, OpenArm may not function correctly, and electrical problems such as damage to the power supply or control devices can occur. If you notice any abnormal operation, immediately turn off the power and check cables from the base to the end for any damage.
Software Setup Prerequisites
Before setting up the OpenArm software stack, ensure you have the required hardware and a compatible operating environment.
Hardware Needed
| Component | Details |
|---|---|
| OpenArm robotic arm | With Damiao motors installed |
| 24V power supply | Appropriate current capacity for the number of motors in use |
| Cables | Included with motor package |
| Damiao USB CAN Debugger | Required for Motor ID Setup step only; Windows PC needed |
| SocketCAN-compatible interface | Required for motor control (e.g., CANable, PEAK PCAN); Ubuntu 22.04 or 24.04 recommended (or any Linux with SocketCAN support) |
Setup Sequence
Follow these steps in order when setting up OpenArm for the first time:
-
Motor ID Configuration Use the Damiao USB CAN Debugger on Windows to assign unique CAN IDs to each motor. Each motor must have a distinct ID before any control software can address it.
-
CAN Interface Setup On your Ubuntu machine, configure the SocketCAN interface. Bring up the CAN interface at the correct bitrate and verify it is visible to the OS.
# Example: bring up CAN interface at 1 Mbit/s sudo ip link set can0 type can bitrate 1000000 sudo ip link set can0 up -
Motor Test Run the motor test utility from
openarm_canto confirm each motor responds on the bus and reports expected state. -
Motor Configuration Apply per-motor configuration (position limits, control mode, PID gains) using the provided configuration scripts.
-
Demo Run Launch one of the included demo scripts to verify the full pipeline — from CAN commands through joint motion — before moving to your own application.
Detailed commands and configuration files are covered in the Software guide.
Teleoperation Overview
OpenArm supports two teleoperation modes. Choose based on your task requirements and available hardware.
Unilateral Control
The follower arm directly mimics the leader arm's movements via position commands. Control is one-directional — there is no force or tactile feedback relayed back to the operator.
| Property | Details |
|---|---|
| Feedback | None (position commands only) |
| Direction | One-way: leader → follower |
| Best for | Basic teleoperation, open-space manipulation, lightweight rapid operations |
Bilateral Control
Reciprocal force feedback between both arms — the operator perceives tactile sensations from the environment through the leader arm. This requires OpenArm's high-backdrivability QDD motors and a low-latency CAN connection between both arms.
| Property | Details |
|---|---|
| Feedback | Force/torque feedback to operator |
| Direction | Bidirectional: leader ↔ follower |
| Best for | Contact-rich manipulation, dexterous assembly, tasks requiring tactile sensing |
Contribution Guide
The OpenArm team welcomes contributions from researchers, developers, makers, and enthusiasts at all levels! Whether you're sharing ideas, picking up tasks, or collaborating on projects, there's a place for you in the OpenArm community.
GitHub Issues — The Idea Pool
Use the OpenArm GitHub repository as a central hub for new project ideas, feature requests, and bugs.
How It Works
- Upvote issues that resonate with you — this helps the team prioritize what the community wants most.
- Share your own ideas by creating new issues. No idea is too small or too ambitious!
- Unassigned issues are open for pickup. Browse the issues and self-assign anything that interests you. No need to ask for permission — just start working and share your progress in the comments.
Submit issues for:
- Project ideas and feature requests
- Bug reports and technical issues
- Community discussions and feedback
- Roadmap suggestions and priorities
Discord — Connect & Collaborate
Join the OpenArm Discord to find collaborators, share what you're building, and integrate projects together.
| Channel | Purpose | Best For |
|---|---|---|
#projects | Share builds, ideas, and find collaborators | Showcasing work, finding project partners |
#faq | Quick questions and community answers | Getting started, troubleshooting |
#updates | Official announcements | Staying current with developments |
#weekly | Development progress highlights | Following project milestones |
#hardware | Hardware discussions and improvements | Mechanical issues, design ideas |
#controls | Control algorithms and software | Development discussions, theory |
Contributing Code & Fixes
Ready to submit your work? The team reviews pull requests across all repositories.
-
Fork the relevant repository. Go to the appropriate enactic GitHub organization and fork the repo you want to contribute to.
-
Create a branch for your changes.
git checkout -b feature/my-improvement
-
Make your improvements. Fix bugs, add features, or improve documentation.
-
Test thoroughly when possible. Run any existing tests and verify your changes work as expected.
-
Submit a pull request with a clear description. Explain what you've built or fixed and reference any related GitHub issues.