2个版本

0.3.2 2023年1月22日
0.3.1 2023年1月22日

#71 in 机器人

MIT 许可证

560KB
2K SLoC

Rust Airsim

Microsoft Airsim的Rust客户端库

欢迎贡献!

Build Status airsim-client crate minimum rustc 1.56 Docs Maintenance GitHub pull-requests GitHub pull-requests closed ViewCount License: MIT

如何使用

更多内容请参阅示例文件夹!

例如,使用此settings.json配置Airsim中的多旋翼

一旦Airsim启动并运行(以下是一些运行示例),执行以下代码片段

use airsim_client::{DrivetrainType, MultiRotorClient, NetworkResult, Path, Vector3, YawMode};
use async_std::task;

async fn connect_drone() -> NetworkResult<()> {
    let address = "<Airsim IP here>:41451"; // set with env variable
    let vehicle_name = ""; // use default vehicle name
    log::info!("Start!");

    // connect
    log::info!("connect");
    let client = MultiRotorClient::connect(address, vehicle_name).await?;

    // confirm connect
    log::info!("confirm connection");
    let res = client.confirm_connection().await?;
    log::info!("Response: {:?}", res);

    // arm drone
    log::info!("arm drone");
    client.arm_disarm(true).await?;
    log::info!("Response: {:?}", res);

    // take off
    log::info!("take off drone");
    client.take_off_async(20.0).await?;
    log::info!("take off completed");

    log::info!("move on path");
    client
        .move_on_path_async(
            Path(vec![
                Vector3::new(-25.0, 0.0, -20.0),
                Vector3::new(-50.0, 50.0, -20.0),
                Vector3::new(-50.0, -50.0, -25.0),
            ]),
            5.0,
            1000.0,
            DrivetrainType::MaxDegreeOfFreedom,
            YawMode::new(false, 90.0),
            None,
            None,
        )
        .await?;
    log::info!("done!");

    log::info!("go home");
    client.go_home_async(20.0).await?;
    log::info!("got home");

    log::info!("land drone");
    let landed = client.land_async(20.0).await?;
    log::info!("drone landed: {landed}");

    log::info("Disarm drone")
    client.arm_disarm(false).await?;
    client.enable_api_control(false).await?;
    Ok(())
}

fn main() -> NetworkResult<()> {
    env_logger::init();
    task::block_on(connect_drone())
}

构建项目所需的前提条件

$ sudo apt install build-ess    ential

使用Docker运行

首先安装 docker-nvidia

然后

$ make airsim-up

WSL2(客户端)和Windows 11服务器

https://docs.microsoft.com/en-us/windows/wsl/networking

在目录 Blocks\Blocks\WindowsNoEditor 中打开Windows PowerShell,并输入

./Blocks.exe -ResX=640 -ResY=480 -windowed

依赖项

~9–23MB
~287K SLoC