Discussion forum for UAVDevBoard, Sparkfun's 3-axis IMU-based autopilot board

This is the place to discuss the new open source IMU-based autopilot board by Bill Premerlani.

Views: 14993

Reply to This

Replies to This Discussion

Magdi, looks like old code. What version? It just smoothing out changes between readings with a mathematical filter.
Newer code integrates (sums) and then averages by dividing by number of samples.
About 200 samples every 1/40 the of a second.

Best wishes Pete

Thanks pete

I am building QuadRotor, and i designed my own control algorithm so all i needed from the code is the DCM algorithm to get the roll, pitch, Yaw angles. I am reading this code


I have the UAV V2.9 board with

  • MMA7260 three axis accelerometer
  • 3 LISY300AL gyros  

I have sent for the new board i will receive it after while so for now i have to work with V2.9

i also need to ask if someone can tell if it is better to build my own kalman filter for the board or it is better to work with DCM.


Have you taken a look at quad branch in the main matrixpilot repository ?


It's much more up to date because all the MatrixPilot code got refactored into

Main flight code (as in the code in MatrixPilot or MatrixQuad), and then hardware specific code for the UDB2/3 and 4 which was put in the directory called lib_UDB, and then finally the DCM code which is in lib_DCM.

Alot of bugs have been fixed and well tested now in all those libraries and code, since the helicopter group last updated that code that you linked to above.

Best wishes, Pete

Best wishes, Pete


I read the matrixpilot code, But I can't figure out what GGAIN is?

  #define GGAIN SCALEGYRO*6*(RMAX*0.025)

and why multiplying it in 1 in 2.14 format RMAX




I am trying to setup a UDB4 for my electric A10 Warthog.  I have the new code downloaded, compiled and installed.  I have all the electronics including the radio and servos setting on my bench.  After powerup I get the double wag of the servo and I believe it's trying to get GPS lock, but since I'm inside it probably can't see the GPS satellites very well (if at all). 


My question is - will I be able to switch on stabilized mode and see the servos try to correct if there is no GPS lock?  As it sits right now, after the initial servo wag (after 10 seconds), the green LED is on, all the radio controls work the servos (through the UDB4), but if I switch on stabilize and move the UDB4 around I don't get any servo movement.  I'm hoping that it's just from the lack of GPS lock.


Any thoughts?  Thanks!



Hi Mark,

Yes, to get to Stabilized mode and Autnomous mode you will need to get GPS Lock.

You will may find that once you have taken the develoment setup outside and got GPS Lock, that after that, you will get GPS inside for the remaining sessions of that day.

Yes, after the first set of waggles, the UDB is trying to get GPS Lock. Once you have GPS Lock it will waggle the aileron / rudder servos again. You will then be able to change flight modes, and the LEDs will change to show you which mode you are in.

Best wishes, Pete



Thanks very much.  I will take it all outside and hopefully it should work OK.


Also, my plane does not have a rudder (Aileron, Elevator, Motor).  I have disabled all the rudder options in options.h.  I did not see any sample options files for planes that don't have a rudder.  Have you or any of the group flown a plane in this configuration?  I assume the software will work OK?


Thanks again!





I flew that way for years without rudder control with my Twinstar 2. It works just fine.

One tip, you may want to turn of yaw stabilisation using ailerons if your plane has a decent tailplane.

It is just not required for a plane which is naturally stable in the yaw axis.

Best wishes, Pete

I cannot build the MatrixPilot_3_2_1 project.

I had a lot more problems with MPLAB X so I am now working with MPLAB v8.85 and I have gotten further but it still wont build.

I have a PICkit 3 and a UDB4.  I have downloaded "mplabc30-v3_31-windows-installer.exe" and am going by the "UDB4 Quick START GUIDE.pdf" from this website http://code.google.com/p/gentlenav/downloads/list.  I have come to a problem on pg 10 step 8.  When I select Project>"Make" I get the "Couldn't locate build tool.  Check tool locations." message.  I don't know what tool it is looking for and this is my first time using MPLAB.  Here is the full error message.


Release build of project `C:\Users\Jebs laptop\Documents\JebsPICprj\MatrixPilot_3_2_1\MatrixPilot\MatrixPilot-udb4.mcp' started. Sat May 19 11:40:53 2012


Executing: cscript "C:\Users\Jebs laptop\Documents\JebsPICprj\MatrixPilot_3_2_1\MatrixPilot\..\libUDB\fixDeps.vbs" "C:\Users\Jebs laptop\Documents\JebsPICprj\MatrixPilot_3_2_1\MatrixPilot\options.h" "C:\Users\Jebs laptop\Documents\JebsPICprj\MatrixPilot_3_2_1\MatrixPilot\..\libUDB\fixDeps.h"

Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation. All rights reserved.

Couldn't locate build tool. Check tool locations.


Release build of project `C:\Users\Jebs laptop\Documents\JebsPICprj\MatrixPilot_3_2_1\MatrixPilot\MatrixPilot-udb4.mcp' failed. Sat May 19 11:40:54 2012



Any help would be awesome.  I have 7 of the UDB4 boards and can't use them.

Hi Jebadiah,

Wow, 7 UDB4s, what are you planning to do with so many? I have only 3.

I will answer your question about BUILD FAILED in a minute. Before I do that, I want to give you links to the UAVDevBoard discussion group and website, and invite you to join. You will get faster answers to your questions that way. Now, to your question.

For some reason (possibly because of the prior MPLAB-X installation), MPLAB either does not know what tool suite you are using, or where the tools (compiler, assembler, librarian, linker) are located. It is easy to find out if that is the case by running MPLAB, open the MatrixPilot project, then under the Project tab, select the "Select Language Toolsuite Item". If MPLAB does not know where the tools are, you will see something like the following:

If you see something like the above, (red Xs in front of the tool namses) then that is the problem. What you need to do at the point is locate the assembler, compiler, etc. They are in one of the Microchip subdirectories. Use your computer's "find" facility to locate them by name, such as pic30-gcc.exe. All of the executeables that you need will be in the same subdirectly.

Or possibly you do not have a toolsuite selected, in which case you should select "Microchip C30 Toolsuite" as the Active Toolsuite.

Once you know where the executeables are, use the Browse button in the Select Language Toolsuite menu to navigate to the files and select them. You will need to do that 4 times.

Once you have located all the tools, the menu will look like the following, and then you should be able to do the build:

Great, thanks.  Yes that worked.  I just had to re-point the path as you said.  I thought it was something like that but did not know what I had to point.  Thanks for letting me know the problem was in the "Select Language Toolsuite" dialog box.  

Actually I have 8 UDB4 boards.  I have never flown any UAV or RC aircraft.  I am using them to keep a large structure stable in the air.  It is using several balloon type waypoints that I need to keep still with motors anchored to the ground.  

Now I just need to figure out the best way to get all the data to a single controller on the ground.

Thanks for the help.

Brainstorming Possibilities:-

Use MatrixPilot from Trunk with MAVLink (subject to very careful testing as it is the development / riskier codce).

That code has MAVLink. Set each UDB4 to have a different MAVLink ID. (e.g. 55, 56, 57 ...)

Throttle the datastream to enable realistic bandwidth through to the GCS. (Datastreams rates can be adjusted easily).

Use 802.15 Xbees each set for point to point to traffic.(not broadcast).

All UDB4's can then communicate with the GCS, which will need to be a PC with atleast 8 USB connections.

Use MAVproxy (Python program), or python examples in MatrixPilot MAVLink subfolders to create your own specific analysis / control. (Parsers all written for you already).

Use QGroundControl if you just want to analyse individual UDBs.

Best wishes, Pete

Reply to Discussion


© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service