Open.MEMS扩展算法库介绍(1) 【ST工程师文章】
[复制链接]
1 Open.MEMS目前支持的扩展运动算法库有:
osxMotionAC: 基于STM32Cube的实时加速度计校准扩展软件包 osxMotionGC: 陀螺仪校准扩展软件包 osxMotionMC: 磁力计校准扩展软件包 osxMotionCP: 佩戴位置扩展软件包 osxMotionPE: 姿态估算扩展软件包 osxMotionGR: 手势识别扩展软件包 osxMotionAR: 动作识别扩展软件包 osxMotionAW: 手腕动作识别扩展软件包 osxMotionID: 运动强度识别扩展软件包 osxMotionPM: 计步算法扩展软件包 osxMotionFX: 传感器融合算法软件包
2 osxMotionAC的介绍
2.1 功能 算法库获取加速度计的实时数据,然后计算offset和scalefactor coefficients,再用offset和scalefactor coefficients去补偿从加速度计中读取出来的原始数据,最后得到校准之后的数据。
2.2 特点 . offset补偿可以达到0.2g . scalefactor补偿的范围在每个方向是从0.2到1.2 . 更新频率范围从20到100Hz . 使用15KBcode和3KBdata内存 . 这库可以用于ARMCortex-M3 and Cortex-M4架构
2.3 加速度计校准示例 - /*******************Init phase ********************/
- // Setupdate period, 40 ms -> 25 Hz
- osx_MotionAC_Initialize(40);
- /***************************************************/
- Timer_OR_DataRate_Interrupt_Handler()
- {
- int16 raw_x, raw_y, raw_z;
- int16 cal_x, cal_y, cal_z;
- osx_MAC_CalQuality_t goodness;
- float sf[3][3]; int16 bias[3];
- //Get x,y,z in mg
- MEMS_Read_AccValue(&raw_x,&raw_y, &raw_z);
- //Update algorithm
- osx_MotionAC_Update(raw_x,raw_y, raw_z, timestamp_ms);
- //Get correction
- goodness =osx_MotionAC_GetCalParams(bias, sf);
- //Apply correction
- cal_x = (int16) ((raw_x -bias[0])* sf[0][0]);
- cal_y = (int16) ((raw_y -bias[1])* sf[1][1]);
- cal_z = (int16) ((raw_z -bias[2])* sf[2][2]);
- }
复制代码
2.4 校准流程 按照下面的指示,先从位置1慢慢的旋转到位置4,再旋转到位置1。旋转过程中,尽快以一个平滑的路径和固定的速度。
也可以用6点校准方法,拿着设备稳定在6个不同的方向(X,Y, Z的正负方向)。
|