dora-openarm
A Dora node that controls OpenArm.
Usage
Use this node from a dora-rs dataflow configuration. For a full configuration example, see enactic/dora-openarm-data-collection.
nodes:
# ...
- id: follower-right
build: pip install dora-openarm
path: dora-openarm
args: "--side right --align-trigger gripper"
inputs:
# Only the event ID is used. The event value is ignored.
request_position: leader/right_follower_position
move_position: leader/right_follower_position
outputs:
- position
- status
- id: follower-left
build: pip install dora-openarm
path: dora-openarm
args: "--side left --align-trigger gripper"
inputs:
# Only the event ID is used. The event value is ignored.
request_position: leader/left_follower_position
move_position: leader/left_follower_position
outputs:
- position
- status
# ...
Node arguments
| Argument | Description |
|---|---|
--side |
OpenArm side to control. Default: right. |
--config |
Path to the OpenArm configuration file. Default: openarm_cell.yaml. |
--align-trigger |
Optional trigger for the initial alignment step. Supported value: gripper. |
--align-threshold |
Alignment threshold in radians. Default: 0.1. |
--align-delta-limit |
Maximum joint delta per initial-alignment command in radians. Default: 0.001. |
--[no-]align |
Whether to align to incoming position commands after the arm starts. Default: enabled. |
--[no-]stop |
Whether to stop the arm when the node exits. Default: controlled by the STOP environment variable, or true when it is unset. |
--[no-]refresh-every-request |
Whether to refresh OpenArm state before each request. Default: controlled by the REFRESH environment variable, or true when it is unset. |
Inputs
| Input | Description |
|---|---|
request_position |
Requests the current arm position. The event ID is used and the event value is ignored. |
request_state |
Requests the current arm state. The event ID is used and the event value is ignored. |
move_position |
Sends a new target position to the arm. The value may be a struct containing qpos ([{"qpos": [...]}]), a position array directly, or a legacy struct containing new_position. When initial alignment is enabled, this input drives the alignment until it completes. |
Outputs
| Output | Description |
|---|---|
position |
Current arm position as a length-1 struct containing a float32 array: [{"qpos": [...]}]. |
state |
Current arm state as a length-1 struct with list fields: [{"qpos": [...], "qvel": [...], "qtorque": [...], "tmos": [...], "trotor": [...]}]. qpos, qvel, and qtorque are float32 lists; tmos (MOS temperature) and trotor (rotor temperature) are int32 lists per motor, in °C. |
status |
Current control state as a string array: stopped, started, or aligned. With alignment enabled, aligned is emitted once initial alignment completes. |
License
Licensed under the Apache License 2.0. See LICENSE 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 dora-openarm 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dora_openarm-1.1.0.tar.gz | 9.5 kB | Details |
Release files / dora_openarm-1.1.0.tar.gz
| Download URL | dora_openarm-1.1.0.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0d1c0d10464a23f6eebe8f9bed9878d5c7f659c48b8f769ed78e73e375e2f0a
|
|
BLAKE2b-256 checksum How to use checksums |
1c047713a9704d7a09ba05d8a32b54265a09bf9339860ab14d2e210ce6a31ab3
|
| 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 Aug 26, 2026.
Transparency log