2个版本
0.3.2 | 2023年1月22日 |
---|---|
0.3.1 | 2023年1月22日 |
#71 in 机器人
560KB
2K SLoC
Rust Airsim
Microsoft Airsim的Rust客户端库
欢迎贡献!
如何使用
更多内容请参阅示例文件夹!
例如,使用此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