简单的 MAVLink 摄像头(Camera Protcol v1)
本节说明了如何使用 PX4 的 MAVLink 相机, 实现了 Camera Protocol v1 (简单触发协议) 的 PX4 和地面站。
WARNING
MAVLink 相机 在可能的情况下应该使用 MAVLink Camera Protocol v2 代替! 此方法保留用于旧的 MAVLink 相机。
综述
相机协议v1 定义了一小组命令,允许用于触发相机进行拍摄:
- 仍然根据时间或距离以频率捕获图像
- 视频捕获
- 有限的相机配置
PX4 支持此命令集以触发通过原生支持协议的相机(如本节所述),以及连接到飞控输出的相机。
地面站和 MAVLink SDK 通常将相机命令发送给自动驾驶仪,然后转发给连接的类型为 '板载' 的 MAVLink 通道。 PX4 还会将其在任务中遇到的任何相机任务项重新发出为相机命令:未被接受的命令将被记录。 在所有情况下,命令都是使用自动驾驶仪的系统 ID 和组件 ID 为0(即发送给所有组件,包括摄像头)。
每次触发图像捕获时 PX4 也会发出一个 CAMERA_TRIGGER (相机本身也可能在触发时发出此消息)。
控制相机
MAVLink 命令和消息
相机协议v1(简单触发协议)定义了以下命令:
- MAV_CMD_DO_TRIGGER_CONTROL
- MAV_CMD_NAV_CMD_DO_DIGICAM_CONTROL
- MAV_CMD_DO_SET_CAM_TRIGG_DIST
- MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL
- MAV_CMD_OBLIQUE_SURVEY
- MAV_CMD_DO_CONTROL_VIDEO
MAVLink 摄像头将支持这些命令的一些子集。 由于协议没有发现过程的功能,唯一的方法是检查响应中返回的COMMAND_ACK。
相机在每次拍摄图像时也应发出CAMERA_TRIGGER。
Camera Protocol v1 更详细地描述了协议。
地面站
地面站可以使用 Camera Protocol v1(简单触发协议) 中的任何命令,并且应该将这些命令发送给自驾仪组件 id。 如果相机不支持命令,它将返回带有错误结果的COMMAND_ACK。
通常命令是针对自驾仪的,因为这样无论相机是通过 MAVLink 连接还是直接连接飞控都能工作。 如果发送给自驾仪 PX4,每次拍摄图像时 PX4 都会发出CAMERA_TRIGGER,并可能记录相机拍摄事件。
理论上,您也可以直接向相机发送命令。
Camera Commands in Missions
以下Camera Protocol v1 (简单触发协议)命令可在任务中使用(这与上面的命令列表相同)。
- MAV_CMD_DO_TRIGGER_CONTROL
- MAV_CMD_NAV_CMD_DO_DIGICAM_CONTROL
- MAV_CMD_DO_SET_CAM_TRIGG_DIST
- MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL
- MAV_CMD_OBLIQUE_SURVEY
- MAV_CMD_DO_CONTROL_VIDEO
PX4 重新使用与自驾仪相同的系统 ID 和组件 ID MAV_COMP_ID_ALL 重新发送它们:
Manual Control
这些相机不支持手动触发(无论是摇杆还是遥控器)。
PX4 配置
MAVLink 端口和转发配置
将 PX4 连接到您的 MAVLink 相机上,将它连接到您飞控上一个未使用的串口,如TELEM2
。 然后,您可以将端口配置为MAVLink 外设. 本文件解释了如何做,总的来说:
- 修改一个未使用的
MAV_n_CONFIG
参数,例如MAV_2_CONFIG,使其分配给相机连接的端口。 - 将对应的 MAV_2_MODE 设置为
2
(板载)。 这确保正确的 MAVLink 消息集被发出和转发。 - 您可能需要设置一些其他参数,取决于您的连接 - 例如波特率。
然后按照其用户指南中的建议连接和配置相机。
相机模式和触发
配置 PX4 相机驱动器以启用 MAVLink 相机后端,并设置触发模式为在勘测任务中按命令捕获。
使用 QGroundControl:
按照所示设置数值:
INFO
You can also set the parameters directly:
- TRIG_MODE —
4
: 基于距离,按命令触发 (勘测模式) - TRIG_INTERFACE —
3
: MAVLink