1. 项目概述
在室内或GPS信号拒止环境中实现精确导航一直是移动机器人领域的核心挑战。传统惯性导航系统(INS)虽然不依赖外部信号,但存在积分漂移问题;而纯视觉导航又易受光照变化影响。我们设计的"光流+陀螺仪的无磁惯性导航轨迹记录仪"通过融合光流传感器与MEMS陀螺仪数据,构建了一套轻量化、低成本的自主导航解决方案。
这套系统基于STM32微控制器平台,采用扩展卡尔曼滤波(EKF)算法实时融合两种传感器的优势:光流提供相对位移信息但无法感知旋转,陀螺仪精确测量角速度却存在零偏。通过传感器互补,在无人机、扫地机器人等场景下可实现厘米级定位精度,且不受磁场干扰(传统磁力计在室内易受干扰)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心硬件设计
2.1 传感器选型与配置
光流传感器选用PMW3901模块,其特点包括:
- 基于光学鼠标技术,分辨率达1600CPI
- 最大检测速度7.4m/s(30cm高度)
- 工作高度范围80mm-1.2m
- 通过SPI接口输出XY轴像素位移量
陀螺仪模块采用MPU6050(6轴IMU),关键参数:
- 陀螺仪量程±2000°/s,噪声密度0.005°/s/√Hz
- 内置数字运动处理器(DMP)可减轻MCU负荷
- I²C接口,支持400kHz高速模式
硬件连接时需注意:将光流模块安装面与IMU的XY平面严格对齐,两者共享同一坐标系可减少后续坐标变换误差。
2.2 STM32最小系统设计
使用STM32F405RG作为主控,关键设计要点:
- 启用硬件SPI1(PA5/6/7)连接光流传感器
- I²C1(PB6/7)接口读取陀螺仪数据
- 定时器TIM2配置为100Hz中断用于数据同步
- 保留USART1用于调试信息输出
c复制// 传感器初始化示例
void Hardware_Init(void) {
// SPI1 for optical flow
SPI1->CR1 = SPI_CR1_MSTR | SPI_CR1_BR_0 | SPI_CR1_SSM | SPI_CR1_SSI;
SPI1->CR2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0;
SPI1->CR1 |= SPI_CR1_SPE;
