PhysicalAI OpenArm Plugin
Direct SocketCAN/Damiao control for OpenArm followers and hand-guided leaders in PhysicalAI. The plugin also registers single-arm and bimanual OpenArm entries in Physical AI Studio.
Safety and support
OpenArm moves powerful physical hardware. Secure each arm, provide clearance, keep an emergency stop accessible, and follow OpenArm's official safety guide. Only Linux SocketCAN is supported. Exactly one process may control a CAN interface at a time: do not concurrently run this plugin with LeRobot, ROS 2, or other CAN clients on the same bus.
This first release assumes hardware setup has already been completed. It does not set motor IDs, write persistent parameters, calibrate, or zero encoders. Before connecting, configure the documented motor IDs, provision CAN/CAN-FD, and complete OpenArm's homing and closed-gripper initialization procedure.
Installation
uv add physicalai-openarm-plugin
The package requires python-can and Linux SocketCAN. OpenArm's default
configuration uses CAN-FD at 1 Mbps arbitration and 5 Mbps data rate.
CAN adapters
can_adapter: socketcan is the default and supported route. Use a Linux
SocketCAN channel such as can0; a USB-CAN adapter is supported when the host
exposes it as a SocketCAN interface. This includes adapters configured through
slcand, which usually appear as slcan0 rather than /dev/ttyUSB0.
An experimental can_adapter: damiao proof of concept uses motorbridge to
open a Damiao USB-CAN serial adapter directly. Set port to its device path
and optionally set dm_serial_baud (default 921600):
port: /dev/ttyACM0
can_adapter: damiao
dm_serial_baud: 921600
This serial path has not been tested with OpenArm's eight-motor topology or CAN-FD timing. Do not use it for unattended motion, and retain SocketCAN as the recommended path until an adapter-specific hardware acceptance test succeeds.
Runtime contract
Positions are degrees, in this fixed order:
joint_1, joint_2, joint_3, joint_4, joint_5, joint_6, joint_7, gripper
Followers require side: left or side: right; the plugin applies the
side-specific conservative limits used by LeRobot's OpenArm support. Leaders
are read-only and default to torque-disabled manual control. Native bilateral
force feedback is not implemented.
Run
Update the can0 and can1 placeholders, then run unilateral teleoperation:
uv run physicalai run --config packages/physicalai-openarm-plugin/examples/runtime/teleop.yaml
For two leaders and two followers on independent CAN interfaces:
uv run physicalai run --config packages/physicalai-openarm-plugin/examples/runtime/bimanual-teleop.yaml
To read and print a leader's joint positions without sending CAN position targets:
uv run physicalai run --config packages/physicalai-openarm-plugin/examples/runtime/read-joints.yaml
Studio assets
The plugin includes lightweight parallel-link gripper URDF visualization models for Studio. They are plugin-authored kinematic visualizations, not redistributed OpenArm CAD or mesh assets. OpenArm software is Apache-2.0; hardware design data has separate CERN-OHL-S-2.0 licensing.
Development
uv sync
uv run pytest packages/physicalai-openarm-plugin/tests/
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file physicalai_openarm_plugin-0.1.0.tar.gz.
File metadata
- Download URL: physicalai_openarm_plugin-0.1.0.tar.gz
- Upload date:
- Size: 6.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1871529e3de509aa5546a2e349bd8cb0f6402f2fafa32e2e90989fbd39750ea8
|
|
| MD5 |
66e7a116b8bfe360d2ee62dfe334ddc3
|
|
| BLAKE2b-256 |
9da424cf1f8bfd3807f75a0cc28c0fa3e7a7e77feb8c1b080609bf2da078393a
|
File details
Details for the file physicalai_openarm_plugin-0.1.0-py3-none-any.whl.
File metadata
- Download URL: physicalai_openarm_plugin-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d79ef1d34265f8603a4343c4b6017f5eced080b628a3c6160a27da73b12b211
|
|
| MD5 |
b19f5dbb069cd4fab06256abdffcc6f6
|
|
| BLAKE2b-256 |
aa82da4cdea2a717fb044bed00447b93d32ff8d771303cd08c088dd69a961af3
|