欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 大疆上云api开发

大疆上云api开发

2024/11/29 22:56:27 来源:https://blog.csdn.net/qq_48403611/article/details/143968926  浏览:    关键词:大疆上云api开发

目前很多公司希望使用上云api开发自己的无人机平台,但是官网资料不是特别全,下面浅谈一下本人开发过程中遇到的一系列问题。
本人使用机场为大疆机场2,飞机为M3TD,纯内网使用

部署

链接: 上云api代码.

  • 首先从github上面拉去代码
    上云api代码github.
    后端使用maven,jdk17
    前端使用使用yarn下载依赖
  • 安装中间件
    emqx
$ docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0

对应代码修改:
后端

mqtt:# @see com.dji.sample.component.mqtt.model.MqttUseEnum# BASIC parameters are required.BASIC:protocol: MQTT # @see com.dji.sample.component.mqtt.model.MqttProtocolEnumhost: 127.0.0.1
#    host: 127.0.0.1port: 1883username: JavaServerpassword: 123456client-id: 123456# If the protocol is ws/wss, this value is required.path:# DRC控制链路DRC:# 示例代码在前端进行控制,需要返回给前端。默认使用ws连接protocol: WS # @see com.dji.sample.component.mqtt.model.MqttProtocolEnumhost: 127.0.0.1
#    host: 127.0.0.1port: 8083path: /mqttusername: JavaServerpassword: 123456

注意,两处都要修改,下面的ws是用于手动控制的关键
前端对应配置修改
在这里插入图片描述

mysql8.0
在这里插入图片描述
执行后端中的这个脚本就行
对应的后端配置文件

  # 数据库配置datasource:# druid数据源配置druid:# 数据源类型type: com.alibaba.druid.pool.DruidDataSource# 数据库驱动driver-class-name: com.mysql.cj.jdbc.Driver# 数据库连接地址url: jdbc:mysql://127.0.0.1:3306/cloud_sample?useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: 123456initial-size: 10min-idle: 10max-active: 20max-wait: 60000

redis
下载redis6即可,使用docker部署比较方便
对应的后端配置文件

  redis:host: 127.0.0.1port: 6379database: 2username: # if you enablepassword:lettuce:pool:max-active: 8max-idle: 8min-idle: 0

minio
如果要内网使用的话需要自己搭建存储服务,并且修改后端代码这部分

oss:enable: trueprovider: minioendpoint: http://127.0.0.1:9000# 以下内容需要去minio控制台自己创建access-key: secret-key: # minio控制台新建bucketbucket: cloud-bucketexpire: 3600region: us-east-1object-dir-prefix: wayline

ntp
如果要内网使用,需要自己搭建ntp服务器,这非常重要,要不然会导致执行航线的时候回报错,这个自己网上找一个相关服务搭建即可
对应的后端配置文件

ntp:server:host: 127.0.0.1port: 123

直播服务器
这算是搭建过程中比较难得一个点,关于内网使用的话,可以搭建zlmediakit服务或者srs服务
此外,现在大疆机场支持的推流为rtmp,webrtc和国标
对于zlmediakit服务,它的好处是可以推rtmp或者webrtc,然后拉去这两种,还可以拉去rsp的流,比如我们实现的ai识别就是,通过rtmp或者webrtc推流,然后在去zlmediakit里面拉去rtsp的六

对于srs服务,它的好处是可以很方便快捷的搭建,并且大疆demo里面直播用的就是srs的js,就不用额外去写直播画面播放的这个功能,zlmediakit的话就需要自己去改相关代码

docker搭建方式

CANDIDATE="192.168.1.10"
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 1990:1990 -p 8088:8088 \--env CANDIDATE=$CANDIDATE -p 8000:8000/udp \registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 ./objs/srs -c conf/https.docker.conf

此外,如果你们是可以接外网的环境,那么直接使用声网就行,就不需要额外搭建直播服务器,下面分别谈一下这几种推流在代码中是如何进行配置的

rtmp
后端配置文件

    # RTMP  Note: This IP is the address of the streaming server. If you want to see livestream on web page, you need to convert the RTMP stream to WebRTC stream.rtmp:url: rtmp://192.168.4.20/live/

前端配置文件

  rtmpURL: 'rtmp://192.168.4.20/live/', // Example: 'rtmp://192.168.1.1/live/'

webrtc
注意,这个配置对应的是使用srs,并且使用webrtc推流的方式,这种推流可以使用大疆demo里面的播放页面播放出来

    whip:url: http://192.168.4.20:1985/rtc/v1/whip/?app=live&stream= 

这个配置对应的是使用zlmediakit,并且使用webrtc推流的方式,这种需要自己写播放页面

    # zlmediakit推流地址
#      url: http://192.168.4.20/index/api/whip?app=live&stream=

播放地址为:使用zl自带的控制台,输入这个播放连接

http://192.168.4.20/index/api/webrtc?app=live&stream=1581F6Q8D246DG2WE4-81-0-0&type=play

注意,stream为我无人机对应的sn码,你的可能会不同,需要去mq或者控制台查询到

在调试过程中发现,机场推rtmp的质量远远不如webrtc,所以建议大疆推流的时候使用webrtc协议

手柄配置
需要使用大疆手柄进行机场调试,使它切换到第三方云平台在这里插入图片描述
主要目的是让机场连接到你配置的mqtt网关

如果一切顺利的话,配置完上面这些信息就能跑起来了,下面谈一下调试过程中遇到的一些问题以及解决思路

问题

mq和后端能收到消息,但是机场飞机没有上线

请添加图片描述
去mq后台将机场客户端踢出

喊话器功能

无人机本身不支持喊话功能,需要挂载第三方的设备,我们使用的是成至MP20,需要自己根据接口进行开发
在这里插入图片描述

红外功能

无人机本身自带的红外是这样的

在这里插入图片描述
但是我们的ai识别盒子需要的红外是黑白画面,上云api暂时没有接口可以调红外的模式,需要使用司空2平台,更改红外镜头的相机参数,然后再回第三方平台开启
在这里插入图片描述

一键起飞

在这里插入图片描述
需要填入指定参数,海拔一定要比当前部署的机场的海拔高,要不然会失败

后端枚举类报错

调试过程中,我们用过大疆新版本的固件,然后就一直会报一些枚举类的错误,是因为新版本固件跟大疆1.10不匹配导致,最好使用1.10对应的固件版本,因为新版本消息体可能改过一些
在这里插入图片描述

固件一致性升级

如果你用上云api降低过固件的话,设备管理里面会提示固件的一致性升级,其实你如果没有使用到一些新的功能特性的话,这一致性升级是不用管它的
在这里插入图片描述

直播推流

大疆机场2最高支持推3路流,也就是仓内和仓外和无人机,一共三个镜头

航线

如果没有绘制航线需求的话,可以使用手柄或者司空2绘制航线,导入上云api使用

悬停功能

如果有涉及到航线飞行,飞行过程中自动悬停的话,可以使用航线暂停和航线恢复接口。比如我们的流程就涉及到ai识别-》悬停-》喊话-》取消悬停继续航线
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com