连接到飞行控制器输出端的摄像头
本主题将介绍如何使用 PX4 与 照相机 与飞行控制器输出相连。
警告
MAVLink 摄像机 使用 MAVLink 摄像机协议 v2 建议
概述
PX4 可以触发 照相机 使用 摄像机指令 或由地面控制站发送。支持的命令是 MAVLink 中定义的命令的子集。 摄像机协议 v1.
每当摄像机被触发时,MAVLink 摄像机触发器 发布包含当前会话图像的消息 序列号 以及相应的时间戳。该时间戳可用于多种用途,包括:为航测和重建照片打上时间戳、同步多相机系统或视觉惯性导航。
摄像头可连接到不同的输出端,包括 PWM 输出端、GPIO 输出端,以及通过 PWM 输出端连接的 Seagull MAP2。
相机还可以(可选)在拍摄照片/画面的准确时刻使用 摄像头捕捉针 这样就能更精确地将图像映射到 GPS 位置以进行地理标记,或映射到正确的 IMU 样本以进行 VIO 同步等。这样就能更精确地将图像映射到 GPS 位置以进行地理标记,或映射到正确的 IMU 样本以进行 VIO 同步等。
MAVLink 命令界面
PX4 在执行任务时和从 GCS 接收时都支持以下用于连接 FC 摄像机的 MAVLink 命令:
- mav_cmd_doo_set_cam_trigg_interval - 设置两次捕捉之间的时间间隔。
- mav_cmd_doo_set_cam_trigg_dist - 设置捕获间距
- mav_cmd_doo_trigger_control - 开始/停止捕捉(使用上述信息定义的距离或时间)。
- mav_cmd_oblique_survey - 开始/停止斜测
- mav_cmd_doo_digicam_control - 从 GCS 对摄像机进行试拍。
支持的行为如下(这些行为与 MAVLink 规范并不完全一致)。
mav_cmd_doo_trigger_control
mav_cmd_doo_trigger_control - 在命令控制模式下接受 (TRIG_MODE
1).
命令参数 | 说明 |
---|---|
参数 1 | 启用/禁用触发器。 1 :启用(启动)、 0 :禁用。 |
参数 #2 | 重置触发顺序。 1 :重置,任何其他值都不起作用。 |
参数 #3 | 暂停触发,但不关闭或收回相机。 1 暂停、 0 重新启动。 |
mav_cmd_doo_digicam_control
mav_cmd_doo_digicam_control - 接受所有模式。
GCS 使用它从用户界面对摄像机进行试拍。触发器驱动程序不支持 MAVLink 规范定义的所有摄像机控制参数。
命令参数 | 说明 |
---|---|
参数 #5 | 触发单帧命令(设为 1 时触发单帧图像)。 |
mav_cmd_doo_set_cam_trigg_dist
mav_cmd_doo_set_cam_trigg_dist - 在 "任务受控 "模式下接受 (TRIG_MODE
4)
该命令在执行任务期间自动生成,以根据全球卫星定位系统的勘测任务触发照相机。
mav_cmd_doo_set_cam_trigg_interval
mav_cmd_doo_set_cam_trigg_interval
mav_cmd_oblique_survey
mav_cmd_oblique_survey - 任务指令,用于设置摄像机自动安装旋转斜测。
接受 参数1
至 参数4
如 MAVLink 信息定义中所述。快门积分设置 (参数2
) 仅适用于 GPIO 后端。
触发器配置
可将摄像头连接到 FC,使用不同的接口(如 PWM 和 GPIO)进行触发,具体方法是指定相应的 触发界面后台.您还可以指示相机 触发模式.
这种配置可以通过 QGroundControl 载具设置 > 摄像头 节。
不同的 触发模式, 后端接口 和 触发输出配置 如下所述(也可直接从 参数).
信息
基于 FMUv2 的飞行控制器(如 3DR Pixhawk)默认不提供相机设置部分,因为固件中不会自动包含相机模块。更多信息请参阅 查找/更新参数> 固件中没有的参数.
触发模式
支持四种不同的模式,由 TRIG_MODE 参数:
模式 | 说明 |
---|---|
0 | 摄像机触发已禁用。 |
1 | 工作原理与基本间隔计类似,可通过 MAVLink 命令启用或禁用 mav_cmd_doo_trigger_control .湖泊 命令接口 了解更多详情。 |
2 | 持续打开间隔计。 |
3 | 根据距离触发。每当超过设定的水平距离,就会进行一次拍摄。不过,两次拍摄之间的最小时间间隔受限于设定的触发间隔。 |
4 | 在任务模式下飞行勘测时自动触发。 |
信息
如果您是第一次启用相机触发器应用程序,请记住在更改 TRIG_MODE
参数。
触发器接口后端
摄像机触发器驱动程序支持多个后端,每个后端用于特定的应用,由 TRIG_INTERFACE 参数:
数量 | 说明 |
---|---|
1 | 启用 GPIO 接口。AUX 输出为高电平或低电平脉冲(取决于 TRIG_POLARITY 参数)每 TRIG_INTERVAL 持续时间这可用于直接触发大多数标准机器视觉相机。请注意,在 PX4FMU 系列硬件(Pixhawk、Pixracer 等)上,AUX 引脚上的信号电平为 3.3v。 |
2 | 启用 Seagull MAP2 接口。这样就可以使用 海鸥地图2 以连接多种支持的摄像机。MAP2 的引脚/通道 1(摄像机触发器)和引脚/通道 2(模式选择器)应分别连接到较低和较高的映射位置。 摄像机触发引脚.通过使用 Seagull MAP2,PX4 还支持索尼多端口摄像机(如 QX-1)的自动电源控制和保持在线功能。 |
3 | 此模式可让使用传统 上述 MAVLink 接口.信息会自动发送到 MAVLink 上。 机载 频道。PX4 发出 摄像机触发器 当摄像机被触发时,MAVLink 消息默认为 机载 通道(如果不使用,则需要启用自定义流)。 简单的 MAVLink 摄像机 更详细地解释了这种用例。 |
4 | 启用通用 PWM 接口。这样就可以使用 红外线触发器 或伺服系统来触发相机。 |
触发器输出引脚配置
相机触发引脚设置在 QGroundControl 致动器 配置屏幕。
触发引脚可通过分配 相机触发器
功能在任何 FMU 输出上。如果使用需要两个引脚的触发器设置(如 Seagull MAP2),则可以分配到任意两个输出端。
但请注意,如果 PWM 如果输出已用于摄像机触发(如 Seagull MAP2),则整个 PWM 组不能用于任何其他用途(不能将组中的其他输出用于执行器、电机或摄像机捕捉,因为定时器已被使用)。
信息
在编写本报告时,触发功能仅适用于 FMU 引脚:
- 在配有 FMU 和 I/O 板的 Pixhawk 飞行控制器上,FMU 引脚映射到
辅助
输出(例如 Pixhawk 4、CUAV v5+)。 - 只有 FMU 的控制器,引脚映射到
MAIN
输出(如 Pixhawk 4 mini、CUAV v5 nano)。
其他参数
参数 | 说明 |
---|---|
TRIG_POLARITY | 仅与使用 GPIO 接口时相关。设置触发引脚的极性。高电平有效表示引脚在正常情况下为低电平,触发事件时为高电平。低电平有效则反之。 |
TRIG_INTERVAL | 以毫秒为单位定义两个连续触发事件之间的时间。 |
TRIG_ACT_TIME | 以毫秒为单位定义触发引脚在返回中性之前保持激活状态的时间。在 PWM 模式中,最小时间限制为 40 毫秒,以确保在 50Hz PWM 信号中始终保持激活脉冲。 |
有关摄像机触发器模块参数的完整列表可在 参数参考 page.
摄像机捕捉配置
相机还可以(选择性地)使用相机捕捉引脚,在拍摄照片/帧的确切时刻发出信号。这样就能更精确地将图像映射到 GPS 位置以进行地理标记,或映射到正确的 IMU 样本以进行 VIO 同步等。
在 PX4 中,通过设置 cam_cap_fback = 1.然后在 QGroundControl 致动器 通过在配置屏幕上指定 相机捕捉
功能。
请注意,如果 PWM 输出 作为摄像机捕捉输入时,整个 PWM 组就不能用于其他用途(不能将组中的其他输出用于执行器、电机或摄像机触发器,因为定时器已被使用)。
信息
在撰写本报告时,摄像头捕捉功能仅适用于 FMU 引脚:
- 在配有 FMU 和 I/O 板的 Pixhawk 飞行控制器上,FMU 引脚映射到
辅助
输出(如 Pixhawk 4、CUAV v5+)。 - 只有 FMU 的控制器,引脚映射到
MAIN
输出(如 Pixhawk 4 mini、CUAV v5 nano)。
PX4 可检测相机捕捉引脚上具有适当电压电平的上升沿(对于 Pixhawk 飞行控制器,通常为 3.3V)。如果摄像头没有输出适当的电压,则需要额外的电路使信号兼容。
有热靴接口(用于连接闪光灯)的相机通常可以通过热靴适配器进行连接。例如 海鸥 #SYNC2 通用相机热靴适配器 是一个光耦合器,用于将闪光灯电压与 Pixhawk 电压解耦和转换。它可滑入相机顶部的闪光灯插槽。红线和黑线输出端连接到伺服轨/地线,白线连接到输入捕捉引脚。
信息
PX4 发射 MAVLink 摄像机触发器 信息。如果配置了摄像机捕捉,则使用摄像机捕捉驱动程序的时间戳,否则使用触发时间戳。
测试触发器功能
警告
以下部分已经过时,需要重新测试。
在 PX4 控制台上:
外壳摄像机触发器 测试
来自 QGroundControl:
点击 触发相机 在主仪表板上。这些镜头不会被记录或计入地理标记。
索尼 QX-1 示例(摄影测量)
在本示例中,我们将使用海鸥 MAP2 触发器电缆连接索尼 QX-1,并在执行完全自主的勘测任务后使用该设置创建正射影像图。
触发器设置
建议的相机设置为
触发接口=2
(海鸥 MAP2)。TRIG_MODE=4
(任务受控)。- 其余参数保持默认值。
您需要将 Seagull MAP2 连接到自动驾驶仪上的 FMU 引脚。MAP2 电缆的另一端将连接到 QX-1' 的 MULTI" 端口。
摄像机配置
在这个例子中,我们使用的是配备 16-50mm f3.5-5.6 镜头的索尼 QX-1。
为避免触发相机时出现自动对焦和测光延迟,应遵循以下指导原则:
- 手动对焦至无限远
- 将相机设置为连拍模式
- 手动设置曝光和光圈
- ISO 设置应尽可能低
- 适合场景的手动白平衡
任务规划
地理标记
下载/复制飞行日志文件和图像,并将 QGroundControl 指向它们。然后点击 开始标记.
您可以使用免费在线服务(如 Pic2Map.请注意,Pic2Map 仅限于 40 幅图像。
重建
我们使用 Pix4D 进行三轴重建。
摄像机-IMU 同步示例(VIO)
在本示例中,我们将介绍将 IMU 测量与视觉数据同步以构建立体视觉惯性导航系统 (VINS) 的基础知识。需要明确的是,这里的想法并不是要在我们拍照的同时进行 IMU 测量,而是要对我们的图像进行正确的时间标记,以便为我们的 VIO 算法提供准确的数据。
自动驾驶仪和飞行伴侣的时钟基准不同(自动驾驶仪为开机时间,飞行伴侣为 UNIX 时间),因此我们不对任一时钟进行倾斜,而是直接观察时钟之间的时间偏移。这个偏移量会从 MAVLink 信息中的时间戳(例如 HIGHRES_IMU
)中的跨中间件翻译组件(如 MAVROS 的伴生和 接收器
在 PX4 中)。实际的同步算法是网络时间协议(NTP)算法的改进版,使用指数移动平均来平滑跟踪的时间偏移。如果 MAVROS 使用高带宽机载链路(MAVLink 模式),则会自动进行同步。 机载
).
为了获取同步图像帧和惯性测量值,我们将两台相机的触发输入连接到自动驾驶仪的 GPIO 引脚上。从曝光开始的惯性测量时间戳和图像序列号会被记录下来,并发送到配套的计算机上("GPIO")。摄像机触发器
消息),它将缓冲这些数据包和从摄像机获取的图像帧。匹配的依据是序列号(第一个图像帧为序列 0)、图像的时间戳(时间戳来自于 摄像机触发器
信息),然后发布。
下图说明了为正确给图像加上时间戳而必须发生的一系列事件。
步骤 1
首先,将 TRIG_MODE 设置为 1,使驱动程序等待启动命令,然后重启 FCU 以获取其余参数。
步骤 2
在本示例中,我们将配置触发器与以 30 FPS 运行的 Point Grey Firefly MV 摄像机配合使用。
TRIG_INTERVAL
:33.33 毫秒TRIG_POLARITY
:0(低电平有效)TRIG_ACT_TIME
:0.5 毫秒。手册中规定至少为 1 微秒。TRIG_MODE
:1,因为我们希望相机驱动程序在开始触发前就做好接收图像的准备。这对于正确处理序列号至关重要。
步骤 3
通过将接地和信号引脚连接到适当位置,将摄像头连接到 AUX 端口。
步骤 4
您必须按照上述序列图修改驱动程序。的公共参考实现 IDS 成像 UEye 照相机和 符合 IEEE1394 标准 可提供照相机。