A Dora node that controls OpenArm.
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
# ...| 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. |
--[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. |
| 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 position array directly, or a struct containing new_position. When the node has not been initialized yet, this input first drives the alignment step. |
| Output | Description |
|---|---|
position |
Current arm position as a float32 array. |
state |
Current arm state as a struct with float32 array fields qpos, qvel, and qtorque, plus int32 array fields tmos (MOS temperature) and trotor (rotor temperature) per motor, in °C. |
status |
A string array containing ready once the initial alignment completes. |
Licensed under the Apache License 2.0. See LICENSE for details.
Copyright 2026 Enactic, Inc.
All participation in the OpenArm project is governed by our Code of Conduct.