Galaxea A1 Robot for LeRobot
A third-party LeRobot Robot plugin for the Galaxea A1 Runtime.
This package registers the LeRobot Robot type galaxea_a1. It talks to the
separately supervised Galaxea A1 Runtime over a local Unix socket; ROS, vendor
drivers, cameras, process supervision, and motor publication remain in the
Runtime. The adapter uses the lightweight galaxea-a1-runtime-protocol
distribution released from the Runtime repository. The protocol is an A1
implementation detail, not a generic robot API.
Install
python -m pip install lerobot_robot_galaxea_a1
The Galaxea A1 Runtime must be installed and supervised separately.
LeRobot integration
| Convention | Value |
|---|---|
| Distribution | lerobot_robot_galaxea_a1 |
| Type | galaxea_a1 |
| Config | GalaxeaA1Config |
| Robot | GalaxeaA1 |
| Supported LeRobot | >=0.6,<0.7 |
The distribution prefix, module layout, config registration, class names, and package exports follow LeRobot's third-party hardware conventions. LeRobot CLI entrypoints discover the plugin after installation.
GalaxeaA1Config requires an absolute unix:/// Runtime endpoint. Creating
the config and Robot does not connect to the service, and both LeRobot feature
properties remain available while it is offline.
Adapter contract
The plugin owns the fixed control feature names below. At connection time it requires the Runtime manifest to match them exactly; the Runtime remains the source of truth for configured joint limits.
joint_1_rad ... joint_6_rad absolute radians
gripper_normalized continuous 0..1
connect() opens a Runtime session without moving the arm. send_action()
validates and submits six named joint targets plus the gripper target, then
returns the action accepted by the Runtime. The first action uses the connection
timeout while the Runtime stages the current-joint hold and activates its relay;
later control calls use the shorter RPC timeout. disconnect() releases the
command lease; it does not home the arm or open the gripper.
The adapter does not host the service, own a lease/watchdog, secure the socket, or import ROS. Those behaviors are implemented and tested in Galaxea A1 Runtime. Calibration and reset remain explicit Runtime workflows and are not remote Robot operations.
Pairing with the A1 SO-Leader
The modified leader reports degrees; the A1 accepts radians. Do not connect
them through the identity processors used by the generic LeRobot 0.6
lerobot-teleoperate and lerobot-record commands.
Use the tracked A1 Runtime workflow. The pair-specific processor is owned by that composition root because it combines the SO-Leader units with tracked A1 mapping, limits, startup observation, gripper state, and safety policy. This Robot package intentionally does not export pairing processors.
Recording boundary
This plugin exposes control observations: six measured joints and normalized gripper state. It does not reopen Runtime-owned cameras or make joint control depend on EEF tracking.
The A1 Runtime combines this control path with EEF feedback and paired cameras, then commits the canonical LeRobotDataset v3.0 dataset. Synchronization, provenance, atomic episode commit, and safety lifecycle belong there.
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
Metadata
Release files for lerobot-robot-galaxea-a1 0.4.0
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.4.0.tar.gz | 9.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lerobot_robot_galaxea_a1-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.8 kB
Release files / lerobot_robot_galaxea_a1-0.4.0.tar.gz
| Download URL | lerobot_robot_galaxea_a1-0.4.0.tar.gz |
|---|---|
| Size | 9.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a66044212daf71a2e42048bbf1727ea86ed6c5159241fd415f3cb2535b22e4a
|
|
BLAKE2b-256 checksum How to use checksums |
55b57115bcbc519ca171ac26125e0e043e90fc8746e6547fa5e02c6fd956094a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Aug 4, 2026.
Transparency logRelease files / lerobot_robot_galaxea_a1-0.4.0-py3-none-any.whl
| Download URL | lerobot_robot_galaxea_a1-0.4.0-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c6cc762099e54f694af06e95282942bec50a52412a05f7465ebc688857b9bd8f
|
|
BLAKE2b-256 checksum How to use checksums |
b70d455422683fdb2cc30b55d28fa073cd0507e715eddf0c1accdeb00e4f89d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Aug 4, 2026.
Transparency log