Mavlink图像传输协议

联系作者QQ 843230304
本文翻译自 https://mavlink.io/en/services/image_transmission.html

Mavlink图像传输协议

  • 图像传输协议使用MAVLink作为通信通道,以将任何类型的图像(原始图像,Kinect数据等)从一个MAVLink节点传输到另一个节点。它基本上会拍摄实时摄像机图像,将其分成小块,然后通过MAVLink发送。

  • 本主题描述了图像流功能如何工作,并涵盖了通信协议和实现细节(针对车辆和QGroundControl)。

在撰写本文时(2018年3月),该协议主要用于将图像从车辆传输到QGroundControl(以显示用于聚焦的PX4 Flow图像)。该协议还可以用于发送任何其他文件类型。

通信

图像流组件使用两条MAVLink消息:握手消息DATA_TRANSMISSION_HANDSHAKE,以启动,控制和停止图像流;数据容器消息ENCAPSULATED_DATA来传输图像数据。

GCS Drone Request to start image stream Wait for image from camera. Encode image (JPEG). Send image meta data Split image into chunks. Send image chunks. Receive image chunks. Re-assemble image and display. Request to stop image stream Stop image preparation Acknowledge to stop image stream GCS Drone

1.通信由QGroundControl发起,并带有启动流的请求。为此,必须在MAVLink消息中设置以下字段:

  • target:目标MAV的ID,
  • state:为0的请求,
  • id:图像流的ID,

目前,图像流媒体仅支持每种图像类型一个流,因此要求您将设置id为与该type字段相同的整数。

  • type:任何在枚举类型的MAVLINK_DATA_STREAM_TYPE在mavlink.h,
  • freq:大于0表示“每秒帧数”,小于0表示“每秒帧数”
    可以要求特定的图像质量。为此,您必须设置“质量”字段。在初始请求中,所有其他字段应为零。

1.当目标MAV收到握手请求时,它会发回确认并以请求的帧速率启动图像流。握手ACK数据包通常包含与GCS请求的值相同的值(state由于是ACK,因此设置为1),并添加有关下一个发送图像大小的数据:

  • 该字段packets包含MAVLink ENCAPSULATED_DATA数据包的数量,
  • 该字段payload指定每个数据包有效载荷的大小(通常为252个字节),
  • 并且该size字段指定图像大小(以字节为单位)。

2.然后将图像数据拆分为多个块,以适合常规的MAVLink消息。然后将它们打包成ENCAPSULATED_DATA数据包并通过MAVLink发送。每个数据包都包含一个序列号及其所属的图像流的ID。现在,图像流处理器会定期发送新图像,不需要进一步的交互。每一个新的形象带有一个新的DATA_TRANSMISSION_HANDSHAKE与更新的图像ACK包size,packets和payload领域。在此ACK数据包之后,新图像将作为一系列ENCAPSULATED_DATA数据包到达。

对于流的每个新图像,序列号都从0开始。

用法/配置

要使用MAV上的两个模块,必须执行以下步骤:

  • 编译mavconn您的MAV中间件:指南,Github上。
  • 在MAV上至少启动以下组件:
px_mavlink_bridge_udp &
px_system_control --heartbeat &
px_camera -o lcm &
  • 编译并启动QGroundControl。
  • 启动图像流组件(你可以添加-v标志,以看到更多的输出)px_imagestreamer。
  • 启动图像流:打开HUD小部件,右键单击该小部件,然后选择启用实时图像流。

现在,您应该能够以每秒一幅图像的速度观看实时视频供稿(默认情况下,目前为硬编码)。

开发者

现成的图像流组件仅实现相机图像的JPEG流。要实现自己的图像流,您必须执行以下操作:

  • 编写一个MAVLink处理程序,该处理程序处理启动所选类型图像流的请求。
  • 编写一个数据处理程序,该处理程序将获取所需的数据(即,立体摄像机图像),将其编码为您选择的格式(即,原始图像,JPEG,BMP),然后通过MAVLink分割/发送数据。
  • 扩展QGroundControl的UAS组件中的数据/消息处理程序以正确处理您的数据(即,解压缩所选格式)。
  • 编写或扩展小部件以根据您的意愿显示数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值