https://github.com/enactic/dora-openarm
dora-rs node to control OpenArm
https://github.com/enactic/dora-openarm
Last synced: 20 days ago
JSON representation
dora-rs node to control OpenArm
- Host: GitHub
- URL: https://github.com/enactic/dora-openarm
- Owner: enactic
- License: apache-2.0
- Created: 2026-03-12T04:26:50.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-05-12T05:53:29.000Z (about 1 month ago)
- Last Synced: 2026-05-12T06:29:41.834Z (about 1 month ago)
- Language: Python
- Size: 22.5 KB
- Stars: 0
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# dora-openarm
A [Dora](https://dora-rs.ai/) 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](https://github.com/enactic/dora-openarm-data-collection).
```yaml
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`. |
| `--[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 position array directly, or a struct containing `new_position`. When the node has not been initialized yet, this input first drives the alignment step. |
### Outputs
| 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`. |
| `status` | A string array containing `ready` once the initial alignment completes. |
## License
Licensed under the Apache License 2.0. See [LICENSE](LICENSE) for details.
Copyright 2026 Enactic, Inc.
## Code of Conduct
All participation in the OpenArm project is governed by our [Code of Conduct](CODE_OF_CONDUCT.md).