平面架构概述

本页试图大致展示 ArduPlane 的架构。请注意,本页面并非由 Plane 专家撰写,因此可能存在一些不准确之处。

./_images/plane_architecture.png

上图是 ArduPlane 架构的高层示意图。与 Copter 和 Rover 相比,Plane 的一个最大区别是飞行模式没有被组织到一个文件中(例如:"Plane "和 "Copter")。就像在 Copter 中一样)或类(就像他们在罗孚).相反,代码路径会经历多个阶段。然后,每个阶段根据飞行模式决定应该做什么。

如上图所示,这些阶段包括

  • 更新 调用 EKF 获取最新的传感器数据,并生成姿态和位置估计值。

  • read_radio 读取飞行员的输入并计算出适当的姿态或位置目标

  • 浏览 调用 L1 和 TECS 控制器(见下文),为翻滚、俯仰和油门控制器转换位置目标值

  • 更新飞行模式 将 L1 控制器的滚动和俯仰目标复制到 nav_roll_cd 和 nav_pitch_cd 全局变量中

  • 执行低级别的滚转、俯仰和油门控制器

  • 设置服务 将滚转、俯仰和油门控制器的输出发送到相应的伺服输出端

平面控制器

如下图所示,平面有 2 个高级控制器和至少 3 个低级控制器。

../_images/plane_controllers.png
  • L1 控制器将起点和终点(分别用纬度和经度表示)转换为横向加速度,使载具沿着从起点到终点的路径水平行驶。

  • TECS(总节能系统)控制飞行器动能(即速度)和势能(即高度)之间的交换。它的输入是目标速度和高度,并通过计算目标油门和俯仰值来试图达到这些目标,然后将这些值传递给下级俯仰和油门控制器。