PX4FLOW 智能摄像机

PX4FLOW 是一种 光流 智能相机。它的原生分辨率为 752x480 像素,能以 400 Hz 的速度在 4 倍分档和裁剪的区域上计算光流,因此具有极高的光敏感度。

PX4Flow v1.0

与许多鼠标传感器不同的是,它还能在室内和室外微光条件下工作,无需 LED 照明。它可以自由重新编程,以执行任何其他基本、高效的低级计算机视觉任务。

  • 168 MHz Cortex M4F CPU(128 + 64 KB RAM)
  • 752x480 MT9V034 图像传感器,L3GD20 3D 陀螺仪
  • 16 毫米 M12 镜头(红外滤光片)
  • 尺寸 45.5 毫米 x 35 毫米
  • 耗电量 115mA / 5V

购买地点

从以下网站订购该模块

规格

  • 带全局快门的 MT9V034 机器视觉 CMOS 传感器
  • 在 4x4 分档图像上进行光流处理 400 赫兹
  • 24x24 μm超级像素带来卓越的感光度
  • 板载 16 位陀螺仪,最高可达 2000°/s 和 780 Hz 更新率,默认高精度模式为 500°/s
  • 机载声纳输入和支架,用于 Maxbotix 声纳传感器.(建议使用 HRLV-EZ4、 SparkFun 产品链接)
  • USB 引导加载程序
  • USB 串行端口,最高 921600 波特(包括实时摄像机视图,带 QGroundControl)
  • USB 电源选项
  • 适合 MatrixVision Bluefox MV 安装孔(摄像机中心偏离中心)

PX4Flow 顶部 px4flow-bottom

Pixhawk 设置

要使用 PX4Flow 电路板,请将其连接到 I2C 总线(任何 Pixhawk 系列控制器上),并使用以下命令启用驱动程序 sens_en_px4flow.

PX4FLOW 无法在 FMUv5(Pixhawk 4)上运行,适用于 PX4 版本小于 1.9.0.所有其他 PX4/固件版本都能正常工作。

步骤如下

  • QGroundControl:
    • 更新 PX4Flow 上的固件(在左上角菜单中点击 "配置",然后点击 "固件升级")。
    • 设置参数 sens_en_px4flow 并重新启动(见 参数 查找和设置参数的信息)。
  • 将 PX4Flow I2C 连接到 Pixhawk I2C

启用后,模块将在启动时被检测到。如果自动驾驶仪是通过以下方式连接的,流量数据应该以 10Hz 的频率传输 USB.流量数据通过无线信道传输的速率较低。

安装/定向

建议的安装方向定义为流量板上的 Y 指向 车头如下图所示。

PX4Flow 与 Pixhawk 保持一致

关于 PX4,应使用参数 SENS_FLOW_ROT.上述方向与 sens_flow_rot=270 度(默认值)。

确保 PX4Flow 板阻尼良好。

PX4Flow 会发出大量电磁辐射,因此应尽可能远离其他电子设备(特别是 GPS 模块)(请参阅 "电磁辐射")。 硬件/问题/8 了解更多信息)。

PX4 配置

您可能需要配置的 PX4Flow 参数如下。

参数 说明
sens_en_px4flow 启动 PX4 Flow 驱动程序。
传感器流量最大值 依靠光流时离地面的最大高度。
传感器流量最小值 依靠光流时离地面的最低高度。
SENS_FLOW_MAXR 光学流量传感器可可靠测量的最大角流量。
SENS_FLOW_ROT PX4FLOW 板相对于车体框架的偏航旋转。

如果您使用 ECL/EFK2 估计器流量,还需要设置 光流> 估算器> EKF2 参数。通过这些参数,可以融合光学流量测量来计算速度,如果传感器不在载具中心,还可以定义偏移量。

连接

PX4flow 与 I2C 总线相连。如果要将多个设备连接到同一总线上,则需要为每个设备设置唯一的地址。下一节将介绍如何设置。

PX4FLOW I2C 设备地址

PX4Flow 的默认 I2C 地址为 0x42,但可以通过标有"I2C BUS ADDR"的三个焊接跳线进行增量。如果其他设备具有相同的地址,这将非常有用。

地址增量等于跳线编码的 3 位值。例如,如果跳线 0 和 1 焊接,跳线 2 未焊接,则地址增量为 1*1 + 1*2 + 0*4 = 3,即地址为 0x45。如果所有跳线都未焊接,自动驾驶仪固件将自动发现摄像机。

8 种可能选择的地址范围是0x42 - 0x49。

地址 位 2 位 1 位 0
7 位地址 0x42(默认值) 0 0 0
7 位地址 0x43 0 0 1
: : : :
7 位地址 0x49 1 1 1

有不同的 I2C 读数可供选择。有关 I2C 帧I2C 积分框架 在驱动程序源代码中。

如果修改了 PX4Flow 的 I2C 地址,请确保使用正确的地址启动 PX4 驱动程序:

px4flow start # address=0x42(默认) px4flow stop px4flow start -a 0x45 # address=0x45

镜头对焦

为了确保良好的光流质量,必须将 PX4Flow 上的摄像头对焦到所需的飞行高度。要使摄像头对焦,请将一个带文字的物体(如一本书)放在上面,然后将 PX4Flow 插入 USB,运行 QGroundControl.在 "设置 "菜单下选择 PX4Flow,您将看到一个摄像头图像。拧下固定螺钉,松开并拧紧镜头,找到对焦位置,对准镜头。

如果飞行高度超过 3 米,相机将对焦到无限远处,无需为更高的飞行而更换。

流量聚焦手册

图:使用教科书将流动相机对焦到您想要飞行的高度,通常为 1-3 米。在 3 米以上的高度,相机应该对焦到无限远处,在更高的高度也是如此。

流动聚焦

图可用于摄像机对焦的 QGroundControl px4flow 界面

准确性

下面的正射影像照片显示,在公园道路上的飞行测量非常准确。这是使用 PX4FMU 在 7" quad 上进行的手动飞行,飞行高度约为 1.6 米。没有 GPS,只有 PX4FLOW 集成定位。

PX4FLOW 轨迹

下载

手册和示意图

USB 驱动程序

Linux 和 MacOS 自带所需的驱动程序。Windows 驱动程序可从以下网址下载: px4flow_win_drivers.zip

论文

该流程模块已被德国卡尔斯鲁厄国际机器人与自动化会议(ICRA 2013)录用为论文。

图书馆

以下是可用于将 flow 模块集成到项目中的第三方库。

连接器

光学

3D Robotics 公司提供的正确光学镜组已经安装好并进行了对焦。

  • 镜头安装
  • 16 毫米 M12(S 安装)镜头(带红外截止滤光片)

焦距会影响最大可测量速度。

最大速度 = +/- 4 像素/(1 秒/内部延迟)*地面距离/焦距(像素

内部更新率为 400 Hz。

像素大小为 24 微米,因此 16 毫米镜头的焦距为 0.016 米/每个像素 24 微米 = 666.666 像素

不同焦距镜头和地面距离的最大速度:

地面距离 1m 3m 10m
16 毫米镜头 2.4 米/秒 7.2 米/秒 24 米/秒
8 毫米镜头 4.8 米/秒 14.4 米/秒 48 米/秒
6 毫米镜头 6.4 米/秒 19.2 米/秒 64 米/秒
4 毫米镜头 9.6 米/秒 28.8 米/秒 96 米/秒
max_vel = 4/(1/400)*地面距离/(焦距/0.000024)

配置:图像质量和输出

PX4FLOW 并非作为照相机设计,而是在片上完成所有处理过程。您可以配置图像质量和输出(图像输出仅用于镜头对焦)。

视频下行链路

  • 下载 QGroundControl
  • 拔下流量传感器插头
  • QGroundControl点击 配置 > 固件更新.点击绿色大图 扫描 按钮。
  • 连接流量传感器。检测到流量传感器后,点击 "升级"(将默认值设为 “稳定”)。
  • 最大化 QGroundControl 窗口。点击 工具小工具> 视频下行链路
  • 欣赏实时画面和 拧松锁定螺钉,对准 3 米远的物体转动镜头,对准相机对焦.
  • 如果您想获得更高的分辨率来对传感器进行对焦,请转到 配置> 高级配置 并设置 仅视频 参数为 1。

一般故障排除

  • 如果流量传感器已堵塞,请拔下插头
  • 开始 QGroundControl选择 PX4 启动模式,转至 配置 > 固件升级.
    • 点击 SCAN(中间的绿色按钮)
    • 现在连接流量传感器
    • 闪存稳定固件
  • 点击 高级配置 在左侧菜单中查看参数
  • 用 QGroundControl (工具小工具> 视频下行链路)
    • 检查数据流上是否有条纹。如果出现条纹,请设置 IMAGE_TEST_PAT 图像应与上面的示例相似。如果图像中有条纹,但启用该模式时没有条纹,请在两种模式下都右键单击图像一次,然后保存并将每种模式的图像发送给制造商支持团队。
    • 检查图像是否清晰(这是一个远摄/变焦镜头,因此可见区域会很小)
  • 设置 仅视频 参数为 1,以获得更高分辨率的图像。
  • 检查工作距离(典型飞行高度)上的图像是否清晰

    寻求帮助 如果图像变形,出现明显的暗线(如下图): 视频失真

PX4FLOW 开发人员指南

硬件设置

  • PX4FLOW 板 v1.3
  • HRLV-MaxSonar-EZ (MB1043)
  • 16 毫米镜头
  • 微型 USB 电缆

PX4FLOW 测试

软件/构建源

  • 配备 QGroundControl 安装
  • PX4FLOW 固件(固件源代码在 Github 上: PX4/Flow)

PX4 驱动程序 代码可在此处找到: PX4/Firmware/src/drivers/px4flow

建设

安装 PX4 工具链 (PX4 开发人员指南)。然后从 https://github.com/PX4/Flow 使用 Git.

CD flow make all make upload-usb

然后连接流量传感器。上传成功后,应该会显示这些步骤:

在 /dev/ttyACM1 上发现板 6,0 引导加载程序修订版 3 擦除......编程......验证...
完成的重新启动。

故障排除

如果看不到上述步骤,应通过以下方式删除调制解调器管理器:

sudo apt-get remove modemmanager

用户还需要在 plugdev 组中:

sudo usermod -a -G plugdev $USER

聚焦图像

将 PX4FLOW 连接到 QGroundControl:

  • 通过 USB 将 PX4FLOW 传感器连接到电脑
  • 打开 QGroundControl
  • 切换到剧情视角:视角/情节
  • 连接至 PX4FLOW 传感器:通信/添加链接

PX4 机载参数

  • 链接类型串行
  • 协议MAVLink
  • 串行端口:相应端口(如 /dev/ttyACM 或 COMM)

现在应该会出现一个新的无人驾驶系统,机载参数也已加载(如果没有,请单击 "获取")。

更改参数 仅视频 到 1,然后按 设置。

Widget 视频下行链路现在以全分辨率显示图像。将镜头对准 1.5 米处。固定镜头位置并切换 仅视频 模式关闭。

数据输出

PX4FLOW 模块输出 MAVLink USB 和串行端口上的数据包。使用方法 QGroundControl 从模块读取数据。此外,还提供用于读取传感器数据的 I2C 接口。第三方 图书馆 可用于在项目中连接和集成 PX4FLOW 数据。

  • USART3:MAVLink,波特率为 115200、8N1: OPTICAL_FLOW 留言 光流辐射, 心跳 信息
  • USB:波特率无关(USB 忽略): OPTICAL_FLOW 留言 光流辐射, 心跳 信息,图像。
  • I2C1:自上次 I2C 读出后可读出的最新流量值(i2c_frame)和累积流量值(i2c_integral_frame)。

PX4FLOW 参数

下面列出了 PX4FLOW 固件中当前可用参数的简要说明。

参数目前未写入 ROM(断电时重置)。要永久更改这些参数,请使用 PX4FLOW 开发人员指南 以上。相关参数如下 这里.

BFLOW_F_THRD

该参数是一个特征阈值,用于限制计算底流的模式质量。数值较低时(如 10),几乎所有模式都会被采用;数值较高时(如 100),只有重要模式才会被采用。

BFLOW_V_THRD

这是模式相关性阈值,用于过滤不良匹配。越低表示只接受强相关性。

其他

名称 默认值 访问 评论
AEC 1 RW 相机自动曝光控制。1:开启,0:关闭。
AGC 1 RW 摄像机自动增益控制。1:开启,0:关闭。
BFLOW_F_THLD 40 RW 该参数是一个特征阈值,用于限制计算底流的模式质量。数值较低时(如 10),几乎所有模式都会被采用;数值较高时(如 100),只有重要模式才会被采用。
BFLOW_V_THLD 5000 RW 这是模式相关性阈值,用于过滤不良匹配。越低表示只接受强相关性。
BFLOW_HIST_FIL 0 RW 流量直方图滤波器。1:开启,0:关闭。
BFLOW_GYRO_COM 0 RW 陀螺补偿。1:开启,0:关闭。
BFLOW_LP_FIL 0 RW 流量输出的低通滤波器。1: 开,0: 关。
BFLOW_W_NEW 0.3 RW 流动低通滤波器增益
BFLOW_MAX_PIX 8 R 删除(参数未使用)。
BFLOW_RATE 10.0 RW 发布光流更新的速率
明亮 20 RW 摄像头提供的所需亮度
DEBUG 1 RW 调试信息。1:打开,0:关闭
EXPOSURE_MAX 500 RW 最长曝光时间(μ秒)
最大增益 16 RW 最大增益(单位?)
GYRO_SENS_DPS 250 RW 陀螺仪灵敏度:250、500、2000(dps)
GYRO_COMP_THR 0.01 RW 陀螺补偿阈值 (dps):陀螺仪数据低于该阈值时不进行补偿,以防止漂移
HDR 1 RW 摄像机高动态范围。1: 开,0: 关
图像高度 64 R 图像高度(像素)
图像宽度 64 R 图像宽度(像素)
IMAGE_L_LIGHT 0 RW 删除(参数未使用)。
IMAGE_NOISE_C 1 RW 图像传感器噪音校正,1: 开,0: 关
IMAGE_TEST_PAT 0 RW 灰度测试模式。1:开启,0:关闭
镜头焦距 16.0 RW 镜头焦距(毫米)
定位(POSITION) 0 RW 0:仅使用位置 0(底部:0,前部:1,顶部:2,后部:3,右侧:4,左侧:5)
SHTR_W_1 443 RW 相机快门 W_1 ?
SHTR_W_2 473 RW 相机快门 W_2 ?
SHTR_W_TOT 480 RW 相机快门总数?
SONAR_FILTERED 0 RW 声纳输出卡尔曼滤波器。1: 开,0: 关。
SONAR_KAL_L1 0.8461 RW 声纳卡尔曼增益 L1(用于位置)
SONAR_KAL_L2 6.2034 RW 声纳卡尔曼增益 L2(用于速度)
SYS_ID 81 RW MAVLink 系统 ID
SYS_COMP_ID 50 RW MAVLink 组件 ID
SYS_SENSOR_ID 77 RW MAVLink 传感器 ID
SYS_TYPE 0 RW MAVLink 系统类型(0 表示通用)
SYS_AP_TYPE 0 RW MAVLink 自动驾驶仪类型(0 表示通用类型)
SYS_SW_VER 13XX R 软件版本
SYS_SEND_STATE 1 RW 发送 MAVLink 心跳。1:开启,0:关闭。
SYS_SEND_LPOS 1 RW 发送 MAVLink 本地位置估计。1: 开,0: 关。
USART_2_BAUD 115200 R 波特率 USART 2
USART_3_BAUD 115200 R 波特率 USART 3(数据输出)
USB_SEND_DEBUG 1 RW 通过 USB 发送调试信息。1:开启,0:关闭。
USB_SEND_FLOW 1 RW 通过 USB 发送流量。1: 开。0:关。
USB_SEND_FWD 0 RW 通过 USB 发送转发流量。1:开启,0:关闭。
USB_SEND_GYRO 1 RW 通过 USB 发送陀螺仪数据。1:开启,0:关闭。
USB_SEND_VIDEO 1 RW 通过 USB 发送视频。1:开启,0:关闭。
仅视频 0 RW 高分辨率视频模式。1:开启,0:关闭
视频速率 50 RW 视频传输图像之间的间隔时间(毫秒)

模式

仅视频模式

设置 仅视频 调至 1 表示高分辨率模式。在该模式下,摄像机图像以更高分辨率传输,以简化镜头对焦过程。该模式下不计算流量值。

测试模式

如果参数 IMAGE_TEST_PAT 设为 1 时,传感器会在信号链中插入垂直灰度测试图案。

  • 测试模式 64x64(仅视频模式关闭) test_pattern_64x64
  • 测试模式 376x240(仅视频模式已打开) test_pattern_376x240
© PX4 开发团队。许可证 CC BY 4.0            已更新:2024-02-13 22:49:01

与" "匹配的结果"

    没有与""匹配的结果"