Skip to content

Code Examples

Complete, runnable examples demonstrating key features of the drone swarm system.

Quick Start Examples

Simple Swarm (5 minutes)

The most basic example showing system initialization and formation control.

use drone_swarm_system::{
    types::{DroneId, Position},
    control::swarm::{SwarmController, Formation},
};

fn main() {
    // Initialize drone with ID
    let drone_id = DroneId::new(1);

    // Create swarm controller
    let position = Position { x: 0.0, y: 0.0, z: 10.0 };
    let mut swarm = SwarmController::new(drone_id, position);

    // Set formation
    swarm.set_formation(Formation::Circle { radius: 50 });

    // Compute formation position
    let target = swarm.compute_formation_position();
    println!("Target position: ({:.2}, {:.2}, {:.2})",
             target.x, target.y, target.z);
}

Run it: cargo run --example simple_swarm


Encrypted Communication (10 minutes)

Demonstrates military-grade encryption and digital signatures.

use drone_swarm_system::safety::crypto::CryptoContext;

fn main() {
    // Initialize crypto context
    let seed = [42u8; 32]; // Use hardware RNG in production
    let crypto = CryptoContext::new(seed);

    // Encrypt a message
    let message = b"Drone 1 reporting: Target located at (100, 200, 50)";
    let nonce = [0u8; 12];

    let encrypted = crypto.encrypt(message, &nonce);
    println!("Encrypted {} bytes -> {} bytes", message.len(), encrypted.len());

    // Decrypt
    let decrypted = crypto.decrypt(&encrypted, &nonce).unwrap();
    assert_eq!(message, &decrypted[..]);
    println!("Decryption successful!");
}

Run it: cargo run --example encrypted_comms


Path Planning Examples

PSO Path Optimization

Multi-waypoint path planning using Particle Swarm Optimization.

use drone_swarm_system::algorithms::pso::basic::*;

fn main() -> Result<()> {
    let start = Position { x: 0.0, y: 0.0, z: 10.0 };
    let goal = Position { x: 100.0, y: 100.0, z: 10.0 };

    // Create path optimizer with 5 waypoints
    let mut optimizer = DronePathOptimizer::new(start, goal, 5)?;

    // Add obstacles
    optimizer.add_obstacle(
        Position { x: 50.0, y: 50.0, z: 10.0 },
        20.0 // radius
    )?;

    // Optimize path (100 iterations)
    let path = optimizer.optimize(100)?;

    println!("Optimized path with {} waypoints:", path.len());
    for (i, pos) in path.iter().enumerate() {
        println!("  {}: ({:.2}, {:.2}, {:.2})", i, pos.x, pos.y, pos.z);
    }

    Ok(())
}

Run it: cargo run --example pso_optimization


ACO 3D Path Planning

Advanced 3D path planning with obstacle avoidance using Ant Colony Optimization.

use drone_swarm_system::aco::*;

fn main() {
    let start = Position { x: 0.0, y: 0.0, z: 10.0 };
    let goal = Position { x: 200.0, y: 200.0, z: 50.0 };

    let config = ACOConfig {
        num_ants: 50,
        max_iterations: 100,
        alpha: 1.0,      // Pheromone importance
        beta: 2.0,       // Heuristic importance
        evaporation: 0.1,
        q: 100.0,        // Pheromone deposit amount
        variant: ACOVariant::MaxMinAntSystem,
    };

    let mut optimizer = ACOPathPlanner::new(start, goal, config)
        .expect("Failed to create optimizer");

    // Add 3D obstacles
    optimizer.add_obstacle(
        Position { x: 100.0, y: 100.0, z: 30.0 },
        30.0
    ).unwrap();

    let result = optimizer.optimize().expect("Optimization failed");

    println!("Path found: {}", result.is_valid);
    println!("Path cost: {:.2}", result.cost);
    println!("Waypoints: {}", result.waypoints.len());
}

Run it: cargo run --example aco_path_planning


Swarm Intelligence Examples

Formation Control

Demonstrates multiple formation types with smooth transitions.

use drone_swarm_system::swarm::*;

fn main() -> Result<()> {
    let drone_id = DroneId::new(1);
    let position = Position { x: 0.0, y: 0.0, z: 10.0 };
    let mut swarm = SwarmController::new(drone_id, position);

    // Test different formations
    let formations = vec![
        ("Circle", Formation::Circle { radius: 50.0 }),
        ("Grid", Formation::Grid { spacing: 20.0, rows: 5, cols: 5 }),
        ("Line", Formation::Line { spacing: 10.0, direction: 0.0 }),
        ("V-Formation", Formation::VFormation { angle: 45.0, spacing: 15.0 }),
    ];

    for (name, formation) in formations {
        swarm.set_formation(formation);
        let target_pos = swarm.get_target_position();
        println!("{} formation target: ({:.2}, {:.2}, {:.2})",
                 name, target_pos.x, target_pos.y, target_pos.z);
    }

    Ok(())
}

GWO Multi-Objective Optimization

Optimize swarm parameters using Grey Wolf Optimizer.

use drone_swarm_system::gwo::*;

fn main() -> Result<()> {
    // Optimize formation parameters (spacing, altitude, speed)
    let config = GWOConfig {
        dimensions: 3,
        num_wolves: 20,
        max_iterations: 100,
        variant: GWOVariant::Hybrid,  // GWO + PSO
        adaptive: true,
    };

    let bounds = Bounds::new(vec![
        (5.0, 50.0),   // spacing: 5-50m
        (10.0, 100.0), // altitude: 10-100m
        (1.0, 20.0),   // speed: 1-20 m/s
    ])?;

    let mut gwo = GreyWolfOptimizer::new(config, bounds)?;

    // Objective: minimize energy while maintaining coverage
    let fitness = |params: &[f32]| -> f32 {
        let spacing = params[0];
        let altitude = params[1];
        let speed = params[2];

        let energy_cost = speed * speed + altitude * 0.1;
        let coverage_penalty = 1000.0 / spacing;

        energy_cost + coverage_penalty
    };

    let result = gwo.optimize(fitness)?;
    println!("Optimal parameters: spacing={:.2}m, altitude={:.2}m, speed={:.2}m/s",
             result.position[0], result.position[1], result.position[2]);

    Ok(())
}

Run it: cargo run --example gwo_swarm_optimization


Network Examples

Mesh Network Discovery

Automatic neighbor discovery and mesh formation.

use drone_swarm_system::network::*;

fn main() -> Result<()> {
    let drone_id = DroneId::new(1);
    let mut network = MeshNetwork::new(drone_id);

    // Simulate receiving Hello messages from neighbors
    for i in 2..=5 {
        let hello_msg = NetworkMessage::Hello {
            sender: DroneId::new(i),
            position: Position {
                x: (i * 50) as f32,
                y: 0.0,
                z: 10.0
            },
            sequence: 1,
        };

        let addr = NetworkAddress::new([192, 168, 1, i as u8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 8080);
        network.process_message(hello_msg, addr)?;
    }

    println!("Discovered {} neighbors", network.neighbor_count());

    Ok(())
}

Federated Learning Examples

Distributed Model Training

Train ML models across the swarm while preserving privacy.

use drone_swarm_system::federated::*;

fn main() -> Result<()> {
    let drone_id = DroneId::new(1);

    // Initialize global model (100 parameters)
    let model = GlobalModel::new(100)?;

    // Create local trainer
    let mut trainer = LocalTrainer::new(drone_id, model.parameters.clone());

    // Training loop
    for epoch in 0..10 {
        // Simulate training on local data
        let loss = trainer.train_step(0.01)?; // learning rate = 0.01

        if epoch % 2 == 0 {
            println!("Epoch {}: Loss = {:.4}", epoch, loss);
        }
    }

    // Get updated parameters to share with swarm
    let updated_params = trainer.get_parameters();
    println!("Model trained! Ready to aggregate with swarm.");

    Ok(())
}

Security Examples

Intrusion Detection

Real-time security monitoring and threat detection.

use drone_swarm_system::security::*;

fn main() -> Result<()> {
    let mut monitor = SecurityMonitor::new();

    let attacker = DroneId::new(666);

    // Simulate repeated authentication failures
    for i in 0..15 {
        match monitor.record_auth_failure(attacker) {
            Ok(_) => println!("Auth failure {}/10", i + 1),
            Err(SwarmError::PermissionDenied) => {
                println!("🚨 INTRUSION DETECTED! Drone {} banned", attacker.as_u64());
                break;
            }
            Err(e) => println!("Error: {:?}", e),
        }
    }

    // Check if banned
    assert!(monitor.is_banned(attacker));

    Ok(())
}

Complete Application Examples

Search and Rescue Coordinator

Full SAR mission with 50 drones, path planning, and target detection.

// See examples/search_rescue_mission.rs for complete implementation
// Features:
// - Grid formation for systematic search
// - ACO path planning with dynamic obstacles
// - Federated learning for target detection
// - Real-time discovery sharing
// - Fault tolerance and recovery

Run it: cargo run --example search_rescue_mission


Agricultural Monitoring System

Autonomous crop monitoring with 20 drones.

// See examples/agriculture_monitor.rs for complete implementation
// Features:
// - Optimized field coverage patterns
// - Collaborative pest detection
// - PSO-based spraying route optimization
// - Energy-efficient task allocation

Run it: cargo run --example agriculture_monitor


Embedded Examples

STM32 Bare-Metal Deployment

#![no_std]
#![no_main]

use drone_swarm_system::*;
use panic_halt as _;

#[entry]
fn main() -> ! {
    // Initialize time source (168 MHz STM32F4)
    init_time_source(168_000_000);

    // Initialize swarm controller
    let drone_id = DroneId::new(1);
    let position = Position { x: 0.0, y: 0.0, z: 10.0 };
    let swarm = SwarmController::new(drone_id, position);

    // Main loop
    loop {
        // Update swarm state
        // Read sensors
        // Send telemetry
        // Receive commands

        delay_ms(50); // 20 Hz control loop
    }
}

Build it: cargo build --example stm32_deployment --target thumbv7em-none-eabihf --release


Testing Examples

All examples include comprehensive tests. Run them with:

# Run all example tests
cargo test --examples

# Run specific example test
cargo test --example simple_swarm

# Run with verbose output
cargo test --example pso_optimization -- --nocapture

Next Steps


Note: All examples are production-ready code that you can adapt for your projects. They demonstrate best practices for memory safety, error handling, and embedded systems design.