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

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

[复制链接]
STMCU小助手 发布时间:2022-12-4 18:00
前言
. B1 f; w2 B; r) p% dMotionFX 是 X-CUBE-MEMS1 软件的中间件库组件,可在 STM32 上运行。它可提供实时运动传感器数据融合。它还执行陀螺仪偏差和磁力计硬铁校准。
; m# A" p8 |9 d; `" L4 l% Y* z# c该算法以静态库格式提供,旨在用于基于 ARM® Cortex®-M4 架构的 STM32 微控制器。2 O9 t" k7 u4 R$ E/ e* y) M" k7 V
它以 STM32Cube 软件技术为基础而构建,便于在不同 STM32 微控制器之间移植。, r7 N# p; s" [
该 软 件 附 带 了 NUCLEO-F401RE 或 NUCLEO-L476RG 开 发 板 上 的 X-NUCLEO-IKS01A1 ( 可 选STEVAL-MKI160V1)或 X-NUCLEO-IKS01A2 扩展板上运行的示例实现。
' X  i5 C2 g. M7 q8 v' j- S5 |  t/ u! ]  \. l# m- o  H; {" v9 H
1 缩写和缩略语9 L* h& t% [% K5 B
K7B5EXOWSMKY]OTCUD8Y]X9.png 7 b) W8 r- S. W' g+ [( [
  c% @' v" w, {
2 MotionFX middleware library in X-CUBE-MEMS1 software expansion for STM32Cube4 n! m% ^' K# }+ z3 W8 K
2.1 MotionFX 概述
2 [; `. q' v! B3 n6 |- e# k3 s; _MotionFX 库扩展了 X-CUBE-MEMS1 软件的功能。
9 ^/ s% ?5 H( E% o" @9 @该库从加速度计、陀螺仪(6 轴融合)和磁力计(9 轴融合)获取数据,并提供实时运动传感器数据融合。) _  O+ B, q. X- a& i! |, Q
无论环境条件如何,MotionFX 滤波和预测软件都利用高级算法智能地对来自多个 MEMS 传感器的输出进行整合,可以实现最佳性能。) Q! F- H8 e/ a/ o* D
X-NUCLEO-IKS01A2 和 X-NUCLEO-IKS01A1(可选 STEVAL-MKI160V1)扩展板上提供了一个示例实现,安装在 NUCLEO-F401RE 或 NUCLEO-L476RG 开发板上。; z3 O# V7 L  q; D) x9 }
9 s! o# }4 H) d/ M
2.2 MotionFX 库
$ I$ Q; e  w. O在“Documentation”文件夹的 HTML 文件(使用 MotionFX_Package.chm 编译)中,提供了完整描述 MotionFX API 的功能和参数的技术信息。
/ h5 B7 c9 {8 l! N/ b, Q3 Y2.2.1 MotionFX 库说明
( y( B( l! Y+ U& q- vMotionFX 传感器融合库可管理从加速度计、陀螺仪和磁力计传感器获取的数据;它能够:5 \, M; z+ O4 a$ |
• 实时 9 轴运动传感器数据融合(加速度计,陀螺仪,磁力计)& Y5 j: k' S2 N/ m; |6 \
• 实时 6 轴运动传感器数据融合(加速度计,陀螺仪), ^. s4 R: N: W( Z: z: T
• 计算旋转、四元数、重力和线性加速度数据6 X% S! k- P; D: p
• 陀螺仪偏差校准! S& F+ E! @0 F, N4 |& ?8 L
• 磁力计硬铁校准
, }/ B- `* x! N: t) }0 ^/ M! Y• 建议传感器数据采样频率为 100 Hz& ]7 S2 G6 y  u; O2 S" @
• 45 kB 的代码和 8 kB 的数据存储器7 b4 O6 A( Z) v- p5 H
实际空间大小对于不同的 IDE(工具链)可能不同2 v1 @2 r' X* l% I: i
• 适用于 ARM Cortex-M4 架构
# q6 @7 P8 j1 B( g0 s$ ^& S! ?3 i0 y# u& {
2.2.2 MotionFX 6 轴和 9 轴传感器融合模式& K' X$ J+ E' `$ ]1 x/ U; P
MotionFX 库实现了传感器融合算法,用来估算空间中的 3D 方向。它使用基于 Kalman 理论的数字滤波器来融合来自多个传感器的数据,并补偿单个传感器的限制。例如,陀螺仪数据可能会漂移,这会影响定向估计;这个问题可以通过使用磁力计提供绝对定向信息来解决。* c8 U/ c& r5 s  d/ I+ N3 K
类似地,磁力计带宽不高,并且受磁力干扰,但是这些弱点可利用陀螺仪来进行补偿。
4 q2 z! L4 y- ?' {+ [' x- h
( B  T6 b% ^, U9 轴传感器融合使用来自加速度计、陀螺仪和磁力计的数据,并提供 3D 空间中的绝对定向,包括航向(即磁性北方向)。# r: b# f( \& n% J0 ~( o
6 轴传感器融合仅使用加速度计和陀螺仪数据。它对计算要求较低,但不能提供有关器件绝对定向的信息。
& w( X5 b/ L, v9 \( N. ~6 轴传感器融合适用于快速移动(例如,游戏中)并且不需要绝对定位时的场景。
, \- ]3 j. B) u. f3 b% d) s3 m
9 v! g# F7 U6 ?9 Z  p) G

5 a2 K& {5 ?9 Z2 [# _2.2.3 MotionFX 库操作
" O" O$ q. c7 MMotionFX 库将 6 轴和 9 轴传感器融合算法集成在一个库中;甚至可以同时运行它们。- T  X& a) K1 ?% O
该库实现了传感器融合计算相关的以下关键内部函数:3 y. ~- l$ S. d4 ]: n9 E
1. MotionFX_propagate 是用于估计 3D 空间中定向的预测函数;在此阶段给予了陀螺仪数据更高权重。& M+ k1 [' T: f5 N. d
2. MotionFX_update 是校正函数,可在需要时调整预测值;这个阶段给予了加速度计和磁力计数据更高权重。4 Q0 O; S5 N% T7 O7 ^
每当调用 MotionFX_propagate 时,都可调用 MotionFX_update 函数,在计算能力较小的系统中不经常调用该函数。
% w9 d! J' S9 a" o/ U5 pMotionFX_update 函数大约比 MotionFX_propagate 函数多花费三倍的 MCU 计算时间。* O3 f" V, x. x3 f! \* Z- U
9 f3 z5 ]2 O/ p% D& |; t- t+ ]
2.2.4 MotionFX 库参数
& g& u/ A  L2 i7 C9 I2 G% UMotionFX 库使用 MFX_knobs_t 结构体进行“参数化”。
( S; Z, B. s: \结构体参数如下:: ]% a+ T9 H8 ^" w  t* M
• ATime、MTime、FrTime 表示用于预测的传感器(信任因子)的加权稳定性,从 0 到 1。建议使用默认值。
  M0 A% m0 z' y7 C4 M' w• LMode 代表陀螺仪偏差学习模式;库能够自动监测校准条件并进行零偏校准。
! t! t* k- a: Z8 d' ^; o! G# p此可能的参数值是:
$ s; s5 l' q/ }- o− LMode = 0 – 学习关闭;如果陀螺仪已校准,则使用此模式1 l, x7 f  B3 S
− LMode = 1 – 静态学习;仅当系统不动时进行学习
+ A: [+ r  y1 _: x2 d− LMode = 2 – 动态学习;系统移动时也进行学习
1 L6 e6 n' |3 n! e• gbias_acc/gyro/mag_th_sc_6X, gbias_acc/gyro/mag_th_sc_9X 表示阈值,低于这些阈值时 gbias 算法自动启动。这些值应通过测试来确定(不同型号器件对应不同的阈值)。2 L9 {. Q$ n7 e8 h3 Y+ J4 m- \
示例项目中的值通常是正确的$ G0 S% @8 V8 u& t$ h
− modx 表示 MotionFX_update 调用频率的抽取" a$ S5 y; v) }5 [2 E
− output_type 用于定义融合库输出数据的坐标系统类型:0 = NED,1 = ENU" ^) F# k; Q! k5 ^9 g
− start_automatic_gbias_calculation 表示一个标志,当该标志设置为 1 时可重新启动陀螺仪偏差校准, |0 w/ {$ a2 E
− acc/gyro/mag_orientation 是由三个字符组成的 acc/gyro/mag 数据定向字符串,指示速度计数据输出使用的参考框架的每个正定向的方向,顺序为 x、y、z。有效值
: p8 i1 Q& v. V0 y为:n(北)或 s(南),w(西)或 e(东),u(上)或 d(下)。
' u4 R! W+ v; L$ }+ U如下图所示,X-NUCLEO-IKS01A1 加速度计传感器采用 ENU 定向(x - 东,y - 北,z - 上),因此字符串为“enu”,而 STEVAL-MKI160V1 中的加速度计传感器为 NWU 定向(x-北,y-西,z-上),字符串为“nwu”。
0 V' S( w! W5 G7 u7 M+ O) `6 k/ x( ^6 x. ^1 w( N6 c! @- c$ V
Z3MBJ8L`T]`V%JB%8QE3%NL.png
$ t5 W; s3 V5 }6 c: A+ M: C
% y5 j% X- Z0 M9 i0 t! {MotionFX_propagate 和 MotionFX_update 函数从 MFX_input_t 结构体获取传感器数据:
* i0 q2 m% ^0 v) Q4 b5 V1 G• mag 表示校准后的磁力计数据,以 µT/ 50 计
$ k- |8 z. R1 P1 B3 U4 o! r+ `: M• acc 表示加速度计数据,以 g 计
" u$ W6 H* s4 B• gyro 表示陀螺仪数据,以 dps 计
5 }# l* g8 S8 N. f0 D/ o
9 O6 n% o" {! Y, E* i9 y0 e: i
MotionFX_propagate 和 MotionFX_update 将融合算法输出保存到 MFX_output_t 结构体中:, F( Q% _" B# Y' ]9 e: v; y* M! D$ j
• rotation_6/9X 表示系统定向为三角格式:偏航角,俯仰角,翻滚角
( m# q2 I3 l3 @/ x( w9 V• quaternion_6/9X 表示系统定向四元素格式;此格式可提供与 rotation_6/9X 同样的信息,但它在计算方面具有优势,因此通常用于其他算法(基于传感器融合)。
; ?1 u" \5 G. O+ v; b• gravity_6/9X 表示从加速度数据中所得到的静态加速度(即,地球重力)向量6 S/ B- ]: a: ^, s
• linear_acceleration_6/9X 表示从加速度数据中得到的动态加速度(即,移动)向量。
! k9 ^. Q4 k1 x& X7 c  w0 P1 B  |2 X( x/ j. f
完整版请查看:附件9 G9 ~  l1 ^( |- l7 @8 U  q, w

9 W% d2 k; P) \  l' X  t% }, E6 {1 `  V3 _- h" |

2 c: R, q; W" V2 X( N

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

下载

1.34 MB, 下载次数: 25

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

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版