<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.paparazziuav.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jakestew</id>
	<title>PaparazziUAV - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.paparazziuav.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jakestew"/>
	<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/wiki/Special:Contributions/Jakestew"/>
	<updated>2026-05-05T22:03:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Lpc21BootloaderUpload&amp;diff=11543</id>
		<title>Lpc21BootloaderUpload</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Lpc21BootloaderUpload&amp;diff=11543"/>
		<updated>2012-02-16T06:24:58Z</updated>

		<summary type="html">&lt;p&gt;Jakestew: Gramatical clarification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bootloader from scatch==&lt;br /&gt;
&lt;br /&gt;
The goal of this page is to explain how to get the autopilot bootloader onto a ''brainless'' new ARM based autopilot board. Note that the bootloader only needs to be installed '''once''', when the board is first built and has never been used. Most of the times if you bought a board somewhere, the bootloader is already installed for you. If you did not make your own autopilot board, but rather purchased it from a manufacturer, chances are high the bootloader is already uploaded onto your board by the manufacturer. You could ask the supplier of your board. In that case you can just '''skip''' the steps described here and just continue the part of [http://paparazzi.enac.fr/wiki/Paparazzi_Center Uploading the Flightplan code to your autopilot board] or if you are more experienced you could go [http://paparazzi.enac.fr/wiki/Compiling here]&lt;br /&gt;
&lt;br /&gt;
[[Image:Bare_TWOG_Board.jpg|thumb|right|Bare_TWOG_Board.jpg]] &lt;br /&gt;
&lt;br /&gt;
==Why have Bootloader in the first place==&lt;br /&gt;
&lt;br /&gt;
Since the Airborne code and Flight-plans change frequently, it would be great if we could just simply upload new version with changes on the ground by connecting an USB cable to out airframes autopilot board. Well, the Bootloader makes this a simple reality.&lt;br /&gt;
&lt;br /&gt;
==How does it work==&lt;br /&gt;
&lt;br /&gt;
The Bootloader is uploaded through the serial interface UART0 (Serial1) by connecting certain point on the board to '''ground''' during power-up, sometimes referred to as: ''holding low''. On the board Tiny V1.x pin P0.14, Tiny V2.x this pin is called BOOT). Also GPS_RESET has to be tied low during the serial programming to keep the GPS receiver quiet that shares the serial port with the download.&lt;br /&gt;
&lt;br /&gt;
==Connecting it all==&lt;br /&gt;
&lt;br /&gt;
You will need to convert the PC's RS232 Serial with voltage levels of +/-13V to 3.3V (or 5V) TTL in order to communicate directly with the Autopilot board. This can be accomplished in multiple ways. The easiest and most convenient method is to purchase or build a USB -&amp;gt; Serial 3.3V adapter similar to this one [http://www.ftdichip.com/Products/EvaluationKits/TTL-232R-3V3.htm TTL-232R-3V3] [[Image:The_FTDI_RS232_USB_Cable.jpg|thumb|right|The FTDI RS232 USB Cable]]&lt;br /&gt;
&lt;br /&gt;
Some examples of suppliers:&lt;br /&gt;
[http://www.sparkfun.com/commerce/product_info.php?products_id=199]&lt;br /&gt;
[http://www.sparkfun.com/commerce/product_info.php?products_id=718]&lt;br /&gt;
[http://www.pololu.com/products/pololu/0391/]&lt;br /&gt;
[http://www.hvwtech.com/products_view.asp?CatID=166&amp;amp;SubCatID=183&amp;amp;SubSubCatID=0&amp;amp;ProductID=409]&lt;br /&gt;
&lt;br /&gt;
It is strongly advised that you use a USB-serial converter with of the [[http://www.ftdichip.com/ FTDI brand]] chip, as serial chips from the FTDI brand are by default working well in Linux. As a nice bonus, the Paparazzi ground station software is configured to look for modems on FTDI ports by default, the converter can likely serve as a modem interface after it's use in Bootloader uploading.&lt;br /&gt;
&lt;br /&gt;
Make up a wiring harness similar to the following. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Cable_Bootloader_Full.jpg|Bootloader cable&lt;br /&gt;
Image:Cable_Bootloader_To_FTDI_USB.jpg|Bootloader cable to FTDI USB&lt;br /&gt;
Image:Bootloader_helper_cable_to_USB_FTDI_Cable.jpg|Bootloader helper cable to USB FTDI cable&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may vary the details, however this is a working solution: &lt;br /&gt;
&lt;br /&gt;
 Tiny V1.x (SERIAL_1):&amp;lt;br /&amp;gt;&lt;br /&gt;
 TINY RXD0  &amp;lt;-- PC SERIAL TX (5V or 3.3V)&lt;br /&gt;
 TINY TXD0  --&amp;gt; PC SERIAL RX (5V or 3.3V)&lt;br /&gt;
 TINY P0.14 --&amp;gt; attach to ground, or wire through a pushbutton to ground&lt;br /&gt;
 TINY GND   --&amp;gt; PC SERIAL ADAPTER GND&lt;br /&gt;
 TINY RESET --&amp;gt; ''optional'' wired to ground through a pushbutton so you can reset&lt;br /&gt;
&lt;br /&gt;
 Tiny V2.x (Connectorname - DOWNLOAD) :&amp;lt;br /&amp;gt;&lt;br /&gt;
 TINY LPC_RXD0  &amp;lt;-- PC SERIAL TX (5V or 3.3V)&lt;br /&gt;
 TINY LPC_TXD0  --&amp;gt; PC SERIAL RX (5V or 3.3V)&lt;br /&gt;
 TINY BOOT      --&amp;gt; attach to ground, or wire through a pushbutton to ground&lt;br /&gt;
 TINY GPS_RESET --&amp;gt; attach to ground, or wire through a pushbutton to ground&lt;br /&gt;
 TINY GND       --&amp;gt; PC SERIAL ADAPTER GND&lt;br /&gt;
&lt;br /&gt;
 TWOG V1.x (Connectorname - DOWNLOAD):&amp;lt;br /&amp;gt;&lt;br /&gt;
 TWOG LPC_RXD0  &amp;lt;-- PC SERIAL TX (5V or 3.3V)&lt;br /&gt;
 TWOG LPC_TXD0  --&amp;gt; PC SERIAL RX (5V or 3.3V)&lt;br /&gt;
 TWOG BOOT      --&amp;gt; attach to ground, or wire through a pushbutton to ground&lt;br /&gt;
 TWOG GND       --&amp;gt; PC SERIAL ADAPTER GND&lt;br /&gt;
 &lt;br /&gt;
For TWOG make sure the GPS module is '''unplugged''' from the board. This is to prevent GPS serial data to disturb the uploading of the bootloader. &lt;br /&gt;
&lt;br /&gt;
[[Image:Where_To_Insert_Bootloader_Cable.jpg|thumb|right|Where to insert the Bootloader cable]]&lt;br /&gt;
&lt;br /&gt;
==Upload the firmware==&lt;br /&gt;
&lt;br /&gt;
Once this wiring is ready you will be ready to upload the bootloader to the autopilot board from your PC.&lt;br /&gt;
&lt;br /&gt;
To prepare the Autopilot board to accept uploads over its serial port you must have pin P0.14 LOW for at least 3ms while it is powering up or resetting.  While it is still powered up it is ready to accept the Bootloader firmware code upload over the serial connection.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Point_To_Connect_Ground.jpg|Point to_connect ground&lt;br /&gt;
Image:Closeup_Ground_Point.jpg|Closeup ground point&lt;br /&gt;
Image:Grounding_For_Bootloader_Closeup.jpg|closeup grounding point detail for Bootloader uploading&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next step while your board is all connected and powered up is to type the commands for uploading the bootloader firmware.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:TWOG_Bootloader_Overview.jpg|TWOG Bootloader overview&lt;br /&gt;
Image:Powerup_Now.jpg|Everything ready to be powered-up now&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''In Linux'''&lt;br /&gt;
&lt;br /&gt;
From your Paparazzi folder in Linux, type:&lt;br /&gt;
&lt;br /&gt;
 $ make upload_bl PROC=GENERIC&lt;br /&gt;
&lt;br /&gt;
This will begin compiling your USB Bootloader and then attempt to transfer it to the Autopilot board. This will also assume you are using a USB -&amp;gt; Serial adapter for the connection.  It uses /dev/ttyUSB0 by default. If your adapter is mapped to a different tty, you will need to modify the Makefile accordingly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Wait_For_Bootloader_To_Upload.jpg|thumb|left|Wait for the bootloader to upload]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If everything is connected and setup correctly, after a while you will see the following messages &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Shell_bootloader_upload_success.jpg|thumb|left|Shell Bootloader upload success]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''In Windows'''&lt;br /&gt;
&lt;br /&gt;
If for some reason you need to program your autopilot board USB Bootloader in MS Windows you have to download the [http://www.openuas.org/site/LPC2000_Flash_ISP_Utility_v2.2.3.zip LPC2000 Flash Utility V2.2.3] or later. You will then prepare the autopilot board and start it in ISP bootloader state as described previously. This small utility will ony help uploading the Bootloder firmware. You will need to copy your compiled '''bl.hex''' file from Linux to your Windows OS. This file will be then uploaded.&lt;br /&gt;
&lt;br /&gt;
==Additional information==&lt;br /&gt;
In depth info about the bootloader can be found on the [http://paparazzi.enac.fr/wiki/Reference/bootloader Bootloader reference] page. Also the [http://paparazzi.enac.fr/wiki/DevGuide/USBDownload page here] explains some more.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jakestew</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Tuning&amp;diff=11542</id>
		<title>Tuning</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Tuning&amp;diff=11542"/>
		<updated>2012-02-16T06:18:11Z</updated>

		<summary type="html">&lt;p&gt;Jakestew: spelling correction you -&amp;gt; your&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides some tips and guidelines for tuning a new aircraft. Be sure to familiarize yourself with the theory of [[Theory_of_Operation#PID|PID Controllers]] before you begin. Use of the [[RTPlotter|real time plotter]] may help to visualize and understand the behavior of the control loops. Review [http://paparazzi.enac.fr/wiki_images/Users_manual.pdf User Manual] as well. Also reading [[http://www.av8n.com/how/ See How It Flies, by John S. Denker]] is very beneficial to get your airframe tuned well.&lt;br /&gt;
&lt;br /&gt;
== Sensors ==&lt;br /&gt;
&lt;br /&gt;
=== Neutrals ===&lt;br /&gt;
* Put the aircraft in a styrofoam container or completely seal the IR sensors with styrofoam or similar blocks and get a reading of the neutrals for each axis.  Also take the gyro neutrals at this time.  Update your airframe file, flash the AP and re-check the neutrals.&lt;br /&gt;
&lt;br /&gt;
Using the roll gyro as a worked example: Run up your GCS and ensure it &lt;br /&gt;
is communicating with your airframe. Make sure your airframe is roughly &lt;br /&gt;
level and that it cannot move. Now run the Messages Tool and the [[RTPlotter|real time plotter]] tool. The messages tool will have lots of flashing lights &lt;br /&gt;
indicating when it receives various telemetry packets.  In the Messages &lt;br /&gt;
tool, Click on Gyro Rates and you should see a list of variables.  Click &lt;br /&gt;
on Roll_ADC and drag and drop in onto the main window of the Real Time plotter.  Now give it a while to build a stable graph.&lt;br /&gt;
&lt;br /&gt;
Once things have been running this way for a while, in the Real Time &lt;br /&gt;
Plotter, click on Curves in the menu and select the &lt;br /&gt;
1:telemetry:GYRO_RATES:Roll_ADC entry.  As you select it, you should see &lt;br /&gt;
the average and standard deviation values.  We need the average value.  &lt;br /&gt;
Jot down the number you have.  I have -24.536.&lt;br /&gt;
&lt;br /&gt;
Now go edit your airframe file and look for the ADC_ROLL_NEUTRAL value. &lt;br /&gt;
In my airframe file the value is 520.  As my average value from the Plotter is a &lt;br /&gt;
negative figure, it indicates that the roll Neutral is too high, subtract the average value from the present setting. So I edited my airframe file to be 495.464 (520-24.536).&lt;br /&gt;
&lt;br /&gt;
Recompile and reflash (Don't worry about restarting the GCS, The &lt;br /&gt;
messages program or the other running processes - they will catch up just &lt;br /&gt;
fine after flashing).  Once the Board is back up and the plotter continues, reset it from the menu to get rid of the average. Watch it for a while and check that the line and acculmulated average is on or around 0. You are done.  Use the same process for the IR sensors!&lt;br /&gt;
&lt;br /&gt;
=== Directions ===&lt;br /&gt;
* Reverse any servos and make sure no mechanical binding occurs at the limits of travel in Manual mode.&lt;br /&gt;
* Take the plane outside and engage AUTO1.  Bank and pitch the plane and verify that the controls respond in the correct direction AND that the PFD in the notebook responds correctly.  Note that your body will have a tremendous impact on the measured angles if using IR sensors. If using an IMU, there is no need to be outside. See note.&lt;br /&gt;
* Verify that AUTO1 stick movements respond in the correct direction - important! See note.&lt;br /&gt;
* Move the plane rapidly to ensure the gyro response resists motion - increase the gain if needed for better visualization.&lt;br /&gt;
NOTE: If the PFD responds in the wrong direction to the motion, you should adjust parameters in the INFRARED or IMU parts of the airframe file. If the control surfaces respond in the wrong direction to counteract motion (stabilize the aircraft, bring it back to neutral), reverse the servos in the airframe file. If the manual input from R/C causes the control surfaces to respond in the wrong direction (want them to force motion, not counteract motion), then you must reverse the channel on the R/C transmitter. Be sure to recheck surface neutrals and endpoints after doing such modifications. Also double check the gain signs, make sure none are positive that should be negative.&lt;br /&gt;
&lt;br /&gt;
== R/C, Modem, and GPS ==&lt;br /&gt;
* Make sure the GPS signal is strong (outdoors) - you should have a 3-D fix in less than 1 minute and at least some satellite signals above 40dB. The plane should not drift on the map by more than 10 meters.&lt;br /&gt;
* Perform a range test of R/C and modem signals.&lt;br /&gt;
* Ensure that two way communications are in place. Check that the motor starts up when launch is commanded or move a waypoint and check that it's updated in the autopilot.&lt;br /&gt;
&lt;br /&gt;
== Trim ==&lt;br /&gt;
&amp;lt;b&amp;gt;Important: You must never keep any trim, mixers, or rates in your R/C transmitter.&amp;lt;/b&amp;gt;  R/C trim can be applied in flight but must be corrected and removed on the ground before attempting autonomous flight.  Exponential can be useful and will not adversely affect AUTO1 flight but if &amp;quot;low rates&amp;quot; are needed they should be programmed on the same transmitter switch with AUTO1 so that you always have full travel in AUTO1.&lt;br /&gt;
* Fly the plane at what you feel is a suitable &amp;quot;cruise&amp;quot; throttle setting and set the trims.  Note that setting in the GCS and try to return to that exact setting in subsequent tests.  Enter that throttle setting in your airframe file.&lt;br /&gt;
* Check maximum pitch and roll response and adjust the mixer parameters or mechanical linkages after landing.&lt;br /&gt;
* Land and adjust the linkages.  If necessary, the PPM values can be read from the GCS and servo neutrals adjusted electronically, but manual adjustment will produce far better results.&lt;br /&gt;
* Fly again to verify trim and control response.  If satisfactory, check for any significant throttle-dependent roll.  Again, this is best to correct mechanically but can be addressed with the ''AILERON_OF_THROTTLE'' mixer in the autopilot.  Check also for any odd behavior at full throttle.&lt;br /&gt;
* Make sure that GPS and modem data is reliable during these test flights. Note particularly any tendency for the aircraft to appear to fly sideways on the map - this is an indication of weak GPS signals.&lt;br /&gt;
&lt;br /&gt;
== Auto 1 ==&lt;br /&gt;
* Engage Auto1 and ''immediately'' make sure you can turn both left and right!&lt;br /&gt;
* Fly at your &amp;quot;cruise&amp;quot; throttle and adjust the ''ROLL_PGAIN'' until the plane doesn't quite oscillate&lt;br /&gt;
* Adjust the IR roll neutral as needed&lt;br /&gt;
* Verify adequate pitch response and adjust PITCH_PGAIN as needed&lt;br /&gt;
* Experiment with different throttle settings and tune P and D gains as needed&lt;br /&gt;
&lt;br /&gt;
If you are alone in the field while tuning, setting values via your RC transmitter may come in handy, see http://paparazzi.enac.fr/wiki/Telemetry#R.2FC_Transmitter_Data_Uplink&lt;br /&gt;
&lt;br /&gt;
== Auto 2 ==&lt;br /&gt;
* Engage Auto2 and you're done!&lt;br /&gt;
&lt;br /&gt;
==Alternate Tuning Procedure==&lt;br /&gt;
Danstah wrote up a tuning procedure on this website http://www.engr.usu.edu/wiki/index.php/OSAMtuning&lt;br /&gt;
&lt;br /&gt;
==Sample/Simple Altitude and Throttle Loop==&lt;br /&gt;
&lt;br /&gt;
The dash button changes the NOMINAL_CRUISE_THROTTLE to the MAX_CRUISE_THROTTLE while the loiter button changes it to MIN_CRUISE_THROTTLE. &lt;br /&gt;
&lt;br /&gt;
This makes it easy to suddenly make the UAV fly a bit slower or a bit faster. However, when chaging the throttle, you also need to change the elevator trim in order not to climb/descend too much. This it what AUTO_THROTTLE_LOITER_TRIM and AUTO_THROTTLE_DASH_TRIM are for. (I think the unit is MAX_PPRZ = 9600 = full deflection?) &lt;br /&gt;
&lt;br /&gt;
The auto-throttle loop is actually the most difficult loop to tune as it has both the speed and altitude that are correlated. Controlling both speed and altitude with high performance is very hard. It is way easier to control 1 entity (e.g. altitude) with higher performance and let the speed change a bit, or have an airspeed controller but then do the altitude slowly... &lt;br /&gt;
&lt;br /&gt;
Sample altitude controller:&lt;br /&gt;
---------------------&lt;br /&gt;
&lt;br /&gt;
Step1: outerloop: if altitude is not good -&amp;gt; compute a climb/descend rate. (including MAX_CLIMB)&lt;br /&gt;
&lt;br /&gt;
  climb_command = altitude_error x alt_pgain&lt;br /&gt;
&lt;br /&gt;
e.g. 10 m too low x 0.1 alt gain = climb_command at 1 m/s&lt;br /&gt;
e.g. 50 m too low x 0.1 alt gain = climb at 5 m/s &amp;gt; MAX_CLIMB(2) -&amp;gt; climb_command = 2m/s&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
&lt;br /&gt;
Step2: innerloop: [many many options here, but since you ask for simple I'll only give one robust and simple:]&lt;br /&gt;
&lt;br /&gt;
too low -&amp;gt; pitch up and extra throttle (if you only apply throttle, airspeed will increase and might even start to dive with full throttle if the nose is a bit heavy, if you only apply pitch airspeed will decrease and could lead to stall, with proper tuning you can get a pretty constant speed even while climbing and descending) &lt;br /&gt;
&lt;br /&gt;
  pitch_command = climb_command x pitch_of_vz&lt;br /&gt;
  throttle_command = nominal_cruise_trim_throttle + climb_command x throttle_climb_increment&lt;br /&gt;
&lt;br /&gt;
e.g. climb_command at 1 m/s x pitch_of_vz 0.15 = 0.15 radians pitch = 9 degrees pitch up&lt;br /&gt;
&lt;br /&gt;
e.g. climb_command at 1 m/s x throttle_climb_increment 0.25 with nominal_cruise_trim_throttle 0.5 = 75% throttle&lt;br /&gt;
&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
If you use AGRESSIVE_CLIMB then if the altitude error is larger than the chosen threshold a precomputed pitch and throttle will be applied. &lt;br /&gt;
&lt;br /&gt;
AUTO_PITCH is for constant throttle and control height with elevator only&lt;br /&gt;
&lt;br /&gt;
auto_throttle_p/i/d_gains are to regulate the climb rate more precisely&lt;br /&gt;
&lt;br /&gt;
==Other Misc things before flying==&lt;br /&gt;
It's very important to address the issue of low voltage cut-off before flying. There's a good chance that the LVC will kick in on the brushless ESC before the Paparazzi detects it. If this happens, the ESC cut's off throttle, and there's no way the autopilot knows this, the plane keeps loosing altitude, the autopilot tries to increase throttle, but the ESC does not respond, almost always leading to a mishap. To avoid this, either turn off the LVC on the ESC, OR, make sure the autopilot kills throttle first, by programming the CATASTROPHIC_BAT_LEVEL to something higher than the ESC LVC. For example, set CATASTROPHIC_BAT_LEVEL to 9.5V, and the ESC LVC at 9V. Don't ask how we know, it was a safe landing into a small tree :) No damage. BUT you cant get lucky always!&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jakestew</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Overview&amp;diff=11541</id>
		<title>Overview</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Overview&amp;diff=11541"/>
		<updated>2012-02-16T05:50:58Z</updated>

		<summary type="html">&lt;p&gt;Jakestew: Servos use PWM not PPM for signal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[image:Paparazzi_System_overview.jpg|right|Paparazzi System Overview]]&lt;br /&gt;
Paparazzi is a complete system of hardware and software for autonomous aircraft as well as complete ground station mission planning and monitoring software utilizing a bi-directional datalink for telemetry and control.&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
&lt;br /&gt;
The following figure shows the main agents of the system: one (or several) aircraft and the distributed ground architecture (usually distributed on a single computer):&lt;br /&gt;
&lt;br /&gt;
[[Image:Pprz_communication_agents.gif]]&lt;br /&gt;
&lt;br /&gt;
The UAV (in blue) is navigating autonomously and is monitored and controlled from the ground (in brown). The [[GCS|ground control station (GCS)]] provides a graphical user interface with telemetry data received by the ''link agent'' which manages the ground-based radio modem. The ''link agent'' distributes telemetry data across the network (a single computer, a local network or the internet) where it can be used locally or remotely by the:&lt;br /&gt;
* '''messages''' - a real-time display of all telemetry data&lt;br /&gt;
* '''server''' - an agent that logs, distributes, and preprocesses these messages for the [[GCS]].&lt;br /&gt;
All of these processes run simultaneously and each module is independently controled and configured from [[Paparazzi_Center]]. &lt;br /&gt;
&lt;br /&gt;
Your first experiments with the system should be with the simulator where everything runs on your local machine. The configuration is then slightly different:&lt;br /&gt;
&lt;br /&gt;
[[Image:comm_sitl.gif]]&lt;br /&gt;
&lt;br /&gt;
Here the aircarft and its radio link are replaced by the simulator. An optional ''gaia'' agent is also available to introduce some environmental parameters such as wind, infrared contrast, GPS quality, and time scale reference.&lt;br /&gt;
&lt;br /&gt;
== Aircraft ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[image:Paparazzi_Equiped_Aircraft.jpg|Paparazzi Equiped Aircraft]]&lt;br /&gt;
|&lt;br /&gt;
* '''A'''utopilot Control Board&lt;br /&gt;
* '''B'''attery&lt;br /&gt;
* '''D'''atalink Radio-Modem &amp;amp; Antenna&lt;br /&gt;
* '''G'''PS Receiver&lt;br /&gt;
* '''I'''R Sensor Board&lt;br /&gt;
* '''M'''otor &amp;amp; Controller&lt;br /&gt;
* '''R'''C Receiver &amp;amp; Antenna&lt;br /&gt;
* '''S'''ervos&lt;br /&gt;
* '''P'''ayload = Camera &amp;amp; Video Transmitter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== The Airframe ===&lt;br /&gt;
&lt;br /&gt;
The Paparazzi airborne system is highly configurable and can be used to autonomously operate almost any airframe. It is currently in use on airframes ranging from 30cm to 1.4m, and 180g to several kg. In the early days of the project, slow and stable airframes such as the venerable Twinstar and Microjet were favored, but today the system is employed in a wide variety of high performance aircrafts, many with little or no natural stability, and many designed specifically around the Paparazzi system.&lt;br /&gt;
&lt;br /&gt;
The [[Gallery|User's Gallery]] shows some of the many Paparazzi aircraft.&lt;br /&gt;
&lt;br /&gt;
=== Airborne Electronics ===&lt;br /&gt;
&lt;br /&gt;
===== Controller Board =====&lt;br /&gt;
&lt;br /&gt;
[[image:tiny_proto1_top_small.jpg|frame|Tiny Controller Board]]&lt;br /&gt;
Several controller boards have been designed to run the Paparazzi autopilot software, using either Atmel AVR or Philips ARM7 LPC micro-controllers. These boards include one or two micro-controllers and the required connectors to handle the servos, motor controllers, sensors, RC receiver, radio modem, and a variety of payloads.  All of the [http://cvs.savannah.nongnu.org/viewcvs/paparazzi3/hw/?root=paparazzi schematics and PCB files] are available under the GPL licence. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
More details on the controller boards are available on the [[Hardware|Hardware Pages]].&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sensors =====&lt;br /&gt;
&lt;br /&gt;
[[image:ir_sensor_bot_small.jpg|frame|2 Axis IR Sensor Board]]&lt;br /&gt;
Paparazzi autopilots can interface with virtually any type of sensor but the vast majority of applications rely on a set of 6 orthogonal infrared temperature sensors to estimate the orientation of the aircraft relative to the warm earth and cold sky.  The IR system provides a robust and absolute attitude estimate that is immune to vibration and disorienting launches, wind gusts, or stalls that may confuse inertial-based autopilots.  Paparazzi also uses conventional inertial systems on hovering aircraft such as quadrotors and helicopters with freely available [http://cvs.savannah.gnu.org/viewvc/paparazzi/paparazzi3/ software and hardware sources].  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; Fixed wing airborne hardware typically includes infrared sensors, GPS &amp;amp; occasionally a gyroscope for roll or pitch rate damping on more agile aircraft.&lt;br /&gt;
A standard GPS receiver from u-blox is used, either as a stand-alone unit for the [[Classix]] or [[Twog_v1|TWOG]] autopilots, or as a fully integrated package in the [[Tiny_v2|Tiny]] autopilot.&lt;br /&gt;
&lt;br /&gt;
More details on the sensors are available on the [[Sensors|Sensors page]].&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
===== Communications =====&lt;br /&gt;
&lt;br /&gt;
[[image:ac4868_transceiver.jpg|frame|Aerocomm AC4868 Radio-Modem]]&lt;br /&gt;
Airborne hardware also includes communications devices : Radio Modem (Datalink) &amp;amp; RC Receiver (Safety Link).&lt;br /&gt;
Any wireless device providing a serial link can be used for the telemetry and the telecontrol (Datalink). &lt;br /&gt;
&lt;br /&gt;
More details on communications hardware are available on the [[Modems|Modems page]].&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
===== Example Setup =====&lt;br /&gt;
&lt;br /&gt;
[[image:ppzsetup002.jpg|frame|Sample 2 servo setup]]&lt;br /&gt;
A typical configuration would include two servos (elevon setup), receiver, IR sensors, FTDI or RF Modem for serial communications either wired or wireless. ESC is not shown. NOTE: DO NOT CONNECT POWER WIRE FROM ESC TO TINY. Only connect Ground and Signal for the ESC to the Tiny.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
=== Airborne Software ===&lt;br /&gt;
&lt;br /&gt;
The Paparazzi autopilot provides the following features:&lt;br /&gt;
* RC receiver (PPM signal) decoding&lt;br /&gt;
* Servos and motor controller (PWM signal) control&lt;br /&gt;
* Manual control with the RC&lt;br /&gt;
* Control with augmented stability (named '''AUTO1''')&lt;br /&gt;
* Autonomous navigation (named '''AUTO2''') in 3D, including&lt;br /&gt;
** Waypoint navigation&lt;br /&gt;
** Segment and circle navigation&lt;br /&gt;
** Altitude hold, glide following&lt;br /&gt;
** High level flight plan language execution (sequence, loops, goto...)&lt;br /&gt;
* Telemetry to the ground station&lt;br /&gt;
* Telecontrol (datalink) from the ground station (navigation control, waypoint modifications, tuning)&lt;br /&gt;
&lt;br /&gt;
The autopilot code is written in C while all the configuration code is translated from XML files at compile time.&lt;br /&gt;
Code is segregated into two processes respectively handling the ''fly by wire'' (manual control) and the ''autopilot'' itself (stabilization and navigation). These processes are segregated on two-processor controllers such as the [[Classix|Classix]].&lt;br /&gt;
&lt;br /&gt;
== Ground Control Station (GCS) ==&lt;br /&gt;
&lt;br /&gt;
=== Ground Computer ===&lt;br /&gt;
&lt;br /&gt;
The software is developped to be run on a i386 architecture with the [http://www.debian.org Debian GNU/linux] operating system. However a Live CD including all the software is provided: it should be able to boot any standard laptop.&lt;br /&gt;
&lt;br /&gt;
=== Ground Software ===&lt;br /&gt;
&lt;br /&gt;
The software mainly provides&lt;br /&gt;
* compiling tools to produce the airborne code from the configuration;&lt;br /&gt;
* a GUI to control and interact with the UAV(s) during flight;&lt;br /&gt;
* a basic simulator to ease the development of flight plans.&lt;br /&gt;
&lt;br /&gt;
=== Datalink ===&lt;br /&gt;
&lt;br /&gt;
Paparazzi offers several possibilities to supervise the UAV flight from the ground. The default one uses a bidirectionnal wireless modem which supports both telemetry (downlink) and telecontrol (uplink). Thanks to this datalink, flight parameters are available in real time and full control of the navigation and tuning of one or several aircraft is possible from the ground station.&lt;br /&gt;
&lt;br /&gt;
=== Safety Link ===&lt;br /&gt;
&lt;br /&gt;
The airborne hardware and software support the connection to a standard (patched) radio-control receiver. While this link is not required for actual autonomous flights, it may help during the tuning of a new aircraft and is usually considered as an important safety control redundancy.&lt;br /&gt;
&lt;br /&gt;
== Payloads ==&lt;br /&gt;
&lt;br /&gt;
Paparazzi is designed to interface with a wide variety of payloads. The airborne board can control many servos for autonomous and/or manual [[Pan_Tilt_Camera|Pan/Tilt camera systems]] or other mechanical payloads, SPI, I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C, and GPIO connections are available to connect digital devices (i.e. lights or digital camera shutter), and analog inputs are available to interface with just about any sensor imaginable. The associated software is easily integrated into the open-source code. The [[Classix]] board can also be connected to a [http://www.gumstix.com Gumstix Computer] for highly sophisticated payload software applications.&lt;br /&gt;
&lt;br /&gt;
== Disclaimers ==&lt;br /&gt;
&lt;br /&gt;
It should be understood that smooth, reliable autonomous flight is a great feat and will require significant time and effort to achieve, even with a highly evolved open system like Paparazzi. The time required will vary based on experience, aircraft, and luck. From experience however, users can expect to spend a similar amount of time learning and configuring Paparazzi as they may with any of the commercially available systems.&lt;br /&gt;
&lt;br /&gt;
Linux itself can pose quite a challenge to install, configure, and learn. To help ease the transition for those not already running Linux, the LiveCD option is available to help get you started. The LiveCD allows the user to save all configuration files as well as any user-modified source code on a pen drive or as a compressed file on your hard drive without affecting your existing OS.  We strongly urge new users to [[Contact|Contact]] someone from the Paparazzi team before beginning any hardware investment as we can help you get the most out of the system.&lt;br /&gt;
&lt;br /&gt;
[[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jakestew</name></author>
	</entry>
</feed>