新版本大疆上云API指令飞行(drc)模式通讯搭建思路

news/2024/9/24 10:35:10/

一、大疆上云API mqtt官方通讯指导

1.1drc链路

1.2mqtt交互时序图

 

二、自行搭建mqtt说明

2.1工具:用emqx搭建mqtt服务器,mqttx作为客户端测试工具

2.2端口说明:1883,普通mqtt消息端口,8083,ws通信协议端口。8883,mqtts端口。一般用1883和8083端口就足够了。

三、drc模式进入

3.1调用drc_enter的时候会创建一个mqtt客户端用户,自动在机场或者遥控器端登录(千万不要自行去登录这个账户,不然会把机场或者遥控器挤下面)。

3.2写一个定时器每隔10秒发送一次心跳,不然drc链路会自动断开,在进入drc模式时开始定时发送心跳,推出时结束心跳发送。

package com.dji.sample.pilotMqtt.service.Impl;
//心跳接口
import com.dji.sample.manage.model.dto.DeviceDTO;
import com.dji.sample.manage.service.IDeviceService;
import com.dji.sample.pilotMqtt.model.entity.GatewaySn;
import com.dji.sample.pilotMqtt.model.entity.XinTiaoEntity;
import com.dji.sample.pilotMqtt.service.HeartbeatService;
import com.dji.sdk.mqtt.drc.DrcDownPublish;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.scheduling.annotation.Scheduled;import javax.annotation.Resource;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean;
@Service
public class HeartbeatServiceImpl implements HeartbeatService {@Resourceprivate DrcDownPublish drcDownPublish;//设备是否在线查询@Autowiredprivate IDeviceService deviceService;//控制开关private final AtomicBoolean running = new AtomicBoolean(false);//遥控器编码private GatewaySn gatewaySn;//无人机编码private String deviceSn;private String method;//开始发送心跳@Overridepublic void start(GatewaySn gatewaySn,String deviceSn,String method) {this.gatewaySn =gatewaySn;this.deviceSn = deviceSn;this.method = method;running.set(true);}//停止发送心跳@Overridepublic void stop() {running.set(false);}//发送心跳@Override@Scheduled(fixedRate = 10000) // 每10秒调用一次public void sendHeartbeat() {//校验设备是否在线Optional<DeviceDTO> deviceOpt = deviceService.getDeviceBySn(deviceSn);if(!deviceOpt.get().getStatus()){stop();}if (running.get()) {// 调用心跳发送接口XinTiaoEntity xinTiaoEntity = new XinTiaoEntity();long currentTimeMillis = System.currentTimeMillis();int currentTimeStamp = (int) currentTimeMillis;xinTiaoEntity.setTimestamp(currentTimeStamp);drcDownPublish.publish(gatewaySn.getGatewaySn(),method,xinTiaoEntity);System.out.println("心跳发送成功");}}
}

3.3编写drc下发指令控制无人机

四、实现说明

前后端均能实现控制无人机的接口,前端延迟小一些,后端安全一些,主要看需求来选取实现方式。该控制方式有一些向ros话题控制。


http://www.ppmy.cn/news/1529774.html

相关文章

路由基础--路由引入

路由引入的主要作用是实现路由信息在不同路由协议之间的传递和学习。在大型企业网络中&#xff0c;多种路由协议共存是常态&#xff0c;为了实现全网互通&#xff0c;需要通过路由引入来传递路由信息。此外&#xff0c;执行路由引入时还可以部署路由控制&#xff0c;从而实现对…

Java项目实战II基于Java+Spring Boot+MySQL的读书笔记共享平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在信息爆炸…

浅谈spring 后端项目配置logback日志

日志 Java boy 后端项目日志一般用 logback or Log4j & Log4j2,spring 默认集成logback,本文主要以logback 展开例子说明。 对于日志系统有什么样的需求&#xff1f; 1、本地环境需要打印Console日志。 2、测试环境最好实时打印日志。 3、生产环境打印日志不要阻塞系统&am…

Mysql删库跑路,如何恢复数据?

问题 删库跑路&#xff0c;数据还能恢复吗&#xff1f; 我们经常听说某某被领导训斥了&#xff0c;对领导心生痛恨&#xff0c;然后登录 Mysql 删库跑路。对于闲聊中经常听说过的一个段子&#xff0c;在现实生活中是否真的发生过&#xff0c;如果发生了&#xff0c;我们该如何解…

Android OpenGLES2.0开发(一):艰难的开始

生而为人&#xff0c;本质上&#xff0c;都是孤独的&#xff01; 引言 我一直觉得OpenGL ES是一块硬骨头&#xff0c;每次用到GLSurfaceView作为Camera的预览视图时&#xff0c;总是去网上找现成的代码。CtrlC和CtrlV之后总有一种沾沾自喜的感觉&#xff0c;但是你要让我改里面…

决策树与随机森林在机器学习中的应用

决策树与随机森林在机器学习中的应用 在机器学习领域&#xff0c;决策树&#xff08;Decision Tree&#xff09;和随机森林&#xff08;Random Forest&#xff09;是两种非常流行且强大的分类和回归算法。它们通过模拟人类决策过程&#xff0c;将复杂的数据集分割成易于理解和…

ES6中JS类实现的解读

在ES5及以前版本&#xff0c;是没有真正意义上类的概念&#xff0c;只是通过构造函数来模拟类的运用。尽管JS脚本语言是一门解释型弱语言&#xff0c;对类的需求意义不大&#xff0c;但ES6还是引入类的实现&#xff0c;让JS真正够上面向对象编程门槛&#xff0c;尽管对类的功能…

Elastic 的 OpenTelemetry PHP 发行版简介

作者&#xff1a;Pawel Filipczak 宣布 OpenTelemetry PHP 的 Elastic 发行版的第一个 alpha 版本。在本篇博文中了解使用 OpenTelemetry 来检测 PHP 应用程序是多么简单。 我们很高兴推出 OpenTelemetry PHP 的 Elastic Distribution 的第一个 alpha 版本。在这篇文章中&…