旋翼飞行器定位控制和导航¶
本页介绍了 Copter 的基本知识。 位置控制 和 航点导航 图书馆
作为参考,下图提供了 Copter RTL 模式的高层代码流视图
类的层次结构和描述¶
在最高级别上,AC_WPNav、AC_Circle 和 AC_Loiter 库是同级库,它们都使用 AC_PosControl 库。
AC_WPNav 由三个独立的控制器组成(这些控制器将来可能会分离成单独的库):
航点试图让飞行器直线飞向目标航点。该界面接受以纬度、经度和高度指定的三维目标目的地,或从 EKF 原点出发的偏移量。
Spline 可使飞行器以平滑的曲线路径飞向三维目标航点,其最终速度可使飞行器平稳地飞向下一个航点。其界面与上述航点控制器非常相似
制动器试图使载具尽快减速停下
航点控制器、花键控制器和制动控制器不直接使用 PID。相反,它们会更新目标位置或速度,然后将其传递给位置控制器
AC_PosControl:
用于水平(X 和 Y 轴)控制和垂直(Z 轴)控制的独立接口。这些接口之所以分开,是因为某些飞行模式(如 AltHold 模式)只需要 Z 轴控制器
使用分层 PID 控制器
XY 轴使用位置 PID 将位置误差转换为目标速度。速度 PID 将速度误差转换为所需的加速度,再将加速度转换为所需的倾斜角,然后将其送入姿态控制库。
Z 轴使用位置 P 控制器将位置误差转换为目标垂直速度(又称爬升率)。速度 PID 控制器将速度误差转换为所需的加速度。加速度 PID 可将加速度误差转换为所需的节流阀,然后将其发送到姿态控制库(该库大多只是将其传递给低级电机库)。
AC_PosControl 还包括一个三维速度控制器和一个三维位置+速度控制器
我应该使用 PosControl 还是 WPNav?¶
由于 AC_PosControl 和 AC_WPNav 都允许调用者将载具移动到三维目标点,因此可能不清楚应该使用哪个。
一般来说,飞行器代码(即飞行模式代码)应使用 AC_WPNav 库,因为它将确保飞行器以直线路径飞向目标。AC_PosControl 通常只能由其他更高级别的导航库使用。这一规则的例外情况是只需要 Z 轴控制的简单飞行模式--这些模式可直接使用 AC_PosControl。