大疆经纬M100无人机的组装以及Onboard SDK的安装

  前段时间一直在搞在M100上搭载处理器,并且用大疆官方的Onboard SDK来进行开发,所以就记录一下,免得过段时间忘记了。先上一张M100的图(来源于大疆官网):


一、硬件介绍
1、首先介绍大疆M100的硬件大致:
(1)基本配置:一块飞控板(大疆A3飞控),4根机臂,一块电池,一个GPS模块和一个遥控器。
有了这个配置之后就达到了飞行条件。
(2)如果加上云台相机,就可以录制自己喜欢的视频了或者进行航拍。
(3)如果加上了guidance,就可以在室内平稳飞行了。

2、开发重量考量:
M100飞行器的额定最大起飞重量是3600g(实际测试最大极限起飞重量是4200g,这个数据不是很准确,这个数据只起参考作用),如果加上了guidance,妙算,基本上已经到了最大起飞重量,无法加上我自己的mini PC和GPU。所以在开发的时候一般不装guidance。下面给出一些部件的参考重量:
(1) M100的机架(飞控板,四个机臂,一个GPS模块)重量:1670g
(2) 一块官方电池:639g
(3) 我用的mini PC的重量是:715g,我拆掉了外壳,剩余315g
(4) GPU的重量是700g,

3、两种方案:
系统环境:
妙算:Ubuntu(arm版)
mini PC(windows 10)

方案一:
  不加云台相机,自己买一款长焦的USB摄像头安装在M100上,将视频直接输入mini PC上跑orb slam,然后将电脑桌面通过HDMI传送给N1视频编码器编码之后通过飞控再传给地面的dji go app做显示。
飞机的硬件模块:
M100机架 + 1块官方电池 + 1个USB摄像头 + mini PC + 1块GPU + N1视频编码器 + 锂电池 + 降压模块24V-12V(附加的锂电池和降压模块是为了给mini PC和GPU供电用的)
总重量是:约为4150 g


方案二:
  利用云台相机作为视频的输入,首先通过妙算读取禅思x3相机的视频数据,转成rgb之后,然后利用socket将图像传送给mini PC来跑orb slam。
加上云台相机,去掉GPU,加上妙算,所以总的配置就是:
M100机架 + 1块官方电池 + 1个云台相机 + mini PC + 妙算 + 锂电池 + 降压模块
总重量是:约为3700 g


  对比上面可以知道,方案二将GPU去掉了,因为现阶段中妙算中的GPU已经够用了。并且在方案一中,USB摄像头因为装在了飞机上,没有好的云台来增稳,所以在飞行过程中抖动非常厉害,orb slam跑不起来,所以采用了方案二。

二、软件介绍
在硬件搭载好了之后,就需要进行软件层面的实验了,首先归纳一下步骤:
1、升级M100的固件:
(1) M100的固件升级很简单,连接好所有的部件(官方电池、GPS、云台相机等),在自己的电脑上安装一个DJI assistant 2所有部件的升级都通过这个软件助手,不需要下载其他的软件升级包。将一根micro USB线连接电脑与M100尾灯后面的USB口,首先开启遥控器,然后开启M100电源,进入assistant 2进行固件升级。
(2) 根据安装GPS的位置,在DJI assistant 2中设置GPS的三维坐标;
2、配置妙算的系统环境:
  给妙算安装各种各样的软件,因为妙算的硬件架构是嵌入式的,所以一些包的安装和普通在Intel CPU的主机上安装有不同的地方,最好根据官方给的文档来进行安装,不要想当然,具体见妙算的文档;
3、安装Onboard SDK
  大疆的Onboard SDK有两个版本,一个不是ros版本的,一个是ros版本的,推荐先装没有ros版本的,步骤很简单,先在这里下载Onboard SDK,然后按照这个链接去安装,很简单。然后安装ROS版本的SDK,后面跑读取云台相机的程序的时候就直接把package 拷贝到SDK的workspace下面进行编译就可以了。
4、激活M100
  这个步骤我感觉官网上的说明有一些没说清楚的地方。所有的步骤可以参考这个链接,但是我要强调一下的就是,如果想使用SDK,就必须先在开发者网站上注册,成为大疆的开发者,然后在开发者网站中首先创建一个APP,里面有ID和Key。在启动sdk的时候,在launch文件中填入 APP ID 和Key的时候就是填你创建的ID和Key,不是你的dji go的账号和密码,还有串口的波特率以及串口的名字,如下图所示。


这里写图片描述

5、利用妙算获取云台相机的视频数据:
  可以参考github上的这个网站,可以将云台读出来的视频格式先转成rgb格式的,然后通过rostopic 发布出来,这样就可以使用视频流了。
6、将妙算上的视频通过socket传送给mini PC
  因为项目的需求是在windows平台下面跑orb slam,所以需要将视频传送给mini PC,我这里选用的是利用socket传输,如果是在Ubuntu下面跑orb slam,一个比较好的选择就是构建一个局域网,直接通过rostopic 来进行数据的传输。
我采用的方案是妙算和mini PC用一根网线进行直连(也可以用路由器进行连接),然后将mini PC上面的以太网的IP地址选用固定的,设置好网关和DNS,关闭windows的防火墙。在妙算上也使用固定的IP地址,注意两者的IP地址不要相同,也不要相差太大。在运行socket程序之前看看能不能ping通,ping通了说明配置是对的,如果不行就得先检查。Ubuntu的和windows的socket程序略有不同,感兴趣的可以去google一下。
7、在mini PC 上面跑orb slam
  orb slam有开源的windows版的,所以只需要将收到的图像输入写好的orb slam的接口中就可以开始跑了。

参考文献:
[1] https://www.dji.com/cn/matrice100/info#downloads
[2] https://developer.dji.com/cn/onboard-sdk/
[3] https://developer.dji.com/onboard-sdk/documentation/sample-doc/sample-setup.html#linux-onboard-computer
[4] 使用妙算控制M100
[5] DJI Onboard SDK ROS Video Decoding Package

猜你喜欢

转载自blog.csdn.net/osgoodwu/article/details/80611762