认识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),该机制提供了特定的数据结构用于数据发布。它遵循着“一对多,发布与订阅”的设计模式:一个发布者想要分享信息需要先呈递一个话题。一个话题被定义成为语义信息通道如姿态或者位置。订阅者订阅这个话题,建立订阅之后可以建立新的请求并推送新的数据,或者等待线程时钟唤醒,直到有新的数据获得。如下图描述了发布者和订阅者之间的关系:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值