# Why do 3-axis accelerometers seemingly have a left-handed coordinate system?

Careful inspection of page 35 (figure 58) of the ADXL345 datasheet shows that under gravitational loading only, the chip uses a left-handed coordinate system. My own experiments with this chip confirm this.

I typically only use the chip to indicate the gravity vector. So when using this chip, I simply negate the values to get a right handed coordinate system. But this doesn't seem right. I assume there is a logical and mathematical explanation for the left-handed coordinate system but i can't figure out what it might be.

• Not sure if there's a standard for this, but could have something to do with the fact that most flight dynamics application uses right handed coordinate system (perhaps the manufacturer thought accelerometers will find maximum usage in aerial bots/vehicles). Just a guess though. But what is your question anyways? If you do not like the coordinate system, transform it to whichever system suits you best! – metsburg Sep 17 '13 at 5:03
• Also, if you negate all of your values, you're not actually converting to another coordinate system, you're just moving from octant 1 to octant 7. Consider instead swapping the y- and z-axes. – Chuck Sep 17 '15 at 15:10
• Seems like a valid question to me... – JJM Driessen Sep 19 '15 at 1:41

The answer is that 3-axis accelerometers don't have a left handed coordinate system just for the gravity. In static condition (i.e. if the accelerometer is not accelerating with respect to any inertial frame) they measure the opposite of gravity acceleration, not the gravity acceleration itself.

In more general terms, the accelerometers measure the difference between the actual acceleration of the sensor with respect to any inertial frame and the gravitational acceleration: $$a_{accelerometer} = a_{sensorFrame} - g$$ This "acceleration" measured by the accelerometer is sometimes called proper acceleration.

This can be easily verified by checking the measure of an accelerometer in free fall: as in that case the actual acceleration of the sensor will be equal to $g$, the accelerometer measure will be $0$.

This is not using a left-handed coordinate system! Check out my crude edits to the diagram.

Note each coordinate system (RGB for XYZ, black for gravity) has the gravity vector aligned in the negative direction of the appropriate axis, while the diagram shows a positive reading. I could have drawn them the other way but the actual acceleration in the absence of gravity would be upwards to produce the same reading. Maybe this is why negating the values works for your application.

• So you are saying that if you accelerate the chip in the X direction with a quantity of 1g, it will output a response of -1g in X? This is simply restating the question. I know this is a right-handed coordinate system. The question is why the negation. – Ben Oct 23 '15 at 13:14
• I'm not restating the question, you are saying it uses a left-handed coordinate system, but your diagram shows a right-handed coordinate system according to the various responses. My comment is about the fact that if you accelerate in the "forward" direction (say in your car) then you will feel the weight pushing "backwards" -- and that is the principal behind how the accelerometer works. Gravity is felt even though you are not accelerating, so if you wanted to get the same signal in zero-gravity, you would need to accelerate upwards not downwards. Sorry if my answer is a bit confusing! – Brian Lynch Oct 23 '15 at 13:18
• If you accelerate the chip in the X direction with a quantity of 1g, it will output a response of 1g in X (not -1g). Consider when gravity is pointing in the -X direction (i.e., the configuration on the top in the left hand side of the diagram), if you were to accelerate in the X direction, you would feel additional weight pushing back, so that would add to the 1g already being felt by gravity -- positive in the X direction as shown in the manufacturer diagram. On the other hand, if you dropped it in that configuration, it would accelerate with -1g in the X direction and cancel out to 0. – Brian Lynch Oct 23 '15 at 13:22

At the end of the day, you can use a matrix to transform whatever coordinate system was used to your own system. This is typically the case when you have to place parts in a certain direction because of routing difficulties. Using a simple 3x3 matrix you can transform X,Y,Z readings so that they all align on multiple sensors. The matrix will have 0, 1 and -1 values accordingly depending on how the transformation is to be done.

• That doesn't at all answer why a left hand coordinate system is used. – JJM Driessen Sep 19 '15 at 1:44

My best guess for this would be that, with a left-handed coordinate system, gravity is positive when you are right side up and negative when you are upside down. As mentioned in my comment, be careful about how you "transform" your coordinate systems - negating all values just moves you from one octant to another.