1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//! Canonical immutable runtime robot model.
//!
//! The model is constructed by source/build tooling and decoded from the
//! bundle's `manifest.json`. [`manifest`] owns that document: its schema tag
//! and the envelope around the [`Robot`] body, and it lives here rather than in
//! `phoxal::bundle` so the compiler that writes it and the reader that loads it
//! both reach it through the module that owns the body. `phoxal::bundle` owns
//! where the file sits and how it is read; this module owns no filesystem layout
//! at all, and the authored project documents are `phoxal::authoring`.
//!
//! [`Robot`] is the whole of a compiled robot: its identity and structure, the
//! motion it may make, the `services` it runs with their configuration, the
//! `components` it mounts, and the `component_types` behind them with the
//! simulation folded into each. [`Robot::component`](robot::Robot::component)
//! joins an instance with its type and simulation, so no consumer joins those
//! maps by hand.
//!
//! # Paths
//!
//! Concepts live in the module that owns them: [`asset`], [`builder`],
//! [`component`], [`connection`], [`identity`], [`manifest`], [`robot`],
//! [`simulation`], [`structure`].
//!
//! This module's root is a deliberate facade over the handful of names a consumer
//! meets first, so that loading, reading or composing a robot does not require
//! learning the module layout. Those names - and the error vocabulary, whose
//! module is private precisely so the root is its only path - are the canonical
//! ones; write `phoxal::model::Robot`, not `phoxal::model::robot::Robot`.
//! Everything else is named through its owning module.
//!
//! Code inside the framework imports from the owning module, never through this
//! facade.
pub use AssetId;
pub use RobotBuilder;
pub use CapabilityRole;
pub use ;
pub use FootprintEnvelope;
pub use ManifestDocument;
pub use Robot;