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

news/2024/4/26 4:05:51/文章来源:https://blog.csdn.net/qq_32761549/article/details/128913613

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口服务熔断方案

一.熔断方式1.中间件支持熔断2.支持节点级熔断2.支持url前缀匹配二.配置1.延迟方式expression "LatencyAtQuantileMS(50.0) > 100"//50%延迟超过100ms2.失败率方式expression "NetworkErrorRatio() > 0.30" //失败率超过30%3.组合方式expression …

Python学习-----文件操作(读写定位篇)

目录 前言: 1.打开文件 (open) 关闭文件(close) 2.文件的读取(文件变量名 f) (1)整体读取(read) (2)读取一行(readline) (3)读…

三次握手四次挥手详细解析面试常问

文章目录1.第2次握手传回了ACK,为什么还要传回SYN?2.断开连接-TCP 四次挥手3.为什么要四次挥手?4.为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?5.如果第二次挥手时服务器的 ACK 没有送达客户端&#x…

51-52 - 进程状态设计

---- 整理自狄泰软件唐佐林老师课程 文章目录1. 问题2. 进程状态设计2.1 任务生命周期2.2 任务的状态2.3 任务的生命周期与状态切换2.4 状态切换概要设计2.4.1 核心数据结构>内核队列2.4.2 KillTask() 实现思路2.4.3 整体实现规划2.4.4 编程实验:任务生命周期状态…

Axios二次封装和Api的解耦

目录 一、axios三种基本写法 二、axios的二次封装 三、Api的解耦 一、axios三种基本写法 1)get方法(是最简单的): 写法二: 2)post: 3)axios请求配置 默认是get请求,如…

蓝海创意云vLive虚拟直播亮相2023昆山元宇宙产品展览会

2月15日-19日,由中国计算机行业协会“元宇宙创见未来”2023元宇宙产品展览会在江苏昆山隆重召开,共吸引了省内外32家企业参展,展出近百款元宇宙产品或技术,涵盖芯片、显示、VR、AR等硬件设备,以及工业、文旅、娱乐、教…

IDEA性能优化设置(解决卡顿问题)修改内存

在我们日常使用IDEA进行开发时,可能会遇到许多卡顿的瞬间,明明我们的机器配置也不低啊?为什么就会一直卡顿呢? 原来这是因为IDEA软件在我们安装的时候就设置了默认的内存使用上限(通常很小),这就…

火山引擎数智平台 ByteHouse 入围稀土掘金《Top10 年度创新产品》

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,国内开发者技术社区稀土掘金发布「2022 稀土掘金引力榜」,旨在盘点 2022 年在数字化转型领域内最具影响力、创新力及潜质的个人、企业、…

ASP.NET MVC | 简介

目录 前提 1.教程 2.MVC 编程模式 最后 前提 在学习学过很多课程,但是最主要学的还是ASP.NET MVC这门课程,工作也是用的ASP.NET MVC,所以写一点ASP.NET MVC的东西,大家可以来看看,我自己不会的时候也不用找别的地方…

「TCG 规范解读」第8章 TPM工作组 TPM 1.2中 SHA1的使用

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

如何使用 ChatGPT 编写 SQL JOIN 查询

通过清晰的示例和解释,本文展示了 ChatGPT 如何简化和简化创建复杂 MySQL 查询的过程,使用户更容易与数据库交互并检索他们需要的数据。无论您是初学者还是经验丰富的开发人员,本文都提供了有关如何利用 ChatGPT 来增强您的 MySQL 查询编写技…

微信公众号抽奖怎么做_分享微信抽奖小程序制作的好处

在H5游戏中,抽奖是最受消费者喜爱的模式之一。将H5微信抽奖活动结合到营销中,可以带来意想不到的效果,带流量和曝光率,所以许多企业也会在做活动时添加上不同类型的H5微信抽奖活动。编辑那么,新手怎么搭建微信抽奖活动…

钓鱼网站+persistence植入后门程序+创建用户

本实验实现1: 利用MS14-064漏洞,会生成一个网址,诱导用户点击,打开后,会直接连接到发起攻击的主机上,即可攻击成功。 本实验实现2: 一旦入侵成功,则拿到控制目标主机的部分权限&…

【论文阅读】SSR-Net: 一个小型的 软分段回归网络 用于年龄估计

原始题目SSR-Net: A Compact Soft Stagewise Regression Network for Age Estimation中文名称SSR-Net: 一个小型的 软分段回归网络 用于年龄估计发表时间2018年7月13日平台IJCAI-18来源台湾中央研究院、国立台湾大学文章链接https://www.ijcai.org/proceedings/2018/0150.pdf开…

2023-02-20干活小计:

所以我今天的活开始了: In this paper, the authors target the problem of Multimodal Name Entity Recognition(MNER) as an improvement on NER(text only) The paper proposes a multimodal fusion based on a heterogeneous graph of texts and images to mak…

Renegade:基于MPC+Bulletproofs构建的anonymous DEX

1. 引言 白皮书见: Renegade Whitepaper: Protocol Specification, v0.6 开源代码见: https://github.com/renegade-fi/renegade(Renegade p2p网络每个节点的核心网络和密码逻辑)https://github.com/renegade-fi/mpc-bulletpr…

OpenShift 4 - 将 VMware 虚机迁移至 OpenShift Virtualization(视频)- 温迁移

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在支持 OpenShift 4.12 的 OpenShift 环境中验证 文章目录了解 Warm Migration为 VMware VM 配置 CBT用 Warm Migration 方式迁移 VMware VM创建 Migration plan执行 Migration plan演示视频了解 Warm Migr…

漫画 | Python是一门烂语言?

这个电脑的主人是个程序员,他相继学习了C、Java、Python、Go, 但是似乎总是停留在Hello World的水平。 每天晚上,夜深人静的时候,这些Hello World程序都会热火朝天地聊天但是,这一天发生了可怕的事情随着各个Hello wor…

小程序(十)签到业务流程分析

文章目录一、如何获取地理信息?二、如何判定某地区新冠疫情的风险等级?系统的人脸签到模块包含的功能非常丰富,不仅仅只有人脸识别的签到功能,而且还可以根据用户签到时候的地理定位,计算出该地区是 新冠疫情 的 高风险…

【可视化实战】Python 绘制出来的数据大屏真的太惊艳了

今天我们在进行一个Python数据可视化的实战练习,用到的模块叫做Panel,我们通过调用此模块来绘制动态可交互的图表以及数据大屏的制作。 而本地需要用到的数据集,可在kaggle上面获取 https://www.kaggle.com/datasets/rtatman/188-million-us…