#programming #plane #traits #flying #drone-uav-quad #copter

ufo_rs

为Rust开发的无人机/UAV/四旋翼飞行器编程库

2个版本

0.1.1 2019年4月4日
0.1.0 2019年4月3日

#20 in #plane

MIT许可证

20KB
278

🚀 👾 U.F.O: 通用飞行物

Drone/UAV/Quadcopter/RC Plane是针对Rust的编程库。

注意:这仍然是一个WIP(工作进行中),特性和结构体已经存在,但示例和文档尚缺……谨慎行事。

目标

  1. 构建一个可扩展的模块化库,可以支持无限数量的无人机。
  2. 处理尽可能多的模板代码。(事情可以顺利进行)
  3. 无人机与控制器之间低延迟

非目标

  • 实现用于控制无人机的用户界面 (注意:我可能在以后决定构建一个UI,但它将在自己的存储库中)
  • 支持其他类型的机器人/遥控器,目前这个存储库是为遥控无人机和平面设计的。这可能会在未来改变,但现在不会。

安装和使用

将其添加到您的 Cargo.toml

[dependencies]
ufo_rs = "*"

并在 src/main.rs 中放入类似的内容

/// Import std stuff
use std::error::Error;
use std::time::Duration;
use std::thread;

// Import traits
use ufo_rs::traits::control::*;
use ufo_rs::traits::drone::*;

// Import controller
use ufo_rs::drones::jjrc::h61;

fn main() -> Result<(), Box<dyn Error>> {
    let delay = Duration::from_millis(2000);

    // Create a new drone driver
    let mut driver = h61::Driver::new();

    // Connect to drone
    driver.connect()?;

    // Calibrate drone 

    println!("Calibrating...");

    driver.calibrate()?;

    println!("Sent!");

    // Wait 2 seconds
    thread::sleep(delay);
    
    // Take off
    println!("Taking off...");

    driver.take_off()?;

    println!("Sent!");

    // Wait again for 1 second
    thread::sleep(Duration::from_millis(1000));

    // Land
    println!("Landing...");

    driver.land()?;
    
    println!("Sent!");


    // Ta-dah!
    Ok(())
}

有关更多信息,请参阅 examples/ 目录。

帮助

如果您想帮助U.F.O,我们可以在两个领域提供支持

  1. 编写单元测试,我想确保U.F.O.是编程无人机的一种安全稳定的方法。如果我们能找到容易出错的区域,我们就可以快速构建一个更稳定的库。
  2. 添加更多无人机的支持。如果您想帮助此或查看示例,请查看src/drones/jjrc/h61.rs

灵感

灵感来源于

  • Gobot:针对Go的真正酷的机器人库
  • 缺少针对Rust的无人机库
  • 用代码编写飞行物很有趣 😄!

依赖项

~24KB