Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Accelerometer direction

  1. Jun 24, 2010 #1

    I have a problem using 3-axis accelerometer. I understand that the total acceleration is the square root of (x^2 + y^2 + z^2) but I cannot determine the direction of the acceleration.

    Say the device is at 45 degrees and is moved straight up, how can this vertical motion be detected.
    I can determine the angle/tilt of the device using trigonometry but cannot determine the linear motion in 3d. How can this be achieved, or is there any basic formula available.


  2. jcsd
  3. Jun 24, 2010 #2


    User Avatar
    Science Advisor

    Accelerometer cannot determine motion at all, and will only measure acceleration relative to its own orientation. It cannot, for example, tell you the difference between being horizontal and accelerating horizontally, or being tilted and accelerating straight up. Both will give you the same acceleration in X, Y, and Z directions.

    If you need to know acceleration in the world-coordinates, you need to know orientation relative to world.
  4. Jun 24, 2010 #3
    You'd probably be best off leaving the linear motion as a vector, but if you want angles, you could just convert to http://en.wikipedia.org/wiki/Spherical_coordinates" [Broken]
    Last edited by a moderator: May 4, 2017
  5. Jun 24, 2010 #4
    Thanks for the reply's.

    I do know the orientation relative to world, the problem is linear acceleration. Its easy get the acceleration in one direction if the other two dont move but what if it moves up at an angle or starts at an angle and moves straight up or straight across linearly.

    "You'd probably be best off leaving the linear motion as a vector"

    I am unable to determine the linear motion, how is this achieved??

    Thanks again,

  6. Jun 24, 2010 #5


    User Avatar
    Science Advisor

    If you know orientation, what's your problem? Are you simply asking how to transform a vector from one coordinate system to another? That is, take the x, y, z relative to accelerometer and transform to x, y, z relative to ground?
  7. Jun 24, 2010 #6
    Well if you represent the accelerometer's orientation as a unit vector, you can just perform a rotation on the acceleration vector opposite the rotation of the orientation vector. It winds up being easiest to do as quaternion multiplication
  8. Jun 24, 2010 #7
    The problem is that I know the angle relative to ground (45 degrees in this case) but when the device is moved directly up I am unable so capture this as linear acceleration in the z direction because all 3 axis change.

    This may seem trivial for some people but i am new to this.

  9. Jun 24, 2010 #8


    User Avatar
    Science Advisor

    Lets say the 45° is rotation of Z axis towards X axis. Then:

    [tex]a_x = \frac{a'_x+a'_z}{\sqrt{2}}[/tex]

    [tex]a_y = a'_y[/tex]

    [tex]a_z = \frac{a'_z-a'_x}{\sqrt{2}}[/tex]

    Where a' are the accelerations reported by accelerometer. Make sure to calibrate your axis appropriately, you should be measuring 9.8m/s² in negative z when the thing isn't accelerating.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook