DJI 无人机 Onboard SDK ROS 功能包demo运行
DJI 无人机 Onboard SDK ROS 功能包demo运行
- demo功能
- 准备测试环境
- 运行 dji sdk 节点
- 运行 demo 节点
- 自动飞行任务
- 航点自动飞行
- 兴趣点环绕自动飞行
- 飞行控制
- 本地坐标位置控制
搭建好 Onboard SDK ROS 的开发环境后,功能包自身具备一些写好的demo功能案例

dji sdk 的节点在dji_sdk文件夹中
demo的功能案例则在dji_sdk_demo文件夹中
demo功能
具体的demo功能可以查看文件夹内的CMakeLists.txt文件
通过名称可以看出其功能,总结如下:
demo_mission 自动飞行任务
add_executable(demo_missionsrc/demo_mission.cpp)
demo_camera_gimbal 相机云台控制
add_executable(demo_camera_gimbalsrc/demo_camera_gimbal.cpp )
demo_mfio 多功能IO控制
add_executable(demo_mfiosrc/demo_mfio.cpp)
demo_flight_control 飞行控制
add_executable(demo_flight_controlsrc/demo_flight_control.cpp)
demo_mobile_comm msdk通信
add_executable(demo_mobile_commsrc/demo_mobile_comm.cpp)
demo_payload_comm psdk通信
add_executable(demo_payload_commsrc/demo_payload_comm.cpp)
demo_local_position_control 本地坐标位置控制
add_executable(demo_local_position_controlsrc/demo_local_position_control.cpp)
demo_time_sync 时间硬件同步功能
add_executable(demo_time_syncsrc/demo_time_sync.cpp)
demo_stereo_depth_perception 深度相机感知
add_executable(demo_stereo_depth_perceptionsrc/demo_stereo_depth_perception.cpp${STEREO_UTILITY_SRC_FILE} )
demo_stereo_object_depth_perception 深度相机目标感知
add_executable(demo_stereo_object_depth_perceptionsrc/demo_stereo_object_depth_perception.cpp${STEREO_UTILITY_SRC_FILE} )
在模拟器环境下,可以测试
- 自动飞行任务
- 飞行控制
- 本地坐标位置控制
准备测试环境
连接A3飞控usb口至电脑,打开 DJI Assistan2
开启模拟器


运行 dji sdk 节点
roslaunch dji_sdk sdk.launch
终端输出如下:
节点运行信息
NODES
/
dji_sdk (dji_sdk/dji_sdk_node)
auto-starting new master
process[master]: started with pid [5812]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to 93cf1500-a697-11ed-bf42-df9474278202
process[rosout-1]: started with pid [5822]
started core service [/rosout]
process[dji_sdk-2]: started with pid [5825]
开启串口
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] [1675740553.755751972]: drone activated
[ INFO] [1675740553.778064095]: Use data subscription to get telemetry data!
[ INFO] [1675740553.778079475]: 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.
运行 demo 节点
自动飞行任务
rosrun dji_sdk_demo demo_mission
直接运行终端出现如下, 激活成功并且成功获得SDK的控制权
需要输入命令,选择运行的任务,有效命令为a和b,
- a 为 航点任务,无人机会生成几个航点,然后完成自动飞行,结束后在最后一个航点处悬停
- b 为 兴趣点任务,无人机生成一个兴趣点,然后绕该点环绕飞行
[ INFO] [1675740815.554077620]: Activated successfully
[ INFO] [1675740815.566534458]: Obtain SDK control Authority successfully
| Available commands: |
| [a] Waypoint Mission |
| [b] Hotpoint Mission |
航点自动飞行
选择a后
会根据当前位置生成8个航点
a
[ INFO] [1675740828.523351999]: Creating Waypoints…
[ INFO] [1675740828.523385537]: Waypoint created at (LLA): 22.542813 113.958902 10.000000
[ INFO] [1675740828.523424518]: Uploading Waypoints…
[ INFO] [1675740828.523438455]: Waypoint created at (LLA): 22.542813 113.958902 10.000000
[ INFO] [1675740828.523454862]: Waypoint created at (LLA): 22.542842 113.958952 11.000000
[ INFO] [1675740828.523479041]: Waypoint created at (LLA): 22.542813 113.959001 12.000000
[ INFO] [1675740828.523494546]: Waypoint created at (LLA): 22.542756 113.959001 13.000000
[ INFO] [1675740828.523507912]: Waypoint created at (LLA): 22.542727 113.958952 14.000000
[ INFO] [1675740828.523520406]: Waypoint created at (LLA): 22.542756 113.958902 15.000000
[ INFO] [1675740828.523533197]: Waypoint created at (LLA): 22.542813 113.958902 10.000000
完成初始化航点任务
[ INFO] [1675740828.523546607]: Initializing Waypoint Mission…
航点上传成功
[ INFO] [1675740836.561940059]: Waypoint upload command sent successfully
开始自动航点飞行指令发送成功
[ INFO] [1675740836.566911899]: Mission start command sent successfully
模拟器上,无人机会自动解锁,然后起飞,并且完成设定航点的飞行任务,最终在最后一个航点悬停

兴趣点环绕自动飞行
选择b后,会执行兴趣点环绕自动飞行任务
b
自动起飞,无人机自动解锁,然后飞至1.2m
[ INFO] [1675742099.443036182]: Takeoff command sent successfully
无人机先升至环绕高度,以默认环绕角速度15deg/s 进行位置绕飞,绕飞5s
[ INFO] [1675742114.443178988]: Start with default rotation rate: 15 deg/s
[ INFO] [1675742114.448505426]: Mission start command sent successfully
[ INFO] [1675742139.448688192]: Pause for 5s
任务暂停与继续
[ INFO] [1675742139.451349922]: Mission pause command sent successfully
[ INFO] [1675742144.451458193]: Resume
[ INFO] [1675742144.456389352]: Mission resume command sent successfully
更新绕飞半径
[ INFO] [1675742154.456525822]: Update radius to 1.5x: new radius = 15.000000
[ INFO] [1675742164.457708017]: Hotpoint update radius command sent successfully
更新绕飞速度
[ INFO] [1675742174.457859734]: Update hotpoint rotation rate: new rate = 5 deg/s
[ INFO] [1675742184.459081801]: Hotpoint update yaw rate command sent successfully
绕飞停止
[ INFO] [1675742194.459170476]: Stop
[ INFO] [1675742194.462806962]: Mission stop command sent successfully
降落
[ INFO] [1675742194.462819562]: land
[ INFO] [1675742194.467372616]: Land command sent successfully


飞行控制
rosrun dji_sdk_demo demo_flight_control
无人机自动起飞,然后飞一个矩形
[ INFO] [1675743016.199742227]: A3/N3 taking off!
[ INFO] [1675743016.415844652]: Motor Spinning …
[ INFO] [1675743020.636488163]: Ascending…
[ INFO] [1675743022.278058330]: Successful takeoff!
飞行路线1, 仅截取开头一段
[ INFO] [1675743022.278089899]: ##### Start route 1 …
[ INFO] [1675743023.130819687]: -----x=-0.012091, y=0.096899, z=0.262428, yaw=1.040941 …
[ INFO] [1675743023.130845799]: +++++dx=0.012091, dy=19.903101, dz=2.737572, dyaw=-0.006256 …
[ INFO] [1675743023.950986554]: -----x=-0.034531, y=0.727045, z=0.875107, yaw=1.055536 …
[ INFO] [1675743023.951012451]: +++++dx=0.034531, dy=19.272955, dz=2.124893, dyaw=0.008338 …
[ INFO] [1675743024.770909261]: -----x=-0.017862, y=1.465063, z=1.378654, yaw=1.043764 …
[ INFO] [1675743024.770938054]: +++++dx=0.017862, dy=18.534937, dz=1.621346, dyaw=-0.003434 …
[ INFO] [1675743025.590800226]: -----x=-0.000521, y=2.222384, z=1.749954, yaw=1.045671 …
路线1,开始刹车
[ INFO] [1675743050.370302330]: ##### Route 1 start break…
[ INFO] [1675743050.570487046]: -----x=0.000151, y=19.593961, z=2.999557, yaw=1.047178 …
[ INFO] [1675743050.570512280]: +++++dx=-0.000151, dy=0.406039, dz=0.000443, dyaw=-0.000020 …
[ INFO] [1675743051.390515574]: -----x=0.000191, y=19.561036, z=2.999557, yaw=1.047188 …
[ INFO] [1675743051.390541700]: +++++dx=-0.000191, dy=0.438964, dz=0.000443, dyaw=-0.000009 …
路线1,结束
[ INFO] [1675743051.930245287]: ##### Route 1 finished…
后面重复路线2、路线3、路线4的打印信息

本地坐标位置控制
起飞,完成两个目标点的飞行
[ INFO] [1675743826.255594594]: A3/N3 taking off!
[ INFO] [1675743826.512051941]: Motor Spinning …
[ INFO] [1675743830.693925672]: Ascending…
[ INFO] [1675743832.325256741]: Successful takeoff!
[ INFO] [1675743858.244149614]: 1 of 2 target(s) complete
[ INFO] [1675743885.684112340]: 2 of 2 target(s) complete

相关文章:
DJI 无人机 Onboard SDK ROS 功能包demo运行
DJI 无人机 Onboard SDK ROS 功能包demo运行demo功能准备测试环境运行 dji sdk 节点运行 demo 节点自动飞行任务航点自动飞行兴趣点环绕自动飞行飞行控制本地坐标位置控制搭建好 Onboard SDK ROS 的开发环境后,功能包自身具备一些写好的demo功能案例 dji sdk 的节点…...
揭开JavaWeb中Cookie与Session的神秘面纱
文章目录1,会话跟踪技术的概述2,Cookie2.1 Cookie的基本使用2.2 Cookie的原理分析2.3 Cookie的使用细节2.3.1 Cookie的存活时间2.3.2 Cookie存储中文3,Session3.1 Session的基本使用3.2 Session的原理分析3.3 Session的使用细节3.3.1 Session…...
2023-02-20 Qt 5.13.1 + OpenCV 4.5.4环境编译
引言 OpenCV图像处理在Qt中编译记录。 之前一直是在Python中使用OpenCV,Python中使用某些模块使用pip工具很容易将对应的模块安装在系统中。根据项目需求项目都要转移在国产化中使用,为了适应国产化需求,将代码转移到Qt开发环境中,…...
波次分拣系统
一、系统架构: v1.2基站软件管理系统仓库标签v1.4仓库标签二、系统简介: 标签系统主要由标签服务器,基站,电子标签前三部分组成,操作界面借助于京东仓库已有的作业电脑来实现,标签服务器与WMS进行数据对接。…...
【Servlet篇】Request请求转发详细解读
文章目录1. 前言2. 实战案例3. 特点1. 前言 请求转发是一种在服务器内部的资源跳转方式,如图: 上图的大致过程为,浏览器发送请求给服务器,服务器中 a 资源接收到请求,资源 a 处理完请求后将请求发送给资源 bÿ…...
vector
目录 vector的成员函数: at: 编辑 size: assign:赋值 insert find? erase swap shrink_to_fit 编辑 vector的模拟实现: vector的框架: 构造函数: size和capacity r…...
LeetCode——104. 二叉树的最大深度
一、题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/maximum…...
漫画 | Python是一门烂语言?
这个电脑的主人是个程序员,他相继学习了C、Java、Python、Go, 但是似乎总是停留在Hello World的水平。 每天晚上,夜深人静的时候,这些Hello World程序都会热火朝天地聊天但是,这一天发生了可怕的事情随着各个Hello wor…...
2023.2 新方案 java代码混淆 java加密 字符串加密
Java字节码可以反编译,特别是创业公司,很好的项目很容易被别人破解反编译,造成很严重的损失,所以本混淆方案能很好的保护源码,而且在不断迭代,增强混淆效果,异常问题处理,达到保护项目的目的: 本次升级包括: 2023年02年19日 : ht-confusion-project-1.8…...
Swift 周报 第二十三期
前言 本期是 Swift 编辑组自主整理周报的第十四期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。 欢迎投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋友一起加入周报整理。 勇敢是即便知道好结局不会每每降临在…...
android系统屏幕旋转角度,应用界面横竖屏,设备旋转角度,三者的区别以及使用。
注意区分以下三种概念的区别!!!。以及使用这三种方式判断横竖屏的方式。系统屏幕旋转角度fun getSystemRotation(): Int {val angle (getSystemService(WINDOW_SERVICE) as WindowManager).defaultDisplay.rotation//系统屏幕旋转的角度值re…...
【华为云-开发者专属集市】DevCloud+ECS、MySQL搭建WordPress
文章目录AppBazaar官网选择与购买项目项目概况操作过程购买DevCloud服务创建项目添加制品库应用部署购买ECS添加部署模板并执行任务故障排除安装及访问WordPress登录网站管理后台访问网站完善部署模板资源释放使用总结AppBazaar官网 首先,我们来到AppBazaar的官网&…...
Milvus 群星闪耀时|又一个小目标达成 :社区正式突破 15,000 星!
如果把 Milvus 看作开源世界中的一束微光,那用户便是无垠宇宙中点点闪烁的星光。用户每一次点亮 star 之时,Milvus 就会迸发出更加耀眼的光芒。不知不觉,已有数以万计的 star 为 Milvus 而亮。2022 年 4 月,Milvus 在 GitHub 的 …...
Qt信号与槽使用方法总结
前言 在图形界面编程中QT是为首选,组件之间如何实现通信是核心的技术内容。Qt 使用了信号与槽的机制,非常的高效、简单、易学,方便开发者的使用。本文详细的介绍了Qt 当中信号与槽的概念,并演示了各种信号与槽的连接方式。 什么…...
SpringCloud alibaba-Sentinel服务降级策略
文章目录RT:异常比例:异常数:RT: 平均响应时间 (DEGRADE_GRADE_RT):当 1s 内持续进入 N 个请求,对应时刻的平均响应时间(秒级)均超过阈值(count,以 ms 为单位…...
python常用函数——random()函数
random() 返回随机生成的一个实数,范围在[0,1)之间 语法如下: import random random.random() # 注意:random()是不能直接访问的,需要导入random包,然后通过random静态对象调用 # 参数: 无 # 返回值 返回随…...
PX4之启动脚本
PX4通过rcS脚本来设定需要启动的程序,比如设备驱动、控制模块、数据通信等。rcS脚本在项目中的文件位置 ROMFS/px4fmu_common/rcS 对应硬件平台固件上的位置 /etc/init.d/rcS 启动脚本流程如下 #!/bin/sh # PX4FMU startup script. # # 一些注释 ## 设置默认参…...
Java零基础入门到精通(持续更新中)
打开CMD命令窗口 WINR输入cmd 常用cmd命令代码 切换磁盘 E: 回车即可切换到e盘查看当前路径下的所有内容 dir进入目录 cd test回退到上一级目录 cd..进入多级目录 cd test\index\aaa回退到磁盘目录 cd \清屏 cls关闭命令行窗口 exit小例子:使用命令行窗口…...
杂七杂八(12):Bilibili视频缓存 m4s音视频合并 shell脚本
视频目录结构如下: 267132000/ 267132000/c_1015740000/ 267132000/c_1015740000/entry.json 267132000/c_1015740000/80/ 267132000/c_1015740000/80/audio.m4s 267132000/c_1015740000/80/video.m4s267132000/c_1015740011/ 267132000/c_1015740011/entry.json 2…...
Qt 某光谱仪程序开发
某光谱仪程序开发 文章目录某光谱仪程序开发摘要安装驱动注册COM组件导出.h和.cpp在Qt 中添加源文件开发打包程序关键字: Demo、 Qt、 COM、 dumpcpp、 C摘要 今天接到一个临时小任务,写一个的项目子模块的Demo,以供和专家们交流一下项目技…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
