Embodied AI for OpenAMRobot: episode capture, dataset QA, imitation-learning baselines, evaluation and policy runtime.
This repository holds the embodied AI work for OpenAMRobot:
- Episode capture: a ROS 2 recorder. It is a skeleton today and records nothing until the C9 capture topic contract is approved.
- Dataset QA (C10): validation of dataset release entries in
datasets/registry.yaml. - Imitation-learning baseline ACT (C11): planned.
- Evaluation (C14): offline and simulation evaluation, planned.
- Policy runtime: a ROS 2 lifecycle node that runs a policy and publishes base commands. It is a skeleton today.
Current maturity level: Experimental.
Team: Embodied AI and Data (Division B).
| Area | Owner | Reviewer |
|---|---|---|
| Repository lead and code owner | Satya Srinivas Anandh (@SatyaA27) | Mohamed Sayed (@panthera-momagdii) |
| C10 dataset QA | Satya Srinivas Anandh | Mohamed Sayed |
| C11 ACT baseline | Marcus Andrei Guinto (@4u-79) | Mohamed Sayed |
| C14 evaluation | owner: to be assigned by Alex | Mohamed Sayed |
Code owners are the lead and Mohamed, so a pull request by the lead can still be approved. One approval from either is enough.
| Path | Content |
|---|---|
ros2/openamrobot_ai_recorder |
Recorder skeleton (ament_python). Validates its configuration, logs the interfaces commit and C9 schema reference, writes no data. |
ros2/openamrobot_policy_runner |
Policy runner lifecycle node skeleton (ament_python). |
python/oa_embodied_ai/dataset_qa |
C10 dataset QA and the oa-dataset-qa command. |
python/oa_embodied_ai/conversion |
README only: capture to LeRobotDataset export, planned. |
python/oa_embodied_ai/training |
README only: C11 ACT baseline, planned. |
python/oa_embodied_ai/evaluation |
README only: C14 evaluation, planned. |
schemas/dataset_registry.schema.json |
Schema for one dataset release entry. |
datasets/registry.yaml |
Dataset release registry. |
tests |
Tests for the ROS 2 nodes. |
docs/interfaces.md |
What this repository consumes and which interfaces are pending. |
This repository never contains:
- Message or schema definitions, including C9. These live in
openamrobot-interfaces. - URDF or frames. These live in
openamr-platform-swandopenamr-upperbody-sw. - Safety logic, stop interfaces or motor control. These live in the platform repositories.
- Command arbitration. This is
twist_muxinopenamr-platform-sw. - BOM values.
- Copies of project documents.
- Recorded data or model weights.
Datasets and model weights live outside Git. Git holds only registry entries in datasets/registry.yaml, each with the commits used during capture and the sha256 of the release. .gitignore excludes dataset data, rosbags, *.mcap, *.pt, *.safetensors and outputs/.
The policy runner:
- publishes only through approved command inputs: a
geometry_msgs/Twiston the topic set bycmd_vel_topic, intended as atwist_muxinput. The topic has no default, so it never points at the motor driver by default. Arm output is not implemented andarm_output_enabled=trueis refused. - refuses motion activation without the approved software stop interface. Its topic, type and asserted field are parameters with no default; when they are unset, the topic has no publisher, or no stop status has been received yet, activation fails.
- stops on stale observations (
observation_timeout_s, default 0.2), inference failure or software stop, by publishing a zero Twist and deactivating. - never downloads model weights at runtime.
| Interface | Owner repository | Status |
|---|---|---|
| C9 capture topics | openamrobot-interfaces |
Proposed schema only; capture topics not approved. The recorder writes no data until approval. |
| Software stop | openamr-platform-sw (PR #35) |
Being defined. The runner refuses motion activation until it is configured. |
| Arm command arbitration | openamrobot-manipulation |
Not defined. The runner has no arm output. |
Details are in docs/interfaces.md.
| Concern | Repository |
|---|---|
| Messages, services, actions, schemas, C9 contract | openamrobot-interfaces |
AMR ROS 2 software: navigation, control, drivers, URDF and frames, twist_mux, software stop |
openamr-platform-sw |
| AMR firmware: motor and sensor bridges, safety I/O | openamr-platform-fw |
| AMR mechanical, electrical, CAD, BOM | openamr-platform-hw |
| Arm and lift software, MoveIt, upper body URDF and frames | openamr-upperbody-sw |
| End effector firmware, upper body safety I/O | openamr-upperbody-fw |
| Lift, plates, wiring, upper body BOM | openamr-upperbody-hw |
| Arm framework and arm command arbitration | openamrobot-manipulation |
| Project documentation | openamrobot-docs |
| Organization policies, contribution rules, CI templates | .github |
| Episode capture, dataset QA, ACT baseline, evaluation, policy runtime | openamrobot-embodied-ai (this repository) |
ROS 2 Jazzy packages, built together with openamrobot-interfaces pinned to the commit used in CI:
source /opt/ros/jazzy/setup.bash
colcon build --base-paths ros2 external/openamrobot-interfaces/ros2
source install/setup.bash
colcon test --base-paths ros2 external/openamrobot-interfaces/ros2 \
--packages-select openamrobot_ai_recorder openamrobot_policy_runner
colcon test-result --verbose
python3 -m pytest testsPython tooling:
pip install -e "python[test]"
pytest python/tests
oa-dataset-qa datasets/registry.yamlSee CONTRIBUTING.md. Every commit must be signed off under the DCO (git commit -s).
MIT. See LICENSE.