5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 618|回复: 6

【新人贴】【BH Pilot】我们又用Linux+AP替代RTOS+MCU了

[复制链接]
发表于 2018-3-14 14:20 | 显示全部楼层 |阅读模式
点击查看详情
本帖最后由 bithollow 于 2018-3-14 14:18 编辑

大家好,我是一个彻头彻尾的5iMX新人,请多多指教!

几年前树莓派刚刚出来的时候,我和小伙伴们瞎聊能不能用树莓派来做无人机(不仅指飞机,更多是Drone的含义)。
这是个老话题了,有很多关于实时性、计算能力、扩展性和杀鸡焉用牛刀的讨论,直到高通出手,有很多人都把树莓派飞上了天,或者潜下了海。

一开始我们是玩OpenPilot和CC3D(还有Revo),然后看到了Autopilot和PixHawk,NAVIO+,Erle-Brain...以及ArduPilot和APM。

其实还有好多,不过我们看中了ArduPilot的社区,好的社区是持续生命力的象征。我们想它是不是有一天能跑在Linux下面,然后把云台呀、图传和数传这样的硬件全用Linux下的软件和AP来替代,还有把那些外接在MCU板子上的传感器都集中起来。当时市面上的飞控好多都是M0P,M3或者M4F的MCU,只是飞飞可以,如果要做点有意义的事情比如拍照、实时视频流什么的,还要花好多钱买一堆外接的东西(也许这就是人家的模式吧)。

我和小伙伴这种业余玩的,喜欢简单,觉得要是有个多合一就好了。当时信息量太少,树莓派一代的bcm2835也还是单核的,着实不知道这么多东西要在上面处理是什么情况。

陆陆续续的,我们有了一些具体的想法,针对树莓派的HAT规格,做了一个小板子,满载各种传感器。
想法是这样的:




虽然是业余时间,小伙伴们还都挺正经,我们开了github来放ArduPilot、Linux代码和硬件资料,做了网站,定期碰头开会...甚至还把支持我们板子的代码合并到了ArduPilot上游的仓库里面。
随后,这个小家伙诞生了:



它被命名为BH,可以配合树莓派或者其它的Linux板子使用。集成加速度计、角速度计、磁场强度计、气压计、全球导航卫星系统(GNSS)、脉冲宽度调制(PWM)输入输出、实时时钟(RTC)、64KB外存(ROM)、模拟信号输入,提供硬件扩展接口SPI、I2C、UART,兼容Raspberry Pi HAT标准,可通过GPIO控制单色、复合色LED若干。

规格在这里:
Hardware spec
  • MPU9250 * 1
  • UBlox NEO M8N * 1
  • MS5611 * 1
  • PCA9685 * 1
  • DS1339 * 1
  • RGB Led * 1
  • Single color leds: Red * 1, Green * 1, Blue * 1
  • Ext ports: I2C * 1, SPI * 1, UART * 1
  • Analog In * 3

Dimensions
  • L * W * H: 65mm * 56.5mm * 20mm (including pin heads)
  • Weight: 25g (including battery)

这东西做了三版,改layout,升级软件,直到2016年中,飞行啊什么的都挺稳定了,因为ArduPilot社区也推动软件向Linux移行,给我们也带来很多便利。
我们验证原理的面包板和它的前两个版本:

BH 原型

BHv0.1


BHv0.2



这里有个视频演示基本功能(各种传感器、ArduPilot的Stablized mode和RTL mode):


说到这里,要提一下软件了。大家都知道树莓派有三代,bcm2835、2836和2837(公开的名字),2835是单核armv6还不能支持硬浮点,市面上编译成armv7a的Linux发行版都不能跑,再者那时候HAT标准也没有出来,对于我们的板子来说,只能连着杜邦线验证原理(用的是GY-86哟)。从第二代2836开始起,armv7a支持了,硬浮点支持了,一上来就是4核心,HAT标准也来了,所以我们主要是从2836开始的。

打上preempt rt patch,自己编译了armv7a-hf的kernel,用debian jessie的rootfs,再加上必要的WIFI/BT驱动和可以远程登录控制树莓派的WebGUI,以及,ArduPilot。

这让我们把树莓派2/3的四个核心能发挥的运算能力基本上都榨出来了。树莓派和BH一起,可以提供8路PWM输入(所以不用PPM接收机也行);13路PWM输出(3到8轴旋翼都可以吧,再来3路控制云台的三个自由度);3路模拟输入(超声、电监模块类似的模拟传感器可以支持3个);开机以后就是热点,地面站的电脑可以直接WIFI连上(数传代替了,虽然自带的WIFI比较弱,但是可以USB外接。图传其实也可以代替的,目前还没有去弄软件,性能未知,有点担心);树莓派没有的RTC也加上了;ROM可以存Linux Device Tree信息;一颗M8N GPS,可外接陶瓷天线;当然了,SPI/I2C/UART的扩展接口也都留了,可以挂更多的设备。树莓派的四个核心,可以通过CPU affiliate固定指定的进程在指定的核心上跑,比如飞控进程在0上,视频流在1上...特事特办;再一个,如果USB上插个4G无线网卡,那么飞行距离就不局限于WIFI了和发射接收机了(这个还没弄,只是硬件给予了可能性,连上公网以后,需要在线服务器才能中转MAVLink控制命令和事件)。

当然了,别光听我说得好,其实也有不少问题,比如Linux启动速度需要优化、ArduPilot代码需要调整这样那样的,都记录在github上了。但总体来说,我们觉得和预想差得不远,而且整个过程相当有意思。ArduPilot上游的代码里面,曾经有一个Raspilot板支持,也是中国人做的,但现在好像停止了,代码也被拿掉了。虽然BH慢慢悠悠地做,但我们还是希望中国人做的板子能够在ArduPilot上游占那么小小的一块地方,小坚持一下。对了,我们也为Tower(DroidPlanner)上游提供了百度地图的支持。

到目前为止我们使用的软件情况如下:
  • kernel 4.6.5
  • preempt-4.6.5-rt9
  • debian 8.6 jessie armv7a hf
  • raspap-webgui 1.2
  • ardupilot copter 3.4-dev
  • ds1339 rtc enabled
  • bcm43430 bluetooth enabled
  • bcm43430 sdio wifi enabled

那么,接下来目标自然是ROS,这业余爱好有点越玩越大了,欢迎你来和我们一起玩噢!BH是开放源代码的,如果你有建议或者意见,请说说你的见解,如果你可以和我们一起添砖加瓦,更是求之不得。

我们这种八十年代出生的孩子都经历过品牌机和攒机的电脑城洗礼,自己攒个无人机也不是啥大事。用开放的方案,只要有兴趣,像ArduPilot这样的,多旋翼、固定翼、小车、潜水艇都可以支持了,还是蛮激动的。







欢迎继续阅读楼主其他信息

主题

  • 没有相关信息
  • 没有相关信息
  • 没有相关信息
发表于 2018-3-14 18:12 | 显示全部楼层
666!大神V5!赞!
发表于 2018-3-14 18:13 | 显示全部楼层

回想十年前自已设计制造调频短波无线电台的过程就如你们一样,不同的是基本只有自已一个人和手上的资料,改了七次PCB总算成功,用自制的机器第一次联通到远地的电台,心情真激动。
现在,连做个电调板都不愿意动手;其中的艰难,只有干过的人才能体会。
来自安卓客户端来自安卓客户端
发表于 2018-3-14 22:33 | 显示全部楼层
 楼主| 发表于 2018-3-15 10:59 | 显示全部楼层
IGV 发表于 2018-3-14 18:13
回想十年前自已设计制造调频短波无线电台的过程就如你们一样,不同的是基本只有自已一个人和手上的资料, ...

艰难也是一种动力,总要有点挑战,我们不愿窝在家里长肉
欢迎为提供任何建议,我们都是闲的时候才弄,也邀请你和我们一起噢!

如果感兴趣可以在这里找到更多信息:
github.com/bithollow


 楼主| 发表于 2018-3-15 11:16 | 显示全部楼层

偷看了你发的帖子,好像你也玩CC3D。

一直有人说RPI3太大,不适合穿越机,其实除了重量而外,还是可以的。
给你看看我的x250:
111612hp8hhvvwhd7klcxt.jpg

发表于 2018-4-4 00:29 | 显示全部楼层
恩,不错的项目~
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /3 下一条

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