PDF report with source code:
http://www.scribd.com/doc/29754518/A-Efficient-Orientation-Filter-for-IMUs-and-MARG-Sensor-Arrays
Video:
https://www.youtube.com/watch?v=fOSTOnQzZCI
Intro to report:
This report presents a novel orientation filter applicable to IMUsconsisting of tri-axis gyroscopes and accelerometers, and MARG sensor
arrays that also include tri-axis magnetometers. The MARG implementation
incorporates magnetic distortion and gyroscope bias drift compensation.
The filter uses a quaternion representation, allowing accelerometer and
magnetometer data to be used in an analytically derived and optimised
gradient-descent algorithm to compute the direction of the gyroscope
measurement error as a quaternion derivative. The benefits of the filter
include:
(1) computationally inexpensive; requiring 109 (IMU) or277 (MARG) scalar arithmetic operations each filter update,
(2)effective at low sampling rates;e.g.10Hz,and
(3) contains 1(IMU) or 2 (MARG) adjustable parameters defined by observable system
characteristics.
Description from YouTube video:
A real-time demonstration of an efficient orientation filtercapable of providing an estimate of the sensor arrays orientationrelative to the earth through the fusion of tri-axis gyroscope, tri-axisaccelerometer and tri-axis magnetometer data. Unlike an IMU, theinclusion of the magnetometer mean that the filter is not subject to anyaccumulating errors. The filter also incorporates magnetic distortioncompensation to overcome soft-iron disturbances and gyroscope bias driftcompensation. The algorithm is an alternative to more computationallyexpensive Kalman based solutions that are commonly used in thisapplication. The total computation requirement of this filter is 278scalar arithmetic operations per sample.
Hardware used in video: Sparkfun6DOF IMU Razor (ADXL335, LPR530 and LPY530) with gyroscope RC HP filtersremoved, Sparkfun HMC5843 breakout board (low ESR cap replacement),x-io Board with .NET interface library
You need to be a member of diydrones to add comments!
Replies
This may help you: https://github.com/Harinadha/STM32_MPU9150eMPL
It is for STM32 and easy to understand.
Hi All
I am a new bie working on a project name sonar fish finder . I have to get the pitch and yaw movement of the boat so that I can get the position of the boat I mean the drift. I dont have any idea how to do this . I will be using MPU-9150 can any body help me. I have gone through the data sheet there are three dufferent register for accelerometer, gyroscope as well as magnetometer. I got information like it will be easy if we take all accelerometer, gyroscope and magnetometer data from DMP register.Is that correct to retrieve what we get accelerometer ,gyroscope and magnetometer from this DMP (i2c comm) rather than taking each from their particular register . I am really confused and I dint have any idea regarding this. Any basic code which take these data from DMP and get the pitch and yaw out of it and fow to get the drift from the initial position.which will be easy to understand for a fresher like me ( with comment will be more good). Please help me I have posted in many forums including mpu9150 forun but I didn't get any help
1. Read the DMP output: attitude, acceleration..etc.
2. Integrate the acceleration twice to get position.
But note that, the position will be too much drifting as there will be noise in acceleration even if your vehicle or sensor is not moving.
NOTE: Posting multiple times is not going to solve your problem.
I am a new bie working on a project name sonar fish finder . I have to get the pitch and yaw movement of the boat so that I can get the position of the boat I mean the drift. I dont have any idea how to do this . I will be using MPU-9150 can any body help me. I have gone through the data sheet there are three dufferent register for accelerometer, gyroscope as well as magnetometer. I got information like it will be easy if we take all accelerometer, gyroscope and magnetometer data from DMP register.Is that correct to retrieve what we get accelerometer ,gyroscope and magnetometer from this DMP (i2c comm) rather than taking each from their particular register . I am really confused and I dint have any idea regarding this. Any basic code which take these data from DMP and get the pitch and yaw out of it and fow to get the drift from the initial position.which will be easy to understand for a fresher like me ( with comment will be more good). Please help me I have posted in many forums including mpu9150 forun but I didn't get any help
I am a new bie working on a project name sonar fish finder . I have to get the pitch and yaw movement of the boat so that I can get the position of the boat I mean the drift. I dont have any idea how to do this . I will be using MPU-9150 can any body help me. I have gone through the data sheet there are three dufferent register for accelerometer, gyroscope as well as magnetometer. I got information like it will be easy if we take all accelerometer, gyroscope and magnetometer data from DMP register.Is that correct to retrieve what we get accelerometer ,gyroscope and magnetometer from this DMP (i2c comm) rather than taking each from their particular register . I am really confused and I dint have any idea regarding this. Any basic code which take these data from DMP and get the pitch and yaw out of it and fow to get the drift from the initial position.which will be easy to understand for a fresher like me ( with comment will be more good). Please help me I have posted in many forums including mpu9150 forun but I didn't get any help
I am a new bie working on a project name sonar fish finder . I have to get the pitch and yaw movement of the boat so that I can get the position of the boat I mean the drift. I dont have any idea how to do this . I will be using MPU-9150 can any body help me. I have gone through the data sheet there are three dufferent register for accelerometer, gyroscope as well as magnetometer. I got information like it will be easy if we take all accelerometer, gyroscope and magnetometer data from DMP register.Is that correct to retrieve what we get accelerometer ,gyroscope and magnetometer from this DMP (i2c comm) rather than taking each from their particular register . I am really confused and I dint have any idea regarding this. Any basic code which take these data from DMP and get the pitch and yaw out of it and fow to get the drift from the initial position.which will be easy to understand for a fresher like me ( with comment will be more good). Please help me I have posted in many forums including mpu9150 forun but I didn't get any help. Please help me
Is it possible to get MPU6050 quaternion data(gyro + accel) directly from hardware(DMP) and than fusion magnetometer data on software to get 9DOF quaternion?
hello,
i've a problem with a gyro bias.
i'm using mpu6050 and read data of accell and gyro, attitude estimation is done using mahony accel + gyro alghoritm.
for testing purpose i've built a processing gui, which consist of a rotating cube.
the problem is that the cube is always rotating a little (even if i calibrate the gyro)
i've read the gyro values in a fixed position @2000 deg/sec, given those values i substract this offset for every axes to the actual values read, es. gyrovalueX = (rawreadgyrovalueX - rawgyrooffsetX) / LSB.
with calibration of the gyro the cube rotate less, but always a little
below two pictures of the my problem taken at 16.50 and then at 19.20, with fixed position of the chip.
any help would be apriciated.
tks
Cattura_16.50.JPG
Cattura_19.20.JPG