# Accelerometer direction

1. Jun 24, 2010

### mark2468

Hi.

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.

Thanks,

Mark.

2. Jun 24, 2010

### K^2

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.

3. Jun 24, 2010

### broean01

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
4. Jun 24, 2010

### mark2468

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,

Mark.

5. Jun 24, 2010

### K^2

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?

6. Jun 24, 2010

### broean01

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

7. Jun 24, 2010

### mark2468

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.

Mark.

8. Jun 24, 2010

### K^2

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

$$a_x = \frac{a'_x+a'_z}{\sqrt{2}}$$

$$a_y = a'_y$$

$$a_z = \frac{a'_z-a'_x}{\sqrt{2}}$$

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.