Ardupilot源码移植到飞思卡尔I.MX6Q硬件平台

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/msq19895070/article/details/86642617

https://mmbiz.qpic.cn/mmbiz_png/pIhI343Smtz7QDnqibRNAo6AQE7YyaC9iagBuR5G9ppIWWpqDvd9AvcDX3UMm0ClonR9pDxToWS4qTrGvUJ9PJ9w/?wx_fmt=png

官方推出的 pixhawk 系列控制器均采用STM32控制器,我们都知道,STM32系列单片机大多用于消费电子领域 ,以低成本和资料丰富在国内外被大规模使用。

 

但是我们认为在航天领域和工业控制领域,要求软件和硬件的高可靠性,硬件的选择更是非常严格。随着 Pixhawk开源飞控的飞速发展,国内外越来越多得公司使用这个开源飞控来做自己的无人系统的开发,这样一来原本是航模级别的软件硬件控制系统被强制用在了工业控制和航天领域。

 

我们认为这是不合理的,但是目前处于无人系统的初级阶段,上下游产业链,还是不完善。大量无人系统的需求被提出来,相关产业的人才缺乏,产业规模还在发展,但是远远没有像汽车产业那样完善。我们针对如上的特点,把Ardupilot这个系统完整的移植到了飞思卡尔IMX6这款芯片平台上,直接把Ardupilot这个系统的硬件层面,提升到工业级。首先从核心处理器的硬件层面上极大的提升了稳定性,同时为之后的软件扩展提供了最大程度的保证。从硬件和软件层面保证整个系统的稳定性是我们一致努力的方向,在另外的一篇文章中,我也就会详细讨论目前无人系统,尤其无人机的领域存在的问题。

 

首先来看一下系统特性:

产品参数

1.基本参数

CPU:    NXP 四核 i.MX6Q

架构:   Cortex-A9

主频:   1GHz

内存:   1GB DDR3 / 2GB DDR3

ROM:    8GB eMMC

操作系统:   Linux4.1.15-realtime

2.接口引出

I2C:    1路

USB HOST:   1路 USB HOST 2.0

USB OTG: 1路 USB OTG 2.0

UART/IrDA:  3路(包含一个调试串口)

pwm:    12路

s.bus:     1路

adc:    2路

供电接口:   1路(gh1.25-6pin,5V、3A)

3.板上可用资源

RGBLED:     1个

气压计:     1个

加速度计:       2个

陀螺仪:     2个

罗盘:       2个

可编程IOMCU:     1个

boot开关:            1个

 

软件资源

1.驱动程序

串口驱动:   linux提供

i2c驱动: linux提供

adc驱动: 提供

usb驱动: linux提供

pwm驱动: 提供

s.bus驱动: ardupilot提供

gpio驱动:  linux提供

各传感器驱动:  ardupilot提供

2.应用程序

控制程序:   ardupilot----开源

通讯协议:   mavlink-linux----开源

 

工具链

linux编程:arm-linux-gnueabihf-gcc(5.4版本以上)

windows编程: vs2017(安装包中需要选中linux交叉编译环境)

连接PC

串口终端:使用usb-ttl1.8v连接板卡debug串口,使用超级终端登陆

usb终端:使用usb数据线连接板卡usb-otg接口,使用超级终端ssh登陆

连接地面站:使用usb数据线连接板卡usb-otg接口,使用地面站连接

文件传输:使用usb数据线连接板卡usb-otg接口,使用超级终端sftp进行文件传输

vs在线编译调试:使用usb数据线连接板卡usb-otg接口,使用vs2017连接板卡,进行编译单步调试

vs在线附加调试:使用usb数据线连接板卡usb-otg接口,使用vs2017连接板卡,进行附加调试。

 


我们认为该开发平台有几大优势:

 

1  硬件处理性能极大提高,相比经典款的官方飞控动辄50%到80%的CPU使用率,我们移植的这款处理器,CPU使用率在3%左右,代码的可扩展性余地非常大。

https://mmbiz.qpic.cn/mmbiz_jpg/pIhI343Smtz7QDnqibRNAo6AQE7YyaC9iapCkJ3YBaFu1S6rdvN4jIhKnbv4cnmvO3QSO0spNicR2D428EZKMFH7g/?wx_fmt=jpeg

基于NXP(原Freescale)Cortex-A9架构的i.MX6Q 四核处理器的核心板

 

2  Linux下面的传感器驱动,USB驱动,各种支持的外设非常丰富,可以方便的扩展到视觉等高级应用开发。

https://mmbiz.qpic.cn/mmbiz_png/pIhI343SmtwiczBylVCI5kr5GzXc9wuCv3Zpg5c5j7PCma1zD0FzsudQvAt1jgW4M7UGMbGSqRDQh3icWgpI7Cibg/?wx_fmt=png

 

3  支持单步调试,在VS2017下面我们集成了单步调试开发环境,控制器的代码流程清晰明了,方便代码跟踪和测试。

https://mmbiz.qpic.cn/mmbiz_png/pIhI343SmtwiczBylVCI5kr5GzXc9wuCv6EaLn7GibkELubozzwNibKpIkmWgqbWS92V54mvYmYx6EEqxKHbaxddg/?wx_fmt=png

 

4  NXP工业级处理器,温度适应性,抗复杂环境电磁干扰能力更强。相对于STM32系列单片机的消费机处理器,硬件优势不言而喻。


 

我们认为在开发的便利程度上,VS2017的集成开发环境相比Ubuntu下面的开发环境更友好,可以单步调试,极大的提升调试开发效率。符合我们阿木实验室的初衷,让开发更高效!硬件性能的提升我们认为也是极大的,以后不管是滤波器的设计,还是复杂控制器的设计,还是图像方面的设计都可以极大的满足要求。是非常有前瞻性的一款自动驾驶仪硬件系统。

 

我们计划和官方保持同步,支持官方的任意版本源码,并且Ardupilot源码一样,用户只需要在官方的源码基础上做二次开发就行,支持官方任意一版代码,不必关心linux的系统层面调度,和普通的飞控开发一样关心算法和逻辑层面即可。

 


以下是测试说明和四旋翼飞机操作演示:

 

1、开发调试演示

https://v.qq.com/x/page/l0798y3sx1d.html

 

2、起飞/降落/悬停测试

https://v.qq.com/x/page/r0798hrini9.html

 

3、自稳模式下暴力打杆测试稳定性(大机动)

https://v.qq.com/x/page/s0798akh3aw.html

 

4、室外飞行测试(4s)

https://v.qq.com/x/page/a0798oan4eo.html

 

欢迎关注微信公众号:阿木实验室,了解更多...

猜你喜欢

转载自blog.csdn.net/msq19895070/article/details/86642617