旋翼飞行器定位控制和导航

本页介绍了 Copter 的基本知识。 位置控制航点导航 图书馆

作为参考,下图提供了 Copter RTL 模式的高层代码流视图

../_images/AC_CodeOverview_AutoFlightModes.png

类的层次结构和描述

../_images/copter-navigation-class-hierarchy.png

在最高级别上,AC_WPNav、AC_Circle 和 AC_Loiter 库是同级库,它们都使用 AC_PosControl 库。

  • AC_WPNav 由三个独立的控制器组成(这些控制器将来可能会分离成单独的库):

    • 航点试图让飞行器直线飞向目标航点。该界面接受以纬度、经度和高度指定的三维目标目的地,或从 EKF 原点出发的偏移量。

    • Spline 可使飞行器以平滑的曲线路径飞向三维目标航点,其最终速度可使飞行器平稳地飞向下一个航点。其界面与上述航点控制器非常相似

    • 制动器试图使载具尽快减速停下

    • 航点控制器、花键控制器和制动控制器不直接使用 PID。相反,它们会更新目标位置或速度,然后将其传递给位置控制器

    ../_images/copter-navigation-wpnav-path.png
  • AC_PosControl:

    • 用于水平(X 和 Y 轴)控制和垂直(Z 轴)控制的独立接口。这些接口之所以分开,是因为某些飞行模式(如 AltHold 模式)只需要 Z 轴控制器

    • 使用分层 PID 控制器

      • XY 轴使用位置 PID 将位置误差转换为目标速度。速度 PID 将速度误差转换为所需的加速度,再将加速度转换为所需的倾斜角,然后将其送入姿态控制库。

      ../_images/copter-poscontrol-pid.png
      • Z 轴使用位置 P 控制器将位置误差转换为目标垂直速度(又称爬升率)。速度 PID 控制器将速度误差转换为所需的加速度。加速度 PID 可将加速度误差转换为所需的节流阀,然后将其发送到姿态控制库(该库大多只是将其传递给低级电机库)。

    • AC_PosControl 还包括一个三维速度控制器和一个三维位置+速度控制器

我应该使用 PosControl 还是 WPNav?

由于 AC_PosControl 和 AC_WPNav 都允许调用者将载具移动到三维目标点,因此可能不清楚应该使用哪个。

一般来说,飞行器代码(即飞行模式代码)应使用 AC_WPNav 库,因为它将确保飞行器以直线路径飞向目标。AC_PosControl 通常只能由其他更高级别的导航库使用。这一规则的例外情况是只需要 Z 轴控制的简单飞行模式--这些模式可直接使用 AC_PosControl。