Understanding the limitation of processing power with IMU's

I've read through the excellent UAVdev paper on DCM for tracking rigid body orientation, and I'm gradually understanding it. But I have some big questions. It seems that the best reason for using DCM in place of a Kalman filter is that it's much lighter computationally. (Is that right?) So, it can be quickly computed and updated on a dsPIC processor, right? But the dsPIC has some functions that make it better at math than a standard 8-bit uC, so how can the arduino keep up when doing DCM? Is the dsPIC on the UAVdev board much better/faster at updating the DCM than the arduino?

Also if the Kalman filter has been around and used since the 60's then how is it that it can't be EASILY implemented on todays far more powerful uCs? Is it more an issue of programming complexity than of processor power?

Also, why is there a movement toward DCM over Kalman? Besides computational simplicity, is there any advantage of DCM over kalman? And vice versa?

If kalman is superior overall, and 8-bit uC's are capable of it, then it's conceivable that some gifted hobbiest could endow us with a full-blown kalman solution right? (I wish I could be that person, but I'm not).

BTW, I want to say thanks to Bill and the team that have worked on the UAVdev project and documentation. From one engineer to another, it has the mark of true professionalism and great instruction. My hat's off. Thanks, also to Chris and Jordi (and others) for sharing so much of your project, and keeping it open.

Views: 576

Reply to This

Replies to This Discussion

I would like to take the opportunity offered by this post to ask you a
suggestion about my "next gift" :)

Since 2 year I develop and write code (ic C and assembler) for PIC
architecture and matured experience with PIC16, PIC18 microcontroller, so
I m very confortable with that architecture.
BUT: since I switch over linux few years ago (debian) I would avoid any
developing enviroment or IDE or whatever that is not available for linux.
The only exception was MPLAB, not many tools are so good developed or have
the same maturity for microchip's micros to develop.

The opportunity for abandoning completely the windows suite is offered at
this time by Arduino which is really what I need and what I wanted, in
pother words my dream, but as I am concerned I got an heartattack when I
discovered that even the last arduino board is equipped with an ATmega, 8
bits architecture :( :(

My application (Kalman and naviogation porpouses) are really math

For this reason I m really in big trouble to take a decision between:

1) buying the last UAVdev board from Sparkfun which is equipped with a
dsPIC30F micro.
PRO: dsp techology, fixed point math impoved, very high clock speed but
still I need to use another MPLAB suite to develop my code and at last I
cannot leave windows once for all;

2) buying an arduino board and arduIMU and related daughter boards and
start developing code for this architecture.
PRO: finally I get an linux-friendly enviroment and I can forget windows
but I m afraid of math intensive routines needed for an IMU and I wouldn't
like to forget kalman to adopt a DCM routine just for simplyfing the code.
Furtermore 16 MHz is really to slpw for a complete kalman application
(about all three axis I mean...)

Because I literally love arduino for its modularity and its philosophy I
really in trouble and have no ideas what is better...
So, what 's your suggestion?

thank in advance

PS: forget about emulating MPLB in linux...it is really really a mess :)

I agree with your philosophy, and I'd say that Arduino is really a bet on a community, rather than on any particular chip. It will continue to evolve to more powerful hardware as that becomes available, and I would not be at all surprised to see ARM support in the future. And you might be surprised by how powerful the current hardware is. Although it's just 8-bit, it's a very efficient RISC architecture, so 16Mhz = 16 real MIPS. That said, it still might not be enough for your code, so you might have to optimize a bit for this generation of hardware. But that's an investment worth making, I'd say.
Then I say...
I bet on this community too and in 2 weeks will place an order in a basket somewhere :)
Thank really for the input!
I didn't know about the ArduIMU+ V2...

Now magically the path appears in front of me :)

Hi Chris,
I was surfing on the web when I found this:

Do you have any crystal sphere somewhere ?? O_O O_O O_O
Unfortunately it's not support by the Arduino software (yet)

Reply to Discussion


© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service