Accelerometer question for IMU Experts

I'm sure there's plenty of experienced IMU builders on this board who can resolve this question (see here: (starting at the 5th comment) and here: (starting at post #443) for more discussions). In fact the question may even have been answered here earlier (in which case I apologize for re-asking it, but I couldn't find it). The question has both a practical aspect in terms of IMU component & s/w design and a theoretical one in terms of trying to understand the relevant physics. Read carefully, because I don't think this is a noobie question.

Assume a 3-axis accelerometer is mounted close to the center of gravity of a quadrotor with the Z axis of the sensor aligned reasonably well with the thrust axis of the rotors and the X and Y axes aligned with 2 of the arms of the quad. If the flying quad is at a non-zero bank angle (i.e. is rotated about the x-axis from a level hover), what will the Y axis accelerometers read? In this case, the vehicle will be accelerating laterally in the earth axes (and possibly vertically depending on the magnitude of the thrust vector compared to the gravitational one). One school of thought claims that the Y accelerometer in this case should read effectively zero (assuming that aerodynamic drag, vibration due to rotors, noise, errors due to sensor misalignment, coriolis and centripetal forces, etc. are either negligible or accounted for). The reasoning is that all the forces should be coming from the rotor thrust, which is always in the Z body axis for a quad. By a similar argument, the X axis accelerometer should also read zero for any pitch angle. (I think the argument holds to some extent for helicopters as well, but the force vector will not always be in the Z body axis direction due to rotor flapping.)

The opposing argument is that there are plenty of quadrotors out there that use accelerometers to self-level, perhaps as part of a Kalman or complementary filter algorithm. It would seem unlikely for them to work as well as we know they do if the X and Y sensors were reading zero regardless of the vehicle tilt. How do we resolve this conundrum? Is the model of how accelerometers work flawed? I believe it is valid to model the resultant output of any accelerometer by determining the net force and subtracting the gravitational force vector. This works if the sensor is stationary (it will read as if it were accelerating away from the ground at 1 g), or if it is in free-fall (reads zero). Is this model correct in general for arbitrary motion? Are these other forces on the quad that I'm ignoring important somehow?

I'd prefer if your answer includes one or more of the following: time history graphs of a FLYING vehicle (we know we can measure tilt of a stationary sensor), or a free body diagram, or a set of equations, or a reference to a textbook or paper. As I said, I'm trying to understand the physics of the situation.

Here's a picture, if it helps: This shows the forces in the earth vertical axis as being balanced, but I don't think that condition is necessary for the X body axis accelerometer to read zero.

Thanks in advance.

- Roy

Views: 4577

Comment by Tom Yochum on August 7, 2009 at 8:40am

The basic problem your diagram has is that the accelerometers do not measure gravity. If you put an accelerometer on a table (not moving) the Z axis accelerometer (vertical) will measure 1 G upward. The accelerometer is not measuring gravity, but the force of the table on the body that counteracts gravity.

Using the diagram you provided, I came up with an acceleration in the X direction (ignoring drag) of m*g*sin(theta).

Comment by Roy Brewer on August 7, 2009 at 10:16am

I concur with your first statement, that the accelerometer does not measure gravity, but the all other forces. If you remove the force of gravity from the picture, there is only one force, F, the rotor thrust. It acts only in the body Z axis, and has no component in the body X axis.

I also agree that the x-body-axis component of the net physical acceleration is -g*sin(theta). The question is, what does the accelerometer read? You have to subtract the x-body-axis component of gravity (which is also -g*sin(theta) because, as you said, the sensor does not detect gravity. The net is zero.

Try this: what do you think the Z axis accelerometer is reading in this picture? What would X and Z read if theta were zero? If theta were 90 (i.e in free fall vertically, but accelerating to the left)? I believe in all cases Z reads F and X reads zero. Of course, that's not what the quadrotor itself is doing, just what the sensor is reporting.

- Roy
Comment by Tom Yochum on August 7, 2009 at 11:02am

Quote: "You have to subtract the x-body-axis component of gravity (which is also -g*sin(theta) because, as you said, the sensor does not detect gravity." Why do you need to subtract the gravity component?

Quote: "Try this: what do you think the Z axis accelerometer is reading in this picture?" The Z accelerometer measures the force of thrust (Ft).

Quote: "What would X and Z read if theta were zero? If theta were 90 (i.e in free fall vertically, but accelerating to the left)?" If theta were zero and the aircraft was hovering (Ft = mg) then the Z accelerometer would read Ft. If it was in freefall (theta = 0) then the Z accelerometer would measure zero. If we placed a thruster on the X axis and applied a force of Ftx, then the X accelerometer would measure Ftx/m regardless of whatever the aircraft was hovering, falling, whatever (assuming theta = 0).

See the attached drawing.

accelerometer diagram.pdf
Comment by Tom Yochum on August 7, 2009 at 11:07am

I just looked at the drawing you submitted again. It says that the thrust force = mg. That is incorrect. If the aircraft is tilted, then the rotors must be generating a thrust greater than mg in order to stay at the same altitude.

Comment by Tom Yochum on August 7, 2009 at 11:21am

Ok, I think I take back everything I said. I am getting my coordiante frames messed up.

The diagram I created shows the body forces resolved into the navigation (earth) frame. The only force acting on the body is the thrust (assuming no wind, etc). Therefore, the body X and Y accelerometers will not measure anything (again assuming no other forces are acting on the body, including rotational effects, etc).

Comment by Tom Yochum on August 7, 2009 at 11:23am
My general comment on many of these "using accelerometers to control " is this: using strapdown accelerometers is useless without knowing the orientation of the body.
Comment by Roy Brewer on August 7, 2009 at 12:18pm

No problem. Its definitely trickier than it first appears :-)

The fact remains that some of these strapdown systems appear to be using accelerometers to help determine the orientation of the body. I just don't see how they're doing it.

- Roy
Comment by bGatti on August 7, 2009 at 12:39pm
I would imagine that the quad, when at an angle, experiences two forces: the gravitational pull, and the thrust. As these are not the same vector, a new "apparent vector" emerges and the craft begins to accelerate in the new direction. This new acceleration creates a new force - drag - which pushes back against the angular thrust component to the point of equilibrium - now we have a new apparent force vector in which the angularity of the craft is balanced against the terminal velocity of the craft, given the current angle.

The problem is we probably crash before we reach equilibrium.
We assume the craft drifts slowly off axis (Lx), and accelerates (Ay) equally slowly; this new acceleration must include additional thrust (sin(Lx)) or the craft will lose altitude as a portion of the thrust is being diverted for sideways acceleration (Ay).

The intractable problem is that is not enough data to separate cause and effect as the effect of rolling over x is to increase the gravitational component of Y at sin(ang. x) while inducing new acceleration at -Y to the tune of cosine(ang. x) * thrust (moderated by the inertia and limited by drag).

(The cosines and sin may be mixed up here, but one might get the idea.)
Comment by Tom Yochum on August 7, 2009 at 1:59pm

The way an AHRS determines the pitch and roll using accelerometers is that the aircraft is "usually" in a near non-accelerating and non-rotating situation. As bGatti pointed out, the situation we were discussing ignored the drag and the forces were not balanced. When the forces are balanced, the gravity vector shows up very nicely and the pitch and roll components are easily computed. The problem, of course, is how to handle the dynamic situation. This is where gyros come into play. The gyros provide an estimate of the angle rotated through during the dynamic portions. The tricky part is how you blend the static and dynamic data. I have seen data from professional (very expensive) AHRS products where the pitch estimate was off by 3-4 degrees during a steady banked turn.

The other option is to create a full inertial navigator, but that has its own set of (major) headaches.

Comment by Roy Brewer on August 7, 2009 at 2:09pm
Again, the fact that the quad would accelerate to the left in this situation is well understood. What is not known (at least not by me) is what the on board accelerometer would sense.

Drag is proportional to velocity squared, not acceleration. So, at least initially, drag should be pretty small, and is probably not a factor.

One can also imagine that a pilot - human or computer - could increase the thrust magnitude in order to balance the gravity force and keep the quad at a relatively constant altitude off the ground. I don't think this is intractable at all - it happens all the time (unless I'm not understanding your statement). Cause and effect are, I believe, pretty well understood - it's a simple force balance.

However, if the thrust varies or remains constant, I still think the accelerometer X and Y body axes will read zero, so I don't think this is a factor.

- Roy


You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service