nuttx飞控操作系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nuttx飞控操作系统相关的知识,希望对你有一定的参考价值。

NuttX飞控系统
程序设计思路,首先我们不管里面操作系统是怎么样实现。在这个系统中我们学会用API就行了。
 
主处理器运行NuttX实时操作系统,所有功能都通过任务进程实现[4]。主要的进程有传感器数据采集、姿态估算、姿态控制、飞行器状态识别与切换、协处理器控制、日志记录。进程间进行通信是程序结构的重要部分。  也就是说在飞机中就有几个主要进程控制飞机。每个进程负责些什么呢。
技术分享
如图3所示,
传感器数据采集进程: 采集的所有传感器数据。
姿态估计进程: 利用传感器数据估算出飞行器当前姿态。
协处理器通信进程: 获取遥控数据。
状态识别进程: 结合传感器数据、飞行器姿态和遥控数据识别出飞行器当前模式。
姿态控制进程: 通过飞行器姿态、遥控数据、飞行器模式计算出当前所需的PID控制量并推送至uORB。
协处理器通信进程 :再将订阅的PID控制量通过高速串口发送至协处理器。
 
多个进程进行通信: uORB 订阅主题 ,发布主题。
 
协处理器和主处理器的关系:
技术分享技术分享
 
主处理器通信部分采用DMA方式直接填充至PWM匹配输出寄存器,最大程度地减小CPU的干预。失联识别在定时器20 ms中断中实现,每次进中断会读取DMA传输计数器的值并记录,再与上次的记录值进行比较,如果两个值不相等,则说明数据连接正常;相反,如果连接断开,两个值将会相等,据此实时地判断出连接的通断状态。主循环中只需要判断通断标志位,如果检测到连接断开,协处理器则会启用失效保护功能:通过SPI总线读取MPU6000芯片的加速度和角速度数据,利用四元数姿态融合算法[8]得到姿态信息,转换成欧拉角之后,再用PID控制器保持飞行器的水平姿态,直到与主处理器的连接恢复正常,再将电机控制权交还给主处理器。用欧拉角表示刚体姿态方便几何推导,但是存在万向节死锁,即当刚体的3个万向节中两个的轴发生重合时,会出现失去一个自由度的情况。四元数法则不存在这个问题,并且运算步骤也相对简单,适合在本文控制系统的协处理器中运用
 

以上是关于nuttx飞控操作系统的主要内容,如果未能解决你的问题,请参考以下文章

PX4-做飞控二次开发需要知道的事情-Cxm

PX4-做飞控二次开发需要知道的事情-Cxm

如何用开源飞控Pixhawk进行二次开发

嵌入式操作系统介绍之 NuttX

嵌入式操作系统介绍之 NuttX

Apache NuttX-9.0.0正式发布