前言 
此文档针对 DJI 经纬 M210V2+OnboardSDK3.9 
项目所使用的 NANO 账户密码:962464 
最后修改时间:202006111601 
开发者:vanguard  联系方式:vanguard6@foxmail.com 
注意事项 
使用 OSDK  开发应用程序时,为保护开发者免受意外,请注意如下事项: 
•  在使用 OSDK  开发应用程序或测试基于 OSDK  开发的应用程序时,请取下桨叶; 
•  无人机电机在转动时,请勿靠近; 
•  请勿向无人机电源输出接口输入大功率电流; 
为降低基于 OSDK  开发的应用程序因内部故障导致无人机损毁或意外事件的发生,DJI 
强烈要求开发者使用 DJI  Assistant  2 中的模拟器模拟无人机的飞行状态,并根据模拟器中
的数据和日志信息调试应用程序,降低无人机损毁或意外事件发生的风险,避免不必要的损
失。 
1、M210V2 Onboard SDK 3.9  开发 
官方链接: 
https://developer.dji.com/onboard-sdk/documentation/development-
workflow/environment-setup.html#ubuntu-linux 
启用 OSDK  控制功能 
为使基于 OSDK  开发的程序能够与飞行平台间正常通信,请在 DJI  Assistant2  中启用
OSDK API  控制功能。 
(1)Ubuntu Linux 开发环境要求: 
 
具体设置为: 
①Opencv3.3.1(官方推荐),源码编译全安装,步骤详见 opencv 安装(若不用视觉相关,
 
可不安装); 
②安装 LibUSB  并添加 DJI USB  设备节点 
sudo apt-get install libusb-1.0-0-dev    //用于读取双目摄像头、FPV 图像 
③添加 UART  读写权限 
1)使用 sudo usermod -a -G dialout $USER 命令将用户添加至 dialout  组中。 
2)重新登录所添加的账户后,该账户即可获取 UART  读写权限。 
④如需在 M210  系列的无人机上使用 OSDK  中的视觉功能,使 Linux  系统能够获取并标
识 DJI  的设备: 
1)在/etc/udev/rules.d/目录下创建文件 DJIDevice.rules 
2 ) 在 DJIDevice.rules 文 件 中 添 加 SUBSYSTEM=="usb",  ATTRS{idVendor}=="2ca3", 
MODE="0666" 
3)重新启动电脑后,系统即可识别 DJI USB  设备 
⑤sudo apt-get install libavcodec-dev libswresample-dev 
⑥sudo apt-get install libopencv-dev 
(2)OSDK 功能 
https://developer.dji.com/cn/onboard-sdk/ 
(3)环境配置以及测试(PC  测试环境 Ubuntu 1604) 
https://developer.dji.com/onboard-sdk/documentation/development-workflow/sample-
setup.html#linux-onboard-computer 
设备连接: 
使用 USB  转 TTL  线(FT232BL)和双头 USB  线连接计算机和无人机。 
 
可参照无人机连接妙算。 
 
具体步骤: 
①配置环境,详见(1)开发环境要求 
②注册大疆开发者账户,新建例程获取开发者 ID 以及 KEY 
https://developer.dji.com/user/apps/#all 
③下载 SDK3.9,见文件/package/Onboard-SDK-master.zip   
https://github.com/dji-sdk/Onboard-SDK 
④在命令行实现:解压并进入文件,创建 build 文件夹并进入 
unzip xxx 
mkdir build 
cd build 
⑤cmake .. -DADVANCED_SENSING=ON -DWAYPT2_CORE=ON     
/*获取高级图像感知,若在线编译出错,请使用离线包“/package/ Onboard-SDK-Resources-
advanced-sensing-2.0.3-armv8.zip”按照文档“OSDK3.9 离线安装 AD 和 WPv2.pdf”进行编译
*/ 
⑥make 
⑦将获取的 ID 和 KEY 填入文件 UserConfig.txt 
/Onboard-SDK-master/sample/platform/linux/common/ UserConfig.txt 
⑧复制 UserConfig.txt 到/Onboard-SDK-master/build/bin 
⑨使用串口连接电脑和无人机,打开无人机和遥控器,运行 demo 
进入/Onboard-SDK-master/build/bin 
运行:./djiosdk-flightcontrol-sample UserConfig.txt 
可使用公对公 USB 数据线连接无人机和电脑,运行 DJI Assistant 2 For Matrice(已经安装好
调参软件),进行模拟仿真,根据提示输入命令,观察无人机状态。 
(4)环境配置以及测试(Nvida Jetson Nano) 
①清除 TF 卡(高速卡),格式化 
②下载官方镜像,见文件 jetson-nano-sd-r32.1-2019-03-18.zip,并解压 
③将 TF 卡插入电脑,打开软件 Win32DiskImager-1.0.0 
加载 img 镜像,然后写入 
 
④将 TF 卡插入 Nano,插上电源,进行简单的设置,就可进入 Ubuntu 系统。 
⑤按照上文步骤配置环境 
⑥编译 
A, 解压 OnboardSDKmaster,进入文件夹,新建文件 build 
B, 进入 build,执行: 
cmake .. -DADVANCED_SENSING=ON -DWAYPT2_CORE=ON  //获取高级图像感知 
(ps:下载较慢,可以使用离线下载源码包) 
C, 下载最新的 advanced-sensing 源码包 
https://github.com/dji-sdk/Onboard-SDK-Resources/tree/advanced-sensing-2.0.3-armv8 
将下载好 Onboard-SDK-Resources-advanced-sensing-2.0.3-armv8.zip 解压 
将解压后的文件 src 和 inc 文件放到 Onboard-SDK-master\osdk-core\advanced-sensing-
2.0.3 目录下。详见文件: 
https://mail.qq.com/cgi-
bin/mail_spam?action=check_link&url=https://djisdksupport.zendesk.com/attachments/toke
n/Zb2OYgW5XzbOHpKFWM6hushkI/?name=OSDK3.9%25E7%25A6%25BB%25E7%25BA%25BF
%25E5%25AE%2589%25E8%25A3%2585AD%25E5%2592%258CWPv2.pdf&mailid=FQAHaHMCBg
UFHg1VQlRtVUlVRwJWWXR0dW16ZWEHZVIJ&spam=0 
OSDK3.9 离线安装 AD 和 WPv2.pdf 
⑦将 ID 和 KEY 填入文件 UserConfig.txt 
/Onboard-SDK-master/sample/platform/linux/common/ UserConfig.txt 
⑧复制 UserConfig.txt 到/Onboard-SDK-master/build/bin 
⑨使用串口连接电脑和无人机,打开无人机和遥控器,运行 demo 
进入/Onboard-SDK-master/build/bin 
运行:./djiosdk-flightcontrol-sample UserConfig.txt 
可使用公对公 USB 数据线连接无人机和电脑,运行 DJI Assistant 2 For Matrice(已经安装好
调参软件),进行模拟仿真,根据提示输入命令,观察无人机状态。 
2、新建测试 app 
(1)在/Onboard-SDK-master/sample/platform/linux  目录下创建 selfDemo 文件夹 
(2)编写 selfDemo.cpp 文件,selfDemo.hpp 文件,CMakeLists.txt main.cpp 
Ps:可直接复制例程,然后修改代码,修改 CMakeLists.txt 中的生成的可执行文件名称 
如: 
将 cameragimbal 修改为 selfDemo,并保存 
(3)打开/Onboard-SDK-master/sample/platform/linux 下的 CMakeLists.txt(与上面那个不
同,目录少一级) 
 
如图,增加一句代码,并保存 
(4)进入/Onboard-SDK-master/build 
运行:make 
进入/Onboard-SDK-master/build/bin 
可以看到结果如下,则正确。 
 
 
 
3、视觉检测辅助降落 
无人机完成巡航任务后,将悬停在起始点上方,手动拨动遥控器的模式切换按键,使用
OnboardSDK 接管无人机,进行降落。下视视觉系统获取的图像是灰度图像,分辨率为
320*240,采用自适应阈值分割,进行圆检测,获取检测到的圆的圆心,将圆心坐标与图像
坐标中心进行差值计算,获取中心之间的像素差值,标定相机坐标系和无人机机体坐标系,
将差值送入控制器,控制无人机回到中心。 
 
(1)自适应阈值分割 
自适应阈值法(adaptiveThreshold),根据图像不同区域亮度分布,计算其局部阈值,对
于图像不同区域,能够自适应计算不同的阈值,适用于光照分布不均匀的图像。使用方法如
下: 
cv::Mat AdaptImage; 
adaptiveThreshold(gray,AdaptImage,255,0,THRESH_BINARY_INV,7,8); 
(2)滤波 
噪声在图像当中常表现为一引起较强视觉效果的孤立像素点或像素块。简单来说,噪声
的出现会给图像带来干扰,让图像变得不清楚。 
①中值滤波 
中值滤波本质上是统计排序滤波器(包括最小值滤波器和最大值滤波器)的一种,中值
滤波对图像特定噪声类型(椒盐噪声)会取得比较好的去噪效果,也是常见的图像去噪声与
增强的方法之一。在本例中的使用,详见代码。 
②高斯滤波是一种线性平滑滤波,适用于消除高斯噪声高斯滤波。在本例中的使用,详
见代码。 
(3)Hough 圆检测 
计算轮廓点处的梯度向量,然后根据搜索的半径 R 在该梯度方向距离轮廓点距离 R 的
开始设置航线加载航线开始巡航回到起始点,悬停拨动Mode SwitchOSDK获取权限降落至2m高度获取降落标志图像自适应阈值分割中值滤波获取中心差值无人机位置控制降落结束高斯滤波Hough圆检测
两边各投一点,最后根据投票结果图确定圆心位置。 
4、无人机精确降落工程(NANO+M210V2) 
(1)代码工程 
/软件/Onboard-SDK-master 
新 建 的 工 程 具 体 位 置 :   / 软 件 /Onboard-SDK-master/sample/platform/linux/advanced-
sensing/onboard_mission 
(2)NANO 与 M210V2 连接 
 
电源 Power 接 NANO;USB1 一端接无人机 USB 口,另一端接 NANO 任意 USB 口;USB2 一
端(USB 端)接 NANO 任意 USB 口,另一端接无人机“3”号接口,黄色标签向上。 
(注意: 
        为避免干扰无人机的正常工作,请确保机载计算机的电压在 18V~26V  间,电流恒定为
2A; 
        在   utility/bin/  中 设 置 开 启 或 关 闭 电 源 接 口 ;   ./M210ConfigTool  --usb-port 
/dev/ttyACM0 --config-file UserConfig.txt --power-supply on) 
(3)运行方式 
所有代码、命令已加入自启动,可以在/etc/rc.local  中查看,设置方式参考 6.7  设置
Ubuntu18  自启动。 
5、其他: 
(1)无法获取图像,检测 usb 是否接入 
ls /dev/ttyUSB0 
(2)关闭 USB 连接时读取双目视觉图像时禁止起飞 
首先将 utility/bin/linux/x86-64”下的 M210ConfigTool 复制到/build/bin 目录下 
运 行 : ./M210ConfigTool  --usb-port  /dev/ttyACM0  --config-file  UserConfig.txt  --usb-
connected-flight on 
此命令已加入自启动。 
(3)安装 Code-OSS (Nvida Jetson Nano  专用) 
git clone https://github.com/JetsonHacksNano/installVSCode 
cd installVSCode 
./installVSCode.sh 
(4)OpenCV 安装 
1、下载 opencv3.3.1 source 版本 
2、解压 unzip xxx 
3、卸载(如有必要) 
make uninstall  
cd ..  
sudo rm -r build 
4、安装依赖项 
安装依赖项:https://blog.csdn.net/u013066730/article/details/79411730 
sudo apt-get install build-essential cmake pkg-config  
sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev 
libpng12-dev  
sudo apt-get install libavcodec-dev libavformat-dev libswscale-
dev libv4l-dev  
sudo apt-get install libxvidcore-dev libx264-dev  
sudo apt-get install libgtk-3-dev  
sudo apt-get install libatlas-base-dev gfortran  
sudo apt-get install python3.5-dev  
sudo apt-get install ffmpeg 
5、进入文件,新建 build 文件 
cd opencv-3.3.1        # 进入 opencv 文件夹 
mkdir build                    # 创建 build 文件夹 
cd build                         # 进入 build 文件夹 
cmake -D CMAKE_BUILD_TYPE=Release -D 
CMAKE_INSTALL_PREFIX=/usr/local ..    #最后的两个点不能省,与上
一行是一句的 
sudo make    #编译过程十分的漫长 
sudo make install     #安装完成 
6、sudo apt-get install python-opencv 
7、测试 
python 
import cv2 
8、opencv 环境配置 
首先需要将 opencv 的库添加至路径 
sudo gedit /etc/ld.so.conf.d/opencv.conf 
打开后添加: