
利用STM32MP1和STM32MP2为嵌入式Linux提供有效的安全措施:供当今决策者参考的3条宝贵经验
有奖直播 | STM32MP2x 资源隔离架构 (RIF) 介绍与使用
白皮书下载|边缘 AI 变革:MCU集成 NPU 的破局与领航
OpenSTLinux:为STM32 MPU生态系统带来超强助力
【STM32MP257】轻松搭建A35 Linux编译及调试环境
【STM32MP257】🥳STM32MP257-DK-开发板开箱体验
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【STM32MPU 安全启动】 TF-A BL2 TrustedBoot原理学习
《STM32MPU安全启动》学**结
《STM32MPU安全启动》学习心得
首先声明,我不是专业研究IMU的。我的观点只是根据自己的了解作答,如果有问题,请朋友们指正。
关于你说的校准,我举个例子。你拿到手机之后如果觉得不准,是不是曾经用过校准程序?它怎么做的呐?是不是让你画八字形。对这是一种校准。我使用过一种复杂的校准是转动IMU尽可能的缓慢但是把球面尽可能的布满。这样你会发现也许你得到的不是一个正球面,有些变形的球面。这是为什么? ~ e! Q0 a& e' F
个人的解释是因为传感器MEMES本身的特性,导致读到的数据并不能让每个轴都达到同样的精度。或多或少有些误差,甚至每个轴获得的读数是否因为轴之间并非真的解耦而出现依赖。导致的。- ` ^/ [3 j P e; B0 P1 ^6 h
我上面的说法实际有一些错误,但是你基本可以理解为因为种种原因,它读出的数据就是不准。画不了一个正球形,这就需要根据校准模型去拟合和修正成一个正球。这就是校准。既然我知道自己的不够专业,那就人云亦云给你带来点理论知识。/ C( [. w, B' k5 d' F
Hard Iron VS Soft Iron
你搜索一下Soft Iron Calibration和Hard Iron Calibration,你也能搜索到Hard Iron 和Soft Iron Distortions
不要见了洋文就心惊胆战,做逃兵。! l7 ~6 i2 K3 a3 u; `
不知道中文怎么翻译这两种校准和干扰。不妨直译成“软铁校准”和“硬铁校准”,不好意思铁没有软的(别说液态铁),但是先勉为其难,这样叫吧。
为什么校准呐,是因为有干扰有漂移有误差。误差是校准的主要原因,所以要说明为什么校准或者何种校准先要了解误差是怎样产生的。
噢,对了这里一旦涉及到Iron,就是指Magnetic Sense来说的,不是对加速度和陀螺仪来说的。所以你最好还要了解一下Fusion的原则是什么。这里简单说一下:陀螺仪数据为基础,加速度做一级修正和fusion。在它们的基础上加上指向,同时做第二层的fusion。! D2 x) i2 B: B6 N! @, G
【kao,码字太不舒服】
先上一篇洋文,压压惊。magnetometer
这篇文章讲的比较多,文章里面讲的清清楚楚。让我码的字毫无意义。怎么办呐?
那我做个简单的复述吧。首先,看这篇文章,你要明白磁场是什么?传感器所处的磁场是怎样的。! |% l9 e3 m: N+ S& Y
OK,传感器的磁场由地磁场和周围物体磁场产生的。(当然如果是磁性体,自身也有磁场)/ k8 ?4 }& s3 D, N' X
那地磁场的特性如何,周围磁场怎样变化。什么特性?$ W6 l5 T6 y$ ]$ C
怎么建立物体的磁场模型?
OK,言归正传。4 y. Z, \5 @! R' ]* z) k
Hard Iron Distortions是周围物体产生的磁场。比如麦克风,磁铁。反正周围能够产生的磁性物质产生的磁场。这种磁性物质将在周围产生一个永久的偏差。但是比如,我之前在测试的时候物体的外壳上有个霍尔传感器,霍尔传感器旁边有一个小磁铁,因而产生了一个永恒切基本不变的磁场。(这个偏差差点让我奔溃,我找了好久才找到): v( x% D9 Z. I$ J! u U0 u/ f! Y
/ p) \ y0 x7 _* b
Soft iron distortions 被认为是所处的磁场本身的偏差和改变。这种磁场会随着传感器的朝向变化而有所变化。这种磁场一般是铁钴镍等磁性金属产生的。通常Hard的比soft的强一些。但是凡事无绝对。
文章的后面讲了偏差和干扰的可视化和修正技术。2 _( {/ t7 o: }
看看吧,肚子饿了。做点饭, v7 T3 t' W; b$ J: ?# Z
3 W7 J$ q# a' {0 r
有的讲的很清楚。这里给个链接,希望不违反社区的规则:Soft & Hard Iron
. z. F7 Z$ R8 r( d* U$ @, g
对了看完给留个言,确保我写的这段文字有点意义
我用iic读取了9轴的数据,想用dmp求出3个姿态角,但没能看懂,dmp核心程序和初始化寄存器是哪些,能说下吗?
是这样的,这里共享的代码实际上是基于MD库文件的。而MD库是invensense的,这里共享的实际就是个应用。/ ], l3 v Y# F6 c% V
而对DMP的处理部分都是在闭源的库里面实现的。8 O9 C1 W3 M5 v7 M+ j
另外我现在还是比较推荐你使用一下st的汽车级的传感器,它们现在的传感器似乎做的也不错,而且也有免费使用的库。! M, [; h7 |( t4 P* p6 I V
因为最近在忙别的项目,这个项目目前已经长期没有更新了。
很不好意思
之前用Motion Driver5.13版本自检校准,读取数据都没问题。现在使用Motion Driver6.12,连自检都通不过,强行进入校准程序里面,然后DMP读取的数据就是混乱的。不执行自检校准程序读取出来的数据会有一点零偏。已经使用同一块芯片验证的,Motion Driver5.13完全没问题,Motion Driver6.12无法自检。如果还有大佬看到的话,麻烦指导一下,万分感激。我是使用stm32F301移植的。1 ~: Z& ^. L. E