- micro-python:一阶互补滤波&四元数法 代码
2.系统方案
2.1.组成
2.2.供电部分
电池为14500锂电池, 容量1300mAh, 额定电压3.7V. 连接一个电池AMS1117降压电路, 得到稳定的3V3输出, 为后续系统供电.
2.3.树莓派pico
树莓派Pico是树莓派基金会自主研发的双核MCU:RP2040提供超低功耗和极低功耗I/O延迟,可用micro-python或者C语言编写程序。
RP2040 芯片是 7×7mm QFN-56 具体规格参数如下:
- 双核 Arm Cortex-M0 @ 133MHz
- 芯片内置 264KB SRAM 和 2MB 的板载闪存
- 通过专用 QSPI 总线支持最高 16MB 的片外闪存
- DMA 控制器
- 30 个 GPIO 引脚,其中 4 可用作模拟输入
- 2 个 UART、2 个 SPI 控制器和 2 个 I2C 控制器
- 16 个 PWM 通道
- USB 1.1 支持主机和设备
- 8 树莓派可编程 I/O(PIO)自定义外围设备支持状态机
- 支持 UF2 的 USB 大容量存储启动模式用于拖放式编程
2.4.蓝牙HC05模块
HC05模块是ALIENTEK高性能主从一体蓝牙串口模块支持非常宽的波特率范围:4800~1382400, 计算机、蓝牙主机、手机与各种蓝牙功能相同,PDA、PSP等待智能终端配对
2.5.姿态传感器mpu6050
InvenSense全球首个集成6轴运动处理组件,输出三轴加速度ax,ay,az以及三轴角速度gx,gy,gz,体积4x4x9mm,i2c通信,测量范围角速度±250,±500,±1000,±2000°/sec(dps),加速度±2g,±4g,±8g,±16g
2.6.一阶互补滤波
加速度计的特点是测量准确, 但易受噪声影响, 例如,当附近有电机旋转时, 加速输出值波动剧烈; 陀螺仪的特点是不受高频噪声的影响, 但是数值会有漂移, 时间越长, 误差越大.
传感器 | 加速度计 | 陀螺仪 |
---|---|---|
高频振动噪声 | 敏感 | X |
低频漂移 | X | 漂移 |
两个传感器可以弥补相互的缺点,单纯用六轴传感器是无法准确获得的Yaw但在跌倒场景中,Yaw角并非特别重要.
比如对于pitch角度(绕y轴旋转角)由加速度计算(x轴转角度) a n g l e A y = a x a y 2 a z 2 angleAy=\frac{ax}{\sqrt{ay^2 az^2}} angleAy=ay2 az2 ax ,由陀螺仪计算得到的绕y轴角度 a n g l e G y = l a s t p i t c h + g y × d t angleGy=last_{pitch}+gy\times dt angleGy=lastpitch+gy×dt
定义k代表加速度计的权重,1-k即陀螺仪的权重,最终得到 p i t c h = k × a n g l e A y + ( 1 − k ) × a n g l e G y pitch=k\times angleAy+(1-k)\times angleGy pitch=k×angleAy+(1−k)×angleGy
此外还有其他方法可以得到三轴姿态角:
-
四元数
-
卡尔曼滤波
-
数字运动处理器DMP
-
MPU6050 抄底解读
-
MPU6050 姿态解算系列一:加速度姿态解算
-
MPU6050 姿态解算系列二:陀螺仪姿态解算
-
MPU6050 姿态解算系列三:互补滤波
-
MPU6050 姿态解算系列四:线性 Kalman 滤波
-
micropython-mpu6050-esp8266
-
MPU6050误差分析