查看: 645|回复: 1

来自中移物联网社区的OnePilot飞控

[复制链接]

311

主题

344

帖子

966

积分

高级飞友

Rank: 4

积分
966
飞币
620
注册时间
2017-8-2
发表于 2022-11-15 23:11:29 | 显示全部楼层 |阅读模式
大家好,我是芯板坊小编。最近小编看《无线电》杂志第九月刊时候,发现了一个叫OnePilot的飞控项目;然后顺藤摸瓜地摸到了中移物联网社区;发现竟然有人用麒麟座mini板子DIY了一个飞控。
小编搜了一下,原作者是在Paparazzi UAV项目的基础上开发的。而Paparazzi UAV项目使用的是GPL协议(GNU GENERAL PUBLIC LICENSE,一种只要沾上一点就要免费共享的协议)。于是小编就无耻地把文章给“盗”过来了,免费开源给大家(没给作者稿费)。原作者现在心情很平静,愿意等小编先跑出39米再动手。
小编想在晚饭里加两只鸡腿,这样才有力气跑得快一些。老板表示,鸡腿跟小编文章的阅读数挂钩,每100个阅读,加一个鸡腿。

项目背景
这个故事源自送板狂魔——云汉电子社区[1]。作者在云汉试用频道申请了一块开发板,叫麒麟座OneNet Mini,它来自中移物联网社区[2]。成功拿到OneNet Mini板子后,他基于OneNet Mini的硬件做了个飞控开发项目,命名为One-Pilot飞控,上面跑的是改写过的Paparazzi UAV[3]飞控程序。Paparazzi UAV飞控是个开源项目,简称PPZ,包含了飞控硬件和软件。PPZ程序支持的飞控硬件很多,除了官方公布的几个飞控硬件版本以外,还支持NAZE32飞控、CC3D飞控、OpenPilot飞控和PX4飞控等。虽然PPZ支持的硬件很多,但是PPZ的代码从来没有对OneNet Mini做过适配。然而,需求还是有的,电子社区的小伙伴们都急等着看OneNet Mini变成飞控。
正巧,那个作者也是Paparazzi Hyper X飞控[4]的作者,对PPZ的开源项目比较熟悉。硬件上,OneNet Mini板子的主控芯片是STM32F103CBT6,也刚好符合PPZ的最小硬件需求。因此,他做了这个设计,基于OneNet Mini开发了OnePilot飞控的硬件,然后对PPZ飞控固件的代码做了修改,使其可以运行在OnePilot上。

OnePilot飞控简介
硬件介绍
OnePilot硬件的基本特性如下:

  • STMicro STM32F103CBT6 微处理器
  • MPU6050陀螺仪、加速度计
  • HMC5883L 磁力计
  • MS5611气压传感器
  • Ublox GPS
  • 一路电池电压采集
  • 两路UART
  • 一路I2C
  • 一路PPM信号输入
  • 四路PWM信号输出
  • 板载4颗LED用于飞控状态显示
  • 板子IO接口的规划见下表。比如PA2和PA3是串口2,用来接GPS模块

来自中移物联网社区的OnePilot飞控-1.jpg


需要注意的是,硬件上确实已经接入了HMC5883L磁力计和MS5611;然而实际使用时发现如果要实现完整的飞控算法,正好少了1kb空间,导致代码无法烧入;所以我在实际使用的程序里去掉了磁力和气压部分的代码。目前的算法是这样的,海拔参数只从GPS获取,不对气压计数据做融合;另外机头方向通过GPS航向获得,然后输入航姿系统。
虽然STM32F103CB的FLASH略小,不能使用完整的多传感器姿态融合算法,但至少还是能把基本的该有的功能都实现,比如航姿、自稳、导航。如果大家想进一步深入地学习飞控开发,建议使用性能稍微好一点的板子,比如STM32F4Discovery板子。
实物展示
作者在地面站上把飞控程序代码编译测试了一下。程序调通时候截了一张图,如图 1所示。这次先被测试编译的是个控制四旋翼的程序。编译过程无报错、无警告。

来自中移物联网社区的OnePilot飞控-2.jpg

图 1 使用PPZ地面站编译飞控代码

传感器使用了GY-86模块,如图 2所示。这个小模块包含了3轴陀螺仪、3轴磁场计、3轴加速度计和气压计。

来自中移物联网社区的OnePilot飞控-3.jpg

图 2 GY-86模块
板子烧上飞控固件并上电以后,可以看到板子正面从左往右第3个绿灯LED4是亮着的,如图 3所示。这个是AHRS算法的指示灯,板子上电后闪烁,姿态解算成功后保持常亮。

来自中移物联网社区的OnePilot飞控-4.jpg

图 3 板载LED

如果把传感器板向左滚转,电脑上的地面站的PFD显示飞机的姿态,地面(褐色)在左边,天空(蓝色)在右边。PFD叫做主飞行显示器,显示飞机的倾斜程度,如图 4所示。

来自中移物联网社区的OnePilot飞控-5.jpg

图 4 左滚时的姿态输出
上图中大片黑色的是飞机位置在地图上的显示,正常情况下应该是类似高德导航那样的。之所以显示黑色,只是因为谷歌地图被GFW墙了,图像暂时没下载到。这个其实对实际的航线飞行没有影响的,因为对飞控来说,只要有坐标数据就行了。我们把飞行路线上的控制点称为航点,如图 5所示:

来自中移物联网社区的OnePilot飞控-6.jpg

图 5 航点图

如果把传感器板向右滚转,电脑上的PFD显示如图 6所示。

来自中移物联网社区的OnePilot飞控-7.jpg

图 6 右滚时的姿态输出

如果把传感器板向前滚并低头,电脑上的PFD显示如图 7所示,已经看不到天空了(蓝色),视野里面全是大地(褐色)。

来自中移物联网社区的OnePilot飞控-8.jpg

图 7 低头时的姿态输出
如果把传感器板向后拉并扬起头,电脑上的PFD显示如图 8所示

来自中移物联网社区的OnePilot飞控-9.jpg

图 8 抬头时的姿态输出

飞控开发小结
这个OnePilot飞控的开发过程非常顺利。因为作者并不是从头做一个飞控,而是在PPPZ的开源基础上修改完成的。姿态和导航算法都是原版PPZ的代码。硬件上,主控板OneNet Mini完全归功于中移物联网。作者只负责做硬件和软件的接口规划,然后把各个模块连接起来。OnePilot项目对原版PPZ项目的贡献有如下几点:
1 添加了中移物联网麒麟座OneNet Mini开发板的支持,并做了一个机体配置例子。
2 在MPU6050和HMC5883L的驱动接口的开源代码的基础上添加了超廉价的GY-86模块的程序接口。
3 添加了超廉价的天地飞7通道遥控接收器的程序接口。
综上所述,对OnePilot飞控贡献最大的是中移团队和PPZ团队。
芯板坊小编的话
这个OnePilot飞控的作者(徐珂靖)只是个默默无闻的海边玩耍的宝宝,拾到几个贝壳,然后串起来做了个项链;然后芯板坊小编也只是个默默无闻给大家推送有趣新闻的宝宝。所以,如果这篇文章对大家有帮助,请不要谢芯板坊。如果大家要感谢,请谢谢伟大的GPL开源协议,以及PPZ团队和中移团队吧。

43

主题

786

帖子

1561

积分

金牌飞友

Rank: 6Rank: 6

积分
1561
飞币
773
注册时间
2017-8-23
发表于 2022-11-15 23:23:31 | 显示全部楼层
转发了
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表