Skip to main content

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.
--can-interface SocketCAN interface to use, overriding the one in the configuration file. Default: the configuration file's value.
--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: [{"qpos": [...], "qvel": [...], "qtorque": [...], "tmos": [...], "trotor": [...], "motor_status": [...], "bus": {...}}]. qpos, qvel, and qtorque are float32 lists; tmos (MOS temperature) and trotor (rotor temperature) are int32 lists per motor, in °C. motor_status is a string list with one entry per motor in qpos order: the motor's own status name, or SILENT if it has stopped answering. bus is a struct describing the CAN interface: carrier (bool, whether the link is up) and the cumulative fault counters bus_off, error_passive, error_warning, ack_error, tx_overflow, rx_overflow, and net_down (int64). The counters only grow while the node runs, so compare against a baseline to see what happened during a given period.
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.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dora-openarm 1.2.0
File Size Uploaded
dora_openarm-1.2.0.tar.gz 10.7 kB Details

Release files / dora_openarm-1.2.0.tar.gz

Download URL dora_openarm-1.2.0.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4d3b191579deabbc4fd7bae4dd8ce6db1d1da9b65351f5dd21fedee34d09ea56
BLAKE2b-256 checksum
How to use checksums
98150afd17e440d673e15e171ddfdf8b45ae9c7b7d7cc154b3a6486799b13992
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 16, 2026.

Transparency log

Release history Release notifications | RSS feed

1.3.0

1 release file

1.2.1

1 release file

This release

1.2.0 This release

1 release file

1.1.0

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page