How do I calculate the maximum sptio-temporal resolution of an IMU sensor? - accelerometer

I am trying to calculate the trajectory of an IMU sensor by integrating the acceleration twice, but I keep getting distorted data. I would like to know what is maximal resolution I can actually produce from this sensor (MPU9250).
The sensor is operating at a sampling rate of 200Hz
The LSB is 0.6mm/s^2.
The noise covariance matrix of the sensor has the diagonal elements [19.7, 19.7, 52.2] mm/s^2
Assuming that I know the exact orientation of the sensor (using a camera/marker based system for the purpose of debugging), What is the actual highest spatiotemporal resolution I can get with this sensor?
integrated acceleration twice to get trajectory

Related

IMU/MEMS with high limit accelerometer and magnetometer

anyone know of an IMU sensor.
Price range of 5-17$.
That has a high accelerometer value of 50-200g and a magnetometer to measure the the Earth's orientation.
Update on mag and acc need to be 100Hz or higher.
I know i kan get one imu for each but i would like to have them combined to save space.
I'm using it to measure high rpm and high g crashing.
Im also designing the pcb myself so just a datasheet of the ic is fine.

Impact of motors on IMU

Currently, we are using BNO055 in one of our projects. The IMU is placed next to the dc motor due to space constraints within the hardware setup. Due to motors vibrations, we are applying a low pass filter on quaternion values read from this (https://github.com/adafruit/Adafruit_BN ... awdata.ino) script. We have set 5 Hz as a cut-off frequency of the filter. We have also placed IMU on Sorbothane (damping material) to minimize the vibrations. However, we are still selling the error in the orientation.
What could be done to reduce the impact of motor vibrations on IMU both from a software and hardware point of view? Any inputs are highly appreciated.
Motor vibration may not be the only problem here.
Orientation estimation can go wrong due to multiple factors like,
Bias due to incorrect calibration. Keep the sensor level and idle. Make sure Gyroscope reads close to (0,0,0) on average. Accelerometer should read either (0,0,9.81) or (0 0 -9.81) m/s^2 depending on the convention.
Bias due to temperature changes. Even a 10 deg change in PCB temperature can change the bias in Gyro by 0.3 dps (according to the datasheet)
Motor noise. Seems like you have already tried reducing this one.
If none of them work, you could try implementing your own Kalman or complementary filter based on the raw data from Gyro, Accel and mag. This way you can be sure about calibration process, estimator gains, how the estimator works.
If implementing Kalman filter is difficult, you could try this AHRS filter block/algorithm given here,
https://in.mathworks.com/help/nav/ref/ahrsfilter-system-object.html

Displacement from accelerometer data with filtering

I have acceleration data from few accelerometer sensors. I am interested in the displacement so, I double integrate it (cumtrapz in matlab). The acceleration data is really noisy so, I use Butterworth filter to filter out the low frequency noises. After the first integration, I get the velocity and then filter this velocity to further integrate to get displacement. Everything works just fine. The only issue I have is that after filtering I lose the actual value of the acceleration and thus the value of the displacement I get does not make any sense.
Any suggestions?

How to calculate displacement from Accelerometer reading?

I have accelerometer readings of three axis X, Y and z, will be getting data in a frequency of (62 records per second). Could you please suggest me how can I calculate the displacement.
Data in hand:
Accelerometer readings with respect to time.
Do I need to calculate the displacement using time domain data or need to convert into frequency domain. Which one will give a accurate results?
You can double integrate the acceleration vector over time to obtain the displacement. In theory this is a perfectly sensible solution.
But in practice, there will always be a component of g (acceleration due to gravity) acting on at least one of the axes all the time. Let's say you subtract the g component from your xyz vectors. The problem is that any slight error in readings (even off by a small order of magnitude) when double integration will lead to the error adding up over time rendering the displacement wildly inaccurate.
According to the integrated values, you will most likely see even an idle object fly off into space. You'll need an additional sensor to tell you the orientation - like a gyroscope, and have some point of reference (the Wiimote does this with an IR sensor).
This is primarily a time domain problem, but you could have a frequency domain stage where some amount of filtering is done to remove measurement error or process error.
tl;dr Positional tracking with acceleration sensors alone is a hard problem.

Accelerometer Noise

I read in the internet that Accelerometer suffers from 1/f noise at low frequencies and Gaussian noise at high frequencies. But i didn't understand what frequency they are referring to? Is it the sampling frequency of the accelerometer? or operating frequency of the mobile phone processors(I was looking for MEMS Accelerometer in android phones)?or frequency of some other signal(if yes then what kind of signal)?
They're talking about the frequency of the input signal. Since this is an accelerometer the input signal is movement.
Fast, high frequency vibrations suffer from Gaussian noise. Slow, low frequency motion suffer from drift. This limits the range of motion you can accurately measure with accelerometers.
Additional answer:
What does frequency refer to when it comes to motion? It simply refers to the change in direction of motion, or more specifically the change in direction of the vector of motion.
It may be difficult to imagine that linear forward motion has a frequency but linear forward motion only has a frequency of zero if the object either travels at constant speed or constantly accelerates for eternity. For a car or a train or a plane or a boat or a spaceship this is not the case. All vehicles in motion has to stop eventually. When it stops, it has completed a motion with frequency of 1/(2*time_of_journey).
For accelerometers, the frequency is more since accelerometers measure acceleration, not distance. So if the vehicle travels like a spaceship which accelerates only once and decelerates only once then the frequency of the input will be 1/time_of_journey (since the value of acceleration starts at and returns to 0). But for cars and boats and bicycles and most other vehicles the frequency is significantly higher since most vehicles constantly accelerates and decelerates. So the frequency of acceleration is generally 1/(time_of_journey/number_of_times_you_hit_the_brakes).
Seriously, the numbers for this is generally very low. Take the simple example of a spaceship going to the moon and ignore the launch and landing. The frequency of acceleration for Neil Armstrong's trip to the moon was 1/4 days or 0.000003 Hz. That doesn't look like much of a frequency.
So why state the parameter in terms of frequency? Well, in signal processing motion is generally assumed to be sine waves. It's not realistic and doesn't reflect the real world but is good enough and simplify things enough to the point where we can write down equations to model things. Which is why you see things like "accelerometer noise" being quoted in terms of frequency.
Vehicles also do experience acceleration at higher frequencies though. Vibrations caused by the engine and bumps in the road and friction with the air has frequencies in ranges that we recognize as being periodic. Indeed, often our ears detect such things as rattling or humming or swooshing sounds. Sensitive accelerometers detect them too.