Skip to main content

dora-openarm-classifier

dora-rs node that classifies whether the current state completes the task successfully or not.

Install

pip install dora-openarm-classifier

Usage

This package provides two entry points:

  • dora-openarm-classifier: the dora-rs node.
  • dora-openarm-classifier-server: an optional standalone HTTP server that loads the model once and serves classification requests, so the node itself does not have to hold the model in memory.

For each incoming camera frame the node runs single-frame TOPReward, keeps a sliding window of the last --window scores, and reports the window median as the verdict. When arm positions are provided, SUCCESS is only latched once the grippers are open (release) and the vision window agrees, combining vision and proprioception.

Use it in a dora dataflow:

nodes:
  - id: classifier
    build: pip install dora-openarm-classifier
    path: dora-openarm-classifier
    env:
      QUESTION: "Is the object placed in the box?"
    inputs:
      image: camera/image
      position_right: arm-right/state
      position_left: arm-left/state
    outputs:
      - result

By default the node loads Qwen3-VL locally. To offload inference to the server instead, start the server and point the node at it:

# Terminal 1: start the model server
dora-openarm-classifier-server --port 8000

# Terminal 2 (or via the dataflow): run the node against the server
dora-openarm-classifier --question "..." --server-url http://127.0.0.1:8000

Inputs

Input Description
image JPEG bytes (uint8 array) with width/height/encoding metadata. Triggers a classification.
position Optional 16-dim arm state [right(8), left(8)]; gripper joints at indices 7 and 15.
position_right Optional 8-dim right arm state; gripper joint at index 7.
position_left Optional 8-dim left arm state; gripper joint at index 7.

Positions may be plain arrays or StructArrays with a qpos field. They are stored and applied to the next incoming image. Without any position input, the node falls back to a vision-only verdict.

Outputs

Output Description
result Float32 window-median score. Metadata carries verdict (SUCCESS/FAIL) and frame (frame counter).

Command line options

Each option can also be set through the matching environment variable.

Option Environment variable Default Description
--question QUESTION (required) Yes/no success question asked about each image.
--server-url SERVER_URL (unset; load model locally) URL of dora-openarm-classifier-server.
--window WINDOW 5 Sliding-window size in frames.
--threshold THRESHOLD 0.5 P_yes threshold for SUCCESS.
--gripper-threshold GRIPPER_THRESHOLD 0.2 |gripper joint| above which a gripper counts as open.
--classify-hz CLASSIFY_HZ 0.0 Max inference rate; frames arriving faster are dropped (0 = no limit).

The server (dora-openarm-classifier-server) accepts --host (default 127.0.0.1), --port (default 8000), and --model-id (default Qwen/Qwen3-VL-4B-Instruct).

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-classifier 0.1.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-classifier 0.1.0
File Size Uploaded
dora_openarm_classifier-0.1.0.tar.gz 13.0 kB Details

Release files / dora_openarm_classifier-0.1.0.tar.gz

Download URL dora_openarm_classifier-0.1.0.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
839fb0d81dc0e1a6f7ccd20d1e7498c073ecbd3008e7238811c08c422647a9e2
BLAKE2b-256 checksum
How to use checksums
7d71095d9e632a292da39d6ee47942efc0a2aa25264ad20e5275e85352389e20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

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