Android CTS Verifier Sensor Test Cases (2)

从本章开始将详细介绍每一个测试项。

1. Accelerometer Measurement Tests
这是所有 CTS Verifier 测试项里最容易的一个。简单点说就是依次测试设备的六个面的重力加速度。因为Android 设备外形绝大多数都是立方体,该测试项就是把设备按立方体的各个面放置一下,然后获取加速度的值于期望的值进行比较,在规定范围内(+-threshold)就算通过。

CTS Verifier 6.0_r9 Accelerometer Measurement Tests

下面来看具体的test case
测试前提条件:

STANDARD_GRAVITY(标准重力加速度)

Standard gravity (g) on Earth. This value is equivalent to 1G
Constant Value: 9.80665f 

Threshold(阈值, 即允许误差)

+-1.95f m/s^2

代码:

 private String verifyMeasurements(float ... expectations) throws Throwable {
        Thread.sleep(500 /*ms*/);
        TestSensorEnvironment environment = new TestSensorEnvironment(
                getApplicationContext(),
                Sensor.TYPE_ACCELEROMETER,
                SensorManager.SENSOR_DELAY_FASTEST);
        TestSensorOperation verifyMeasurements =
                TestSensorOperation.createOperation(environment, 100 /* event count */);
        verifyMeasurements.addVerification(new MeanVerification(
                expectations,
                new float[]{1.95f, 1.95f, 1.95f} /* m / s^2 */));
        verifyMeasurements.execute(getCurrentTestNode());
        return null;
    }
public String testFaceUp() throws Throwable {
    return verifyMeasurements(
    R.string.snsr_accel_test_face_up,
    0, 0, SensorManager.STANDARD_GRAVITY);
}

该项测试设备静止正面朝上时的x,y,z三轴加速度的值. CTS Verifier 会设置 Accelerometer Sensor 工作在 Fastested Data Rate (100Hz/200Hz, 具体频率由 SensorList Structure 上报的 minDelay 决定),然后收集100个 event,计算一下三个轴的平均值,再与 {0.00+-1.95, 0.00+-1.95, 9.80665+-1.95} 相比较。如果不在误差范围内则报错,反之则通过。

失败类型:

1)  轴错误;正面朝上静止放置时,设备的三轴加速度的值应该在{0.0, 0.0, 9.8}附近。如果出现类似{0.0, 9.8, 0.0}的值,说明要么sensor的axis remapping(sensor的三轴坐标系要跟设备的三轴坐标系一致) 做错了;要么设备摆放的方向错误;
2)mean value 错误;正面朝上静止放置时,测试结果提示某一轴的mean value > 1.95 (or < -1.95)。说明sensor offset 过大,需要进行校准。
3)没有数据;basic sensor knowledge,check your own code bro!

Accelerometer 校准一般分为两类,一类是在驱动(kernel driver)里做硬件校准或软件校准,另一类是在 HAL 里有算法来进行校准。因为Acceleremter是在静止时比较准确的sensor, 所以校准的目的之一是去掉静止时各个轴上产生的offset.  
简单一点的校准算法就是,取 Accelerometer sensor 静止时50个数据的平均值,如{0.8, 1.2, 9.5},把它跟期望值{0.0, 0.0, 9.8}的差当作offset。然后在上报数据是去掉这个offset。
稍微复杂的校准算法,不仅要考虑各轴的noise, 还要计算增益误差(Gain Error),具体实现方式需要比较大的篇幅,这里不展开讲了。

Accelerometer Measurement Tests 里其他5项测试内容与FaceUp测试一样。

Sensor CTS测试是用于测试Android设备的传感器功能是否符合要求的测试。具体来说,我们引用了几个相关的内容进行解答。 引用中提到,Gyroscope Measurement Test是用于测试校准后陀螺仪传感器的数据质量。它的目的是检测校准后的Gyroscope数据与校准前的Uncalibrated Gyroscope数据是否满足Android的需求。这个测试项应该在存在物理陀螺仪传感器的情况下进行,而ECompass或M4G方案下不需要进行该测试。 引用中说明了这项测试的要求。测试开始后,需要不断旋转设备,收集在Fasted模式下每一时刻的Gyroscope Sensor和Uncalibrated Gyroscope Sensor的数据,并验证它们是否符合等式:calibrated = uncalibrated - bias。 引用提到了一个具体的测试失败的例子,但并没有提供关于sensor cts test的详细描述。 综上所述,Sensor CTS测试是用于验证Android设备传感器功能是否符合要求的测试,包括校准后的陀螺仪数据质量和校准前的陀螺仪数据的比较。该测试需要在存在物理陀螺仪传感器的情况下进行,并需要设备不断旋转以收集传感器数据进行验证。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Android CTS Verifier Sensor Test Cases (3)](https://blog.csdn.net/sslive/article/details/52426903)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [CTS Sensor Batching Test](https://blog.csdn.net/wangjicong_215/article/details/76197646)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值