phoxal_model/lib.rs
1//! Canonical immutable runtime robot model.
2//!
3//! The model is constructed by source/build tooling or decoded from the
4//! validated runtime bundle; its wire shape is owned by `phoxal-bundle`.
5//!
6//! # Paths
7//!
8//! Concepts live in the module that owns them: [`asset`], [`builder`],
9//! [`component`], [`identity`], [`robot`], [`simulation`], [`structure`].
10//!
11//! The crate root is a deliberate facade over the handful of names a consumer
12//! meets first, so that loading, reading or composing a robot does not require
13//! learning the module layout. Those names - and the error vocabulary, whose
14//! module is private precisely so the root is its only path - are the canonical
15//! ones; write `phoxal_model::Robot`, not `phoxal_model::robot::Robot`.
16//! Everything else is named through its owning module.
17//!
18//! Modules inside this crate import from the owning module, never through this
19//! facade.
20
21mod error;
22
23pub mod asset;
24pub mod builder;
25pub mod component;
26pub mod footprint;
27pub mod identity;
28pub mod robot;
29pub mod simulation;
30pub mod structure;
31
32#[doc(hidden)]
33pub mod compiler;
34
35pub use asset::AssetId;
36pub use builder::RobotBuilder;
37pub use component::capability::CapabilityRole;
38pub use error::{
39 IdentifierKind, JointOwner, KinematicScalarField, LinkRole, ModelError, MotionLimitField,
40 PoseOwner, StructureError,
41};
42pub use footprint::FootprintEnvelope;
43pub use robot::{Clock, Robot};