mecha10-cli-core 4.2.10

Mecha10 CLI core foundation — shared types, services, and utilities
Documentation
//! Behavior component definitions
//!
//! Catalog of available behavior tree components.

use super::{CargoDependency, Component, ComponentCatalog, ComponentType, Mecha10Config};

/// Add all behavior components to the catalog
pub fn add_behaviors(catalog: &mut ComponentCatalog) {
    catalog.insert(Component {
        id: "patrol".to_string(),
        name: "Patrol".to_string(),
        description: "Patrols indefinitely - a repeating square path on a locomotion platform, or a repeating \
                       pan sweep on a joints-only platform - chosen automatically via the project's actual \
                       controller mode. A higher-priority instance-track interrupt layer lets an operator \
                       click/drag a target on the live camera feed to take over at any time."
            .to_string(),
        component_type: ComponentType::Behavior,
        version: "0.1.0".to_string(),
        category: "navigation".to_string(),
        tags: vec!["patrol".to_string(), "waypoints".to_string(), "autonomous".to_string()],
        cargo_dependencies: vec![CargoDependency {
            name: "mecha10-behavior-runtime".to_string(),
            version: None,
            path: Some("../../packages/behavior-runtime".to_string()),
            features: vec![],
            optional: false,
        }],
        files: vec![],
        mecha10_config: Mecha10Config {
            driver: None,
            custom_node: None,
            behavior: Some("patrol".to_string()),
        },
    });

    catalog.insert(Component {
        id: "find_target".to_string(),
        name: "Find Target".to_string(),
        description: "Hands control to the rl node until it reports the find_target task complete, while relaying live target-class overrides from the dashboard (/rl/control) - a higher-priority instance-track interrupt layer lets an operator click/drag a target on the live camera feed to take over at any time, and the whole tree works unmodified on any platform (wheeled/flying locomotion or joints-only pan-tilt) since the underlying nodes dispatch on the project's own ControllerMode".to_string(),
        component_type: ComponentType::Behavior,
        version: "0.1.0".to_string(),
        category: "autonomous".to_string(),
        tags: vec![
            "rl".to_string(),
            "find_target".to_string(),
            "vision".to_string(),
            "autonomous".to_string(),
        ],
        cargo_dependencies: vec![CargoDependency {
            name: "mecha10-behavior-runtime".to_string(),
            version: None,
            path: Some("../../packages/behavior-runtime".to_string()),
            features: vec![],
            optional: false,
        }],
        files: vec![],
        mecha10_config: Mecha10Config {
            driver: None,
            custom_node: None,
            behavior: Some("find_target".to_string()),
        },
    });
}