高通android平台 sensor校准
轴向及方向的校准修改更新sensor_def_qcomdev.conf文件有关配置sensor_def_qcomdev.conf的详细内容请查看:高通平台sensor配置文件的使用在sensor_def_qcomdev.conf实际配置过程,可以配置有关sensor的轴向方向的设置,比如 调试加速度传感器,陀螺仪,地磁等需要配置 x,y,z3个坐标轴的方向,举例如下:# accel x/y/z70
修改配置文件校准轴向及方向
修改更新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,界面如下:
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
成功的校准后,可以通过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: 数据不太直观,需要注意两点:
- 数据存储是小端模式,低字节地址存储了低数据位,以ACC_Z_BIAS为例来看,该存储值为0x005207,对应十进制为:20999
该偏差值就是 当前sensor读取到的 值为(value - ACC_Z_BIAS*0.00001) 及 value - 0.20999, 具体变化可以看下面的图片对比 - 负数的存储是以补码的形式
对比下 校准数据偏移前后的变化如下:
使用 phyphox 确定陀螺仪gyroscope 轴向方向
使用的app:phyphox
以gyroscope为例:
分别按照 上图轴向的示意,可以得到直观的 角加速度的波形示意图 如下:
有关 执行校准 底层代码部分流程分析 可以参考:
高通gsensor 校准流程
更多推荐
所有评论(0)