Code covered by the BSD License

### Highlights from Inertial Measurement Unit position calculator

4.0
4.0 | 3 ratings Rate this file 79 Downloads (last 30 days) File Size: 237 KB File ID: #25730 Version: 1.2

# Inertial Measurement Unit position calculator

### Abhilash Harpale (view profile)

04 Nov 2009 (Updated )

This program decodes the data from an IMU.

File Information
Description

this program takes the data from an IMU as the input and calculates the body's trajectory ,velocity and attitude .
it plots the velocities and euler angles vs time and the body's trajectory.

MATLAB release MATLAB 7 (R14)
26 Feb 2016 Na Du

### Na Du (view profile)

Hello, Abhilash, I have read your IMU-calculator algorithm and I have learnt a lot through it. But there is one question confusing me that how did you set the initial values to [0.0 0.218893 0.0 ;35.156 -0.79 7.598; 0.0 0.0 609.6].I think the initial values are different under different conditions. Then how can I get my initial values?

Comment only
24 Oct 2015 Mohammed AFTATAH

### Mohammed AFTATAH (view profile)

plz how can we calculate euler angles from trajectory (x,y,z) ?

Comment only
13 Oct 2015 NAGA VBN

### NAGA VBN (view profile)

Hi Abhilash,

Very good example but I have an IMU which gives acceleration and quaternion data as output.Then how can I use your code.Please suggest.

29 Sep 2015 mkranz

### mkranz (view profile)

If I apply a constant acceleration in each axis, but keep rotational rates equal to zero in all axes, I get the expected velocities in all axes, but get the expected positions in only x and z, while y has zero displacement

The issue may be this:
change(3,2)=current(2,1)*cos(current(1,2))*sin(current(1,3))+current(2,2)*(sin(current(1,1))*sin(current(1,2))*sin(current(1,3))+cos(current(1,1))*sin(current(1,3)))+current(2,3)*(cos(current(1,1))*sin(current(1,2))*sin(current(1,3))-sin(current(1,1))*cos(current(1,3)));

It might be this instead, which involves changing only one sin to a cos:
change(3,2)=current(2,1)*cos(current(1,2))*sin(current(1,3))+current(2,2)*(sin(current(1,1))*sin(current(1,2))*sin(current(1,3))+cos(current(1,1))*cos(current(1,3)))+current(2,3)*(cos(current(1,1))*sin(current(1,2))*sin(current(1,3))-sin(current(1,1))*cos(current(1,3)));

Comment only
21 Jul 2015 JITU SANWALE

### JITU SANWALE (view profile)

How the earth rotation has taken into account?

Comment only
06 Jun 2014 Farrokh

### Farrokh (view profile)

1) What rotations do phi, theta, and psi represent? Standard z-x-z rotation?
2) In which direction is gravity supposed to be? Is it in the -Z (negative Z) direction?

Comment only
24 Feb 2014 Abhilash Harpale

### Abhilash Harpale (view profile)

@Dario: IMU unit mounted on a centrifuge was used to generate the example file, as far as I can remember

Comment only
28 Nov 2013 Akash

### Akash (view profile)

Can we use the function to plot trajectory in real time? Also can you give us the source of the equations used in the function find_position?

Comment only
04 Oct 2013 mostafa mohamed

### mostafa mohamed (view profile)

can any one help me to run the program when i try to run it i have errors

19 Aug 2013 Dario

### Dario (view profile)

Nice Work!
can i ask you what have you used to generate the example data?
Thank you

Comment only
12 Mar 2013 Michael c

### Michael c (view profile)

hello,

Can I know which equations did you use? can you give me any references to look at? I'm trying to build an INS that outputs position based on accelerometer and gyroscope data.

Michael

Comment only
12 Jan 2013 Pavla

### Pavla (view profile)

Hello,
information about physical units for velocity would be usefull. There is a typing error in Line #29 "data(1,3)" might be "data(i,3).
Are you sure with formula for dY? Item [2,2] in rotation matrix is "sin(phi)*sin(theta)*sin(psi)+cos(phi)*cos(psi)".

Comment only
16 Dec 2012 Paulo Silas Silva

### Paulo Silas Silva (view profile)

Great Job!!!

14 Aug 2012 Abhilash Harpale

### Abhilash Harpale (view profile)

@Jong Kim: Yes, u,v,w are velocities in the body frame.
u,v,w can be obtained from x_dot,y_dot,z_dot by a frame transformation.

Comment only
12 Aug 2012 Jong-Hwan Kim

### Jong-Hwan Kim (view profile)

Hi,
I understand that Phi, theta, Psi are representing angles of x, y, z axis and x, y, z are position from virtual global frame. However, I don't understand that what u, v, w are representing. They are velocity? Could you explain for detail? Thanks

Comment only