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 transport 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.
Device 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. disconnect() releases the command
lease; it does not home the arm or open the gripper.
Only one command session may hold the A1 control lease. Session heartbeats keep
the connection alive but do not extend the command-inactivity deadline; an idle
or failed command session loses control. If command-resource cleanup fails, the
service stops instead of admitting another owner. The endpoint directory and
socket are restricted to the Runtime user (0700 and 0600 respectively), and
a pre-existing endpoint is never removed implicitly. 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 make_galaxea_a1_processors() with LeRobot's programmatic APIs, or use the
tracked A1 Runtime workflow. The supplied processor anchors leader deltas to
the A1 startup pose and applies explicit degree conversion, sign, scale, bias,
joint limits, and gripper normalization.
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.3.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.3.0.tar.gz | 28.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lerobot_robot_galaxea_a1-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.0 kB
Release files / lerobot_robot_galaxea_a1-0.3.0.tar.gz
| Download URL | lerobot_robot_galaxea_a1-0.3.0.tar.gz |
|---|---|
| Size | 28.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4317949acd8f74a6701c273c67c644088fca83f0e17d2213bb8faab391bc178d
|
|
BLAKE2b-256 checksum How to use checksums |
4de4605d9b24e2b6a38ee33e78a8e9c61bfce6b6cd155aa00b409e574f99c231
|
| 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.3.0-py3-none-any.whl
| Download URL | lerobot_robot_galaxea_a1-0.3.0-py3-none-any.whl |
|---|---|
| Size | 29.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5dd30ec2d0c67081decb3808b4f3d37b0d4655677eede4df62cf873994fc1642
|
|
BLAKE2b-256 checksum How to use checksums |
1fbc88d336fbd57f11b4980ad77e6642eea0b96f5c189f9ec07a0cdacb14b51d
|
| 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}
|