roboonto
A toolchain that turns robot vendor materials (URDF, SDK, manuals) into a queryable, agent-ready ontology — and ships first-party ontologies for specific robots.
Docs: Quickstart · Specification · MCP integration · Agent-Readiness Levels · Capability layer · Data sources
vendor materials ──► [ roboonto importers ] ──► YAML ontology ──► [ api ] ──► your agent / runtime
▲ ▲
│ │
log/mcap ──► [ ingestor ] ──► [ diagnostics ]
What you get
- A tool (this repo): importers, an ontology API, a log ingestor, and reference diagnostics.
- Packs (under
robots/): per-robot ontologies. AgiBot X2 ships v0.3.0.
Status
| Version | v0.3.0 capability layer |
| Robots covered | AgiBot X2 · Unitree G1 EDU · HalfCheetah (sim) |
| Pack grades | X2 customer-ready 100/100 · G1 customer-ready 100/100 (ARL-3) |
| X2 pack contents | 256 objects · 22 actions · 403 links · 11 capabilities |
| X2 3D atlas | robots/agibot_x2/roboonto_pack_3d.html |
| Tests | 107 |
| Python | 3.10+ |
Install
git clone https://github.com/zengury/roboonto
cd roboonto
pip install -e .
Optional, for log ingestion:
pip install pyyaml mcap mcap-ros2-support
Use
Query an ontology
from roboonto.api.loader import OntologyLoader
from roboonto.api.query import Query
ontology = OntologyLoader("robots/agibot_x2").load()
q = Query(ontology)
# What joints are in the left arm?
for j in q.objects_of_type("Joint"):
if j["id"].startswith("agibot_x2.kin.joint.left_arm"):
print(j["id"], j["properties"]["effort_limit"])
# What actions are allowed in LOCOMOTION_DEFAULT?
for a in q.actions_allowed_in_mode("LOCOMOTION_DEFAULT"):
print(a["type_id"], a.get("safety_class"))
# What can the robot do, and how should an agent call it?
for affordance in q.agent_affordance_menu(capability_kind="navigation"):
print(affordance["name"], [a["id"] for a in affordance["actions"]])
Capability-first agent queries
python3 -m roboonto.cli query robots/agibot_x2 agent-affordances navigation
python3 -m roboonto.cli query robots/agibot_x2 service-fit agibot_x2.req.safe_base_motion
python3 -m roboonto.cli infer-capabilities robots/agibot_x2 --yaml
The capability layer separates what the robot can do from how to call it:
SoftwareComponent / Sensor
-> provides_capability -> Capability
-> exposed_via -> Topic / Service / Action
-> satisfies_requirement -> ServiceRequirement
Standards alignment
RoboOnto keeps its engineering YAML format, but the v0.3 capability layer includes explicit mappings to robotics ontology standards:
- IEEE 1872.2 / AuR: anchors robot autonomy concepts such as autonomous capability, task, autonomous system, and environment.
- IEEE 1872.1 / CORA: anchors core robotics terms for robot, actuator, sensor, and related physical entities.
- RoSO: anchors service-oriented concepts such as component, function, sensing, actuation, and parameters.
These mappings live in each pack's standard_mappings.yaml and in object-level standard_mappings fields where useful. They are used as vocabulary anchors for agents and tools, while RoboOnto remains the operational schema for loading, querying, validation, CLI, MCP, and 3D visualization.
3D ontology atlas
Open robots/agibot_x2/roboonto_pack_3d.html in a browser to inspect the X2 ontology interactively. The atlas version is synced with the package version (v0.3.0) and supports:
Graphmode for the whole relation network.Layeredmode for hardware / compute / interface / action / capability / requirement paths.- Node search, node explanations, incoming/outgoing relation inspection, and one-hop navigation.
Validate an action call
from roboonto.api.action_validator import ActionValidator
v = ActionValidator(ontology)
report = v.check(
"set_forward_velocity",
params={"forward_velocity": 0.05, "source": "test"},
state={"mc_action": "LOCOMOTION_DEFAULT", "is_moving": False,
"registered_input_sources": ["test"]},
)
# report.failures explains why precondition fails
Ingest a session log
python3 -m roboonto.tools.log_ingestor \
/path/to/session_dir \
--robot agibot_x2 \
--output ./output \
-v
Reads bag/, info/, log/ subdirs. Handles .mcap, .atop, .log, .yaml, .json. Produces session.summary.json + coverage.report.md + stats.json.
Layout
roboonto/
├── roboonto/ tool code
│ ├── core/ meta-schema (defines what an ontology is)
│ ├── api/ loader · query · action validator
│ ├── importers/ URDF · SDK docs · ...
│ └── tools/ log ingestor + readers (mcap, atop)
├── robots/ ontology packs
│ └── agibot_x2/ hardware · kinematics · capabilities · interfaces · behaviors · events · actions · derived_links
├── skills/ operational knowledge (universal · humanoid · instance)
├── docs/ spec · quickstart · MCP · ARL · quality methodology
├── examples/ quickstart scripts
└── tests/
Design
The repo separates two things deliberately:
- archive (under
robots/): YAML files describing what a robot is. Per-robot. Versioned independently. - engine (under
roboonto/): Python code that loads, queries, validates, ingests. Robot-agnostic.
Source provenance is mandatory. Every ontology object carries a source field: document (with locator), urdf_import, log_observation (with confidence + diff_status), or aimrt_introspect. Mixed-source claims are explicit, not hidden.
For a deeper dive: docs/SPEC.md, docs/ONTOLOGY_QUALITY_METHODOLOGY.md.
Roadmap
- v0.4 — ACL (Agent Compliance Level) conformance harness · sim readiness profile · diagnostics engine MVP
- v0.5 — pack registry · third robot pack
- v1.0 — web dashboard · CLI completeness
License
Code and schema: Apache-2.0. Robot packs contain factual specifications extracted from publicly available vendor materials — see SOURCES.md for per-pack provenance and the correction policy.
Metadata
Release files for roboonto 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 | |
|---|---|---|---|
| roboonto-0.3.0.tar.gz | 89.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| roboonto-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 177.3 kB
Release files / roboonto-0.3.0.tar.gz
| Download URL | roboonto-0.3.0.tar.gz |
|---|---|
| Size | 89.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
87c0d6dc8317127772e643dc4918d534010bd29a491c271efeeaf3b85672e00e
|
|
BLAKE2b-256 checksum How to use checksums |
128a1b2da8f1f6c2b3a3e82ac2404a26c714b7ba58400680f9f6b4ca9d4cd5c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / roboonto-0.3.0-py3-none-any.whl
| Download URL | roboonto-0.3.0-py3-none-any.whl |
|---|---|
| Size | 87.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3b6d2bdf5169d1a3fecdc5efa1ab136e0dbff29d2803125facbc6ced2a44bb4d
|
|
BLAKE2b-256 checksum How to use checksums |
1cdf1daf8c2310b034473a9cdb2568926810d0ee8c5287b457de5035e5a4be16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|