Skip to main content

LeRobot Robot plugin for Galaxea A1

This package provides the auto-discovered LeRobot robot type galaxea_a1. It is a thin client of an embodied-ops Unix-socket service and deliberately contains no ROS node, vendor driver, process supervisor, System config parser, or host motor publisher.

Safety model

  • Constructing GalaxeaA1 does not connect to ROS, hardware, or the runtime service.
  • connect() attaches to a separately supervised A1 runtime and must not move the arm.
  • send_action() accepts six absolute joints in radians plus a continuous normalized gripper target and returns the command actually accepted by the runtime.
  • Limits are declared by the runtime manifest and validated without hidden rewriting.
  • disconnect() closes its exclusive command lease so the runtime locks/disables motion; it never opens the gripper or moves the robot home.

The production service is provided by galaxea-a1-runtime. That runtime retains exclusive ownership of ROS, the staged joint tracker, the locked fail-closed relay, cameras, System config, and process lifecycle. This package never imports galaxea_a1_runtime.

Install

python -m pip install lerobot_robot_galaxea_a1

LeRobot discovers the package from its exact lerobot_robot_ distribution prefix:

lerobot-teleoperate \
  --robot.type=galaxea_a1 \
  --robot.id=a1 \
  --robot.endpoint=unix:///run/my-runtime/embodied-ops.sock

The generic LeRobot 0.6 CLI currently installs identity teleoperation processors. Do not pair the raw A1 SO leader with this command: leader values are degrees while the robot contract is radians. Use make_galaxea_a1_processors() through LeRobot's programmatic teleoperate/record APIs until upstream supports third-party pair processor resolution.

Recording boundary

This Robot is deliberately a control adapter: its observation contains the six measured joints and normalized gripper required by the verified Teleop processor. It does not make joint control depend on EEF tracking, and it does not reopen cameras owned by another process. Consequently, a generic lerobot-record invocation is not the canonical Galaxea dataset recorder.

The galaxea-a1-runtime collection workflow composes this control path with read-only EEF feedback and the sole-owner Camera Bridge, then writes the standard LeRobotDataset v3 feature contract. This split keeps the pip plugin useful with any conforming service while leaving robot-specific synchronization, provenance, atomic episode commit, and safety lifecycle in the Runtime composition root.

Canonical action contract

joint_1_rad ... joint_6_rad  absolute radians
gripper_normalized           continuous 0..1

The supplied GalaxeaA1RelativeAnchorProcessorStep preserves the verified A1 mapping: leader deltas are anchored to the A1 startup pose, converted from degrees, transformed by explicit sign/scale/bias vectors, and bounded by explicit tracked joint limits.

Development

uv venv --python 3.12
uv pip install -e . pytest ruff build
uv run --no-project pytest
uv run --no-project ruff check .
uv run --no-project ruff format --check .
uv build

All CI tests use a fake runtime service on a temporary Unix socket and never import ROS or touch hardware.

License

Apache-2.0

Metadata

Release files for lerobot-robot-galaxea-a1 0.2.1

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

Source distribution (sdist)

Source distribution for lerobot-robot-galaxea-a1 0.2.1
File Size Uploaded
lerobot_robot_galaxea_a1-0.2.1.tar.gz 12.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lerobot-robot-galaxea-a1 0.2.1
File Interpreter ABI Platform
lerobot_robot_galaxea_a1-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 23.8 kB

Release files / lerobot_robot_galaxea_a1-0.2.1.tar.gz

Download URL lerobot_robot_galaxea_a1-0.2.1.tar.gz
Size 12.1 kB
Tags Source
SHA-256 checksum
How to use checksums
706633de7b0f5378a572d8f796cfc6e7ba01c21659a967e988c165c581305772
BLAKE2b-256 checksum
How to use checksums
303acd4122bc75702a9a0f991a750f4d2a28ff7354e43b33df2be7c53767579d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / lerobot_robot_galaxea_a1-0.2.1-py3-none-any.whl

Download URL lerobot_robot_galaxea_a1-0.2.1-py3-none-any.whl
Size 11.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f3dc07bc40c8d9e907f58a4867f02ae06ea3d33bad86961365f19fe8333db76f
BLAKE2b-256 checksum
How to use checksums
39471b7b7cefab1beaa1431d5f6e76113f70620273faf16452f27ee5c7ad2919
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.4.0

2 release files

0.3.0

2 release files

This release

0.2.1 This release

2 release files

0.2.0

2 release files

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