Kerloud飞控系列教程(13): PX4飞控开发基础之位置控制

PX4飞控开发基础之位置控制

框架说明

PX4飞行控制系统中的位置控制模块是一个关键组成部分,它允许无人机维持和改变其在空间中的位置。这个模块是整个控制系统的一部分,确保无人机根据操作员的指令或自动飞行计划安全、高效、准确地飞行。

以下是PX4中位置控制模块的关键方面:

  1. 控制回路:位置控制模块通常通过使用嵌套控制回路操作。外部回路通过基于当前位置和目标位置之间的差异生成期望的速度指令来控制位置。然后内部回路控制速度以遵循这些指令。这种分层控制结构允许精确定位。
  2. 参考框架:位置控制模块可以在不同的参考框架中操作,包括本地(相对于起飞点)和全球(纬度、经度、高度)。这种灵活性允许无人机在不同的操作上下文中执行任务,从近距离检查到广域调查。
  3. 传感器和状态估计:准确的位置控制依赖于来自各种传感器的数据整合,包括GPS、惯性测量单元(IMUs)以及有时为室内或GPS拒绝环境而设计的视觉或激光雷达传感器。PX4使用状态估计模块,通常是扩展卡尔曼滤波器(EKF),将这些传感器数据融合为无人机当前位置、速度和方向的全面估计。
  4. 设定点和轨迹生成:位置控制模块使用设定点,这些设定点是无人机要达到的期望状态(如特定位置)。它还可以生成从一个设定点移动到另一个设定点的平滑轨迹,优化诸如速度、效率和避障等因素。
  5. 控制参数:位置控制模块的有效性取决于各种参数的调整,如比例-积分-微分(PID)控制器中的增益。适当的调整确保稳定和响应性飞行行为,PX4提供了调整这些参数的工具和指南。
  6. 与其他模块的集成:位置控制模块与PX4的其他模块(如姿态控制模块(控制无人机的方向)和任务规划模块(提供航点和目标))紧密交互。这种集成确保位置控制与无人机的整体行为和目标一致。
  7. 故障保护和安全特性:位置控制模块包括各种安全特性和故障保护措施,例如在失去GPS信号或电池电量低条件下返回起点(RTH)。这些特性有助于在意外情况下确保无人机的安全。

PX4中的位置控制模块对于实现精确、可靠和多功能的无人机飞行至关重要。通过整合传感器数据、执行控制算法以及与其他飞行控制模块的协作,它允许无人机具有高度的自主性和准确性,以导航和执行任务。

代码讲解

代码参见我们维护的V1.11.3版本的多旋翼位置控制部分:

https://github.com/cloudkernel-tech/Firmware/blob/master_kerloud_v1.11.3/src/modules/mc_pos_control/mc_pos_control_main.cpp

代码主要逻辑在Run()函数,这也是px4模块中的入口,包含的功能有:

  1. 初始化与退出处理:首先检查是否应该退出控制循环,如果是,则取消注册位置回调,清理并退出。

  2. 性能监测:开始性能监测,用于分析代码执行时间。

  3. 位置更新与控制模式处理:更新当前位置,处理各种订阅,更新参数。计算时间差(dt),用于控制循环的时间敏感操作。

  4. 失效保护处理:检查是否进入失效保护模式,失效保护(failsafe)是当飞行器出现异常情况时的安全保护措施。

  5. 风向标控制:如果启用,激活风向标控制器,它可以在需要时调整飞行器的偏航角以对抗侧风。

  6. 起飞状态更新:更新飞行器的起飞状态,这对于控制飞行器从地面升空至飞行状态非常关键。

  7. 任务切换与更新:根据当前的飞行模式和需求,切换并更新飞行任务。

  8. 设定点和约束条件的生成:根据当前的飞行任务,生成位置、速度和加速度的设定点,以及飞行约束条件。

  9. 位置控制执行:根据设定点和约束条件,执行位置控制算法,计算出飞行器的姿态设定点。

  10. 设定点的发布与日志记录:将计算出的位置设定点和姿态设定点发布出去,供其他模块使用,如日志记录和监测。

  11. 着陆装置状态更新:如果有必要,更新着陆装置的状态,并发布相关信息。

  12. 性能监测结束:结束性能监测,记录运行周期的性能数据。

回到教程目录Kerloud飞控系列教程(1):目录