如前所述commander的作用主要处理各种事件,调度控制系统的运行,事件包括遥控输入、用户指令、状态变更等。调度的作用主要设置控制系统运行的变量和模式,以使控制系统按照用户期望的模式运行,实现不同的控制功能。控制系统主要由navigator,pos_control,att_control构成。这里引用的是PX4略早期的一个版本,不同版本的PX4处理流程略有不同,整体框架大致上应该是一样的。
commander的处理在commander.cpp中的Commander::run()函数中实现
在进行一系列的初始化程序之后,进入一个while循环,这个while循环为commander的工作流程。按照一定频率运行,每一个循环依次检查各种事件和信息,进行处理。每一个循环的主要处理流程如下所示。其中右边文字备注了对应的处理以及相关的状态和标志位。
进行的顺序为
1 参数更新(param update),检查已有的参数更新,如有更新则进行相应的处理
2 检查电源按钮状态(power button check),如果检测到按下状态,则执行关闭系统(shutdown)
3 更新手动输入(manual input),主要是用户通过遥控器(Radio Controller)的输入
4 离线控制检查(offboard control check),离线控制指通过上位机发送到飞控板的控制指令
5 数据通道检测(telemetry status check),检查所有的数据链通道
6 飞行检查(flight check),主要检查传感器(加速度计、陀螺仪、气压计等)的状态,设置对应的标志位(flag)
7 系统
PX4Commander模块详解:事件处理与控制系统

Commander模块在PX4中负责处理各种事件,如遥控输入、用户指令和状态变更,通过一个while循环执行一系列检查和处理,包括参数更新、电源按钮状态、手动输入、离线控制、数据通道检测、飞行状态检查等。此外,它还涉及电机状态管理、安全检查、任务处理和遥控输入等,确保飞行控制系统按照预期模式运行。
最低0.47元/天 解锁文章
439

被折叠的 条评论
为什么被折叠?



