序言
接触Invensense的芯片这已经是第三次了。2015年在第二空间的时候第一次接触它的芯片,那时候是MPU9250;2021年的时候在智橙动力再一次接触到了MPU6050,那个时候用到了其中的DMP;这次接触的是ICM20948,按目前笔者理解,它是MPU9250的更新换代(不一定准确),也要使用到其DMP功能。
其实在几年前玩MPU6050的时候,就想把其DMP细节研究明白,哪怕是研究其中一部分并形成文档也是好的。但是当时太忙了,实在没有时间付诸实施。现在兜兜转转又回来了,正所谓事不过三,这次一定要留一些东西了。
DMP介绍
1. 什么是DMP?
DMP全称Digital Motion Processor,中文译为数字运动处理器;也有的翻译为Digital Motion Processing,即数字运动处理。DMP是Invensense公司针对其产品推出的软件包,能直接输出四元数,可以减轻外围微处理器的工作负担且避免了繁琐的滤波和数据融合,适用于MPU6050、MPU6500、MPU9150、MPU9250等传感器。
DMP技术的核心在于实现传感器数据的融合,通过算法将不同传感器的输出进行整合,以获取更准确、更稳定的姿态信息。
2. ICM20948中的DMP
ICM20948内置的DMP可以处理来自陀螺仪、加速度计和磁力计的数据,通过卡尔曼滤波或其它优化算法,消除噪声,提高动态性能,实现精确的六自由度姿态估计(俯仰、翻滚和偏航角)。
在ICM20948的芯片手册中,对于DMP做了介绍(参见笔者文章ICM-20948芯片详解(4)_icm20948-CSDN博客):
3. 什么是eMD?
The Embedded Motion Driver(eMD,嵌入式运动驱动程序)是传感器驱动层的嵌入式软件栈,可以轻松配置和利用InvenSense运动跟踪解决方案的许多功能。Invensen发布的eMD实现了多种传感器融合算法,供客户使用,如四元数生成和手势检测。
eMD被设计为一种可以轻松移植到大多数MCU的解决方案。随着eMD 20X48的发布,它包括一个完整的9轴解决方案,包括传感器融合、校准和通用手势检测,所有这些都在DMP上运行。eMD发布包包含一个示例项目,该项目基于ARM M4的裸金属ST Discovery评估板。
更多内容请看下回。