搭建DJI 无人机Onboard SDK ROS开发环境及测试

这篇具有很好参考价值的文章主要介绍了搭建DJI 无人机Onboard SDK ROS开发环境及测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

功能包简介

ROS功能包名称:dji_sdk

功能包功能:用于DJI 板载SDK的ROS版本

OSDK 是一个用于开发无人机应用程序的开发工具包,基于OSDK 开发的应用程序能够运行在机载计算机上(如Manifold 2),开发者通过调用OSDK 中指定的接口能够获取无人机上的各类数据,经开发者设计的软件逻辑和算法框架,执行相应的计算和处理,生成对应的控制指令控制无人机执行相应的动作,实现如自动化飞行、负载控制和视频图像分析等功能。
大疆osdk,无人机,无人机,DJI,SDK,ROS
主要优势

  • 兼容广泛的软硬件平台
    使用OSDK 开发的应用程序能够运行在主流的嵌入式硬件平台上,如STM32等,也可运行在主流的嵌入式操作系统和软件架构中,如Linux、ROS及RTOS,开发者按照跨平台移植中的步骤执行所需的工作后,即可在不同版本的软硬件平台上运行基于OSDK 开发的应用程序。

  • 满足复杂的控制需要
    通过调用OSDK 开放的接口,即可使无人机按照指定的控制逻辑在极端环境中实现自主飞行、负载控制及图像感知等应用功能。

  • 支持丰富的拓展方案
    OSDK 提供了丰富的接口,方便开发者使用第三方应用程序和算法框架,使用图像识别、自主巡航及SLAM 等技术开发出专业的应用软件,此外,还方便开发者接入第三方传感器、相机或检测设备,采集所需的数据信息,满足用户个性化的应用功能和控制需求。

该功能包为 DJI 机载 SDK 提供了 ROS 接口,使用户能够使用 ROS 消息和服务完全控制无人机。
目前支持的无人机平台有:

  • DJI M300
  • DJI M100
  • M600
  • M210
  • 配备 A3/N3 飞控的无人机。

功能包依赖DJI SDK 核心库,链接地址为:DJI SDK 核心库

注意:功能包有很多的版本,要根据自己的平台,选择正确的版本
大疆osdk,无人机,无人机,DJI,SDK,ROS
其中4.0和4.1是能够支持M300无人机飞行平台的
对于 A3/N3 飞控的无人机,最新的支持版本是3.8版本

ROS WIKI地址:http://wiki.ros.org/dji_sdk

开发环境搭建

下载 Onboard-SDK-ROS
git地址:https://github.com/dji-sdk/Onboard-SDK-ROS

下载指定分支命令
git clone -b 分支名+仓库地址

具体指令如下:

git clone -b 3.8 https://github.com/dji-sdk/Onboard-SDK-ROS

大疆osdk,无人机,无人机,DJI,SDK,ROS
放到ROS的工作空间中,进行编译

catkin_make

编译的时候,会检测依赖库,检测到没有Onboard-SDK的时候会自动下载,这时候会花费些时间
大疆osdk,无人机,无人机,DJI,SDK,ROS
自动下载完成后,会在功能包里,出现两个文件夹:Onboard-SDK-3.8.1、Onboard-SDK-3.8.1-build
大疆osdk,无人机,无人机,DJI,SDK,ROS
中间还会安装一些依赖的库,所以会慢些,等到最后报了一个这样的错误:

CMake Error at /home/jk-jone/jone_ws/devel/share/dji_sdk/cmake/dji_sdkConfig.cmake:197 (find_package):
Could not find a package configuration file provided by “nmea_msgs” with
any of the following names:
nmea_msgsConfig.cmake
nmea_msgs-config.cmake
Add the installation prefix of “nmea_msgs” to CMAKE_PREFIX_PATH or set
“nmea_msgs_DIR” to a directory containing one of the above files. If
“nmea_msgs” provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
/opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:76 (find_package)
Onboard-SDK-ROS/dji_sdk_demo/CMakeLists.txt:10 (find_package)

这个好办,就是缺少nmea_msgs包的依赖,下载就行,指令如下:

sudo apt-get install ros-noetic-nmea-msgs

其中的noetic需要根据自己ros的版本进行替换

然后再次编译

编译成功!
大疆osdk,无人机,无人机,DJI,SDK,ROS

测试功能包

dji_sdk 的 launch 文件夹中有一个 sdk.launch 文件
原文件如下:

<launch>
    <node pkg="dji_sdk" type="dji_sdk_node" name="dji_sdk" output="screen">
    <!-- node parameters -->
    <param name="acm_name" type="string" value="/dev/ttyACM0"/>
    <param name="serial_name" type="string" value="/dev/ttyUSB0"/>
    <param name="baud_rate" type="int" value="921600"/>
    <param name="app_id" type="int" value="your app id here"/>
    <param name="app_version" type="int" value="1"/>
    <param name="align_time" type="bool" value="false"/>
    <param name="enc_key" type="string" value="your app key here"/>
    <param name="use_broadcast" type="bool" value="false"/>
    </node>
</launch>

注意这里默认配置的串口设备是 /dev/ttyUSB0 ,这里可以做一个设备修改和绑定,到时候也要增加串口的访问权限
波特率默认是921600,与上位机的设置要一致
app_id enc_key 需要从官网上申请,申请下来后,填入,即可。

连接设备

用一个USB转TTL模块,将TTL端的接口与无人机API接口连接,USB端插入电脑。

通过dji 上位机,设置API串口波特率为921600(ROS 默认订阅的主题相对较多,为保证ROS 与基于OSDK 开发的应用程序间有足够的通信带宽,UART 的波特率应大于921600,修改完上位机,需要重新启动飞机)

启动SDK

增加串口权限

添加用户组,可长期使用

sudo usermod -aG dialout ${USER}

指定串口单次有效

sudo chmod 777 /dev/ttyUSB0

启动sdk

roslaunch dji_sdk sdk.launch 

运行会返回一个错误

ERRORLOG/1 @ AdvancedSensing, L58: Please make sure the connected drone is a M210 and firmware version is supported.
[ERROR] [1675676083.363339870]: drone activation error
[ERROR] [1675676083.363366996]: Vehicle initialization failed

程序默认是用于M210飞机的,当不是该飞机的时候,程序开着避障传感器的功能,冲突了,所以需要修改程序,将避障传感器功能关闭。


大疆osdk,无人机,无人机,DJI,SDK,ROS
这几个文件内

#ifdef ADVANCED_SENSING
  enable_advanced_sensing = true;
  ROS_INFO("Advanced Sensing is Enabled on M210.");
#endif

改为:

#ifdef ADVANCED_SENSING
  enable_advanced_sensing = false;
  ROS_INFO("Advanced Sensing is Enabled on M210.");
#endif

编译后,再次运行,会出现程序die掉的情况,很明显是访问了非法地址。
大疆osdk,无人机,无人机,DJI,SDK,ROS
可能还是因为ADVANCED_SENSING的原因,将dji_sdk_node.cpp中的关于ADVANCED_SENSING这个宏里的内容,全部注释掉再次运行

NODES
/
dji_sdk (dji_sdk/dji_sdk_node)
auto-starting new master
process[master]: started with pid [28159]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to d899f17a-a604-11ed-8bc2-87af082c8f87
process[rosout-1]: started with pid [28169]
started core service [/rosout]
process[dji_sdk-2]: started with pid [28176]
STATUS/1 @ init, L55: Attempting to open device /dev/ttyUSB0 with baudrate 921600…
STATUS/1 @ init, L65: …Serial started successfully.
STATUS/1 @ parseDroneVersionInfo, L727: Device Serial No. = 0670169082
STATUS/1 @ parseDroneVersionInfo, L729: Hardware = A3
STATUS/1 @ parseDroneVersionInfo, L730: Firmware = 3.3.8.47
ERRORLOG/1 @ initVirtualRC, L1103: Virtual RC is not supported on this platform!
STATUS/1 @ activate, L1313: version 0x303082F
STATUS/1 @ activate, L1326: Activation successful
STATUS/1 @ verify, L244: Verify subscription successful.
STATUS/1 @ initGimbal, L890: Checking if gimbal is connected …
STATUS/1 @ startPackage, L350: Start package 0 result: 0.
STATUS/1 @ startPackage, L352: Package 0 info: freq=50, nTopics=1.
STATUS/1 @ removePackage, L468: Remove package 0 successful.
STATUS/1 @ initGimbal, L934: Gimbal not mounted!
[ INFO] [1675677533.046816131]: drone activated
[ INFO] [1675677533.060621911]: Use data subscription to get telemetry data!
[ INFO] [1675677533.060638745]: align_time_with_FC set to false. We will use ros time to time stamp messages!
STATUS/1 @ verify, L244: Verify subscription successful.
STATUS/1 @ startPackage, L350: Start package 2 result: 0.
STATUS/1 @ startPackage, L352: Package 2 info: freq=100, nTopics=3.
STATUS/1 @ startPackage, L350: Start package 1 result: 0.
STATUS/1 @ startPackage, L352: Package 1 info: freq=50, nTopics=14.
STATUS/1 @ startPackage, L350: Start package 0 result: 0.
STATUS/1 @ startPackage, L352: Package 0 info: freq=5, nTopics=1.
STATUS/1 @ removePackage, L468: Remove package 0 successful.
STATUS/1 @ startPackage, L350: Start package 0 result: 0.
STATUS/1 @ startPackage, L352: Package 0 info: freq=5, nTopics=12.
STATUS/1 @ startPackage, L350: Start package 3 result: 0.
STATUS/1 @ startPackage, L352: Package 3 info: freq=400, nTopics=1.

运行成功!

并且可以通过日志输出的信息看到订阅了很多的topic
这里总结下:

  • 400hz的1个
  • 100hz的3个
  • 50hz的14个
  • 5hz的1个和12个

订阅的初始功能在 dji_sdk_node.cpp
例如

  std::vector<Telemetry::TopicName> topicList5hz;
  topicList5hz.push_back(Telemetry::TOPIC_GPS_DATE);
  topicList5hz.push_back(Telemetry::TOPIC_GPS_TIME);
  topicList5hz.push_back(Telemetry::TOPIC_GPS_POSITION);
  topicList5hz.push_back(Telemetry::TOPIC_GPS_VELOCITY);
  topicList5hz.push_back(Telemetry::TOPIC_GPS_DETAILS);
  topicList5hz.push_back(Telemetry::TOPIC_BATTERY_INFO);

之后可以根据使用情况,将没有用到的信息关闭,或者减少频率。减少通信和计算压力。

默认的ROS topic 有
大疆osdk,无人机,无人机,DJI,SDK,ROS文章来源地址https://www.toymoban.com/news/detail-635300.html

到了这里,关于搭建DJI 无人机Onboard SDK ROS开发环境及测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ROS&GAZEBO】多旋翼无人机仿真(一)——搭建仿真环境

    【ROSGAZEBO】多旋翼无人机仿真(一)——搭建仿真环境 【ROSGAZEBO】多旋翼无人机仿真(二)——基于rotors的仿真 【ROSGAZEBO】多旋翼无人机仿真(三)——自定义无人机模型 【ROSGAZEBO】多旋翼无人机仿真(四)——探索控制器原理 【ROSGAZEBO】多旋翼无人机仿真(五)——位置

    2023年04月17日
    浏览(46)
  • 【ROS+gazebo】无人机开发一:安装ros+gazebo+创建并初始化ros工作空间

    Hello,大家好!最近由于课题需要开始摸索ros+gazebo内容,主要做多无人机的协同仿真,准备写成一个系列,想要学习的朋友可以订阅我的频道。 我的电脑配置:ubuntu20.04 目标安装:ROS noetic版本+gazebo11 好的,下面让我们一起开始吧! 先用几句话介绍一下,首先,gazebo 是仿真

    2024年02月13日
    浏览(28)
  • DJI RTK无人机采集后的文件分析:nav、bin、event、MRK文件

    NAV文件: NAV文件是导航数据文件。它们通常存储有关飞行路径、GPS坐标、高度和其他相关数据的信息。这些数据可用于图像的地理参照、飞行分析或故障排除。 EVENT文件: EVENT文件记录了飞行过程中发生的各种事件,如无人机何时起飞,何时拍摄到图像,或何时到达某个航点

    2024年02月16日
    浏览(69)
  • 0基础学习VR全景平台篇第137篇:720VR全景,DJI无人机遥控器调参

    上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 这节课以御2为例 介绍的是无人机调参 步骤一:下载DJI Go 4并注册账号 步骤二:拿下遥杆并装好,展开遥控天线。将无人机与遥控器相连,选择相应的连接线,将手机连接至遥控器上。 步骤三:启动DJI GO4 AP

    2024年01月21日
    浏览(34)
  • 快讯 | 大疆发布首款三摄航拍无人机DJI Mavic 3 Pro;文心一言推出内测专用独立App

    地平线人事大调整:引入芯片研发负责人,联创将被派驻合资公司 文心一言推出内测专用独立App 空地机器人值守在雪域高原 大疆发布首款三摄航拍无人机DJI Mavic 3 Pro,航拍正式进入多焦段时代 OpenAI称将在未来几个月推出ChatGPT企业版订阅服务 米哈游和《星穹铁道》团队已开

    2024年02月15日
    浏览(27)
  • (无人机方向)ros小白之键盘控制无人机(终端方式)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ubuntu 18.04 pycharm ros melodic 做一个在终端中键盘输入指令,控制飞机起飞以及进入offbaord File-Settings-Project Interpreter-右边小齿轮Show All-选中正在使用的python 点击右边最下面的图标,打开Interpreter Path 添加/

    2024年02月15日
    浏览(29)
  • 超维空间S2无人机使用说明书——61、ROS无人机4G远程控制

    一、4G通信方案 我们的4G通信主要通过两种方式实现,一种是使用终端模拟器,比如Xshell、putty,另一种是使用远程软件,如nomachine。具体使用教程如下:机载电脑的相关环境已经配置完成,直接使用即可。 二、检查指示灯是否正常 出现两个蓝色灯,一个慢闪,表明当前网络

    2024年01月21日
    浏览(53)
  • 超维空间M1无人机使用说明书——61、ROS无人机物体识别与精准投放

    一、视频演示: 二、源代码下载链接 三、使用说明 1、启动二维码识别与降落程序 未出现红色报错,表明程序运行正常 2、launch文件详解 launch文件启动了四个节点,节点作用如下

    2024年02月01日
    浏览(41)
  • 超维空间M1无人机使用说明书——41、ROS无人机使用yolo进行物体识别

    一、启动darknet_ros物体识别 当终端无报错出现以上界面,表示物体识别正常运行 1、bringup_darknet.launch文件分别启动了USB摄像头和darknet_ros节点,其中摄像头节点主要是发布图像话题,提供给darknet_ros节点订阅,相反,darknet_ros订阅图像话题,根据订阅到的图像数据进行识别处理

    2024年01月22日
    浏览(36)
  • 从ROS1到ROS2无人机编程实战指南

    亲爱的读者们,我今天非常荣幸地向大家推荐一本本人的全新力作——《从ROS1到ROS2无人机编程实战指南》。这本书站在初学者的角度,从入门到进阶,再到实战,循序渐进,是学习ROS1和ROS2的最佳选择。如今已在全国范围内上市,购书即可享受次日达的快捷服务! 本书的创

    2024年02月10日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包