小白飞控入门——认识Pixhawk架构思想
来自:学飞无人机今天我们要讲的主要是APM和PX4的载体Pixhawk架构。而讲这个之前,就不得不提一下多旋翼飞行器的背景。
首先,这个多旋翼飞行器的发展得益于近年来低成本MEMS的快速发展。
然后,这个多旋翼飞行器的研究热潮起源于一大批开源爱好者,而这帮很牛的爱好者们,什么都干,开源的爱好者们制作开源的硬件飞行控制板,设计开源的飞行自动控制算法,还包括通信链路,地面控制软件等等……所谓有人的地方就有江湖,就有帮派,就有团伙,于是这帮人就成立了帮派,并且有了自己的地盘——开源无人机爱好者社区。比如早期的Mikrokopter、KKmulticopte、Paparazzi,以及后来的Multiwii、Aeroquad、Autoquad。
近几年发展最好的两个开源飞控Pixhawk和Ardupilot。也许很多人不太搞得清楚这两个开源飞控之间的关系,但是我告诉你哦,他俩之间的关系是:
首先
Ardupilot通常被我们叫做APM,是早在2007年由DIY无人机社区(DIY Drones)推出的飞控产品。APM刚开始是基于Arduino的开源平台,那时候的处理器还是AVR系列的Mage2560,性能没有现在这么强大;
然后
而Pixhawk是一款开源硬件,是最近几年由苏黎世理工大学推出来的高性能飞控硬件板,目前已经发展到第二代,并且即将发展到第三代。同时苏黎世理工大学还推出了他们的自动飞行控制固件代码PX4,也就是我们平常所说的原版固件PX4。
但是
随着APM飞控软件的快速发展,AVR的板子性能已经不能满足需求,所以只能逐步移植到Pixhawk的硬件架构上来进行开发。
总之
1、APM和PX4是由两波人员分别开发的开源飞控固件,目前都可以跑在Pixhawk这款硬件板上的。
其中,PX4固件相当于多线程跑在这块板子上,而APM固件相当于一个线程。
2、APM和PX4在功能上面都实现了姿态稳定、定高、定点,沿轨迹飞行,光流和超声波室内定点,环绕飞行,地面站实时显示等主要功能,同时都可以延伸至无人车,无人机,多旋翼等移动机器人平台上面。
不同的是,APM功能较多,比较适合商业开发整合,而PX4架构比较好,便于扩展维护,模块化。
那么接下来我们重点了解Pixhawk为何能够吸引世界上两大开源固件,他有哪些优秀的架构和特点?
Pixhawk是一块高性能板子,适用于固定翼、多旋翼和直升机,船舶以及一切其他可移动的机器人架构。它采用了ST先进的处理器M4架构,同时搭载了NuttX实时系统,且有一个自定义的PX4底层驱动来确保全周期的实时处理。
该板子包含两块独立的子模块,即飞行管理单元(FMU)和输入输出单元(IO),其接口分配图如下图所示:
Pixhawk板子的主要特征参数如下:
1)168MHz Cortex M4核心处理器,256KB RAM 2MB Flash
2)MPU6000三轴加速度计/陀螺仪,L3GD20 16位陀螺仪,LSM303D 14位加速度计/磁力计,MS5611 MEAS气压计
3)14路PWM输出,8位硬写入
4)故障时多重电源供应
5)5个UART串口,1个支持大功率,2个有硬件流量控制
6)2个CAN口,1个I2C口,1个SPI口,3个ADC输入
7)遥控器输入支持:PWM,PPM,S_BUS1/2,DSM2/X,RSSI输入
整套系统硬件的输入输出框架如下图所示:
该套系统提供了一系列终端接口来监控该系统硬件的状态,系统启动是通过一系列的脚本和参数来完成的,其嵌入的MAVLink通信协议提供了一个管理控制器和系统参数的友好界面,并能够在飞行中存储或改变系统参数。
该套架构使用高精度定时器,并且支持中断唤醒。这些唤醒函数非常适用于高效且准确地读取传感器数据。唤醒延迟都在4毫秒以下。该套硬件架构能够支持大多数的外设,包括MEMS传感器,扩展的空速计和压力传感器,PWM,I2C和CAN总线,同时也支持PX4定制的外围设备,如光流传感器。目前该硬件框架支持5个串口通信,可以一对一或者一对多进行无线电通信。同时也支持非商业的数字无线控制系统如S.BUS1/2,PPM,Spektrum。
Pixhawk嵌入式系统的架构设计思想
1) 控制器实时性要求
Pixhawk里面的控制器可以封装成一系列嵌套的控制环。每个控制环都以一个参考设定值和当前状态值作为输入。然后它产生下一个内环的参考值。即使是一些先进的控制算法也可以被看作一系列的嵌套控制环。通常外环对实时性的要求要比内环低,这也给予了系统设计者在外环设计上的灵活空间,如下图所示,阐述了无人机模型与控制的典型流程图:
2) 可重复使用性
Pixhawk为了方便科研团体只关注他们自身的研究领域,提供了一个开放模块化的体系架构。Pixhawk实现了上层可重复使用,并提供了以下功能:
Ø可以清除底层传到上层的软件接口
Ø多线程点架构,这样可以将上层应用解耦分开
Ø可以获得当前传感器的状态和执行器信息
Ø可以在硬件上扩展总线来增加新的传感器
Ø可以随时在硬件上进行安全的硬覆盖
3) Pixhawk的软件架构
这里说的软件架构并不是指具体算法里面的架构,而是整个pixhawk提供的体系架构,其主要分为四个层,如下图所示:
最底层是驱动层,有许多特殊的底层代码(如特殊的微处理器或者总线类型);
往上一层便是将这些转化为系统的接口作为驱动点,这一部分是操作系统的一部分;
第三层是处理进程之间通信,提高通信效率,确保数据在各个进程之间的传递;
第四层是应用层,如飞行控制或者状态估计模块都在这一层。
其中最大的优势是中间的通信层,提供了设备驱动和对象请求发送机制(uORB),该机制提供了特定的数据结构用于数据发布。它遵循着“一对多,发布与订阅”的设计模式:一个发布者想要分享信息需要先呈递一个话题。一个话题被定义成为语义信息通道如姿态或者位置。订阅者订阅这个话题,建立订阅之后可以建立新的请求并推送新的数据,或者等待线程时钟唤醒,直到有新的数据获得。如下图描述了发布者和订阅者之间的关系:
推荐
关注
Qt无人机地面站设计与制作视频教程
助力科研——(Simulink)基于模型设计的飞控开发教程
点击 "阅读原文" 查看更多无人机知识
页:
[1]