这是 AirSim 中最重要的控制 API 之一,用于直接控制无人机的姿态和油门

📊 基本语法

 
client.moveByRollPitchYawThrottleAsync(
    roll,      // 目标横滚角 (弧度)
    pitch,     // 目标俯仰角 (弧度) 
    yaw,       // 目标偏航角 (弧度)
    throttle,  // 油门值 (0.0-1.0)
    duration,  // 持续时间 (秒)
    vehicle_name
)
 
 

🎯 核心概念

1. 姿态角控制 (Roll, Pitch, Yaw)

这三个参数控制无人机的目标姿态,单位是弧度
 
// 角度转弧度公式
float degrees = 30.0f;
float radians = degrees * 3.14159265359f / 180.0f;

// 常见角度对应关系
float roll_30_deg = 0.5236f;   // 30度
float pitch_45_deg = 0.7854f;  // 45度
float yaw_90_deg = 1.5708f;    // 90度
 
 

2. 油门控制 (Throttle)

控制电机功率,决定升力大小:
  • 0.0​ - 最小升力(可能停转)
  • 0.5​ - 悬停油门(需要校准)
  • 1.0​ - 最大升力

🔧 详细参数说明

参数详解表

参数
单位
范围
正方向
负方向
说明
roll
弧度
通常 ±0.8 rad (±45°)
左倾
右倾
控制左右倾斜
pitch
弧度
通常 ±0.8 rad (±45°)
前倾
后倾
控制前后倾斜
yaw
弧度
无限制
左转
右转
控制朝向
throttle
归一化
0.0-1.0
增加升力
减少升力
控制高度
duration
建议 0.1-10.0
-
-
命令持续时间

🎮 实际用法示例

示例1:基本悬停

 
// 水平悬停
client.moveByRollPitchYawThrottleAsync(
    0.0f,     // roll: 不横滚
    0.0f,     // pitch: 不俯仰
    0.0f,     // yaw: 保持当前朝向
    0.55f,    // throttle: 悬停油门
    2.0f,     // duration: 持续2秒
    "PX4"
);
 
 

示例2:前倾飞行

 
// 前倾15度飞行
float pitch_rad = 15.0f * 3.14159f / 180.0f;  // 15度转弧度

client.moveByRollPitchYawThrottleAsync(
    0.0f,         // roll: 水平
    pitch_rad,    // pitch: 前倾15度
    0.0f,         // yaw: 保持方向
    0.65f,        // throttle: 稍高油门补偿前倾
    3.0f,         // 持续3秒
    "PX4"
);
 
 

示例3:左转盘旋

 
// 左倾20度 + 左转
float roll_rad = 20.0f * 3.14159f / 180.0f;   // 左倾20度
float yaw_rad = 45.0f * 3.14159f / 180.0f;    // 左转45度

client.moveByRollPitchYawThrottleAsync(
    roll_rad,     // 左倾
    0.0f,         // 水平
    yaw_rad,      // 左转
    0.7f,         // 高油门补偿倾斜
    4.0f,         // 持续4秒
    "PX4"
);
 
 

🔄 与其他API的对比

API
控制类型
是否控制高度
优点
缺点
moveByRollPitchYawThrottleAsync
姿态角 + 油门
❌ 需手动控制油门
完全控制姿态
需校准油门
moveByRollPitchYawZAsync
姿态角 + 高度
✅ 自动控制高度
高度稳定
响应稍慢
moveByRollPitchYawrateThrottleAsync
角速度 + 油门
❌ 需手动控制油门
动态控制
更复杂
posted on 2026-02-11 17:02  偷懒的阿贤  阅读(8)  评论(0)    收藏  举报