修改配置文件校准轴向及方向

修改更新sensor_def_qcomdev.conf文件

有关配置sensor_def_qcomdev.conf的详细内容请查看:高通平台 ddf sensor config 文件配置及更新流程_yujixuan-CSDN博客

在sensor_def_qcomdev.conf实际配置过程,可以配置有关sensor的轴向方向的设置;
比如 调试加速度传感器,陀螺仪,地磁等需要配置 x,y,z 3个坐标轴的方向,举例如下:
# accel x/y/z
700  -1 0x00010001 #accel-x-axis
701  -2 0x00010001 #accel-y-axis
702   3 0x00010001 #accel-z-axis
# gyro x/y/z
800  -1 0x00010001 #gyro-x-axis
801  -2 0x00010001 #gyro-y-axis
802   3 0x00010001 #gyro-z-axis
# mag x/y/z
900   1 0x00010001 #mag-x-axis
901   2 0x00010001 #mag-y-axis
902   3 0x00010001 #mag-z-axis

其格式解读任然是<Registry ID> <Value> <Version> 的方式
Registry ID在sns_reg_api_v02.h有明确定义;配置的值 取值范围为-3至3,不包括0。

其中1 代表x轴,2 代表y轴,3代表z轴。 正负号(正可以缺省)示方向。 
所以取值取反表示 方向反向,取值 调换,表示轴向调换;
比如 700 配置成 2 ,701配置成1,即表示 x轴的数据与y轴数据交换。

使用qsensor test app 确定acc sensor的方向

校准方向:

以acc为例:

进入qsensortest app 后,正常加载的sensor 会出现在sensor list当中,点击acc 启动sensor,界面如下:

qsensor test界面

app显示了当前能够加载的sensor列表,点击后即可开始读取数据,获取到的数据 [0][1][2]分别代表 x,y,z轴的数据

正常情况下,平行放置设备,按下图的方向移动设备,对应的 qsensortest中会产生对应的改变,如果方向不对,或者数据改变的轴向不对,则按照上面的内容 修改sensor_def_qcomdev.conf

  • 以z轴为例,平行放置时,有个向下的重力加速度,z轴的数据是 +9.8左右,水平翻转180度平行放置(屏幕向正下方),z轴的数据是 -9.8左右;
  • 以x轴为例,平行放置时,x轴无加速度,数据接近0,按照下图的方向旋转设备,x轴(即第一组[0])数据 会正向增加,旋转到90度,数值 +9.8左右;
  • 以y轴为例,平行放置时,y轴无加速度,数据接近0,按照下图的方向旋转设备,y轴(即第一组[1])数据 会负值向增加,旋转到90度,数值 -9.8左右;
轴向方向示意图

note: gyroscope 方向轴向方向的校准方法与之一致,由于陀螺仪的数据是角加速度,需要不断地按确定方向快速移动 qsensortest app的数据就不容易直观的观察是否正常,后面会给出另外一个app 用来演示陀螺仪的方向轴向确定方法;

使用qsensor test app 校准数据偏移

先修改 sensor_def_qcomdev.conf将轴向方向校准完成后,再进行数值的校准;

流程:

Qsensortest -> Self Test -> Options -> choose “OEMTEST” type -> run test for Accelerometer sensor

OEMTEST
OEMTEST
test pass

成功的校准后,可以通过QsensorTest读取以下寄存器地址的值
#define SNS_REG_ITEM_ACC_X_BIAS_V02 0
#define SNS_REG_ITEM_ACC_Y_BIAS_V02 1
#define SNS_REG_ITEM_ACC_Z_BIAS_V02 2

以X轴校准后的数据为例,读取 地址 2的ACC_Z_BIAS值

读取 寄存器

这个ACC_Z_BIAS值既是 校准到当前数据与标准值的偏差,这个值会被存储到sns.reg文件中,

persist分区不被更新 这个值会一直被存储使用,重启不丢失,下图是sns.reg文件pull出来后的16进制数据;

note: 数据不太直观,需要注意两点:

  1. 数据存储小端模式,低字节地址存储了低数据位,以ACC_Z_BIAS为例来看,该存储值为0x005207,对应十进制为:20999
    该偏差值就是 当前sensor读取到的 值为(value - ACC_Z_BIAS*0.00001)  及 value - 0.20999, 具体变化可以看下面的图片对比
  2. 负数的存储是以补码的形式

对比下 校准数据偏移前后的变化如下:

acc 校准前
acc校准后

使用 phyphox 确定陀螺仪gyroscope 轴向方向

使用的app:phyphox

轴向示意图

以gyroscope为例:

软件界面
平行正向放置的数据标题

分别按照 上图轴向的示意,可以得到直观的 角加速度的波形示意图 如下:

GRAPH
MULTI

有关 执行校准  底层代码部分流程分析 可以参考:
高通gsensor 校准流程

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐