DJI 无人机 Onboard SDK ROS 功能包demo运行

news2024/12/27 0:41:10

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_mission
        src/demo_mission.cpp)

demo_camera_gimbal 相机云台控制

add_executable(demo_camera_gimbal
        src/demo_camera_gimbal.cpp )

demo_mfio 多功能IO控制

add_executable(demo_mfio
        src/demo_mfio.cpp)

demo_flight_control 飞行控制

add_executable(demo_flight_control
        src/demo_flight_control.cpp)

demo_mobile_comm msdk通信

add_executable(demo_mobile_comm
        src/demo_mobile_comm.cpp)

demo_payload_comm psdk通信

add_executable(demo_payload_comm
        src/demo_payload_comm.cpp)

demo_local_position_control 本地坐标位置控制

add_executable(demo_local_position_control
        src/demo_local_position_control.cpp)

demo_time_sync 时间硬件同步功能

add_executable(demo_time_sync
        src/demo_time_sync.cpp)

demo_stereo_depth_perception 深度相机感知

    add_executable(demo_stereo_depth_perception
            src/demo_stereo_depth_perception.cpp
            ${STEREO_UTILITY_SRC_FILE} )

demo_stereo_object_depth_perception 深度相机目标感知

    add_executable(demo_stereo_object_depth_perception
            src/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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/360598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】

使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12201821.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 猴子爬山 | 华为OD机…

特征工程-定义+意义+安装scikit-learn+数据的特征抽取(字典、文本)

目录 数据中对特征的处理 特征工程定义 特征工程意义 安装scikit-learn 数据的特征抽取 字典特征抽取 DictVectorizer语法 文本特征抽取 CountVectorizer语法 TfidfVectorizer语法 数据中对特征的处理 pandas:一个数据读取非常方便以及基础的处理格式的工具 sklear…

Spring Boot + Vue3 前后端分离 实战 wiki 知识库系统<一>---Spring Boot项目搭建

前言: 接下来又得被迫开启新的一门课程的学习了,上半年末尾淘汰又即将拉开序幕【已经记不清经历过多少次考试了】,需要去学习其它领域的技术作为考试内容,我选了spring boot相关技术,所以。。总之作为男人&#xff0c…

Linux之网络流量监控工具ntopng YUM安装

一、ntopng简介 Ntop是一种监控网络流量工具,用ntop显示网络的使用情况比其他一些网络管理软件更加直观、详细。Ntop甚至可以列出每个节点计算机的网络带宽利用率。他是一个灵活的、功能齐全的,用来监控和解决局域网问题的工具;尤其当ntop与n…

【Spring Cloud Alibaba】003-Nacos 概述与单机搭建

【Spring Cloud Alibaba】003-Nacos 概述与单机搭建 文章目录【Spring Cloud Alibaba】003-Nacos 概述与单机搭建一、Nacos 概述0、新技术学习思路推荐1、什么是 Nacos2、架构图架构图架构图信息二、Nacos 单机搭建1、下载与启动下载地址编辑 startup.cmd 文件下面对两种模式的…

“王炸”产品+集资2000万美元,D-Wave在赌什么?

(图片来源:网络)D-Wave是量子计算系统、软件和服务的领导者,也是全球量子计算机商业供应商。近日,它发布了一系列的最新产品和业务,展示出其在推动量子计算商业化方面的强劲势头。随着全球越来越多的企业将…

C++入门:内联函数、auto关键字、基于范围for循环及指针空值nullptr

目录 一. 内联函数 1.1 内联函数的概念 1.2 内联函数的特性 1.3 内联函数和宏的优缺点对比 二. auto关键字(C11) 2.1 auto的功能 2.2 auto在使用时的注意事项 三. 基于范围的for循环(C11) 四. 指针空值nullptr&#xff08…

开发日记-lombok

开发日记-lombok环境问题解决方案:1 Data注解失效 无法正常生成 get和set方法2 RequiredArgsConstructor(onConstructor _(Lazy)) 符号_无法识别环境 idea2020.1lombok1.18.24jdk1.8 问题 Data注解失效 无法正常生成 get和set方法RequiredArgsConstructor(onCons…

机器学习:学习k-近邻(KNN)模型建立、使用和评价

机器学习:学习k-近邻(KNN)模型建立、使用和评价 文章目录机器学习:学习k-近邻(KNN)模型建立、使用和评价一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.数据读取2.数据理解3.数据准备4.算…

Talk预告 | 悉尼科技大学澳大利亚人工智能研究所讲师方震:广义分布外检测的学习理论

本期为TechBeat人工智能社区第476期线上Talk! 北京时间2月22日(周三)20:00,悉尼科技大学澳大利亚人工智能研究所讲师——方震的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “广义分布外检测的学习理论”,届时将…

信息加密技术

介绍信息加密 信息加密是实现数据保密性的手段。 信息加密(Encryption)是将明文信息转换为密文信息,使之在缺少特殊信息时不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。 现…

Vue — 详解mixins混入使用

前言 当我们的项目越来越大,我们会发现组件之间可能存在很多相似的功能,你在一遍又一遍的复制粘贴相同的代码段(data,method,watch、mounted等),如果我们在每个组件中去重复定义这些属性和方法会…

看了这份Java高级笔试宝典覆盖近3年Java笔试中98%高频知识点,反打面试官

首先声明: 本书覆盖了近3年程序员面试笔试中超过98%Java高频知识点,当你细细品读完本书后,面试都是小问题。 一书在手/工作不愁 记住重点,考试要考 前言 程序员求职始终是当前社会的一个热点,而市面上有很多关于程…

ROS | 键盘控制

文章目录 概述一、定义介绍二、功能作用三、使用方法四、实例演示概述 在研发机器人/自动驾驶时,可能没有遥控器,又或者是仿真环境等情况,常常需要通过键盘控制小车。 一、定义介绍 本节详细讲述了如何通过键盘来控制ROS小车,附有全套源码。 二、功能作用 本程序通过向RO…

Netty (三):进阶

文章目录1. 粘包与半包1.1 粘包现象1.2 半包现象1.3 现象分析1.4 解决方案方法1,短链接方法2,固定长度方法3,固定分隔符方法4,预设长度2. 协议设计与解析2.1 为什么需要协议?2.2 redis 协议举例2.3 http 协议举例2.4 自…

超级完整 的 Maven 讲解 以及私服搭建

第一章 Maven 简介 1.1、Maven 概述 Maven 是一款基于 Java 平台的项目管理和整合工具,它将项目的开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需要做一些简单的配置,Maven 就可以自动完成项目的编译、测试、打包、发…

Linux系统点亮LED

目录应用层操控硬件的两种方式sysfs 文件系统sysfs 与/sys总结标准接口与非标准接口LED 硬件控制方式编写LED 应用程序在开发板上测试对于一款学习型开发板来说,永远都绕不开LED 这个小小的设备,基本上每块板子都至少会有一颗 LED 小灯,对于我…

Allegro无法打开10度走线命令的原因和解决办法

Allegro无法打开10度走线命令的原因和解决办法 做PCB设计的时候,10度走线也是较为常见的设计方式,Allegro支持10度走线,如下图 需要10度走线的时候,Options只需要勾选Route offset命令即可 但有时options处会看不到10度走线的命令,如下图

从0到1一步一步玩转openEuler--20 openEuler 管理服务-服务管理

文章目录20 管理系统服务20.1 sysvinit命令和systemd命令20.2 显示所有当前服务20.3 显示服务状态20.4 运行服务20.5 关闭服务20.6 重启服务20.7 启用服务20.8 禁用服务20 管理系统服务 systemd提供systemctl命令来运行、关闭、重启、显示、启用/禁用系统服务。 20.1 sysvini…

开源社首届正式成员大会暨2022年度总结会圆满召开

开源社KAIYUANSHE近期微信公众号订阅功能做调整啦!没有被星标的账号在信息流里可能不显示大图了!快星标⭐我们,就可以及时看到发布的文章啦!STEP01 点击右上角标志STEP02 点击【设为星标】开源社 2023 年度首届全体正式成员大会于…