PX4的飞行控制程序通过模块来实现,与飞控相关的模块主要有commander,navigator,pos_control,att_control这几个,分别可以在src/modules目录中找到。
commander - 指令/事件处理模块,处理指令、遥控器输入和各种事件,设定飞行器状态和控制模式
navigator - 导航模块,根据指定的任务输出导航轨迹
pos_control - 位置控制,根据指定的轨迹或者位置实施位置控制,输出飞行器目标姿态
att_control - 姿态控制,控制飞行器姿态,使飞行器达到预期的速度/加速度等
整体的控制框架大致如下:
其中,commander用于事件的处理,事件的类型可以包括遥控操作、用户指令、状态判断等。navigation, pos control, att control三个模块依次实现层级的飞行控制,从飞行轨迹到电机输出。每一层的输出是下一个环节的输入值,比如navigation的输入为设定的轨迹,输出为位置/速度的设定值,作为pos control的输入,pos control的输出为姿态的设定值,作为att control的输入,att control实现姿态控制,它的输出为电机的控制信号。commander处理信息和事件时会更改飞行器状态(vehicle status)和控制模式(control modes)的值,从而来确定控制系统的运行模式,比如手动控制、位置控制、定高控制、自动起飞等。
1. commander
由commander.cpp实现,它的主要作用是对事件/消息做出响应,并根据事件/消息控制飞行器的状态和飞行模式,分析commander.cpp的源代码,它的输入输出如下图

最低0.47元/天 解锁文章
1699

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



