• 传感模块:MATEKSYS Optical Flow & LIDAR 3901-L0X


    这里主要针对模块使用过程中遇到的问题做一些整理和总结。

    1. 模块介绍

    详见: MATEKSYS Optical Flow & LIDAR 3901-L0X

    Beginners Guide To Optical Flow Sensor with LIDAR on Drone MATEKSYS 3901-L0X Opt

    其主要硬件构成:

    1. PMW3901 Optical Flow Sensor --> SPI
    2. VL53L0X Lidar Sensor --> I2C
    3. 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: 36
    13mm (L051 version) 2g

    3. 使用方法

    根据官网描述和规格分析,我们大致可以知道该模块的使用步骤如下:

    Step1: 接线方式

    传感模块:Tx/Rx/GND/VCC与飞控对应引脚相接
    接线方式

    Step2: 安装方式

    1. 光流计安装方向与机头保持一直,且安装在航模底部。
    2. 激光测距距离地面高度保持20mm以上。
      安装方式

    Step3: 使用范围

    鉴于以下细节规格:

    光流计 > 80 mm
    激光测距 20 mm ~ 2000 mm
    气压计 10cm以内存在气垫效应

    整体上要做到定点定高的悬停功能存在以下局限:

    1. 激光测距使能:20mm ~ 80mm ==》VL53L0X定高稳定,定位漂移
    2. 激光测距使能:80mm ~ 2000mm ==》VL53L0X定高稳定,定位稳定
    3. 激光测距使能:> 2000mm ==》Baro定高,定位稳定
    4. 激光测距【不】使能:< 80mm ==》Baro定高,定位漂移
    5. 激光测距【不】使能:> 80mm ==》Baro定高,定位稳定

    4. 存在问题(思考)

    基于使用,以及传感应用逻辑,有以下问题:

    4.1 MATEK 3901-L0X 输出协议格式?

    4.1.1 支持光流计协议(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)       |
      +---------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    4.1.2 支持光流计+激光测距协议(UPFLOW)

      +------------------------------+
      |   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)         |
      +------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    4.2 iNav & ArduPilot使用该模块存在什么问题?

    目前从协议格式及代码角度,CXOF & UPFLOW协议不兼容。

    从兼容性角度看:

    Ardupilot代码中,直接支持CXOF & CXOF协议。
    iNav代码中,尚未支持UPFLOW协议

    4.3 如何合理的匹配飞控固件?

    从光流和测距传感类型支持广度角度看:

    1. Ardupilot生态支持的的更好,支持UPFLOW
    2. 而iNav在测距传感主要停留在直接使用I2C的测距芯片:srf10 tof10120 us42 vl5310x vl5311x,虽然benewake串行协议,但是价格相对略贵。
    3. MATEK 3901-L0X在官网介绍中,也提示如果VL5310x 使能,则可以使用2米以下的定高功能,详见官网或者下面截图。
    4. 关于VL5310x使能的硬件配置分析(不确定,因为可能还会与嵌入式软件和硬件设计有关)

    鉴于上述情况,如果iNav希望使用MATEK 3901-L0X模块,就需要硬件上确认如何使能VL53L0X 芯片,并通过I2C将数据传输到飞控上。

    注:VL53L0X 可能与STM32L051/STM32F051连接,至于STM32是否固件上操做I2C控制该芯片,完全取决于软硬件的使能方法。该信息从官网资料上看,并未给出。

    该模块使用的参考视频详见:Beginners Guide To Optical Flow Sensor with LIDAR on Drone | MATEKSYS 3901-L0X Optical Flow & LIDAR

    官网提示
    分析使能I2C

    4.4 关于“Sonar connection (Trig & Echo) has not been implemented”的问题?

    估计是指MATEKSYS 3901-L0X模块,尚没有支持外接声呐测距功能。

    现实情况:

    1. MATEKSYS 3901-L0X本身是具有激光测距(20mm ~ 2000mm)的VL53L0X Lidar传感器;
    2. 通常飞控板子都是集成了一个气压计芯片;
    3. 声呐精度相对于激光测距来说不够精准(通常来说:激光mm级别,声呐cm级别);

    初步分析:

    1. 【猜测】该模块期望解决定高(低空)+ 定位
    2. 【使用】根据规格总结的使用范围与猜测期望解决问题一致
    3. 【需求】户外飞行定高定位:通常在GPS+Baro传感融合,效果良好(开阔场地)
    4. 【需求】户外飞行RTH功能:除了GPS返航,主要是一个自动精准降落,VL53L0X Lidar能够比较好的处理在2米以下高度精准性
    5. 【猜测】该模块补充声呐硬件接口,怀疑希望做数据融合应对低空的各种场景,比如:水面/复杂地形

    不知道是什么原因导致MATEK最后没有将该模块以完整功能投入市场。市场需求(购买力),数据融合效果,技术问题,还是其他问题。虽然硬件接口上都遗留了产品规划的一些构思,但是在实际开发和产品化阶段,停留在现在的情况。

    5. iNV - MSP Sensor Protocol (突破)

    之前主要是BF代码看的多点,而且拿到了一份upixels的光流激光二合一协议手册,总是纠结在CXOF和UPFLOW上。

    src/main/target/common.h
    iNav支持CXOF和UPFLOW

    上面的这个角度去看问题,确实会就在iNav在使用MATEK 模块会遇到一些实际问题。

    最终,还是仔细看了MATEK官网给出的一个信息,支持MSPV2格式通信协议。

    MSP Sensor Protocolsrc/main/fc/fc_msp.c

    iNav代码
    按照上述角度,可以非常清晰的看清传感数据逻辑流程:

    PMW3901 Optical Flow Sensor  --- SPI  ---+
                                             |
                                             +--->   STM32L051/STM32F051 --- TTL(UART/MSP Sensor Protocol)  ---> Flight Control
                                             |
    VL53L0X Lidar Sensor         --- I2C  ---+
    
    • 1
    • 2
    • 3
    • 4
    • 5

    6. MATEK 3901-L0X定位效果

    Matek Optical Flow and Lidar Sensor Journey. Part 1

    Matek Optical Flow and Lidar Sensor Journey. Part 2

    Matek Optical Flow and Lidar Sensor Journey. Part 3

    7. 测试效果

    目前的效果尚不理想主要存在以下几个问题:
    1)【未解决】桨叶有缺损
    2)【未解决】螺丝有缺失
    3)【待改善】水平校准(iNav多次水平校准 + 遥控器微调,能暂时1~2秒内保持稳定悬停)
    4)【待改善】地面花纹(漫反射)
    5)【待改善】光照照度需要量化
    6)【未解决】定制的posHold算法

    iNav

    8. 参考资料

    【1】Multiwii Serial Protocol Version 2
    【2】BetaFlight模块设计之三十二:MSP协议模块分析
    【3】iNavFlight之MSP Sensor报文格式

  • 相关阅读:
    8、Nacos服务注册服务端源码分析(七)
    【linux】Linux wps字体缺失、加粗乱码解决
    离线安装docker-compose
    【Gopher 学个函数】边学边练,简单为 Go 上个分
    Linux性能优化--实用工具:性能工具助手
    JVM——5.类文件结构
    Nebula Graph介绍和SpringBoot环境连接和查询
    win10录音机入门指南,让你的录音更轻松
    外包干了5天,技术明显退步。。。。。
    终于学完了9年资深工程师推荐的Java项目化程序设计案例文档
  • 原文地址:https://blog.csdn.net/lida2003/article/details/128007625