dora-openarm-kinematics
Dora nodes for forward and inverse kinematics on the OpenArm bimanual robot, backed by MuJoCo and mink. FK/IK logic lives in the openarm_control package, imported as control.
Install
uv sync
Dora Nodes
dora-openarm-fk — Forward Kinematics
Converts per-arm joint angles to end-effector poses via mj_forward.
| Inputs | position_right, position_left [{"qpos": float32[8]}] — joints 1–7 + gripper (flat float32[8] also accepted) |
| Outputs | pose_right, pose_left [{"pose": float32[8]}] — [px, py, pz, qw, qx, qy, qz, gripper_value] |
--mode right | left | bimanual (default: bimanual)
--frame-right MuJoCo site/body/geom name for right EE (default: right_ee_control_point)
--frame-left MuJoCo site/body/geom name for left EE (default: left_ee_control_point)
--frame-type-* body | site | geom (default: site)
--keyframe initial keyframe name (default: home)
--xml MJCF scene file
dora-openarm-ik — Differential IK
Solves joint angles from EE pose targets using mink's QP-based differential IK. Both arms share one mink.Configuration and are solved in a single QP per step. DOFs not driven by IK outputs are frozen (finger joints, lifter).
| Inputs | target_right, target_left [{"pose": float32[7]}] — EE pose targets; position [{"qpos": float32[16]}] — optional joint-state sync (flat arrays also accepted); trigger_right / trigger_left float32[1] — gripper pass-through |
| Outputs | position_right, position_left [{"qpos": float32[8]}] |
--mode right | left | bimanual (default: bimanual)
--max-iters IK iterations per event (default: 5)
--dt integration timestep per iteration (default: 0.5)
--damping global Tikhonov regularization (default: 1e-3)
--lm-damping per-task LM damping (default: 1e-4)
--posture-cost posture task weight, 0 = disabled (default: 0.0)
--pos-cost position task cost (default: 1.0)
--ori-cost orientation task cost (default: 1.0)
--solver QP backend (default: daqp)
--frame-right site/body name for right EE (default: right_ee_control_point)
--frame-left site/body name for left EE (default: left_ee_control_point)
--keyframe initial keyframe (default: home)
--xml MJCF scene file
Quick Start
FK — visualise leader arm poses
Reads joint angles from a physical leader arm and publishes end-effector poses. Requires a connected leader device.
uv run dora build example/dataflow-dummy-fk.yaml --uv
uv run dora run example/dataflow-dummy-fk.yaml --uv
FK → IK roundtrip
Pipes FK output directly back into IK to verify the solver round-trips correctly. No physical hardware needed beyond the leader.
uv run dora build example/dataflow-dummy-ik.yaml --uv
uv run dora run example/dataflow-dummy-ik.yaml --uv
Dataflow: leader → fk (joints → poses) → ik (poses → joints) → viewer
Tune the ik solver parameters in:
args: "--mode bimanual --max-iters 5 --dt 0.1 --damping 0.25 --posture-cost 0.01 --lm-damping 0.01"
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-kinematics 0.2.2
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_kinematics-0.2.2.tar.gz | 9.2 kB | Details |
Release files / dora_openarm_kinematics-0.2.2.tar.gz
| Download URL | dora_openarm_kinematics-0.2.2.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6637c386d70f9bd23ee86f20069686efaf7e0d0f521069324a14bf757b5df7d0
|
|
BLAKE2b-256 checksum How to use checksums |
5dbaf032ce86332b66e2df3ff74a45f049886cea04a1a0fd2f7c08e613b4918b
|
| 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 8, 2026.
Transparency log