你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32Cube 的X-CUBE-MEMS1 扩展软件中MotionFX 传感器融合库使用入门

[复制链接]
STMCU小助手 发布时间:2022-12-4 18:00
前言7 C1 z: a2 B; G, g. l; _6 n
MotionFX 是 X-CUBE-MEMS1 软件的中间件库组件,可在 STM32 上运行。它可提供实时运动传感器数据融合。它还执行陀螺仪偏差和磁力计硬铁校准。
2 B( y$ j2 T8 z  G7 _2 D: ]+ i该算法以静态库格式提供,旨在用于基于 ARM® Cortex®-M4 架构的 STM32 微控制器。
' A' t+ t* E; y: b1 n' d9 V! R$ _它以 STM32Cube 软件技术为基础而构建,便于在不同 STM32 微控制器之间移植。, v8 ^- T7 R0 A+ w7 l& r$ J* l
该 软 件 附 带 了 NUCLEO-F401RE 或 NUCLEO-L476RG 开 发 板 上 的 X-NUCLEO-IKS01A1 ( 可 选STEVAL-MKI160V1)或 X-NUCLEO-IKS01A2 扩展板上运行的示例实现。+ e- L) D: X" k( Z+ [6 w% Q4 l

; F: o% W' Z1 H& |+ S+ G1 缩写和缩略语
6 o' ~7 d% c! v K7B5EXOWSMKY]OTCUD8Y]X9.png $ b: _: ~3 T0 w7 J- r- k

: T- j' m; `! q. x2 MotionFX middleware library in X-CUBE-MEMS1 software expansion for STM32Cube% Z! e: N) x$ e! i/ Y. D. x
2.1 MotionFX 概述
2 |, ]3 m3 j9 a" g7 q( v# ?1 A  bMotionFX 库扩展了 X-CUBE-MEMS1 软件的功能。! L* L, e  m% W& s
该库从加速度计、陀螺仪(6 轴融合)和磁力计(9 轴融合)获取数据,并提供实时运动传感器数据融合。* {) U, F' \- c& m
无论环境条件如何,MotionFX 滤波和预测软件都利用高级算法智能地对来自多个 MEMS 传感器的输出进行整合,可以实现最佳性能。8 I) f4 R: {3 F5 h+ l+ Z- c+ j+ y- {
X-NUCLEO-IKS01A2 和 X-NUCLEO-IKS01A1(可选 STEVAL-MKI160V1)扩展板上提供了一个示例实现,安装在 NUCLEO-F401RE 或 NUCLEO-L476RG 开发板上。" q# X! B( K5 L% Y
1 E8 S; B% t/ }; G1 v3 L" |
2.2 MotionFX 库4 r6 r: `* m9 o* T4 I
在“Documentation”文件夹的 HTML 文件(使用 MotionFX_Package.chm 编译)中,提供了完整描述 MotionFX API 的功能和参数的技术信息。' x1 e" G8 M9 \# k% L
2.2.1 MotionFX 库说明
& o8 F! A0 R  V. a- J3 ZMotionFX 传感器融合库可管理从加速度计、陀螺仪和磁力计传感器获取的数据;它能够:! `. `% p) i7 J
• 实时 9 轴运动传感器数据融合(加速度计,陀螺仪,磁力计)
" Y! D/ P( D, [/ i7 R1 c• 实时 6 轴运动传感器数据融合(加速度计,陀螺仪)
7 w4 r/ J7 f) L8 A( y+ W" U0 X& K• 计算旋转、四元数、重力和线性加速度数据
8 q# R: d% x! R  d4 `  k- e• 陀螺仪偏差校准$ Y. H* J  \! I# b6 {& P
• 磁力计硬铁校准
+ A, y1 S) L, j6 h8 Q5 d: M• 建议传感器数据采样频率为 100 Hz( C/ r7 I9 Z# G" O+ E* y, w+ v
• 45 kB 的代码和 8 kB 的数据存储器7 o8 w; n  b* q0 [9 ?
实际空间大小对于不同的 IDE(工具链)可能不同
: S5 Z2 ~* Q: W- `1 U• 适用于 ARM Cortex-M4 架构' _# f; ~0 y" Q6 I( ^! F
0 A3 q( h: f3 i5 j, J! {
2.2.2 MotionFX 6 轴和 9 轴传感器融合模式  n4 r/ \1 J3 k: G* ~' l) p& T
MotionFX 库实现了传感器融合算法,用来估算空间中的 3D 方向。它使用基于 Kalman 理论的数字滤波器来融合来自多个传感器的数据,并补偿单个传感器的限制。例如,陀螺仪数据可能会漂移,这会影响定向估计;这个问题可以通过使用磁力计提供绝对定向信息来解决。2 `) m* }/ L# \
类似地,磁力计带宽不高,并且受磁力干扰,但是这些弱点可利用陀螺仪来进行补偿。3 c1 y; P3 O8 e

$ y& _+ U3 Z5 o* h9 轴传感器融合使用来自加速度计、陀螺仪和磁力计的数据,并提供 3D 空间中的绝对定向,包括航向(即磁性北方向)。( T, v- Q6 c  [4 _
6 轴传感器融合仅使用加速度计和陀螺仪数据。它对计算要求较低,但不能提供有关器件绝对定向的信息。
! w& z' e% y* c! k% i' K" d0 M6 轴传感器融合适用于快速移动(例如,游戏中)并且不需要绝对定位时的场景。7 t# Y* C" m) J0 s. I

( y% Q. |! d. {/ {* w: D
' z7 l! B0 a, }: j2 G
2.2.3 MotionFX 库操作1 l" L, q2 n" O0 S* x
MotionFX 库将 6 轴和 9 轴传感器融合算法集成在一个库中;甚至可以同时运行它们。8 O5 p( z$ x2 I: n
该库实现了传感器融合计算相关的以下关键内部函数:
8 A4 W  O, _0 \  A* q6 P1. MotionFX_propagate 是用于估计 3D 空间中定向的预测函数;在此阶段给予了陀螺仪数据更高权重。
3 _9 b' q5 m5 W2. MotionFX_update 是校正函数,可在需要时调整预测值;这个阶段给予了加速度计和磁力计数据更高权重。
7 o8 U* K5 E3 ?# w每当调用 MotionFX_propagate 时,都可调用 MotionFX_update 函数,在计算能力较小的系统中不经常调用该函数。/ B, g9 h* g% u! t
MotionFX_update 函数大约比 MotionFX_propagate 函数多花费三倍的 MCU 计算时间。5 d) \* \7 Z. p7 V' u
3 d& b$ m+ J8 ?( E6 o& K
2.2.4 MotionFX 库参数) I) N) O( A, F6 w5 b
MotionFX 库使用 MFX_knobs_t 结构体进行“参数化”。
0 {- b$ s! {6 }/ X! ~, u- ?' {# H结构体参数如下:2 p% [" ~5 |- a) l' a
• ATime、MTime、FrTime 表示用于预测的传感器(信任因子)的加权稳定性,从 0 到 1。建议使用默认值。# n3 @' U( ^; K7 `7 }/ B! T
• LMode 代表陀螺仪偏差学习模式;库能够自动监测校准条件并进行零偏校准。
3 h* @! Z( D3 t: M此可能的参数值是:( u+ s, p0 U0 n% f
− LMode = 0 – 学习关闭;如果陀螺仪已校准,则使用此模式
( ~- k! b+ S  P4 i3 [% Z! j1 D− LMode = 1 – 静态学习;仅当系统不动时进行学习  Y- M6 E, n( I3 y! r
− LMode = 2 – 动态学习;系统移动时也进行学习8 k/ ?6 X8 j0 z/ T- c# s2 q
• gbias_acc/gyro/mag_th_sc_6X, gbias_acc/gyro/mag_th_sc_9X 表示阈值,低于这些阈值时 gbias 算法自动启动。这些值应通过测试来确定(不同型号器件对应不同的阈值)。
- h3 {1 x$ T0 ^/ Y5 A& z示例项目中的值通常是正确的
+ A' A7 t5 f" S0 t' J0 I$ M− modx 表示 MotionFX_update 调用频率的抽取; j- P8 V" J" C3 O+ T+ I2 m- ?( H
− output_type 用于定义融合库输出数据的坐标系统类型:0 = NED,1 = ENU- t7 s' \, d1 x
− start_automatic_gbias_calculation 表示一个标志,当该标志设置为 1 时可重新启动陀螺仪偏差校准/ \3 ^0 y( P8 K2 x/ k
− acc/gyro/mag_orientation 是由三个字符组成的 acc/gyro/mag 数据定向字符串,指示速度计数据输出使用的参考框架的每个正定向的方向,顺序为 x、y、z。有效值
6 i, y& A, q' N, Y为:n(北)或 s(南),w(西)或 e(东),u(上)或 d(下)。7 ?. N. }# ]1 K4 h7 H4 F
如下图所示,X-NUCLEO-IKS01A1 加速度计传感器采用 ENU 定向(x - 东,y - 北,z - 上),因此字符串为“enu”,而 STEVAL-MKI160V1 中的加速度计传感器为 NWU 定向(x-北,y-西,z-上),字符串为“nwu”。
& M0 J) M* ]! g/ r# N3 V( X3 \8 `0 j( h5 V
Z3MBJ8L`T]`V%JB%8QE3%NL.png
5 T4 F% x' J% K4 T  T0 l4 u9 T% {! Z4 r1 U2 l, i+ ?0 K
MotionFX_propagate 和 MotionFX_update 函数从 MFX_input_t 结构体获取传感器数据:) D8 i  q7 I! S' `, X
• mag 表示校准后的磁力计数据,以 µT/ 50 计
, b1 W' X6 j6 z4 k• acc 表示加速度计数据,以 g 计( B& g* k% _0 ^- C: Y8 K7 ?4 \% Q
• gyro 表示陀螺仪数据,以 dps 计
/ s5 F) ~7 X/ W5 |1 G2 M( J
) N' ^! Q4 C! Y( T
MotionFX_propagate 和 MotionFX_update 将融合算法输出保存到 MFX_output_t 结构体中
0 ^  c/ b5 |2 ?8 u( F• rotation_6/9X 表示系统定向为三角格式:偏航角,俯仰角,翻滚角& i# B+ t: R# X2 c3 A
• quaternion_6/9X 表示系统定向四元素格式;此格式可提供与 rotation_6/9X 同样的信息,但它在计算方面具有优势,因此通常用于其他算法(基于传感器融合)。
9 \1 V8 P' f4 q5 [! T• gravity_6/9X 表示从加速度数据中所得到的静态加速度(即,地球重力)向量
( {4 k. `9 b; T8 K: m2 R• linear_acceleration_6/9X 表示从加速度数据中得到的动态加速度(即,移动)向量。% J0 `  m; M8 ]7 |  p8 u7 }: Q
$ s. a3 Z1 m) o4 c' r0 T5 P
完整版请查看:附件3 d2 d5 T% f+ D3 S0 ~+ `

% o: i, t' ]' K" }6 S( y' x3 F+ W# I: u* W8 g+ X  k
  i( |: ?0 Q0 U$ }

STM32Cube 的 X-CUBE-MEMS1 扩展软件中 MotionFX 传感器融合库使用入门.pdf

下载

1.34 MB, 下载次数: 24

收藏 评论0 发布时间:2022-12-4 18:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版