1# Copyright 2024 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14"""Utility functions for IMU data processing.""" 15 16 17def calc_rv_drift(data): 18 """Calculate data drift accounting for +/-180 degrees for stationary DUT. 19 20 Args: 21 data: list of +180/-180 rotation vector data 22 23 Returns: 24 list of data-data[0] drift 25 """ 26 data_360 = [i % 360 for i in data] 27 drift = [] 28 for d in data_360: 29 if d - data_360[0] <= -180: 30 drift.append(d - data_360[0] + 360) 31 elif d - data_360[0] > 180: 32 drift.append(d - data_360[0] - 360) 33 else: 34 drift.append(d - data_360[0]) 35 return drift 36