I saw this video again after three months and theres still so much to learn about this. This is so far the best resource on Motion Sensors and sensor fusion I have come across.
Wow, we designed the exact same thing to use for our own sensor fusion algorithm. Never knew that Google was using something exactly the same. Talk about parallel innovation!
Checkout DARPA’s Micro-PNT (Micro-Technology for Positioning, Navigation and Timing) positioning tracking technology, it does absolute position tracking on a single chip with sensor fusion. To oversimplify it; Micro-PNT adds integrates a highly-accurate master clock (TIMU) to existing chips gyroscope / accelerometer to simultaneous measure the motion tracked and combines that with timing from the syncronixed clock, and with sensor fusion makes single chip that does absolute position tracking.
I bought an IMU for practing embedded system and try to use integration to get the sensor displacement. It's turns out I'm a fool in the perspective of 12 years ago video.
I'm pretty sure that the gravity bias graph at 25 mins is wrong. If you had no gravity compensation the most you could move in a second would be 0.5g which is about 5 meters...
@ the question about a dynamic x and y reading, with a static z value, my first guess would be that x and y would reflect lat, long; wheras your altitude(z) may be fairly constant. hope this sheds light
+TheiLame The math and physics all still makes sense. What has changed is that most phones now have all of this hardware built in, and on the iPhone at least (I only do IOS development) the software functions are now built into the standard libraries. So no need to hack the OS or add hardware to get the gravity vector, user acceleration, attitude (via Euler, quaternion and rotation angles) etc. It's almost all there and ready to use with little or no extra processing.
23:22 You aren't removing gravity, you're adding gravity. Accelerometers can't measure gravity. When you're sitting still on a table (for example) you're not accelerating. The accelerometer measures the force of the table pushing up but not the gravity pushing down.Once you add the gravity that the accelerometer can't sense you end up with zero for acceleration.
This talk is amazing. You were able to take a difficult problem and explain its solution in a simple way. Moreover, you didn't do it by dumbing it down. I would like to learn more. For example, I understand how the gyro can be used to assist in accelerometer readings. I get that we no longer need a low pass filter. But I don't understand HOW to do that. Is there a link somewhere explaining that process? Also I don't yet understand why the compass is so important. To help us find down (gravity)?
How would I go about coding an application that outputs "roll" every time the teapot is rotated at a full 360 degrees, and not recording all other motions
How can we remove gravity effect from raw accelerometer data? I mean how we get linear acceleration? I have seen free acceleration also in literature. Linear acceleration and free acceleration is the same?
Can someone explain how the pan change worked at 38:00 assuming I have got the rotationMatrix from the sensor library, how to I pan the 2D image on my mobile screen?
Regarding the gravity signal, he says "it's actually mostly gyroscope data, but with the accelerometer used to correct drift" (at 17:59). I can't find any information on how this is done. The W3C Motion Sensors Explainer hints at the same thing: "On most sensor hubs, gravity is isolated from the accelerometer using the gyroscope" (www.w3.org/TR/motion-sensors/#relative-orientation), but also lacks any detail.
Interesting how Anglophones call a gyrometer a "giroscope". A scope is normally something you look into and/or aim with. Microscope, telescope, periscope, endoscope, borescope... Meter means "measure" as in thermometer, dynamometer, chronometer, accelerometer, magnetometer and yes, gyrometer that measures angular velocity aka the rate of angular change, from which one can compute the rotational speed. A small mystery of science and technology :-) Maybe there was a gyro-stabilized scope someday, probably invented by Leonaro da Vinci? Modern technologies start to correct that discrepancy: docs.microsoft.com/en-us/uwp/api/windows.devices.sensors.gyrometer?view=winrt-18362
I have Samsung Galaxy S2 and I'm experiencing with an issue that's annoying me very much. When i do "auto rotate" , the rotation goes after 4-5 seconds. I've done the calibrations and all that stuffs that you will find on google or forums. Also, i've checked secret code *#0*# , and at Accelerometer Sensor i get: ACC Raw Data - X: changing numbers, y: changing numbers, z: 1024 ( z is not changing like X and Y) In this case, is my Accelerometer Sensor broke Physicaly or what?! ?!
at 24:24 he said it wrong. It drifts only 2cm not 20cm. As you can see later on next graph blue line is on 8,5 but green line is flat, and on first graph is at 0.020, not 0.20. If the error was 20cm then it would be obvious not flat. Or, he maybe thought 20cm after 10sec
yet still the nexus 6p has tons of problems with its sensors. some gyro axis are not on zero when static, gravity value of the linear acceleration virtual sensor is off and there is no way to calibrate any of them...
42:17 Hi im little bit dumb. How does he get 9 numbers from 3 axis points? How does the twist work to give 6 extra numbers? "Those axis twist around with the teapot..." i dont get it.
+TheiLame I believe what he meant was that each of the three rows of the 3x3 matrix are the vectors describing the new x, y and z axis relative to the original xyz dimensions. For example, if you wanted to just rotate around the z axis by 90 degrees then the matrix to convert old dimensions to new would be: [0 -1 0 (vector describing the old x axis relative to the new coordinate system after rotation, i.e. x' = -y) 1 0 0 (vector describing the old y axis relative to the new coordinate system after rotation, i.e. y' = x) 0 0 1] (Z axis doesn't change so all vectors keep their same z coordinate) To test it, pick an arbitrary position in space, for example (1, 2, 3). If you multiply the matrix above by this vector you get a resultant vector of (-2, 1, 3), which is exactly what was intended, a 90 degree rotation around the z axis. This was a simple example, but it should work for any 3D rotation. Just make each row of the rotation matrix equal the vector describing the new direction of the three local x, y, z axis of the object. And unit vectors are required in the matrix, or else the space / object will expand or contract. Thus a 45 degree rotation version of the above would be: [sqrt(1/2) -sqrt(1/2) 0 sqrt(1/2) sqrt(1/2) 0 0 0 1]
The most important of all is the sensor fusion that was never talked about. lol You showed how it works from application perspective but why it works never explained by going over how sensor fusion algorithms work.
@ballystix Thank you for the response. Unfortunately, I don't quite understand what you are telling me. Is there a friendly website to help me learn what you mean? I'll hit up wikipedia and try to piece it together. But if you have a nice tutorial or the likes I would really appreciate it.
Yeah, the number is wrong. I'm sure he meant 10s instead of 1s. A 1 deg error is 8.5m after 10s. His point stands though, gravity is big and double integration sucks.
@ProgramMax I believe you would need to write out the filter as a bunch of difference equations (which is basiclly the discrete form of a differential equation describing the filter response).... alternatively you can try using fourier/s-domain analysis but i doubt that can done easily on a device like that.
25:30: The drift is 8.5 centimeters in one second, not 8.5 meters. If i drop the device it will fall (displace) 4.91 meters in one second. The integral of a small error on gravity is not larger than the integral of gravity itself.
euler is pronounced oiler because it is a german word. eu makes the sound oi. kind of like the strange combinations in english such as oo, ew, aw, au, ou, ow, etc....you get the picture.
it's for the positioning of the character..for example if you want to move your character by moving your device or want to map your footsteps as input to your character's step... he was actually giving alternate to the Accelerometer (to avoid double integer errors) and proposed pedometer and Kalman filter to use for the above mention task.
9-axis - it integrates all 3 types of sensors. This can't be 9DOF because you can't change your orientation for example in magnetic field without changing your position or orientation in world space.
In reality is possible to recover from a 90 degree angle on an airplane. It's possible. But if the software is using Euler angles you are giving zero chance for that to happen... so, please, do not use Euler angles on aviation please.
Google hosted this amazing talk on sensor fusion, then proceeded to cripple what could be the most useful indoor localization tool: Wi-Fi scanning. issuetracker.google.com/issues/112688545 issuetracker.google.com/issues/79906367
Interesting to compare the real world design vs the point of view of abstract University teacher who wrote the wikipedia pages about what should be the same subject. How the GPS work so well in any cell phone? The real data from the satellite is not precise enough to detect that you arrive at a street in 50 feet. But try to discover how the cell phone work from any web site or youtube video.. Nobody knows. Wikipedia just mention the expensive equipment that are mandatory in commercial airplanes. They know the cell phone in their pocket appear to match the performance of these devices. But all they can say is : thanks to Einstein, science works. The black hole in their knowledge is discretely ducted under the rug. This video published in August 2010 explain the difficulty of sensing linear displacement from the 6 sensors. A good engineer can fill the gaps, extrapolate what the device do starting from the noisy input sensors to the smooth animation that Google map and other similar application draw of the cell phone.
youtube(google) should integrate IQ and Knowledge into thumbs-up/down. because that way when you see the ratio you'll have a better chance of correctly evaluate yourself!