Adjusting Accelerometer Readings for Tilt and Rotation: A Scientific Approach

AI Thread Summary
To adjust accelerometer readings for tilt and rotation, divide the readings by the cosines of the known error angles, as being out of alignment reduces the measured values. A rotation matrix can be constructed to transform the acceleration vector from the accelerometer's coordinate system to the desired system. When dealing with stationary data, determine unit vectors from the measurements to create the rotation matrix, ensuring proper orthogonality. However, if the device was rotated during the experiment, it may be challenging to derive a unique 3D rotation based solely on stationary readings. Accurate adjustments depend on correctly interpreting the stationary data to account for the gyroscope's rotation.
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.
 
Back
Top