Skip to main content

dora-rs node that simulates OpenArm bimanual robot in MuJoCo

Project description

dora-openarm-mujoco

MuJoCo simulation node for the OpenArm bimanual robot, designed to run inside a dora-rs dataflow.

It replaces the physical follower arms and cameras: it accepts joint-position commands and publishes arm observations and JPEG camera frames at the same interface as the real hardware.

Installation

uv sync

Quick start

A self-contained dummy dataflow is included for testing without real hardware. It wires a dummy leader node to the MuJoCo sim and records to disk.

uv run dora build dataflow-dummy.yaml --uv
uv run dora run dataflow-dummy.yaml

Example

Dataflow configuration

Minimal (headless and position forwarding only no cameras)

- id: openarm-mujoco
  build: pip install -e .
  path: dora-openarm-mujoco
  inputs:
    position_right: leader/follower_position_right
    position_left:  leader/follower_position_left
  outputs:
    - status
    - arm_right_observation
    - arm_left_observation

Full (interactive viewer + all cameras, with contacts, can be used for vr teleoperation)

- id: openarm-mujoco
  build: pip install -e .
  path: dora-openarm-mujoco
  args: "--viewer --render --enable-collision --ctrl --keyframe home"
  inputs:
    position_right: leader/follower_position_right
    position_left:  leader/follower_position_left
  outputs:
    - status
    - arm_right_observation
    - arm_left_observation
    - camera_wrist_right
    - camera_wrist_left
    - camera_head_left
    - camera_head_right
    - camera_ceiling

Inputs

ID Type Description
position_right float32[8] Target joint positions for the right arm: joints 1–7 then the gripper. ~500 Hz.
position_left float32[8] Same layout for the left arm.
pose_right float32[7] VR controller pose [x, y, z, qw, qx, qy, qz]. Used only with --debug-frames.
pose_left float32[7] Same for the left controller.

Outputs

ID Type Description
arm_right_observation float32[8] Observed joint positions, published per incoming command.
arm_left_observation float32[8] Same for the left arm.
camera_wrist_right uint8[N] JPEG frame, ~30 Hz. Requires --render.
camera_wrist_left uint8[N] JPEG frame, ~30 Hz. Requires --render.
camera_head_left uint8[N] JPEG frame, ~30 Hz. Requires --render.
camera_head_right uint8[N] JPEG frame, ~30 Hz. Requires --render.
camera_ceiling uint8[N] JPEG frame, ~30 Hz. Requires --render.

Camera outputs carry metadata={"encoding": "jpeg"}.

Arguments

Pass these via the args: field in the dataflow YAML, or directly on the command line.

Argument Default Description
--xml PATH unset MJCF scene file to load. Overrides --scene when set.
--scene NAME cell Bundled scene to load when --xml is not set. Choices: cell, demo, pedestal, bimanual.
--keyframe NAME home Keyframe in the MJCF to reset to on startup.
--enable-collision off Enable contact/collision detection. Disabled by default to avoid unexpected joint-locking during teleoperation.
--ctrl off Write incoming positions to data.ctrl and step the physics (mj_step) to simulate actuator control. The default writes directly to data.qpos with mj_forward.
--viewer off Open the interactive MuJoCo viewer window. Requires a display.
--render off Enable offscreen camera rendering and publish JPEG frames. Leave off if cameras are not needed.
--debug-frames off Draw VR controller poses as coloured arrows in the viewer. Only visible with --viewer.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dora_openarm_mujoco-0.1.0.tar.gz (14.7 kB view details)

Uploaded Source

File details

Details for the file dora_openarm_mujoco-0.1.0.tar.gz.

File metadata

  • Download URL: dora_openarm_mujoco-0.1.0.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dora_openarm_mujoco-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2c2f21786f14e77f613cd6325d8dc1f8863c253a43632e97ab85457de7244317
MD5 47ec04f1894ca5d7c6594c194068a93f
BLAKE2b-256 82e62c9bc8001b58221cedb4637006813f0e477ece9d6e3e82f59ba9886d720b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dora_openarm_mujoco-0.1.0.tar.gz:

Publisher: package.yaml on enactic/dora-openarm-mujoco

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page