大疆上云API连接遥控器和无人机

1、部署大疆上云API

关于大疆上云API的部署,可以看我写的另一篇文章,大疆上云API基于源码部署-CSDN博客。或者看官网上云API (dji.com),里面也有相关的部署教程。注意了,阅读本篇文章,需要看一下大疆上云API基于源码部署-CSDN博客,这篇文章。不然本文章提到的上云API后台管理界面,EMQX管理界面是什么可能都一头雾水。

关于如何连接我们自己部署的上云API

关于如何连接我们自己部署的上云API,大家可以看官网上云API (dji.com),官网有视频教程,建议先看一遍官网,然后再看以下这篇文章,这篇文章也是根据官网来进行学习的,只不过是记录了我在连接遥控器的这个过程中遇到的一些问题,方便我后面排查问题。

在这里插入图片描述
在这里插入图片描述

2、开启无人机和遥控器并连接自己部署的上云API

下面是遥控器的界面,打开 pilot 2,进入主页面,点击云服务进入。

在这里插入图片描述

屏幕像手机一样下拉,保证遥控器跟电脑连的是同一个WiFi或者热点!!!保证遥控器跟电脑连的是同一个WiFi或者热点!!!保证遥控器跟电脑连的是同一个WiFi或者热点!!!
在这里插入图片描述
点击类似云的那个图标
在这里插入图片描述
在这里插入图片描述

输入前端访问地址(默认地址:http://ip:8080/pilot-login ,此处“ip”需要替换为用户实际使用的ip地址。),点击右上角的“连接”按钮进入。
在这里插入图片描述
输入完成版之后,点击右上角的连接按钮。
在这里插入图片描述
连接成功之后,会进入一个登录界面,如果是源码部署,用户名和密码默认会帮我们填上的。直接点击几登录即可。
在这里插入图片描述
这段文字说明结合下面的一张图片看,如果主页面显示 Connected,说明已经登录成功,遥控器已经连接上 emqx 服务器,并且开始推送数据。现在demo 就已经跑起来了,你可以点击遥控器上的返回按钮返回主页面了,只要不点击右上角的 Log Out 按钮,你就仍然处于登录状态。当Test Group One中出现Connected。说明遥控器成功连接到我们部署的上云API了。

如果遥控器和无人机没有对频的情况下即只有遥控器没有无人机的情况下

如果出现device not connect说明遥控器没有连接无人机。也就是说无人机可能没开机。
在这里插入图片描述
电脑端,登录后台管理界面http://localhost:8080/project,然后在后台管理界面也可以看到无人机没有连接,遥控器连接上了。
在这里插入图片描述
在这里插入图片描述
回到遥控器,点击返回按钮,回到登录界面。然后,我们开启无人机,让遥控器和无人机拦截上。
在这里插入图片描述

如果遥控器和无人机已经对频好了的情况下

你已经可以在主页面看到工作空间的信息了,只要字体是深黑色,说明你依旧处于登录状态,遥控器以及飞机的数据会持续的推送中。如果想要退出工作空间,只需要再次点击进入,然后点击右上角的退出按钮就可以退出了,遥控器和飞机就不会再推送数据了。连接上遥控器之后,根据下面的图片步骤,重新进入登录界面。
在这里插入图片描述
因为没有点击退出登录,所以上面图片那里直接点击的时候,就直接省去了登录步骤了,能够直接进入下面的图片界面,这段后面的文字结合下面的图片看,刚进入的时候可以看到Remote Control Sn:遥控器的SN码。Aircraft Sn:飞机的SN码。然后点击图片中红色箭头指的那里,绑定无人机。
在这里插入图片描述
在这里插入图片描述

如果不绑定,电脑端的页面看到的还是,遥控器连接了,飞机还是没有连接上。
在这里插入图片描述
绑定成功之后,在后端即电脑端的页面看到的还是,遥控器连接了,飞机也连接上了。
在这里插入图片描述
在这里插入图片描述
到这里说明无人机和遥控器都连接上我们自己部署的上云API了。

4、订阅无人机或遥控器的主题信息

4.1、订阅无人机实时返回的数据如经纬度信息等

登录emqx的管理界面,http://localhost:18083/,在首页我们可以看到20多个主题和订阅数
在这里插入图片描述
我们点击26主题数那里,可以发现对应的主题列表。看到主题列表的时候,我们可以到官网找对应的主题说明进行查找订阅。
在这里插入图片描述
上云API (dji.com),可以到官网这里找对应的主题说明。
在这里插入图片描述
官网上说的类似thing/product/{device_sn}/osd这个,{device_sn} 表示该物模型属性的所属设备的 SN ,这里可以是遥控器、也可以是无人机的SN。所以,在emqx管理页面中直接搜索osd可以看到,对应的主题会有两个,一个是遥控器的主题,一个是无人机的主题。如下图所示,图片中的SN码我模糊处理了,如果想要订阅的主题是,无人机还是遥控器的主题,通过遥控器那里看一下就知道了,文章上面连接的时候也说过这个,具体看一下就知道了,总之这个SN码可以通过遥控器找到。可以在emqx管理界面直接找到对应的主题赋值即可。
在这里插入图片描述
在这里插入图片描述
使用MQTTX客户端订阅,至于MQTTX客户端如何使用,看我的另一篇文章EMQX允许匿名访问和关闭匿名访问_emqx匿名访问-CSDN博客,可以看到对应的信息内容。
在这里插入图片描述
订阅成功之后,每隔一段时间就会收到无人机返回的信息
在这里插入图片描述
以下是无人机返回的信息详细字段

{
  "bid": "00000000-0000-0000-0000-000000000000",
  "data": {
    "66-0-0": {
      "gimbal_pitch": 0,
      "gimbal_roll": 0,
      "gimbal_yaw": -79,
      "payload_index": "66-0-0",
      "zoom_factor": 0.56782334384858046
    },
    "activation_time": 1684465935,
    "attitude_head": -79,
    "attitude_pitch": 4.3,
    "attitude_roll": 0,
    "battery": {
      "batteries": [
        {
          "capacity_percent": 60,
          "firmware_version": "08.75.02.17",
          "high_voltage_storage_days": 0,
          "index": 0,
          "loop_times": 34,
          "sn": "4ERPKCSEA1941Q",
          "sub_type": 0,
          "temperature": 35.2,
          "type": 0,
          "voltage": 15568
        }
      ],
      "capacity_percent": 60,
      "landing_power": 0,
      "remain_flight_time": 0,
      "return_home_power": 0
    },
    "cameras": [
      {
        "camera_mode": 0,
        "liveview_world_region": {
          "bottom": 0.572773039340973,
          "left": 0.41576647758483887,
          "right": 0.547674596309662,
          "top": 0.4417940080165863
        },
        "payload_index": "66-0-0",
        "photo_state": 0,
        "record_time": 0,
        "recording_state": 0,
        "remain_photo_num": 4464,
        "remain_record_duration": 0,
        "wide_calibrate_farthest_focus_value": 26,
        "wide_calibrate_nearest_focus_value": 75,
        "wide_exposure_mode": 1,
        "wide_exposure_value": 16,
        "wide_focus_mode": 0,
        "wide_focus_state": 0,
        "wide_focus_value": 24,
        "wide_iso": 7,
        "wide_max_focus_value": 75,
        "wide_min_focus_value": 26,
        "wide_shutter_speed": 26,
        "zoom_calibrate_farthest_focus_value": 26,
        "zoom_calibrate_nearest_focus_value": 75,
        "zoom_exposure_mode": 1,
        "zoom_exposure_value": 16,
        "zoom_factor": 7,
        "zoom_focus_mode": 0,
        "zoom_focus_state": 0,
        "zoom_focus_value": 24,
        "zoom_iso": 7,
        "zoom_max_focus_value": 75,
        "zoom_min_focus_value": 26,
        "zoom_shutter_speed": 26
      }
    ],
    "distance_limit_status": {
      "distance_limit": 8000,
      "is_near_distance_limit": 0,
      "state": 1
    },
    "elevation": 0,
    "exit_wayline_when_rc_lost": 0,
    "firmware_version": "10.01.0017",
    "gear": 1,
    "height": 1881.01611328125,
    "height_limit": 500,
    "home_distance": 0,
    "horizontal_speed": 0,
    "is_near_height_limit": 0,
    "latitude": 0,
    "longitude": 0,
    "maintain_status": {
      "maintain_status_array": [
        {
          "last_maintain_flight_sorties": 0,
          "last_maintain_flight_time": 0,
          "last_maintain_time": 0,
          "last_maintain_type": 1,
          "state": 0
        },
        {
          "last_maintain_flight_sorties": 0,
          "last_maintain_flight_time": 0,
          "last_maintain_time": 0,
          "last_maintain_type": 2,
          "state": 0
        },
        {
          "last_maintain_flight_sorties": 0,
          "last_maintain_flight_time": 0,
          "last_maintain_time": 0,
          "last_maintain_type": 3,
          "state": 0
        }
      ]
    },
    "mode_code": 0,
    "night_lights_state": 0,
    "obstacle_avoidance": {
      "downside": 1,
      "horizon": 1,
      "upside": 1
    },
    "position_state": {
      "gps_number": 0,
      "is_fixed": 0,
      "quality": 0,
      "rtk_number": 0
    },
    "rc_lost_action": 2,
    "rth_altitude": 100,
    "storage": {
      "total": 60082000,
      "used": 14325000
    },
    "total_flight_distance": 899443.07084439753,
    "total_flight_sorties": 204,
    "total_flight_time": 123809.71723263711,
    "track_id": "",
    "vertical_speed": 0,
    "wind_direction": 0,
    "wind_speed": 0
  },
  "tid": "00000000-0000-0000-0000-000000000000",
  "timestamp": 1736411578239,
  "gateway": "5YSZKCC00212VA"
}

4.2、订阅遥控器返回的数据如经纬度等

在这里插入图片描述
在这里插入图片描述
以下是遥控器返回的信息详细字段

{
  "bid": "00000000-0000-0000-0000-000000000000",
  "data": {
    "app_version": "170507",
    "capacity_percent": 73,
    "height": 0,
    "latitude": 25.071488888301314,
    "longitude": 102.7189911396629,
    "wireless_link": {
      "4g_freq_band": 5.8,
      "4g_gnd_quality": 0,
      "4g_link_state": 0,
      "4g_quality": 0,
      "4g_uav_quality": 0,
      "dongle_number": 0,
      "link_workmode": 0,
      "sdr_freq_band": 5.8,
      "sdr_link_state": 1,
      "sdr_quality": 5
    }
  },
  "tid": "00000000-0000-0000-0000-000000000000",
  "timestamp": 1736411740242,
  "gateway": "5YSZKCC00212VA"
}

后续会考虑写一篇JS如何订阅EMQX发布的主题的文章,毕竟拿到无人机这个实时的经纬度信息,我们如果在三维地图或者二维地图开发时,可以让无人机飞行,将实时拿到的无人机经纬度在地图上更新显示,类似地图中的某一点根据无人机飞行实时移动位置。还是需要使用到的。

<think>好的,我需要帮助用户了解如何在大疆环境中通过API进行Docker部署。首先,我要回顾用户提供的引用内容,特别是引用[5],里面提到了使用Docker部署大疆API的具体命令配置。 首先,用户可能需要知道基础环境的安装步骤。引用[2]提到需要安装EMQX,版本4.4.0以上,这是一个消息队列服务,可能需要先部署。然后,引用[5]中的Docker命令是关键,里面有端口映射环境变量设置。需要解释每个参数的作用,比如CANDIDATE变量的意义,以及映射的端口用途,比如RTMP、HTTP等。 接下来,用户可能需要配置RTMP服务,如SRS服务器的配置。引用[5]中的命令使用了特定的SRS镜像,并且指定了配置文件,这部分需要详细说明。此外,引用[3][4]提到了Pilot2的登录步骤,可能需要指导用户如何将部署好的API遥控器连接,输入前端地址等。 还要注意用户提到的数据安全私有化部署需求,引用[1]提到上API适合二次开发,而司空2是SAAS系统,数据存储在大疆服务器,因此用户可能需要了解如何通过Docker部署实现本地数据管理。此外,要提醒用户根据实际网络环境调整配置,比如IP地址端口是否被占用。 最后,生成相关问题时要覆盖部署步骤、配置优化、数据安全、调试方法等方面,确保用户能全面理解整个流程。</think>### 大疆API Docker部署步骤说明 根据大疆API的官方文档及实践总结[^2][^5],Docker部署的核心流程如下: --- #### **1. 基础环境准备** - **安装EMQX消息队列**(版本≥4.4.0) 用于处理无人机端的实时通信,部署后需验证MQTT服务状态。 - **配置SRS流媒体服务器** 使用Docker运行以下命令(需替换`CANDIDATE`为实际服务器IP): ```bash 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 ``` 关键参数说明: - `CANDIDATE`:服务器公网或内网IP,用于WebRTC通信 - 端口映射:1935(RTMP)、8080(HTTP API)、8000(UDP数据转发)等[^5] --- #### **2. 服务配置与调试** - **修改API配置文件** 根据实际网络环境调整`nginx.conf``docker-compose.yml`中的IP、端口及域名。 - **验证RTMP流传输** 通过工具(如OBS)测试视频流推送到SRS服务器是否正常。 - **绑定无人机平台** 在遥控器Dji Pilot2中选择`Cloud Server`,输入部署的前端地址(如`http://your_domain:8080`)[^4]。 --- #### **3. 私有化数据管理** - 大疆API支持本地数据库存储无人机业务数据,需自行设计数据表结构并实现API接口[^1]。 - 若需可视化大屏或AI分析功能,需基于API逻辑二次开发[^1]。 --- #### **注意事项** - 官方文档中部分配置未详细说明,需结合实践调试(如证书配置、跨域问题)[^3]。 - 生产环境建议优化Docker容器资源限制(CPU/内存)及日志管理。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值