I am looking at the definition of sensor_accel in v1.12.0. It says the values will be in FRD frame. So I expect down to be positive. Hence I expect the z component to be +9.8 but when I subscribe I get -9.8 (approx…). Any idea why is that?
Yes, -9.8 m/s is the correct value in this case. An accelerometer will report the acceleration due to the non-gravitational forces applied to it. So those forces would be from aerodynamics or forces coming the landing gear (or some other part of the airframe contacting an object, if things aren’t going so well!). If the craft is maintaining altitude, it means those non-gravitational forces add up to enough to make the Z accelerometer read at least -9.8 (or something more negative) otherwise gravity is going begin to accelerate the craft downward.
This is all because gravity isn’t a force in the same sense that aerodynamics, etc, are. One way of thinking about this is that gravity acts directly on every atom of mass, whereas the force generated by, for example, a propeller, has to be transmitted through the airframe to the accelerometer. This means that gravity produces none of the internal stresses in a structure that external forces like aerodynamics does, which is what an accelerometer is really sensing.
Nice explanation! Seems so obvious but no one ever put it so clearly and I never bother to answer for myself.
- Ag = acceleration due to gravity (toward earth is positive bcs of FRD)
- Aa = acceleration due to aircraft mechanisms
- f = ma
- f = mass*(Ag + Aa)
- f = mass*(9.8 + Aa)
- f = 0 for not moving up, or down
- a2 = -9.8