I Quote from APM 2.x release notes:
"We’ve tested it (APM 2.x) for months, including lots of flying, and it significantly outperforms the DCM used in APM 1.0.
It’s your choice whether you want to use the MPU-6000 internal sensor fusion or do it yourself in the main processor, but if you choose the DMP it frees up nearly 40% of the processing power in the Atmega 2560"
1) Currently as I see from the source, we extract Accel, and Gyro vectors from MPU-6k and perform DCM using (non-linear) complementary filter and AHRS after that.
So, how are we taking MPU-6k for an advantage, as I understand it does provide 'its own' sensor fusion (so that we don't need DCM or Kalman). We can use I2C with Compass + GPS + other sensors interfaced as required and perform sensor fusion inside of MPU-6K, thus making the code more easier to manage and leave more flash memory free!!
2) Do we have a choice to use MPU-6000 sensor fusion instead of external DCM? Is it already done and if so, how? As per the quote, then we can add more features in APM 2.6, for the next generation along with PX4 as well!!
Thanks for any inputs..
Anybody any views on this?
I am sure, some curious user-developers would have this question.
We can use I2C with Compass + GPS + other sensors interfaced as required and perform sensor fusion inside of MPU-6K,
How does that work? How do we send Compass data, and more importantly, GPS data, into the MPU for internal fusion?
I am not sure about the 'how do we' part :) Is that a question you are asking me or is that a 'global question'?
The technical description of MPU-6000 to me isn't very clear on how to get this working. I wonder if this can save 40% of CPU time, then APM can actually run for another generation without people having to disable their APM_MOUNT, AUTOTUNE option, etc. in APM's code.
I wonder if developer had a good option as this, why wasn't it considered or implemented? In the review link above, it states 'Better performance than DCM'. I hope they were not just words!
Moreover, does PX4 also use the same MPU-6000+ series?
I can't comment on what's in that link.
And I can't tell you how to fuse GPS data into the MPU. That would be critical, and I doubt it can be done. If you or somebody else knows how, I'm sure we'd look at it. But as far as I know, we've given up on this because of the GPS data fusion problem.
Where did you get your figures like 40% from ? Have you profile AP ?
Im not disputing that some time is done doing all that fancy multiplications but i doubt it could be that much especially considering the Atmega has built in multiply instructions for fixed point that are reasonably fast. Im guessing without actually knowing that most of the CPU time is spent reading with all the handshaking and io with the various devices.