An open API service indexing awesome lists of open source software.

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

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).