Adjusting Accelerometer Readings for Tilt and Rotation: A Scientific Approach

Click For Summary
SUMMARY

This discussion focuses on adjusting accelerometer readings to account for tilt and rotation. The user identified a tilt of 18 degrees in the z direction and a rotation of 5 degrees in the x-y plane. To correct the readings, it is essential to divide the accelerometer values by the cosines of the tilt and rotation angles. Additionally, constructing a 3x3 rotation matrix is recommended for transforming the acceleration vector from the accelerometer coordinate system to the target system.

PREREQUISITES
  • Understanding of accelerometer data and its components
  • Knowledge of trigonometric functions, specifically cosine
  • Familiarity with rotation matrices in 3D space
  • Basic concepts of vector normalization and cross products
NEXT STEPS
  • Learn how to construct and apply 3D rotation matrices
  • Study the process of vector normalization and its importance in transformations
  • Explore methods for calculating roll, pitch, and yaw from accelerometer data
  • Investigate techniques for correcting gyroscope readings based on stationary accelerometer data
USEFUL FOR

Researchers, engineers, and developers working with motion tracking, robotics, or any applications involving accelerometer data correction and analysis.

Sam Smith
Messages
37
Reaction score
0
I have been using an accelerometer and I have realized that it was sitting at a tilt of 18 degrees in the z direction and rotated at 5 degrees in the x y direction. How should I change my accelerometer readings to account for this?
 
Physics news on Phys.org
Sam Smith said:
I have been using an accelerometer and I have realized that it was sitting at a tilt of 18 degrees in the z direction and rotated at 5 degrees in the x y direction. How should I change my accelerometer readings to account for this?
You should be able to multiply each of your readings by the cosines of the known error angles.
 
KL7AJ said:
You should be able to multiply each of your readings by the cosines of the known error angles.
This will not preserve the magnitude of the acceleration vector, which should be preserved in a mere rotation.
 
So for example my z reading will be multiplied by cos(18) and cos(5) as will the x and y readings?
 
Sam Smith said:
So for example my z reading will be multiplied by cos(18) and cos(5) as will the x and y readings?
My bad...they should be DIVIDED by the cosines...since being out of alignment will make the measured readings smaller.
 
Just wanted to check, so I will divide all readings by the cosine of both angles. For example I will divide z readings by cosing 18 AND cosine5 .. It makes sense as both rotations will effect all vectors but wanted to be sure
 
KL7AJ said:
My bad...they should be DIVIDED by the cosines...since being out of alignment will make the measured readings smaller.
The magnitude of the vector will be the same so the absolute components cannot be all smaller.
 
Also wanted to check, Why do we use cosine as this would suggest that the actual reading and reading nw made form a right angle triangle with each other?
 
How would you approach this problem A.T?
 
  • #10
Sam Smith said:
How would you approach this problem A.T?
Construct a 3x3 rotation matrix, that transforms the acceleration vector from the accelerometer coordiante system to the system you need:
http://en.wikipedia.org/wiki/Rotation_matrix
 
  • #11
Hi there AT thank you so much for the advice. I actually came across my error I had already come up with a rotation matrix before but had considered the rotations in the wrong order. I also wanted to check how would work out the roll pitch and yaw from stationary data? my data is -0.9 0.5 and -0.4 (my x is pointing downwards into the 1g direction) How can I work out the angles I have done it but I think error in this part is leading to my problem
 
  • #12
Sam Smith said:
I had already come up with a rotation matrix before but had considered the rotations in the wrong order.
Don't mess around with angles, then you have no problem with their order.

Determine the unit vectors of the target system (TS) directly from measurement: Align the object so your TS-axis(e.g. X) points upwards (against gravity), and save the accelerometer reading as the TS-unit vector (e.g. ex). Do this for two axes (e.g. X,Y), then use the cross product to get the 3rd unit vector and orthogonize. For example, knowing ex, ey you would do this:

ez = ex x ey
ey = ez x ex

Then normalize all 3 vectors to unit length. These 3 unit vectors are the rows of your matrix R which can be used to transform from accelerometer system (AS) to TS:

aTS = R * aAS
 
  • #13
That is a great idea however, I am doing this in retrospect. The device was placed on an animal and rotated during the course of the experiment. As a result the only thing I have to go on is the x y z readings when the animal was stationary in order to work out how much the gyroscope had rotated and then correct the rest of the readings. So what I found was that at rest my readings were x = -0.9 y = 0.14 z = 0.44 and so I am trying to adjust the rest of my readings based on this info
 
  • #14
Sam Smith said:
As a result the only thing I have to go on is the x y z readings when the animal was stationary in order to work out how much the gyroscope had rotated and then correct the rest of the readings. So what I found was that at rest my readings were x = -0.9 y = 0.14 z = 0.44 and so I am trying to adjust the rest of my readings based on this info
I don't think this sufficient info to get a unique 3D rotation.
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
5K
  • · Replies 7 ·
Replies
7
Views
2K
Replies
11
Views
24K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
1K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
Replies
3
Views
2K
  • · Replies 7 ·
Replies
7
Views
6K