logo资料库

Onboard SDK开发流程202006111606.pdf

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
前言
注意事项
1、M210V2 Onboard SDK 3.9 开发
启用OSDK 控制功能
(1)Ubuntu Linux开发环境要求:
(2)OSDK功能
(3)环境配置以及测试(PC 测试环境Ubuntu 1604)
设备连接:
(4)环境配置以及测试(Nvida Jetson Nano)
2、新建测试app
3、视觉检测辅助降落
(1)自适应阈值分割
(2)滤波
(3)Hough圆检测
4、无人机精确降落工程(NANO+M210V2)
(1)代码工程
(2)NANO与M210V2连接
(3)运行方式
5、其他:
(1)无法获取图像,检测usb是否接入
(2)关闭USB连接时读取双目视觉图像时禁止起飞
(3)安装Code-OSS (Nvida Jetson Nano 专用)
(4)OpenCV安装
6、开发过程问题记录
1、使用树莓派问题
2、遥控器与OSDK权限问题
​3、遥控器与OSDK权限切换
4、连接USB线,遥控器无云台相机图像,不能读取TF卡
5、OnboardSDK不能对SD卡进行读写
6、OnboardSDK能否获取遥控器信息
7、设置Ubuntu18 自启动
8、ubuntu1804 更换gcc版本
前言 此文档针对 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 打开后添加:
分享到:
收藏