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.

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –

Replies

  • 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
    intensive.

    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
    Cheers
    Dave

    PS: forget about emulating MPLB in linux...it is really really a mess :)
     
This reply was deleted.

Activity