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
GalaxeaA1does 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)
| File | Size | Uploaded | |
|---|---|---|---|
| lerobot_robot_galaxea_a1-0.2.1.tar.gz | 12.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|