1#![doc = include_str!("../README.md")]
2#![warn(missing_docs)]
3
4pub mod barrier;
5pub mod cbba;
6pub mod config;
7pub mod controller;
8pub mod flocking;
9pub mod formation;
10pub mod geo;
11pub mod neighbor;
12pub mod precedence;
13pub mod scenarios;
14pub mod separation;
15pub mod setpoint;
16pub mod sim;
17pub mod status;
18
19pub use barrier::{BarrierOutcome, BARRIER_GAIN_HZ};
20pub use cbba::{
21 conflicts, consensus_reached, converge_broadcast, BidVector, CbbaAgent, CbbaTask,
22 ConvergenceReport, TaskAssignment,
23};
24pub use config::SwarmControlConfig;
25pub use controller::{
26 ControlOutcome, NeighborFix, OperatorDirective, OwnState, Suppression, SwarmControlCounters,
27 SwarmController, SwarmMode, CONTROL_HZ, CONTROL_PERIOD, OPERATOR_DIRECTIVE_TTL,
28};
29pub use flocking::{FlockTerms, FlockTuning};
30pub use formation::{Formation, FormationAnchor, FormationName};
31pub use geo::{GeoOrigin, Ned};
32pub use neighbor::{NearestSet, NeighborState};
33pub use precedence::{arbitrate, precedence_rank, ModePrecedence};
34pub use separation::{HardBreach, SeparationTuning};
35pub use setpoint::{Setpoint, SetpointKind, MAX_COMMAND_SPEED_MPS};
36pub use status::{
37 STATUS_ARMED, STATUS_EMERGENCY, STATUS_GPS_OK, STATUS_GUIDED, STATUS_HERO,
38 STATUS_PRECEDENCE_MASK, STATUS_PRECEDENCE_SHIFT,
39};
40
41pub const NEIGHBOR_STALE: std::time::Duration = std::time::Duration::from_secs(3);
51
52pub const OWN_STATE_STALE: std::time::Duration = std::time::Duration::from_secs(1);