OpenArm Driver
A Python library for controlling OpenArm, using OpenArm CAN.
Quick start
TODO
Install
pip install openarm-driver
Sample usage
import openarm_driver
arm = openarm_driver.SingleArmDriver("right_arm")
# You can also use your own config file as well.
# config = openarm_driver.Config("/path/to/config.yaml")
# arm = openarm_driver.SingleArmDriver("right_arm", config)
try:
arm.start()
while True:
cur_position = arm.fetch_position()
# Some process to calculate the next steps.
next_positions = inference(cur_position)
for next_postion in next_positions:
arm.smooth_move(next_postion, hz=50, duration=1)
# you can use simple command as well (Please be careful not to move the arm too much).
# arm.send_position(next_postion)
finally:
arm.stop()
Config
Please refer to the default configuration.
Bundled configurations
The package bundles several configurations. Pass a bundled name to Config()
to select one, or pass a path to use your own file:
import openarm_driver
openarm_driver.available_configs()
# ['openarm_cell', 'openarm_cell_higher_pd', 'openarm_pedestal']
config = openarm_driver.Config("openarm_pedestal")
arm = openarm_driver.SingleArmDriver("right_arm", config)
# Or make it the default for every driver created afterwards.
openarm_driver.set_default_config(config)
| Name | Description |
|---|---|
openarm_cell |
Default. OpenArm mounted on the cell frame. |
openarm_cell_higher_pd |
Same as openarm_cell with higher PD gains. |
openarm_pedestal |
OpenArm mounted on the pedestal (zero joint offsets). |
The default safety checks run in this order:
JointPosCheckerclips commands to joint position limits.JointDeltaPosCheckerrejects excessive single-command jumps.JointVelocityCheckerlimits the remaining command using the elapsed time.
joint_velocity_limits is specified in rad/s. send_position() measures the
elapsed command time automatically, so callers do not need to provide the node
control frequency. Custom configurations may omit this field to disable command
velocity limiting.
Development
Test
uv sync
uv run pytest
Release
git clone git@github.com:enactic/openarm_driver.git
cd openarm_driver
dev/release.sh ${VERSION} # e.g. dev/release.sh 1.0.0
Related links
- 📚 Read the documentation
- 💬 Join the community on Discord
- 📬 Contact us through openarm@enactic.ai
License
Licensed under the Apache License 2.0. See LICENSE.txt for details.
Copyright 2026 Enactic, Inc.
Code of Conduct
All participation in the OpenArm project is governed by our Code of Conduct.
Metadata
Release files for openarm-driver 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openarm_driver-0.4.1.tar.gz | 24.8 kB | Details |
Release files / openarm_driver-0.4.1.tar.gz
| Download URL | openarm_driver-0.4.1.tar.gz |
|---|---|
| Size | 24.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3d5c8c54c596982860e2c88885e99116500003ed30a2e1a79a822f5a27824d89
|
|
BLAKE2b-256 checksum How to use checksums |
e4bf82102b5c64c2d72eb3395f8730286258b8f5e8f2774010d29f00f472c7e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency log