传感模块:MATEKSYS Optical Flow & LIDAR 3901-L0X
- 1. 模块介绍
- 2. 规格参数
- 3. 使用方法
- Step1: 接线方式
- Step2: 安装方式
- Step3: 使用范围
- 4. 存在问题
- 4.1 MATEKSYS 3901-L0X 输出协议格式?
- 4.1.1 支持光流计协议(iNav-CXOF)
- 4.1.2 支持光流计+激光测距协议(ArduPilot-UP)
- 4.2 iNav & ArduPilot使用该模块存在什么问题?
- 4.3 如何合理的匹配飞控固件?
这里主要针对模块使用过程中遇到的问题做一些整理和总结。
1. 模块介绍
详见: MATEKSYS Optical Flow & LIDAR 3901-L0X
其主要硬件构成:
- PMW3901 Optical Flow Sensor --> SPI
- VL53L0X Lidar Sensor --> I2C
- STM32L051/STM32F051 --> TTL(UART)
2. 规格参数
PMW3901
Field of view: 42 degree
Working range: > 80 mm
Minimum Illumination: >60Lux
VL53L0X
Field of view: 27 degree
Working range: 20 mm ~ 2000 mm
模块参数
Input voltage: 4.5~5.5V
Power Consumption: 40mA
Size: 3612mm (F051 version) 2g
Size: 3613mm (L051 version) 2g
3. 使用方法
根据官网描述和规格分析,我们大致可以知道该模块的使用步骤如下:
Step1: 接线方式
传感模块:Tx/Rx/GND/VCC与飞控对应引脚相接
Step2: 安装方式
- 光流计安装方向与机头保持一直,且安装在航模底部。
- 激光测距距离地面高度保持20mm以上。
Step3: 使用范围
鉴于以下细节规格:
光流计 > 80 mm
激光测距 20 mm ~ 2000 mm
气压计 10cm以内存在气垫效应
整体上要做到定点定高的悬停功能存在以下局限:
- 激光测距使能:20mm ~ 80mm ==》VL53L0X定高稳定,定位漂移
- 激光测距使能:80mm ~ 2000mm ==》VL53L0X定高稳定,定位稳定
- 激光测距使能:> 2000mm ==》Baro定高,定位稳定
- 激光测距【不】使能:< 80mm ==》Baro定高,定位漂移
- 激光测距【不】使能:> 80mm ==》Baro定高,定位稳定
4. 存在问题
基于使用,以及传感应用逻辑,有以下问题:
4.1 MATEKSYS 3901-L0X 输出协议格式?
4.1.1 支持光流计协议(iNav-CXOF)
+---------------------------+
| header (0xFE) |
+---------------------------+
|number of data bytes (0x04)|
+---------------------------+
| x-motion high byte |
+---------------------------+
| x-motion low byte |
+---------------------------+
| y-motion high byte |
+---------------------------+
| y-motion low byte |
+---------------------------+
| checksum |
+---------------------------+
| surface quality |
+---------------------------+
| footer (0xAA) |
+---------------------------+
4.1.2 支持光流计+激光测距协议(ArduPilot-UP)
+------------------------------+
| up header 1 (0xFE) |
+------------------------------+
| up header 2 (0x0A) |
+------------------------------+
| flow_x_integral low byte |
+------------------------------+
| flow_x_integral high byte |
+------------------------------+
| flow_y_integral low byte |
+------------------------------+
| flow_y_integral high byte |
+------------------------------+
|integration_timespan low byte |
+------------------------------+
|integration_timespan high byte|
+------------------------------+
| distance_z low byte |
+------------------------------+
| distance_z high byte |
+------------------------------+
| optical flow valid |
+------------------------------+
| distance credibility |
+------------------------------+
| XOR |
+------------------------------+
| footer (0x55) |
+------------------------------+
4.2 iNav & ArduPilot使用该模块存在什么问题?
目前从协议格式及代码角度,CXOF & UP协议不兼容。
从兼容性角度看:
ArduPilot代码中,有CXOF协议可以配置。
iNav代码中,尚未支持UP协议。
4.3 如何合理的匹配飞控固件?
从光流和测距传感类型支持广度角度看Ardupilot支持的更好,而iNav在测距传感主要停留在直接使用I2C的测距芯片srf10 tof10120 us42 vl5310x vl5311x,虽然benewake串行协议,但是价格相对略贵。
鉴于上述情况,如果iNav希望使用MATEK 3901-L0X模块,就需要硬件上确认如何使能VL53L0X 芯片,并通过I2C将数据传输到飞控上。
注:VL53L0X 可能与STM32L051/STM32F051连接,至于STM32是否固件上操做,完全取决于硬件的使能方法。该信息从官网资料上看,并未给出。
该模块使用的参考视频详见:Beginners Guide To Optical Flow Sensor with LIDAR on Drone | MATEKSYS 3901-L0X Optical Flow & LIDAR