PX4自动驾驶仪软件可分为三大部分:实时操作系统、中间件和飞行控制栈。
1.NuttX实时操作系统:
提供POSIX-style的用户操作环境,进行底层的任务调度。
2.PX4中间件:
PX4中间件运行于操作系统之上,提供设备驱动和一个微对象请求代理(micro object request broker,uORB)用于驾驶仪上运行的单个任务之间的异步通信。我的理解是完全可以将它看成为一种进程间通信机制。
3.PX4飞行控制栈:
飞行控制栈可以使用PX4的控制软件栈,也可以使用其他的控制软件,如APM:Plane、APM:Copter,但必须运行于PX4中间件之上。
此部分又可分为3部分:
决策导航部分:
根据飞行器当前飞行状态和接收的用户命令,决定工作模式和飞行任务。
位置姿态估计部分:
通过传感器获取自身的位置和姿态信息。
位置姿态控制部分:
根据期望与当前的位置和姿态控制飞行状态以达到期望位置和姿态。
控制器输出部分:
mixer和执行器,pwm限幅。