Estimating Relative Angle between two 6-axis Inertial Measurement Units (IMUs)

0 ratings - Please login to submit your rating.


Inertial measurement units (IMUs) are used in biomechanical and clinical applications for quantifying joint kinematics. This study aimed to assist researchers who are new to IMUs and want to develop inexpensive IMU system to estimate the relative angle between IMUs, while understanding the effect of different computational algorithms for estimating angular kinematics. Thus, there were three sub-goals: 1) to present a low-cost and convenient IMU system utilizing two 6-axis IMUs for computing the relative angle between the two IMUs, 2) to examine seven methods for estimating the absolute angle of an IMU, and 3) to provide open-source code and working principles of these methods. The raw gyroscopic and accelereomter data were pre-processed. The seven methods included gyroscopic integration (GI), accelerometer inclination (AC), Complementary filter (CF), Kalman filter (KF), Digital Motion Processor (DMP, a proprietary algorithm)), Madgwick filter (MW), and Mahony filter (MH). An apparatus was designed to test nine conditions that computed angles for rotation about three axes (roll, pitch, yaw) and three movement speeds (20˚/s, 100˚/s, 200˚/s). Each trial lasted 25 minutes. The root mean squared error (RMSE) between the gold-standard value measured from the apparatus’ encoder and the value calculated from the computational method was determined for each of the seven methods. For roll and pitch, all methods accurately quantified angles (RMSE < 6˚) at all speeds. For yaw, all methods except AC and DMP displayed drift-free and RMSE < 6˚ at all speeds. Researchers can utilize appropriate methods based on their study’s duration, rotation axis, and speeds. 

<How to Run MATLAB files>
1) Make sure the "Main.m" file is in the same directory as the "Data", "Figure", "FunctionFiles" folder
2) Run the "Main.m" file 
<Raw Data Files (.txt)>
9 raw readings of the nine test trials (text files (.txt)) (e.g., raw_yaw_slow.txt)
Each trial contained 22 columns of data. Each column of data contains the following. 
1) Sampled Time (ms)
2) Encoder (deg)
3,4,5,6) IMU 2 quaternion from DMP (4 values = a,b,c,d)
7,8,9,10) IMU 1 quaternion from DMP (4 values = a,b,c,d)
11,12,13) Raw Gyroscope Readings (deg/s) of IMU 2 about x,y,z (3 values) 
14,15,16) Raw Accelerometer Readings (g - gravitational constant) of IMU 2 about x,y,z (3 values)
17,18,19) Raw Gyroscope Readings (deg/s) of IMU 1 about x,y,z (3 values) 
20,21,22) Raw Accelerometer Readings (g - gravitational constant) of IMU 1 about x,y,z (3 values)
<Processed Data Files (.mat)>
MATLAB scripts are used to process the raw text files. Additional 37 .mat files will be created. Description for these .mat files are given below. 
9 raw readings of the nine test trials in MATLAB data files (.mat)  (e.g., raw_yaw_slow.mat)
These files are similar to the previous raw text files but converted into MATLAB data space for easier processing in MATLAB.
These contain similar information as the previous raw text files as well as the line of when the calibration phase and data phase starts.   
9 filtered readings of the nine test trials in MATLAB data files (.mat) (e.g., filtered_yaw_slow.mat)
These files contain filtered readings of the previous raw MATLAB files. Any missing data strings are removed. The IMU data are preprocessed and filtered.
9 angle readings of the nine test trials in MATLAB data files (.mat)  (e.g., filtered_angle_yaw_slow.mat)
These files contain computed angles from the previous filtered MATLAB files. Seven  computational algorithms (Accelerometer Inclination, Gyroscopic Integration, Complementary Filter, Kalman Filter, Digital Motion Processing, Madgwick Filter, Mahony Filter) are used. 
9 RMSE readings of the nine test trials in MATLAB data files (.mat)  (e.g., rmse_filtered_metric_yaw_slow.mat)
These files contain computed metrics such as Root-Mean-Squared-Errors (RMSE) for each computed algorithm. The RMSE is a metric for how accurately each algorithm can estimate the true rotated angle. A RMSE below 6 degrees is acceptable for quantifying human joint angles in biomechanics. 
1 tabulated data that contains the average and std of the RMSE for the nine trials (i.e., rmse_table.mat)


It seems missing the function file , called“compute_single_data_rmse.m” , any instruction of the next step comparison?

Submitted by Andy Chan on Mon, 04/19/2021 - 09:59

Hi Andy. The missing function file has been uploaded on here and on github. Thank you for bringing this up to my attention.

Submitted by Seung Yun Song on Thu, 05/13/2021 - 15:05

Dataset Files

Open Access dataset files are accessible to all logged in  users. Don't have a login?  Create a free IEEE account.  IEEE Membership is not required.