mecha10-behavior-patterns 0.1.23

Common behavior patterns for Mecha10 - subsumption, ensemble, and more
Documentation
//! Mecha10 Behavior Patterns
//!
//! This crate provides common behavior patterns as reusable `BehaviorNode` implementations.
//! These patterns solve common robotics problems like priority-based control and multi-model fusion.
//!
//! # Available Patterns
//!
//! - **Subsumption**: Priority-based layered control for safety-critical systems
//! - **Ensemble**: Multi-model fusion with various voting strategies
//!
//! # Example
//!
//! ```rust
//! use mecha10_behavior_patterns::prelude::*;
//! use mecha10_behavior_runtime::prelude::*;
//!
//! # #[derive(Debug)]
//! # struct SafetyBehavior;
//! # #[async_trait]
//! # impl BehaviorNode for SafetyBehavior {
//! #     async fn tick(&mut self, _ctx: &Context) -> anyhow::Result<NodeStatus> {
//! #         Ok(NodeStatus::Success)
//! #     }
//! # }
//! # #[derive(Debug)]
//! # struct TaskBehavior;
//! # #[async_trait]
//! # impl BehaviorNode for TaskBehavior {
//! #     async fn tick(&mut self, _ctx: &Context) -> anyhow::Result<NodeStatus> {
//! #         Ok(NodeStatus::Success)
//! #     }
//! # }
//!
//! // Subsumption: Safety overrides task behavior
//! let subsumption = SubsumptionNode::new()
//!     .add_layer(10, Box::new(SafetyBehavior))  // High priority
//!     .add_layer(1, Box::new(TaskBehavior));    // Low priority
//! ```

mod ensemble;
mod subsumption;

// Re-export pattern nodes
pub use ensemble::{EnsembleNode, EnsembleStrategy, WeightedModel};
pub use subsumption::{SubsumptionLayer, SubsumptionNode};

/// Prelude module for convenient imports
pub mod prelude {
    pub use crate::ensemble::{EnsembleNode, EnsembleStrategy, WeightedModel};
    pub use crate::subsumption::{SubsumptionLayer, SubsumptionNode};
    pub use mecha10_behavior_runtime::prelude::*;
}