# How to derive 3D body motion from accelerometers

1. Jun 2, 2013

### tduell

Hello All,
Is is possible to the derive pitch, roll and translational acceleration, and the location of pitch and roll axes from a set of tri-axial accelerometers mounted on a rigid body?
My initial though is that 3 accelerometers might be sufficient, but not sure. I need to do figure out the equations that result from the component accelerations to see if I can solve for the unknowns, but it is while now since I used 3D vectors, so not really sure how best to proceed.
If someone could suggest, or point me to how I could go about solving this it would be appreciated.

Cheers,
Terry

2. Jun 2, 2013

### SteamKing

Staff Emeritus
You will want to research inertial navigation systems:

Such systems are used by submarines which cannot use conventional navigation tools (star sights, GPS, etc.) while submerged. They work starting from a known position before the submarine submerges and update the position of the vessel during its voyage by having a time history of the movements of vessel.

3. Jun 2, 2013

### tduell

I'm not sure it is going to help me. I may have over simplified the explanation of my needs.
We have an array of accelerometers mounted on a vehicle, in the x-y plane. x being the roll axis, y being the pitch axis.
There are 5 in all, 4 tri-axial and one z only. 2 tri-axial and the Z (1,2,3) are in a line parallel to the a axis. Three tri-axial (3,4,5) are at right angles, parallel to y axis. Accelerometer 3 is common to both lines of accelerometers.
We don't have a gyroscope available.
The installation has been done in the expectation that the required data, described in my initial post, could be derived from the measured data. Indeed it has been suggested that all the required data can be derived from 3 of the array of accelerometers.
I should add that I don't think we can assume the locations of the pitch and roll axes.
My investigations thus far indicate that I can only derive pitch and roll acceleration, probably yaw as well, but I haven't looked at that as yet as it wasn't expected to be significant.
The accelerometers at the known locations on an x-y plane will give me 4 3D acceleration vectors (if all 4 tri-axials are used) plus one z vector from the 5th accelerometer.
What I really need is advice as to whether the unknowns can indeed be derived from this data, and if so, a gentle prod in the direction of the solution method. As I said, I am a bit rusty on 3D vectors, assuming that is the approach needed.
Cheers,
Terry

4. Jun 2, 2013

### SteamKing

Staff Emeritus
The inertial nav reference was just to get you started. I don't know the details of your vehicle or its intended use. Basically, the accelerometers will provide just acceleration data, obviously. Your application might not need gyroscopes, which provide velocity data. The OP suggests that you may not be certain of the inertial characteristics of your vehicle, such as its mass, c.o.m., gyradii. To fill in those blanks, other procedures are required. One wiki article would not be sufficient, but you are the one who must search out the answers to your questions.

5. Jun 2, 2013

### tduell

SteamKing, thanks for your attempts to help. Sure the accelerometers just provide acceleration data, but it is a rigid body and we know the locations of those measurements.
My question is: Can that acceleration data and locations be used to derive the rigid body pitch and roll axes locations and the translational accelerations? I have already determined that pitch and roll acceleration can be derived from that data. I don't think that mass, inertia, centre of mass etc should be needed to further analyse the measured data.
Certainly those parameters (mass, inertia etc) determine the motion, but we are measuring it at the locations as described. Unless I'm really confused about all this, it seems to me that the measured data , along with measurement locations, should be sufficient.
Isn't it a 3D vector analysis that is now needed?

Cheers,
Terry

6. Jun 2, 2013

### Delta Kilo

It is certainly possible. Rigid body has 6 degrees of freedom (3 translation + 3 rotation) so you need a minimum of 6 independent channels. However with 3-axis accelerometers, not all of them are going to be linearly independent, so the minimum is 3.

The acceleration of point $\vec{r}$ is $\vec{a}_r = \vec{a} + \vec{\alpha} \times \vec{r} + \vec{\omega} \times (\vec{\omega} \times \vec{r})$, where $\vec{a}$ is linear acceleration of the origin, $\vec{\alpha}$ is angular acceleration and $\vec{\omega}$ is angular velocity. look up "Rigid Body Kinematics".
A single channel accelerometer pointing in the direction of a unit vector $\vec{d}_i$ measures $a_i = \vec{a}_i \cdot \vec{d}_i$. Now expand all that in coordinates and solve the resulting linear system with respect to components of $\vec{a}$ and $\vec{\alpha}$ (assuming you know $\vec{\omega}$).[STRIKE]If you have more than 6 equations use least-squares fit.[/STRIKE] Obviously you'd want your matrix to be nice and well-conditioned and that generally means NOT placing accelerometers in a straight line :)

PS: With 6 channels $\vec{\omega}$ is obtained by integrating $\vec{\alpha}$ with suitable initial conditions. With 9 channels you can find $\vec{a}$, $\vec{\alpha}$ and $\vec{\omega}$ simultaneously (but the system is no longer linear). There are better ways of dealing with it, but things become complicated rather quickly. Not to mention numerical integration techniques, coordinate system transformations (rotation matrices, quaternions, Euler angles), Kalman filters, calibration etc. etc. Good luck :)

Last edited: Jun 2, 2013
7. Jun 2, 2013

### tduell

OK, so we are off to a reasonable start, with 4 x 3 axis.
OK, I'll see if I can work through those relationships.

Oh dear, a bit too late I'm afraid.
Many thanks for your help, it has given me a good start.

Cheers,
Terry

8. Jun 3, 2013

### tduell

Delta Kilo, have just seen your edit. It is becoming a bit complicated.
Can I assume that the vector r is from an origin I define?
Otherwise, I'm not sure how I proceed, as I really only know the accels at positions relative to one another, but at unknown locations relative to 'origin'.
I think I am going to be in trouble attempting to solve for vectors a,alpha, and omega...it's been a bit too long away from such math techniques. I use Octave, which I expect is a suitable toolkit, but I will have to do some revision on just how to put together a solution of what looks like simultaneous vector equations.
Thanks for your help, it is much appreciated.
Cheers,
Terry

9. Jun 3, 2013

### Delta Kilo

Yes, certainly. You designate one point to be your origin O. Everything is then relative to this point O: acceleration $\vec{a}$ is the acceleration of point O, $\vec{w}$ is the rotation around axis along $\vec{w}$ and going through O etc. There are very good reason to use C.M. as the origin.

You just expand it in coordinates according to the definition of dot- and cross-products and get a normal algebraic system.
Another thing to watch out for is coordinate system transformation: your accelerometers are in fixed positions in local coordinate system. If you work in global coordinate system (which is the easiest option), vectors r and d must be rotated by your current orientation before you use them.
You can work in local coordinate system then vectors r and d are fixed but then your current position and velocity (or rather the position and velocity of the rest of the world relative to you) would have to be rotated when doing the integration. Either way there be [STRIKE]dragons [/STRIKE]rotation matrices/quaternions.

10. Jun 3, 2013

### tduell

I'm loathe to ask for more help, but do you know of an example of a problem like this with the solution methodology, that you can point to?

Cheers,
Terry

11. Jun 4, 2013

### Delta Kilo

Hi Terry, glad to be of help. Sorry don't know on any specific example but there are plenty DIY INS projects on the web. Search for "Open Source inertial navigation system" yields lots of links. Even though most of them would use gyros as well as accelerometers they are going to be similar in many respects. As for methodology, do you mean this? http://en.wikipedia.org/wiki/Inertial_navigation_system#Methodology Check out reference [10], from horse's mouth :)
Regards, DK

12. Jul 11, 2013

### tduell

Sorry for the late response, but other things have occupied me, and I have spent quite a bit of time trying to understand how to solve this.
I can now refine the problem a little.
I have measured x,y,z accelerations at locations as outlined in my earlier post, ie 3 positions in the pitch plane, and 3 in the roll plane. I have an additional measurement location, where the acc'ns have components due to translation, roll and pitch. I need to be able to adjust the measured z at this location, to remove effects of roll.
The measured values from all these accelerometers are arrays, of about 10 secs of data at 2000Hz.
Now I can see how to formulate the equations for the measurements points in one plane (say the pitch plane),
(of the form $\vec{a}_r = \vec{a} + \vec{\alpha} \times \vec{r} + \vec{\omega} \times (\vec{\omega} \times \vec{r})$) and could iteratively solve that using Octave's fsolve, if $\vec{r}$ was a constant, but it isn't. In the plane it is a function of the pitch angle, which requires integrating the pitch velocity, but as I see it the pitch velocity isn't known until the set of simultaneous equations has been solved.
So, if I understand it all correctly, I really have a set of simultaneous differential equations. What solution method does one use when the elements of the equations are already arrays of data at time intervals?
Sorry if I appear a bit dense on this but it isn't at all clear to me how to attack this.

Cheers,
Terry

13. Jul 12, 2013

### tduell

Greatcoats off...in case you were about to reply. I think I now understand it. The angles are just another variable, along with angular velocity, angular acceleration, to be solved in the system of equations.

Cheers,
Terry

14. Jul 14, 2013

### omega_minus

Earlier you mentioned possibly wanting the yaw angle also. This isn't possible with accelerometers, you'd need a compass or better yet a gyro for that. Also in my experience accelerometers aren't reliable for transient fidelity, that is during bumps, vibrations or other quick accelerations they go haywire. I've used them for error correction in a PID loop where gyros handled the actual navigation. The gyro signals were numerically integrated and fed into a direction cosine matrix. I realize you don't have gyros but for yaw angle, you'll need something other than accelerometers.

15. Jul 14, 2013

### tduell

I don't think I mentioned yaw. I was looking for pitch and roll.
These accelerometers are specifically for measuring bumps and vibration and other quick accelerations, at 2000Hz.
Not sure why yaw is really any different to pitch and roll.

Cheers,
Terry

16. Jul 14, 2013

### omega_minus

I thought this meant you would eventually want to know yaw, sorry for any mistake on my part. The reason you can't use accelerometers for yaw is that once you rotate through the angle the chip's axes still aren't rotated relative to the gravity vector. The pitch and roll axes are orthogonal to the gravity vector (assuming you're on a flat plane) Then any tilt gives a reading on your z axis (or whatever you're calling vertical). Yaw does not change this value because its axis of rotation is parallel with the gravity vector.

17. Jul 14, 2013

### tduell

Ah...yes, yaw was mentioned, sorry.
Thanks for the explanation.

Cheers,
Terry