Skip to main content

openral-detect

Hardware probing + RobotDescription assembly for openral detect.

Part of OpenRAL — the open Robot Abstraction Layer for vision-language-action robotics. This package is one member of the OpenRAL Python workspace; see the architecture overview and the eight-layer model in the project docs.

All OpenRAL workspace packages move in lockstep at 0.1.x until the first public release.

Usage

openral detect is an always-interactive custom robot.yaml builder. There is no --interactive/-i flag — probing a rig and writing a manifest always walks the operator through naming the rig and binding its cameras.

# Build a custom robot.yaml (prompts for a rig name + per-camera sensor
# bindings; writes robots/<name>/robot.yaml by default).
openral detect

# Also scaffold a DeployScene with the workcell (non-robot) camera bindings.
openral detect \
  --output robots/my_so101_bench/robot.yaml \
  --deployment scenes/deploy/so101_bench.yaml

# Inspect probes without writing files or prompting (CI-safe).
openral detect --include usb,gpu,cameras_v4l2 --report detect.json --no-write

openral detect probes USB, DDS, GPU, V4L2, RealSense, Orbbec, and network interfaces; resolves a canonical manifest (from USB/DDS inference or --robot) as a template, never as the output; and records accelerator capabilities used by openral rskill check. The interactive flow is:

  1. Prompt for a custom robot name (default: the canonical rig's name). This becomes RobotDescription.name, and — unless --output is given — sets the default output path to robots/<name>/robot.yaml, so a DeployScene with robot_id: <name> resolves it.
  2. Everything except the sensor list is inherited verbatim from the canonical manifest: joints, URDF/MJCF, safety envelope, capabilities, compute.
  3. A sensor wizard walks every detected camera (V4L2 + RealSense + Orbbec) and asks which sensor it is. A thumbnail (opencv) is grabbed only for V4L2 (/dev/video*) devices; RealSense and Orbbec entries key on model + serial (no device_path) and get no thumbnail:
    • a canonical sensor name (e.g. top, wrist) reuses that manifest SensorSpec verbatim (frame, intrinsics, vla_feature_key) plus the real device binding, with a warning that the intrinsics are still the canonical rig's — best to supply your own calibrated fx/fy/cx/cy;
    • a new name creates a new robot sensor (prompts for parent_frame; generic intrinsics + the same calibration warning);
    • w:<name> records a workcell/workspace camera — written only into the --deployment DeployScene, never into the robot manifest;
    • Enter skips the device. Canonical sensors that are never bound to a device are dropped from the custom manifest.
  4. An opt-in gate, "Customize joint limits & safety envelope? [y/N]" — N (default) inherits the canonical values verbatim; y walks each joint's position/velocity/effort limits and the safety scalars with Enter-to-keep-default prompts.
  5. When the manifest is written outside the canonical rig's directory, file: asset refs (URDF/MJCF/SRDF) are rewritten repo-root-relative so they still resolve from the new location.
  6. For a serial (lerobot Feetech) arm — SO-100/SO-101/… — the scaffolded --deployment scene needs a lerobot calibration (per-servo IDs + homing offsets) before deploy run can connect. When the scene's calibration directory is empty, openral detect prints a "Calibration required" notice pointing at the lerobot calibrate flow (https://huggingface.co/docs/lerobot/v0.6.0/en/so101#calibrate); link an existing <id>.json into that directory or generate one there.

Only --no-write short-circuits to probe-only inspection: no prompts, cameras are auto-enriched from the sensor catalog (real intrinsics via reverse lookup) instead of wizard-bound, and no robot.yaml/DeployScene is written. This is the CI-safe path. --report <path> is an orthogonal flag that always dumps the raw DetectionReport JSON to path; used alone (without --no-write) it does not make the run non-interactive — the full builder still prompts for a rig name, runs the camera wizard, and writes robot.yaml. For a headless/CI probe, pass --no-write (optionally together with --report).

Bare Feetech USB detection defaults to so101_follower because SO-100 and SO-101 are electrically indistinguishable on the bus. Force the older arm with:

openral detect --robot so100

--deployment writes a DeployScene shell: robot_id set to the custom name, the wizard's workcell camera bindings, and the HAL's port overridden with the serial device actually detected on this host (e.g. /dev/ttyACM0). The custom robots/<name>/robot.yaml this produces is read by openral deploy run (via robot_id/--robot) — it is not a throwaway inspection artifact. --deployment does not choose an rSkill; deploy run lets the reasoner pick from installed, capability-matched rSkills.

Download files

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

Source Distribution

openral_detect-0.2.0.tar.gz (30.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openral_detect-0.2.0-py3-none-any.whl (35.5 kB view details)

Uploaded Python 3

File details

Details for the file openral_detect-0.2.0.tar.gz.

File metadata

  • Download URL: openral_detect-0.2.0.tar.gz
  • Upload date:
  • Size: 30.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for openral_detect-0.2.0.tar.gz
Algorithm Hash digest
SHA256 98050ec5e5d042557f120d430d7aea65ac216c6042661ef596475f4f4408d018
MD5 12c99ef6088994f5c64b255867b084d5
BLAKE2b-256 50b415dcc10fe013174b5d0e01792829152c6fda504514332e2c324126cbf31d

See more details on using hashes here.

Provenance

The following attestation bundles were made for openral_detect-0.2.0.tar.gz:

Publisher: release-pypi.yml on OpenRAL/openral

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

File details

Details for the file openral_detect-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: openral_detect-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 35.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for openral_detect-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ecd88eaa075f26c788e8abb956a62aad60ae7729fe82fa2853935dd890447849
MD5 70147e1d4f297d0c7709380e7c4ded34
BLAKE2b-256 fa4fa9d1649f7b4bf276291d5dbfce8240919216b923876d014b0d54fc2aa79a

See more details on using hashes here.

Provenance

The following attestation bundles were made for openral_detect-0.2.0-py3-none-any.whl:

Publisher: release-pypi.yml on OpenRAL/openral

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

Release history Release notifications | RSS feed

0.3.1

2 files

0.3.0

2 files

This release

0.2.0 This release

2 files

0.1.0

1 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