#drone #parrot #control-api #ar-drone

parrot_ar_drone

这是一个控制Parrot AR Drone 2.0的Rust API

4个版本

0.1.3 2020年3月24日
0.1.2 2020年3月24日
0.1.1 2020年2月23日
0.1.0 2020年2月10日

2 / #parrot

GPL-3.0或更高版本

46KB
883 代码行

parrot_ar_drone

简介

这是一个控制Parrot AR Drone 2.0的Rust API。它基于ps_drone(Python API),如果该API的作者需要的话可能会被下架(希望不要)。

Cargo

parrot_ar_drone = "0.1.0"

示例代码

    use parrot_ar_drone::*;
    use navdata::NavDataValue;
    use std::{time, thread};

    fn main() {
        let mut drone = get_drone();
        
        let test_result = drone.startup();
        match test_result {
            Ok(()) => {
                println!("Drone connection successful.");
                thread::sleep(time::Duration::from_secs(3)); // It is advised to wait a bit for the connections to establish.
                drone.trim();
                let mut i = 0;
                drone.takeoff();
                loop {
                    thread::sleep(time::Duration::from_secs(1));
                    match drone.get_navdata("demo_battery") {
                        Some(NavDataValue::Uint(a)) => { println!("Battery: {}%", a); }
                        _ => { println!("Battery status unknown!"); }
                    }
                    match drone.get_navdata("header_seq_num") {
                        Some(NavDataValue::Uint(a)) => { println!("Seq num: {}", a); }
                        _ => { println!("Seq num unknown!"); }
                    }

                    match drone.get_navdata("demo_altitude") {
                        Some(NavDataValue::Int(a)) => { println!("Alt: {}", a); }
                        _ => { println!("Altitude unknown!"); }
                    }
                    i += 1;
                    if i == 10 {
                        break;
                    }
                }
                drone.land();
                drone.shutdown();
            }
            _ => {}
        }
    }

依赖项

~1.5MB
~20K SLoC