Good news: Invensense has finally released a licence that allows open source projects such as ArduCopter/Plane to use the built-in sensor fusion processor in the MPU-6000 gyro/accel chip used in APM 2.x!
This processor, called the Digital Motion Processor (DMP), has been in the APM 2.x sensors from the beginning, but we weren't using it because Invensense had not specifically allowed their driver to be distributed with open source software. However, after much discussion, they have now written a licence that allows this.
You can get it on the Invensense Developers Corner here. (You'll have to register first). I'm not a lawyer, so I won't attempt to analyze the language to see if there are any holes in it, but the Invensense developer relations managers and their legal team wrote it with projects like ArduPlane/Copter in mind, and they've assured me that we now have the green light to use the DMP code. (The agreement specifies the MPU-6050, which is the I2C version of the chip, but that includes the MPU-6000, which is the SPI version that we use).
The Ardu* dev team is hard at work at implementing the DMP code in the ArduCopter/Plane code and we hope to have that ready for the next release. It will probably give you a choice of using the current DCM, running on the main processor, or the DMP running on the MPU-6000, freeing up a good bit of processing power for other functions.
We have not done a rigorous test of the DMP vs the DCM, so we can't yet say that one is better than the other. But this licence now allows us give people the option of trying it, and if it perorms better than the DCM, or just as well but freeing up computational power, we can switch to it going forward.
Comments
Seems like the DMP code has been "cracked" or whatever:https://github.com/bzerk/MPU6050_DMP_6_axis_demo_/blob/master/MPU60...
I think keeping the Arducopter code more general will make it easier to adopt new sensortechnology in future and not being dependend on one company. Perhaps a MPU DMP code could lengthen the lifetime of current apm2.x, but in the long run i doubt a benefit.
Besides this i think giving some code to an open source project will make it free for every open source project.
Jake Stew "My conclusion so far is that the DMP is bunk! Total vaporware." That also seems to be the conclusion of Fabio Varesano as well. For me invense can stick their code up their...... .
Just my opinion.
So long
Kraut Rob
My conclusion so far is that the DMP is bunk! Total vaporware.
Will the ArduImu v3 also get the new code that supports the DMP?
Has anyone successfully downloaded the documents available in the Invesense developers corner?
I registered, logged in, clicked the waiver "agree" button, and was still denied access to the documents...
I e-mailed support at invensense, but if someone has them would you shoot a copy my way?
I can not wait to see the comparative results between DCM vs DMP
Greg: via SPI. We do mag/GPS sensor fusion externally and send offsets back into the MPU-6000 via Accel bias factors.
Does the mpu6000 talk to the mag directly over I2C, and if so how do the mag offsets get incorporated?
Thanks Chris. I'll just wait (patiently) for the boffins to get on with it then ;)
It'll be interesting to see how it pans out.
Crispin: Yes, that's possible. In our testing so far, the DMP performed about as well as the DCM, but until we can fully implement (which we are now doing), we won't be able to properly test them head to head to know which is really better in our applications.