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
//! # symbios-robot
//!
//! Engine-agnostic robot interpretation layer for [Symbios](https://crates.io/crates/symbios) L-Systems.
//!
//! This crate translates an L-System symbol sequence into a [`blueprint::RobotBlueprint`] —
//! a complete description of a robot's topology (rigid bodies, joints, sensors) that decouples
//! the *Genotype* (L-System string) from the *Phenotype* (physics simulation).
//!
//! ## Quick start
//!
//! ```rust,ignore
//! use symbios::{SymbiosState, SymbolTable};
//! use symbios_robot::{RobotConfig, RobotInterpreter};
//!
//! let mut interner = SymbolTable::new();
//! interner.intern("B").unwrap();
//!
//! let mut interpreter = RobotInterpreter::new(RobotConfig::default());
//! interpreter.populate_standard_symbols(&interner);
//!
//! let mut state = SymbiosState::new();
//! let b_id = interner.resolve_id("B").unwrap();
//! state.push(b_id, 0.0, &[1.0, 0.1, 0.1]).unwrap();
//!
//! let blueprint = interpreter.build_blueprint(&state);
//! assert_eq!(blueprint.modules.len(), 1);
//! ```
//!
//! ## Modules
//!
//! - [`blueprint`] — Engine-agnostic data: [`blueprint::RobotBlueprint`],
//! [`blueprint::RobotModule`], [`blueprint::ShapePrimitive`],
//! [`blueprint::JointDefinition`], [`blueprint::JointType`] /
//! [`blueprint::JointTypeKind`], [`blueprint::AxisLimit`],
//! [`blueprint::EndEffector`] (addressed by [`blueprint::EndEffectorId`]),
//! [`blueprint::SensorMount`] / [`blueprint::SensorType`], and the
//! [`blueprint::ModuleId`] / [`blueprint::MaterialId`] aliases.
//! - [`interpreter`] — [`interpreter::RobotInterpreter`] (with
//! [`interpreter::RobotInterpreter::set_op`],
//! [`interpreter::RobotInterpreter::with_map`], and
//! [`interpreter::RobotInterpreter::populate_standard_symbols`]) plus
//! [`interpreter::RobotConfig`].
//! - [`turtle`] — [`turtle::RobotTurtleState`], [`turtle::RobotOp`], and
//! [`turtle::ActiveJointConfig`] (the per-step state the interpreter
//! threads through the symbol stream).
//!
//! All public items in these modules are re-exported at the crate root.
pub use *;
pub use *;
pub use *;