MAVLink 摄像机(摄像机协议 v2)
本主题介绍如何将 PX4 与 MAVLink 配合使用。 照相机 的 MAVLink 摄像机协议 v2 配有 PX4 和地面站。
TIP
这是将摄像机与 PX4 集成的推荐方式!
概述
MAVLink 摄像机协议 v2 可查询摄像机支持哪些功能,并提供控制图像和视频捕获、视频流、设置变焦和聚焦、选择红外和可见光馈送、设置捕获数据保存位置等命令。
照相机可以直接执行该协议,但大多数 MAVLink 照相机的设置都需要 PX4 与一个 摄像机管理员 在配套计算机上运行的 "MAVLink "软件,可在 MAVLink 与摄像机的本地协议之间建立接口。
一般来说,PX4'与相机的集成是使用命令协议重新发送任务中发现的相机命令。否则,如果没有直接的 MAVLink 通道,它可以充当桥梁,在地面站和摄像机之间转发命令。
信息
PX4 不支持使用 MAVLink 摄像机协议 v2 命令来控制连接到飞行控制器输出端的摄像机。虽然这在技术上是可行的,但需要 PX4 实现一个摄像头管理器接口。
控制摄像机
MAVLink 命令和信息
通过 MAVLink 连接协议根据其 HEARTBEAT.type 设置为 摄像机类型.
TIP
摄像机还应使用建议范围内的元件 ID,例如 mav_comp_id_camera但一般情况下,这并不能用来验证 MAVLink 组件是否为摄像机。
发现摄像机后,可以使用 mav_cmd_request_message 要求 摄像机信息 消息,然后检查 国旗
字段,以确定 相机盖标记 支持
根据标记,可以确定摄像机还支持哪些命令和信息。完整的信息、命令和枚举包括 在此概述.
摄像机的附加参数 可以 暴露在 摄像机定义文件 从 CAMERA_INFORMATION.cam_definition_uri
.GCS 或 SDK 可通过通用用户界面公开这些设置,而无需了解任何上下文。这些参数不能直接在任务中设置,也没有特定的设置命令。
MAVLink 摄像机协议 v2 更详细地描述了所有的互动。
地面站 & MAVLink SDKS
如前所述,地面站和 MAVLink SDK 可发现相机及其功能。
地面站可使用摄像机提供的任何功能。PX4 除了在需要时转发摄像机与地面站或 SDK 之间的 MAVLink 流量外,在这种交互中不起作用。
任务中的相机指令
PX4 允许以下子集 摄像机协议 v2 任务中的命令:
- mav_cmd_image_start_capture
- mav_cmd_image_stop_capture
- mav_cmd_video_start_capture
- mav_cmd_video_stop_capture
- mav_cmd_set_camera_mode
- mav_cmd_cmd_set_camera_zoom
- mav_cmd_set_camera_focus
PX4 会将任务中发现的摄像机命令作为 MAVLink 命令重新发送。发出的命令的系统 ID 与自动驾驶仪的 ID 相同。命令的组件 ID 可以不同。前四条命令的对象是 mav_comp_id_camera (100) (如果摄像机具有此组件 ID,它将执行指定的命令)。摄像机模式、变焦和对焦命令将发送给 ID 为 mav_comp_id_all.
信息
PX4 目前会忽略目标摄像头 本我
于 mav_cmd_image_start_capture 和其他相机信息。查看 PX4-Autopilot#23083.
手动控制器
操纵杆按钮可配置为触发图像捕捉或切换视频捕捉。
PX4 发射 MAVLink 摄像机协议 v2 命令,如 mav_cmd_image_start_capture
当按下相关操纵杆按钮时。此功能仅适用于此类相机和操纵杆,不支持遥控控制器。
PX4 配置
MAVLink 端口和转发
您需要为任何已连接的相机提供一个 MAVLink 通道,以便 PX4 能发出任务中发现的任何相机指令。如果您的 MAVLink 网络使 PX4 位于相机和地面站之间,您还需要转发通信,以便它们能进行通信。
首先将相机连接到飞行控制器上未使用的串行端口,例如 TELEM2
(如果飞行控制器和摄像机上都有以太网端口,也可以使用)。然后将所选端口配置为 MAVLink 外围设备.
链接文件简要解释了如何操作:
- 修改未使用的
MAV_n_CONFIG
参数,例如 MAV_2_CONFIG,以便将其分配给连接摄像机/配套计算机的端口。 - 设置相应的 MAV_2_MODE 至
2
(机载)。这可确保为配套电脑(或相机)发送正确的 MAVLink 信息。 - 设置 MAV_2_FORWARD 以便将该端口的通信转发到其他端口,如连接地面站的端口。
- 您可能需要设置一些其他参数,具体取决于您的连接类型以及摄像机对预期波特率等的特殊要求。
手动控制
操纵杆按钮可映射到捕捉图像,以及切换视频捕捉的开和关。
- 操纵杆 说明了如何在 PX4 上启用操纵杆。
- QGroundControl > 操纵杆设置 解释如何将按钮映射到飞行算法池功能
摄像机管理员
如果要使用不支持 MAVLink 摄像机协议的摄像机,则需要 MAVLink 摄像机管理器。摄像机管理器在配套计算机上运行,在 MAVLink 摄像机协议接口和摄像机本地接口之间架起桥梁。
有可用于多种不同相机的可扩展相机管理器,也有专为特定相机设计的相机管理器,您还可以编写自己的管理器(例如,使用 MAVSDK 服务器插件)。
通用/可扩展的相机管理器
- MAVLink 摄像机管理器 - 基于 GStreamer 和 Rust-MAVLink 的可扩展跨平台 MAVLink 摄像机服务器。
- Dronecode 摄像机管理器 - 为连接到 Linux 计算机的摄像头添加摄像头协议接口。
相机专用相机管理器
SIYI A8 迷你相机管理器 - 基于 MAVSDK 插件的摄像机管理器,用于 SIYI A8 mini (包括教程)。
TIP
这是一个很好的例子,说明如何使用 MAVSDK 为特定相机创建 MAVLink 相机协议接口。
使用相机管理器时,您需要将配套计算机连接至飞行控制器(而非直接连接至相机),并且需要在计算机上安装额外的软件,以便将 MAVLink 流量路由至配套计算机上的相机管理器,例如 mavlink-router.
有关摄像机管理器和配套计算机设置的更多信息,请参阅《摄像机管理器和配套计算机设置》:
- SIYI A8 迷你相机管理器 - 与 SIYI A8 mini 在 Raspberry Pi 配套电脑上运行基于 MAVSDK 的相机管理器。
- 将配套计算机与 Pixhawk 控制器配合使用
- 同伴电脑 > 同伴电脑软件:特别注意 MAVLink 路由器,您可以将其设置为在串行端口和 IP 链路(或其他摄像机管理器接口)之间路由 MAVLink 流量。