Path: news.mathworks.com!not-for-mail From: <HIDDEN> Newsgroups: comp.soft-sys.matlab Subject: Re: acceleration to displacement accelerometer data Date: Fri, 16 Apr 2010 04:10:22 +0000 (UTC) Organization: The MathWorks, Inc. Lines: 21 Message-ID: <hq8nve$kat$1@fred.mathworks.com> References: <hq8i78$j84$1@fred.mathworks.com> Reply-To: <HIDDEN> NNTP-Posting-Host: webapp-05-blr.mathworks.com Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: fred.mathworks.com 1271391022 20829 172.30.248.35 (16 Apr 2010 04:10:22 GMT) X-Complaints-To: news@mathworks.com NNTP-Posting-Date: Fri, 16 Apr 2010 04:10:22 +0000 (UTC) X-Newsreader: MATLAB Central Newsreader 1187260 Xref: news.mathworks.com comp.soft-sys.matlab:627087 "Omio Abedin" <omio.abedin@dsto.defence.gov.au> wrote in message <hq8i78$j84$1@fred.mathworks.com>... > Hi all, > > I have a problem which seems simple enough, but I just can't work it out. I have discrete accelerometer data from an IMU, which is collecting data at 10Hz. I have 6DOF being the x, y, z linear accelerations, and the roll, pitch, yaw rate. > > I want to convert the linear accelerations to displacements and the angular velocities to angular displacements. I have been trying many different thinigs to solve this problem. I have tried cumtrapz with and without a high pass filter, but the result do not appear to be what I am looking for. > > I know they are inccorect because I moving the IMU to a certain known position and the results are not conforming to that. I am moving the IMU from a table to the floor (750mm below), and thus my position should read 0.75m once it reaches the floor. But it doesn't, it starts reading 0 again. > > Surely, this problem is common one, and someone out there must know how to solve it. Is there any other way to solve it without integrating? I am hoping that someone has already had to figure it out, and has got a script I could use, but any help would be greatly appreciated. > > Thanks, > Omio > > P.S. if any wants, I can email the script I have so far. ----------------- Accuracy of the double integration involved is crucial to the proper operation of an IMU. I seriously doubt if 'cumtrapz' is good enough. You should be using some version of the matlab 'ode' functions for solving these second order ordinary differential equations. The effects of small errors can build up very rapidly. Knowing correct orientation is crucially important in making the proper corrections for the effects of gravity. The poor IMU has no way of knowing that it is not accelerating straight upwards at some 32 feet per second per second, and if orientation is in error, it literally doesn't know which is the "up" direction to correct in. At best these devices can function only a very short time without receiving input from other sensors to allow corrections to be made. Read: http://en.wikipedia.org/wiki/Inertial_measurement_unit Roger Stafford