当前位置: 首页 > news >正文

加速度传感器方向校准方法

保持平板平放在桌面上,将后置摄像头保持在平板的左上后方,或者右上后方,此为机器的正方向

1、以一台重力方向正常的机器做测试,通过DeviceInfoHw这个软件的加速度测试功能【Accelerometer Test】我们可以知道

X方向数据测试:
将机器右侧抬起,以平板左边框为轴转动,发现X的数据从0开始逐渐增大,从0不断增加到10左右
将机器左侧抬起,以平板右边框为轴转动,发现X的数据从0开始逐渐减小,从0不断减小到-10左右Y方向数据测试:
将机器顶部抬起,以平板下边框为轴转动,发现Y的数据从0开始逐渐增大,从0不断增加到10左右
将机器底部抬起,以平板上边框为轴转动,发现Y的数据从0开始逐渐减小,从0不断减小到-10左右Z方向数据测试:
将机器正放,屏方向朝上,发现Z数据是10
将机器反放,屏方向朝下,发现Z数据是-10

2、接下来我们拿到一台重力方向不正确的机器来调试,我们同样打开DeviceInfoHw-传感器-加速规(Accelerometer Test)界面进行调试:

2.1纯文字测试记录结果:

X方向:
我们将机器右侧抬起,以平板左边框为轴转动,发现X的数据不变,Y的数据却从0不断减小为负值,那么说明Y的数据应该是X的才对,并且其数值应该也要取反Y方向:
我们将机器顶部抬起,以平板下边框为轴转动,发现Y的数据不变,X的数据却从0不断增大为正值,那么说明X的数据应用是Y的才对,并且其数值方向正确,无须取反处理Z方向:
我们将机器反放,屏方向朝下,Z的数据为-11.1,与上述测试结果作比较,说明当前测试机器Z方向的数据是正确的

2.2 图文测试记录结果:
X方向测试:

X方向:
我们将机器右侧抬起,以平板左边框为轴转动,发现X的数据不变,Y的数据却从0不断减小为负值,那么说明Y的数据应该是X的才对,并且其数值应该也要取反

在这里插入图片描述

Y方向测试:

Y方向:
我们将机器顶部抬起,以平板下边框为轴转动,发现Y的数据不变,X的数据却从0不断增大为正值,那么说明X的数据应用是Y的才对,并且其数值方向正确,无须取反处理

在这里插入图片描述
Z方向测试:

Z方向:
我们将机器反放,屏方向朝下,Z的数据为-11.1,与上述测试结果作比较,说明当前测试机器Z方向的数据是正确的

在这里插入图片描述

3、根据以上测试结果我们直接去修改bsp中对应文件上报数数据部分代码即可

diff --git a/bsp/modules/input/misc/sc7a20/sc7a20.c b/bsp/modules/input/misc/sc7a20/sc7a20.c
index 7acb52dd8a..c76fc8fb17 100755
--- a/bsp/modules/input/misc/sc7a20/sc7a20.c
+++ b/bsp/modules/input/misc/sc7a20/sc7a20.c
@@ -2600,8 +2600,8 @@ static void sc7a20_acc_report_values(struct sc7a20_acc_data *acc, int *xyz)input_report_abs(acc->input_dev, ABS_Y, -xyz[1]);   input_report_abs(acc->input_dev, ABS_Z, -xyz[2]);#else
-    input_report_abs(acc->input_dev, ABS_X, xyz[1]);
-    input_report_abs(acc->input_dev, ABS_Y, xyz[0]);
+    input_report_abs(acc->input_dev, ABS_X, xyz[0]);//xyz[0] --<A1><B7> -xyz[1])
+    input_report_abs(acc->input_dev, ABS_Y, -xyz[1]);//xyz[1] --<A1><B7> -xyz[0])input_report_abs(acc->input_dev, ABS_Z, -xyz[2]);  #endif
http://www.dtcms.com/a/283925.html

相关文章:

  • RGBA图片格式转换为RGB格式(解决convert转换的失真问题)
  • OpenCV中VideoCapture 设置和获取摄像头参数和Qt设计UI控制界面详解代码示例
  • (四)OpenCV——特征点检测与匹配
  • 分布式分片策略中,分片数量的评估与选择
  • MacOS安装linux虚拟机
  • GPU的barrier
  • OpenCV中常用特征提取算法(SURF、ORB、SIFT和AKAZE)用法示例(C++和Python)
  • Linux的Ext系列文件系统
  • 一文掌握Harbor的配额管理和GC机制
  • Kubernetes架构原理与集群环境部署
  • VMware Workstation Pro 17下载安装
  • C++ AVL树实现详解:平衡二叉搜索树的原理与代码实现
  • [yotroy.cool] 记一次 spring boot 项目宝塔面板部署踩坑
  • LeetCode|Day16|387. 字符串中的第一个唯一字符|Python刷题笔记
  • 高光谱相机(Hyperspectral Camera)
  • 虚拟内存管理-抖动和工作集
  • 告别手动报表开发!描述数据维度,AI 自动生成 SQL 查询 + Java 导出接口
  • Python暑期学习笔记3
  • 100201组件拆分_编辑器-react-仿低代码平台项目
  • 使用Proxy设计模式来增强类的功能:ToastProxy和DesktopToast的设计关系
  • suricata新增Mysql告警规则处理
  • 专业职业评估工具,多维度数据分析
  • 网络安全基础操作2
  • 第十四章 gin基础
  • Spring Boot 中 META-INF 的作用与功能详解
  • 荷塘水上闯关游戏:Python OpenGL 3D游戏开发实战详解
  • 简单实现一个接口限流
  • 逆向破解京东评论加密参数|Python动态Cookie解决方案
  • 基于 Electron + Vue 3 的桌面小说写作软件架构设计
  • 共用体(联合体)