From PaparazziUAV
Revision as of 15:08, 13 December 2009 by Dankers (talk | contribs) (→‎Hardware)
Jump to navigation Jump to search



Booz is an attempt at extending paparazzi to VTOLs. At the current stage of the project, the system provides satisfying attitude control (auto1), vertical guidance and is able to more or less navigate autonomously. It is able to use simple paparazzi flight plans ( only go instructions ) and uses paparazzi telemetry and datalink, which means you can use all the paparazzi ground segment applications ( plotter, settings, gcs, etc...)

The current autopilot consist in 3 boards


  • The main board, comprising power supply, a LPC2148 and a barometer.
  • The IMU board, comprising gyroscopes, accelerometers, magnetometers and a 16 bits ADC.
  • The GPS board, using a LEA-5H by ublox.

It flies on a variety of Quad-rotor platforms

Small quad.jpg Booz2 a2.jpg Booz2 a1.jpg

and less common vehicles

Booz2 a4.jpg Booz2 a4 2.jpg Booz2 a5.jpg


Everything is at savannah.

-hardware in paparazzi4/trunk/hw/booz
-code in paparazzi3/trunk


There are currently two choices for Booz hardware, firstly PPZUAV is offering PCBs and his version of fully assembled hardware for $US1060 without cables.

PCBs are currently available from ppzuav with assembled hardware available now.

Secondly, two long time Paparazzi users are also producing Booz hardware, their version is made as a non-profit service to say thanks the Paparazzi community and as such will retail for $850 including cables. Additionally, this version will stick to the original BOM and will include the LEA-5H GPS and will not remove parts to save costs. 100% completed and fully tested hardware should be available before 21st Dec 2009.

Running a simulator

Quick start guide

Booz contains a sensors model and can use Jsbsim to allow arbitrarily complex flight dynamic models.

  • Extract a copy of paparazzi3 svn
 svn co svn:// paparazzi3
  • Install all required dependancies
apt-get install paparazzi-dev libtool

  • Compile JSBSIM
 cvs -z3 co -P JSBSim 
 cd JSBSim
 ./configure --enable-maintainer-mode --enable-compile-warnings --enable-libraries --enable-shared --prefix=/opt/jsbsim
 sudo make install

Here is a patch to silent warnings. Also be sure automake and autoconf are installed. If not sudo apt-get install automake autoconf

  • Compile paparazzi
 cd paparazzi3/trunk
  • Compile the vehicle
 make AIRCRAFT=BOOZ2_A1 clean_ac sim

  • Start paparazzi_center if you want click to start programs
  • Start messages to monitor the middleware activity ( from the tool menu of paparazzi center) or with
  • Start the sim
LD_LIBRARY_PATH=/opt/jsbsim/lib ./var/BOOZ2_A1/sim/simsitl

You should now see activity in the "messages" window

  • Plot the value of a message field.

start 'plotter' ( from the tool menu of paparazzi center) or with


for example drag the label 'int32 phi' from the BOOZ2_FP message to the drawing area of the plotter

  • Use the datalink to change the temetry mode

start 'settings' ( from the tool menu of paparazzi center) or with

 ./sw/ground_segment/tmtc/settings -ac BOOZ2_A1

start 'server' to dispatch datalink messages ( from the tool menu of paparazzi center) or with


change the field "telemetry" on the first page to "Att loop" and send by pressing the green check button. THe label on the left or the drop box should change to "Att loop" confirming your essage has been received. "message" should now show that the message "BOOZ2_STAB_ATTITUDE" is received

  • Use flightgear to visualize your vehicle

If you want a view of a quadrotor in flightgear, make a link from

/usr/share/games/FlightGear/Models/Aircraft/paparazzi to PAPARAZZI_SRC/conf/simulator/flightgear/

start flighgear with

fgfs --fdm=null --native-gui=socket,in,30,,5501,udp --prop:/sim/model/path=Models/Aircraft/paparazzi/mikrokopter.xml

restart your simulator with

 LD_LIBRARY_PATH=/opt/jsbsim/lib ./var/BOOZ2_A1/sim/simsitl --fg_host
  • Save you session

Tunning the attitude control loop

Here we are going to use the simulator to demonstrate a way of tunning the attitude control loop.

  • Restart your previous session
  • Set telemetry mode to "Att loop"
  • Display two real time plotter windows

In the first one, plot the field "m_phi" from the "BOOZ2_STAB_ATTITUDE" message. This is our estimation of roll angle. On top of that, plot the field "phi" from the "BOOZ2_STAB_ATTITUDE_REFERENCE" message. This is our reference roll angle, that is, the roll value we are trying to achieve.

In the second plotter, plot the fields "delta_a_fb" and "delta_a_ff". Those are respectively the feddback and feedforward part of our roll command. The sum of those two terms is what is used as roll command.The feedforward part is the part used to follow our trajectory and the feedback part is the part used to reject perturbations.

  • In "Settings", go to the "Att Loop" tab

We notice that the vehicle doesn't follow accurately the step trajectory we are trying to make him do.

Start by setting the value of the proportional gain ('pgain_phi') to 1000 instead of 400. The vehicle now follows the trajectory faster but overshoots. To prevent that, increase the value of the derivative gain ('dgain p') from -300 to -700.

If you look at the plotter where you're ploting the commands, you'll notice that during steps, the feedback command has to work hard. This means that our feedforward command is badly tunned, and namely not working hard enough.Increase the value of the feedforward gain ('ddgain p') from 300 to 540. You'll notice that now the feedback command has becomed marginal during the steps. This is the right value for the gain. Anything bigger will make the feedback command fight against the feedforward command during steps, anything smaller will make the feedback command have to complement the feedforward command.

Something else

  • try starting flightgear with
fgfs --fdm=null --native-gui=socket,in,30,,5501,udp --prop:/sim/model/path=Models/Aircraft/paparazzi/simple_bipe.xml

an the sim with

LD_LIBRARY_PATH=/opt/jsbsim/lib ./var/BOOZ2_A1/sim/simsitl --fg_host --rc_script 1

Hardware Test

Booz comes with a number of simple test programs that you can use to validate a newly assembled board or learn how booz code works in case you want to extend it. The Makefile for those is in conf/autopilot/booz2_test_progs.makefile


Paparazzi's Makefile allow you to build different TARGETS (aka programs) using a doted notation. The begining of the Makefile reads

 # test downlink
 test_downlink.ARCHDIR = $(ARCHI)
 test_downlink.ARCH = arm7tdmi
 test_downlink.TARGET = test_downlink
 test_downlink.TARGETDIR = test_downlink
 test_downlink.srcs   += $(SRC_BOOZ_TEST)/booz2_test_downlink.c
 test_downlink.CFLAGS += -DUSE_LED
 test_downlink.srcs   += sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c
 test_downlink.CFLAGS += -DUSE_UART1 -DUART1_BAUD=B57600
 test_downlink.srcs   += $(SRC_ARCH)/uart_hw.c
 test_downlink.srcs   += downlink.c pprz_transport.c

FIXME: More on this when syntax highlighting/line numbering works

The command line to compile the "test_downlink" target for the BOOZ2_A1 aircraft would be

make AIRCRAFT=BOOZ2_A1 test_downlink.compile

and to upload this program to your board ( you don't really need to type the previous command, make is smart and will compile your program if needed when you ask him to upload it )

make AIRCRAFT=BOOZ2_A1 test_downlink.upload


the max1168 is the 16 bits analog to digital converter chip used on the IMU to sample gyros and accels.

make AIRCRAFT=BOOZ2_A1 test_max1168.upload

Sensors Calibration