光流模块是一种基于光学原理的传感器模块,用于测量物体在相邻帧之间的运动速度和方向。它主要通过对相邻帧之间像素的位移进行计算,来获得物体的运动信息。光流模块常用于机器人、无人机、智能车等领域中,用于实现自主导航、避障、跟随等功能。光流模块的优点是能够实现高精度的运动测量,且不受光照、颜色、纹理等因素的影响,适用于多种场景。
在仙工的应用场景中,主要使用光流模块检测打滑及恢复打滑异常。
光流模块的输出:
光流模块的输出通常是两个方向的速度矢量,即水平和垂直方向的速度。这些速度矢量可以用来估计相机相对于场景的运动,从而实现对相机位置的跟踪。另外,光流模块也能够输出光流跟踪的质量,用以确定是否光流数据有效。
仙工采用的光流模块输出为:
- X 方向像素点在单位时间内的累加位移;
- Y 方向像素点在单位时间内的累加位移;
- 光流数据的质量;
光流模块内部参数:
光流模块输出的像素速度,而我们车体里程计发布的是速度,即m/s。由于安装高度不同,根据小孔成像的原理。单位位移在不同的高度上产生像素偏差也不同。为了与修正安装在光流模块实际输出的像素速度与真实的位移速度保持尺度与量纲一致,需要对光流模块的内参系数进行标定即:
通过将光流模块的速度进行积分,即输出在光流模块下的位置方向信息;但是光流模块并不能输出角速度信息,因此与其他传感器的标定较为困难。因此光流模块的内参包括方向的比例系数,方向的比例系数。
光流模块外部参数:
与所有传感器一样,光流模块作为一种位置,姿态传感器都需要知道其在车体坐标系下的位置,但是由于其只关注与地面信息,其外参中的轴平移不可观测到,即不可以标定出。因此光流模块的外参信息包括。即光流模块在车体坐标系下的安装位置。
插件配置
插件参数说明
RoboShop模型文件一栏中插件名称为optical_flow_module。该插件通过串口协议与光流模块建立连接。并获取光流模块的输出的位置信息。
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
port | 模型文件-ofm | /dev/ttyUSB0 | — | — | ||
端口号 | ||||||
kx | 模型文件-ofm | 1. | — | — | ||
光流传感器方向的比例系数 | ||||||
ky | 模型文件-ofm | 1. | — | — | ||
光流传感器方向的比例系数 | ||||||
x | 模型文件-ofm | 米 | 0. | — | — | |
光流传感器在车体中的位置 | ||||||
y | 模型文件-ofm | 米 | 0. | — | — | |
光流传感器在车体中的位置 | ||||||
z | 模型文件-ofm | 米 | 0. | — | — | |
光流传感器在车体中的位置 | ||||||
roll | 模型文件-ofm | ° | 0. | — | — | |
光流传感器在车体中的位置 | ||||||
pitch | 模型文件-ofm | ° | 0. | — | — | |
光流传感器在车体中的位置 | ||||||
yaw | 模型文件-ofm | ° | 0. | — | — | |
光流传感器在车体中的位置 |
备注:
需要注意的是,光流模块的标定结果会受到环境光线、摄像头的质量等因素的影响,因此在进行标定前需要对这些因素进行充分的考虑和准备。同时,在标定过程中需要保证标稳定性和光线的充足性,以获得更精确的标定结果。