感知灰度图

2025-01-08
暂无评分

概述

为帮助开发者在没有 GPS 或 RTK 卫星的应用场景中实现无人机的自动化飞行控制,实现如精准悬停和避障等功能,DJI 开放了无人机视觉感知系统,包括视觉系统和六向红外感知系统。开发者通过使用 PSDK 提供的 API 即可获取 DJI 无人机视觉感知系统的灰度图码流,结合图像识别算法,可以开发出满足特定使用场景需求的应用程序。本篇主要用于指导开发者通过 PSDK API 获得视觉系统输出的感知灰度图。

说明:

  • 仅通过 Linux 和 RTOS 系统开发的应用程序支持开发者使用 DJI 的感知图像获取功能。
  • 使用 PSDK 的感知图像获取功能时,需使用 USB 线或网线接收无人机视觉感知系统的原始图像数据。
  • 开发者可在大疆官网下载中心open in new window获得对应机型的用户手册,根据其中的部件名称介绍查看视觉感知系统的组成以及相机位置。

基础概念

无人机视觉感知系统

DJI 无人机的视觉感知系统主要由无人机视觉感知传感器和视觉感知算法构成。在无人机飞行的过程中,感知传感器能够获取周围环境的状态,协助无人机刹车、避障和精确悬停。

Mavic 3E/3T、Matrice 30/30T 和 M300 RTK/M350 RTK 支持开发者获取无人机上所有感知传感器的码流数据。

说明:

  • 在悬停期间若无人机受到外部干扰,无人机将会返回到原悬停点。
  • 使用感知图像获取功能时,若无人机与无人机遥控器断开连接,无人机将会悬停。

图像类型

感知图像获取功能支持开发者获取的图像类型和分辨率如下所示:

  • Mavic 3E/3T:支持开发者以 20 FPS,640 × 480 的分辨率,获取上下方向 VGA 灰度图像。支持开发者以 20 FPS,480 × 480 的分辨率,获取前后左右方向 VGA 灰度图像。
  • Matrice 30/30T 和 M300 RTK/M350 RTK:支持开发者以 20 FPS,640 × 480 的分辨率,获取 VGA 灰度图像。

元数据

无人机视觉传感器产生的图像主要包含帧索引和时间戳两种元数据。

  • 时间戳:无人机上的视觉传感器同时共享一个计时器,有关时间同步的详细说明请参见时间同步open in new window
  • 帧索引:开发者订阅感知灰度图后,无人机感知灰度图将会附带帧索引。订阅或取消订阅感知灰度图,将不会改变或中断帧索引的序号。

使用获取感知传感器参数的功能

说明: 感知系统功能的使用,可以参考代码open in new window

  • 初始化感知模块
auto *perceptionSample = new PerceptionSample;
  • 获取感知传感器参数:
returnCode = DjiPerception_GetStereoCameraParameters(&cameraParametersPacket);

使用获取感知图像的功能

使用感知图像获取功能时,开发者需要调用指定的 API 通过 USB 或 Socket 接口在应用程序运行的周期内订阅(或退订)相机视觉传感器的图像,并使用回调函数在专用的读取线程内获取订阅的图像。

说明:

  • 建议安装 OpenCV 以显示感知灰度图像。
  • 为避免处理视觉传感器图像的工作阻塞主线程,请创建一个独立的线程处理无人机视觉传感器的图像。
  1. 创建感知码流处理线程,调用以下接口创建一个线程,用于读取感知传感器的原始码流并解码成图像。
osalHandler->TaskCreate("user_perception_task", DjiTest_StereoImagesDisplayTask,
                      USER_PERCEPTION_TASK_STACK_SIZE, &s_stereoImagePacket, &s_stereoImageThread);

说明: 若开发者安装了 OpenCV 库,则可通过调用cv::imshow()接口显示解码后的感知灰度图像。

  1. 订阅感知传感器码流,例如:调用以下接口订阅前视方向的感知码流,同时在该接口中注册回调函数DjiTest_PerceptionImageCallback,用于处理接收到的码流。
perceptionSample->SubscribeFrontImage(DjiTest_PerceptionImageCallback);
  1. 取消订阅感知传感器码流,例如:调用以下接口取消订阅前视方向的感知码流。
perceptionSample->UnSubscribeFrontImage();
  1. 销毁线程 调用以下接口销毁读取感知传感器码流的线程。
osalHandler->TaskDestroy(s_stereoImageThread);

说明:

  • 由于链路带宽限制,目前所有机型只支持同时订阅两路灰度图像,且在订阅两路图像后,图像帧率会有所下降。
若您对文档有意见或疑惑,点击可快速反馈,我们会与您联系。