<?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=Usaaib</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=Usaaib"/>
	<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/wiki/Special:Contributions/Usaaib"/>
	<updated>2026-04-26T13:19:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Contributing&amp;diff=18732</id>
		<title>Contributing</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Contributing&amp;diff=18732"/>
		<updated>2014-06-10T11:35:28Z</updated>

		<summary type="html">&lt;p&gt;Usaaib: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to contribute ==&lt;br /&gt;
&lt;br /&gt;
It would be fantastic if you add you share to enhance the Paparazzi project. Help is always very welcome for aspects of the project. May this be documentation, wiki, maintenance, electronics or code contributions and fixes. There are lots of ways to contribute to Paparazzi and get involved. &lt;br /&gt;
&lt;br /&gt;
This page will give you a headstart to be able to contribute.&lt;br /&gt;
&lt;br /&gt;
=== Wiki ===&lt;br /&gt;
&lt;br /&gt;
Just create an account and you can start adding information, cleaning it up or just fixing some typo you just noticed :-)&lt;br /&gt;
&lt;br /&gt;
Some information and links on how to edit the wiki can be found at [[Help:Editing]].&lt;br /&gt;
&lt;br /&gt;
Please be aware of past edits and page histories. Try not to remove this; if you are moving/renaming a page, use the '''move''' tab at the top of a page. This ensures the revision history is moved with the page.&lt;br /&gt;
&lt;br /&gt;
=== Software development ===&lt;br /&gt;
&lt;br /&gt;
[[File:AGoodCombinationSTM32ProgressnDebugging.jpg|300px|thumb|Left|Learning Tools]]&lt;br /&gt;
&lt;br /&gt;
We use the distributed version control system [http://git-scm.com/ git]. The [http://github.com/paparazzi/paparazzi/ Papaprazzi master repository is hosted on Github].&lt;br /&gt;
&lt;br /&gt;
Also see the [[Git|Git wiki page]] for more details about setting up Git and cloning the source-code and data repository.&lt;br /&gt;
&lt;br /&gt;
Please also have a look at the [http://docs.paparazziuav.org/latest/styleguide.html Coding Style Guide].&lt;br /&gt;
&lt;br /&gt;
Here is the short version if you already know git:&lt;br /&gt;
# Create an account on [http://github.com/ github].&lt;br /&gt;
# Fork the [http://github.com/paparazzi/paparazzi/ papaprazzi repo] on github. (After logging in press the '''fork''' button).&lt;br /&gt;
# If you want to clone with SSH: '''git clone git@github.com:&amp;lt;yourname&amp;gt;/paparazzi.git'''&amp;lt;br/&amp;gt;Or with HTTPS: '''git clone &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;yourname&amp;gt;/paparazzi.git&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
# '''git remote add upstream &amp;lt;nowiki&amp;gt;https://github.com/paparazzi/paparazzi.git&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
# '''git fetch upstream'''&lt;br /&gt;
# checkout a new branch based on the development branch (master):&amp;lt;br/&amp;gt;'''git checkout -b my_new_feature upstream/master'''&lt;br /&gt;
# fix/code and commit in logical units&lt;br /&gt;
# push your feature/bugfix branch&lt;br /&gt;
# Send us a [http://help.github.com/pull-requests/ pull request] on github. (Or send patches to the mailing list).&lt;br /&gt;
&lt;br /&gt;
=== Defects and Features ===&lt;br /&gt;
To report Paparazzi defect, various issues and to submit a feature request use the simple [https://github.com/paparazzi/paparazzi/issues issue tracker on github].&lt;br /&gt;
&lt;br /&gt;
=== Continuous Integration Builds ===&lt;br /&gt;
There is a [http://buildbot.paparazziuav.org/waterfall build server] running quite some [[Builds/Tests|Continuous Integration tests]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer_Documentation]]&lt;/div&gt;</summary>
		<author><name>Usaaib</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/FromScratch&amp;diff=16304</id>
		<title>Installation/FromScratch</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/FromScratch&amp;diff=16304"/>
		<updated>2013-11-18T06:37:11Z</updated>

		<summary type="html">&lt;p&gt;Usaaib: /* Ivy-OCAML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Installation&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
'''Users of recent Debian/Ubuntu distributions are advised to use the binary packages as described in [[Installation/Linux]].'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;'''WARNING! This page is not quite up-to-date. Only use if you are proficient in working with Linux!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Intro ==&lt;br /&gt;
&lt;br /&gt;
As with all Wiki pages, also this page is a work in progress. try to be a big help to the Paparazzi project and improve this page whenever you can. If you have a distribution different from Ubuntu which doesn't satisfy any other dependency and have instructions about compiling it, packaging it, feel free to add any reference on how to do that on this wikipage.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
The goal of this page is to clarify about which version of each piece of software has to be compiled, where to find that software, patches needed to make it compile on Linux. In our case 64bit Linux. This includes compiling all paparazzi-dev, paparazzi-arm-multilib software on your machine, running an Ubuntu Lucid Lynx or later Linux distribution or maybe even FreeBSD, or OSX.&lt;br /&gt;
&lt;br /&gt;
== The shortcut ==&lt;br /&gt;
&lt;br /&gt;
Maybe you are no so interested in the details at this moment and just want to quickly install. That's fine, for that we are working on a script and you only need to run one line to get everything installed. For this to work out you do need a working internet connection, but since you can read this text, that will probably not pose a problem.&lt;br /&gt;
&lt;br /&gt;
 $ cd ~ &amp;amp;&amp;amp; wget http://openuas.org/pub/paparazzifromscratch.sh (still not ready and a work in progress)&lt;br /&gt;
&lt;br /&gt;
If you used the line above, and it all worked out you can stop reading now since everything is installed and compiled, ready for you to use.&lt;br /&gt;
&lt;br /&gt;
== Paparazzi-dev packages ==&lt;br /&gt;
&lt;br /&gt;
For Ubuntu users, you can install the following packages from standard repository. You can just copy the line(s) and paste into your terminal. But do not copy the $ sign, this symbol is just added on this page to show that it is to be pasted at a normal terminal prompt.&lt;br /&gt;
&lt;br /&gt;
=== Whole lot in one ===&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install ocaml libcamlimages-ocaml liblablgtk2-ocaml-dev liblablgtk2-gl-ocaml-dev \&lt;br /&gt;
                       liblablgtk2-gnome-ocaml-dev libxml-light-ocaml-dev libocamlnet-ocaml-dev libpcre-ocaml \&lt;br /&gt;
                       libpcre-ocaml-dev libgnomecanvas2-0 libgnomecanvas2-dev libglade2-0 libglade2-dev make build-essential \&lt;br /&gt;
                       git-core gnuplot boa m4 libtool libftdi-dev libmpfr-dev tcl8.5-dev xutils-dev tkdiff&lt;br /&gt;
&lt;br /&gt;
=== Ocaml and libraries ===&lt;br /&gt;
&lt;br /&gt;
Ocaml, short for Objective Caml is the most popular variant of the Caml language. The Paparazzi Ground Control Station (GCS) and some of it's tools are crafted in this language.&lt;br /&gt;
&lt;br /&gt;
* ocaml, ocaml-camlimages-devel, ocaml-lablgtk2-devel, ocaml-xml-light-devel, ocamlnet-ocaml-devel&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install ocaml libcamlimages-ocaml liblablgtk2-ocaml-dev liblablgtk2-gl-ocaml-dev \&lt;br /&gt;
                        liblablgtk2-gnome-ocaml-dev libxml-light-ocaml-dev libocamlnet-ocaml-dev&lt;br /&gt;
&lt;br /&gt;
=== Gnome canvas Library ===&lt;br /&gt;
&lt;br /&gt;
The GnomeCanvas is an engine for structured graphics that offers a rich imaging model, high performance rendering, and a powerful, high level API. This widget can be used for flexible display of graphics and for creating interactive user interface elements.&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libgnomecanvas2-0 libgnomecanvas2-dev&lt;br /&gt;
&lt;br /&gt;
=== USB Library ===&lt;br /&gt;
&lt;br /&gt;
The libusb project aims to create a library for use by user level applications to access USB devices regardless of OS. http://www.libusb.org&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libusb-dev&lt;br /&gt;
&lt;br /&gt;
=== Ocaml PCRE ===&lt;br /&gt;
&lt;br /&gt;
This OCaml-library interfaces the PCRE (Perl-compatibility regular expressions) C library. it can be used for matching regular expressions which are written in Perl style.&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libpcre-ocaml libpcre-ocaml-dev&lt;br /&gt;
&lt;br /&gt;
=== Glade Library ===&lt;br /&gt;
&lt;br /&gt;
Libglade is a library that performs a similar job to the C source output routines in the GLADE user interface builder. Whereas GLADE's output routines create C source code that must be compiled, libglade builds the interface from an XML file (GLADE's save format) at runtime. This can allow modifying the user interface without recompiling.&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libglade2-0 libglade2-dev&lt;br /&gt;
&lt;br /&gt;
=== Tcl/Tk ===&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install tcl8.5-dev&lt;br /&gt;
&lt;br /&gt;
Also the some utils are required to compile and  install Ivy.&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install xutils-dev&lt;br /&gt;
&lt;br /&gt;
=== Make ===&lt;br /&gt;
&lt;br /&gt;
GNU Make is an utility which controls the generation of executables and other target files of a program from the program's source files. &lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install make&lt;br /&gt;
&lt;br /&gt;
=== Build essential ===&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install build-essential&lt;br /&gt;
&lt;br /&gt;
=== Libtool ===&lt;br /&gt;
&lt;br /&gt;
GNU libtool is a generic library support script. Libtool hides the complexity of using shared libraries behind a consistent, portable interface. Creating the files for Paparazzi software building becomes less cumbersome by using this tool.&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libtool&lt;br /&gt;
&lt;br /&gt;
=== Git Client ===&lt;br /&gt;
&lt;br /&gt;
Git is a version control system. Version control systems allow many individuals to collaborate on the Paparazzi source code. This is needed to retrieve the latest sourcecode from various packages and Paparazzi sourcecode itself.&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git-core&lt;br /&gt;
&lt;br /&gt;
=== GNU Plot ===&lt;br /&gt;
&lt;br /&gt;
A command-line driven interactive plotting program. Unknow if it is used&lt;br /&gt;
 &lt;br /&gt;
 $ sudo apt-get install gnuplot&lt;br /&gt;
&lt;br /&gt;
=== TKDiff ===&lt;br /&gt;
&lt;br /&gt;
TKDiff is a graphical front end to the diff program. It provides a side-by-side view of the differences between two files. It is used by the Paparazzi Center when configuration changes are not yet saved and the option comes along where one either can keep or view changes made in aircraft- and other configuration files.&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install tkdiff&lt;br /&gt;
&lt;br /&gt;
=== FTDI library ===&lt;br /&gt;
&lt;br /&gt;
libftdi is a library that talks to FTDI's 232 type chips, including the popular bitbang mode, using libusb. A library to be able to use with a debugging Autopilot hardware boards.&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libftdi-dev &lt;br /&gt;
&lt;br /&gt;
=== MPFR library ===&lt;br /&gt;
&lt;br /&gt;
The MPFR library is a C library for multiple-precision floating-point computations with correct rounding. MPFR is based on the GMP multiple-precision library. The main goal of MPFR is to provide a library for multiple-precision floating-point computation which is both efficient and has a well-defined semantics.&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libmpfr-dev&lt;br /&gt;
&lt;br /&gt;
=== ImageMagick ===&lt;br /&gt;
&lt;br /&gt;
ImageMagick is a software suite to create, edit, and compose bitmap images. It can read, convert and write images in a variety of formats. Use ImageMagick to translate, flip, mirror, rotate, scale, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves. Being able to modify image based map pictures is a feature that may come in handy one time.&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install imagemagick&lt;br /&gt;
&lt;br /&gt;
=== Optional on an older OS ===&lt;br /&gt;
&lt;br /&gt;
If you have an older OS distribution it never hurts to install the following...&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libx11-6 libx11-dev texinfo libncurses5 libncursesw5 libncursesw5-dev zlibc&lt;br /&gt;
&lt;br /&gt;
== Installing the Cross compiler toolchain ==&lt;br /&gt;
&lt;br /&gt;
The [https://launchpad.net/gcc-arm-embedded/ gcc-arm-embedded toolchain] is recommended, this also supports the STM32F4 with FPU (hardware floating point).&amp;lt;/br&amp;gt;&lt;br /&gt;
You can just download the tarball, unpack it and add it to your PATH:&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget https://launchpad.net/gcc-arm-embedded/4.7/4.7-2013-q3-update/+download/gcc-arm-none-eabi-4_7-2013q3-20130916-linux.tar.bz2&lt;br /&gt;
 tar -vjxf gcc-arm-none-eabi-4_7-2013q3-20130916-linux.tar.bz2&lt;br /&gt;
 exportline=&amp;quot;export PATH=$HOME/gcc-arm-none-eabi-4_7-2013q3/bin:\$PATH&amp;quot;&lt;br /&gt;
 if grep -Fxq &amp;quot;$exportline&amp;quot; ~/.profile; then echo nothing to do ; else echo $exportline &amp;gt;&amp;gt; ~/.profile; fi&lt;br /&gt;
 . ~/.profile&lt;br /&gt;
&lt;br /&gt;
The file .profile will be sourced in every bash after logging out and in again. Until then,&lt;br /&gt;
 . ~/.profile&lt;br /&gt;
can be used for every bash individually.&lt;br /&gt;
&lt;br /&gt;
== Rest of code needed ==&lt;br /&gt;
&lt;br /&gt;
To install the rest we make a special directory &amp;quot;develop&amp;quot;. You can give it another name ofcourse.&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/develop&lt;br /&gt;
&lt;br /&gt;
== LPC21ISP ==&lt;br /&gt;
&lt;br /&gt;
To get the software onto the main autopilot board a special tool is needed. We will use the great open-source LPC21ISP application. LPC21ISP is an in-circuit programming (ISP) tool for the microcontroller used on the Paparazzi autopilot boards. The lpc21isp project is hosted on sourceforge and one can find the source packages and information at http://sourceforge.net/projects/lpc21isp/ &lt;br /&gt;
&lt;br /&gt;
Get the SVN version via&lt;br /&gt;
 &lt;br /&gt;
 $ mkdir -p ~/develop/lpc21isp&lt;br /&gt;
 $ cd ~/develop/lpc21isp&lt;br /&gt;
 $ svn co https://lpc21isp.svn.sourceforge.net/svnroot/lpc21isp lpc21&lt;br /&gt;
&lt;br /&gt;
To compile go into the source directory and then do&lt;br /&gt;
&lt;br /&gt;
 $ cd lpc21&lt;br /&gt;
 $ make -f Makefile clean all&lt;br /&gt;
&lt;br /&gt;
To install&lt;br /&gt;
&lt;br /&gt;
 $ sudo cp lpc21isp /usr/bin/&lt;br /&gt;
&lt;br /&gt;
==  IVY ==&lt;br /&gt;
&lt;br /&gt;
IVY is a simple protocol and a set of open-source libraries and programs that allows applications to broadcast information through text messages, with a subscription mechanism based on regular expressions. The project can be found at: http://www.eei.cena.fr/products/ivy/  &lt;br /&gt;
&lt;br /&gt;
In the paparazzi project, Ivy is used to send telemetry data to where ever you want.&lt;br /&gt;
&lt;br /&gt;
NOTE: Do not confuse this IVY with the Apache Ivy project. &lt;br /&gt;
&lt;br /&gt;
=== Ivy-python ===&lt;br /&gt;
&lt;br /&gt;
The ivy-python package makes it possible to use the IVY libraries from within the Python programming language. The ivy-python package is architecture independent, so it can be downloaded from the Ubuntu or Debian paparazzi repository. However since this is the from scratch page we will download it from the official source repository via &lt;br /&gt;
 &lt;br /&gt;
 $ mkdir -p ~/develop/ivy-python/&lt;br /&gt;
 $ cd ~/develop/ivy-python/&lt;br /&gt;
 $ svn co https://svn.tls.cena.fr/svn/ivy/ivy-python/trunk&lt;br /&gt;
&lt;br /&gt;
Now we can build and install&lt;br /&gt;
/!\ Only works with Python 2 /!\&lt;br /&gt;
&lt;br /&gt;
 $ cd ~/develop/ivy-python/trunk&lt;br /&gt;
 $ sudo ./setup.py install&lt;br /&gt;
&lt;br /&gt;
=== Ivy-c ===&lt;br /&gt;
&lt;br /&gt;
To be able to use IVY-c, the libraries need to be installed. Source packages of ivy-c can be downloaded via:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/develop/ivy-c&lt;br /&gt;
 $ cd ~/develop/ivy-c&lt;br /&gt;
 $ svn co https://svn.tls.cena.fr/svn/ivy/ivy-c/trunk&lt;br /&gt;
&lt;br /&gt;
To compile&lt;br /&gt;
&lt;br /&gt;
 $ cd ~/develop/ivy-c/trunk/src&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
It is possible you get errors of the test module when compiling, just ignore the messages, it is not important for the Paparazzi project. Contact the IVY team to help them also to resolve also the testing makefile issue.&lt;br /&gt;
&lt;br /&gt;
Now install the compiled libraries&lt;br /&gt;
&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
If you have a 64bit system your ivy libs were probably installed to /usr/local/lib64 and you have to make symbolic links so that they will be found:&lt;br /&gt;
 $ sudo ln -s /usr/local/lib64/libivy.so /usr/local/lib64/libivy.so.3 /usr/lib&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
 $ sudo ln -s /usr/local/lib64/libivy.so /usr/local/lib64/libivy.so.3 /usr/local/lib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you get an error relating to ivytestready.c, make the following changes:&lt;br /&gt;
 $ mkdir ~/develop/ivy-c/trunk/tools/Ivy&lt;br /&gt;
 $ cd ~/develop/ivy-c/trunk/tools/Ivy&lt;br /&gt;
 $ cp ../../src/ivy.h .&lt;br /&gt;
 $ cp ../../src/ivyloop.h .&lt;br /&gt;
 $ cp ../../src/ivysocket.h .&lt;br /&gt;
 $ cp ../../src/timer.h .&lt;br /&gt;
 $ cd ~/develop/ivy-c/trunk/src&lt;br /&gt;
 $ make&lt;br /&gt;
This copies files from the src directory to the Ivy folder in tools which did not appear after running svn above.&lt;br /&gt;
&lt;br /&gt;
=== Ivy-OCAML ===&lt;br /&gt;
&lt;br /&gt;
The Ivy-ocaml is a Library that make it possible to use Ivy via the Ocaml language.&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/develop/ivy-ocaml&lt;br /&gt;
 $ cd ~/develop/ivy-ocaml/&lt;br /&gt;
 $ svn co https://svn.tls.cena.fr/svn/ivy/ivy-ocaml/trunk&lt;br /&gt;
&lt;br /&gt;
Now we need to compile the source via&lt;br /&gt;
&lt;br /&gt;
 $ cd ~/develop/ivy-ocaml/trunk&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: If the above SVN repository does not work due to API incompatibilities get the ivy-ocaml source via&lt;br /&gt;
&lt;br /&gt;
 $ wget http://paparazzi.enac.fr/ubuntu/dists/natty/main/binary-i386/ivy-ocaml_1.1-12.tar.gz&lt;br /&gt;
&lt;br /&gt;
If you are running Ubuntu use the wget method listed above. Then run&lt;br /&gt;
&lt;br /&gt;
 $ tar -zxvf ivy-ocaml_1.1-12.tar.gz&lt;br /&gt;
 $ cd ivy&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
== Paparazzi Main sourcecode ==&lt;br /&gt;
See the main [[installation]] page&lt;br /&gt;
&lt;br /&gt;
TIP: &lt;br /&gt;
If you get the File &amp;quot;pprz.mli&amp;quot;, line 149, characters 78-89: Error: Unbound type constructor Ivy.binding&lt;br /&gt;
...this happens when IVY libraries are not yet installed. How to do this, read the part on installing IVY on this page&lt;br /&gt;
&lt;br /&gt;
== The depriciated -mapcs-32 option ==&lt;br /&gt;
&lt;br /&gt;
The option &amp;quot;-mapcs-32&amp;quot; is only available with very old tool chain versions e.g. GCC-3.3.x. More recent tool chains will either require &amp;quot;-mabi=apcs-gnu&amp;quot; (non-EABI-compliant) or &amp;quot;-mabi=aapcs-linux&amp;quot; (EABI-compliant). To have an overview of all flags go here&lt;br /&gt;
&lt;br /&gt;
http://ecos.sourceware.org/docs-1.3.1/ref/gnupro-ref/arm/ARM_COMBO_ch01.html&lt;br /&gt;
&lt;br /&gt;
By changing -mapcs-32 with -Wa,-mapcs-32 compilation will work with more recent compilers and we have backward compatibility with the old flag for older compilers. The option -Wa,-mapcs-32 is doing the following: ''-Wa,option'' : Pass option as an option to the assembler. If option contains commas, it is split into multiple options at the commas.&lt;br /&gt;
&lt;br /&gt;
The -mapcs-32 option generates code for a processor running with a 32-bit program counter and conforming to the function calling standards for the APCS 32-bit option. If interested in depth what APCS is read the following: http://www.openuas.org/site/APCS.txt&lt;br /&gt;
&lt;br /&gt;
The gcc flag -mapcs-32 was deprecated since gcc-3.4.0 and finally removed in gcc-4.0.0 which unconditionally generates 32bit ARM code. You should not need to pass this flag to the assembler either but it might not hurt for backwards compatibility with older compilers, so it's best to leave it in with the -Wa, option metho&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
&lt;br /&gt;
https://github.com/esden/summon-arm-toolchain&lt;br /&gt;
&lt;br /&gt;
https://github.com/paparazzi/paparazzi-portability-support&lt;br /&gt;
&lt;br /&gt;
http://svn.savannah.gnu.org/svn/paparazzi/paparazzi3/trunk/conf/Makefile.stm32&lt;br /&gt;
&lt;br /&gt;
http://wiki.ubuntuusers.de/GNU_arm-toolchain&lt;br /&gt;
&lt;br /&gt;
http://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/ARM-Options.html#ARM-Options&lt;br /&gt;
&lt;br /&gt;
http://mcuprogramming.com/forum/arm/gnu-arm-toolchain-installer/&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/hobbycode/source/browse/trunk/gnu-arm-installer&lt;br /&gt;
&lt;br /&gt;
http://www.ethernut.de/en/documents/cross-toolchain-osx.html&lt;br /&gt;
&lt;br /&gt;
http://paparazzi.enac.fr/w/index.php?title=User:Roirodriguez&lt;br /&gt;
&lt;br /&gt;
http://www.hermann-uwe.de/blog/building-an-arm-cross-toolchain-with-binutils-gcc-newlib-and-gdb-from-source&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:Developer_Documentation]] [[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Usaaib</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Overview&amp;diff=16255</id>
		<title>Overview</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Overview&amp;diff=16255"/>
		<updated>2013-11-06T10:06:18Z</updated>

		<summary type="html">&lt;p&gt;Usaaib: &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 open source hardware and software for Unmanned Aircraft Systems (UAS), including both the airborne autopilot 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;
&lt;br /&gt;
== Aircraft ==&lt;br /&gt;
&lt;br /&gt;
Paparazzi was originally designed for use with fixed-wing aircraft, but has since been expanded to include rotorcraft and work is underway to properly support hybrid aircraft. The hardware required for each type of airframe is essentially the same, and software uses many of the same elements with some parts interchanged. For example, fixed-wing stabilization control loop requirements are different than rotorcraft, while a datalink driver is essentially identical.&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 20cm to 4.3m, and 100g to 25kg. 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 Paparazzi software suite by default supports traditional fixed-wing and multicopter airframes. The customizability of the software and support for a variety of hardware results in a flexible system capable of controlling many airframe configurations. In addition, hybrid aircraft development is underway and with some effort, additional systems such as traditional helicopters, gliders, marine and ground vehicles could be added (though are currently not supported by default).&lt;br /&gt;
&lt;br /&gt;
The key components in a Paparazzi UAV are:&lt;br /&gt;
* Main [[Autopilots|Autopilot]] Board&lt;br /&gt;
* [[Sensors]], including:&lt;br /&gt;
** Attitude Sensors&lt;br /&gt;
*** [[IMU]], or&lt;br /&gt;
*** [[IR]] sensors&lt;br /&gt;
** [[GPS]] Receiver&lt;br /&gt;
** [[Sensors/Airspeed|Pressure]] sensors&lt;br /&gt;
** Others: [[Sensors/Current|current]], sonar, etc.&lt;br /&gt;
* [[Modems|Datalink Radio Modem]]&lt;br /&gt;
* [[RC_Receivers_and_Radios|RC Receiver]] (safety link)&lt;br /&gt;
* Actuators (servos)&lt;br /&gt;
* Propulsion System (electric motor(s)/speed control(s) or IC engine(s))&lt;br /&gt;
* Batteries&lt;br /&gt;
* Payload (example: camera and video transmitter)&lt;br /&gt;
&lt;br /&gt;
In general, some components can be omitted or additional ones added, depending on the system requirements. For example, if no ground station is used (besides an RC transmitter), the datalink radio is not required.&lt;br /&gt;
&lt;br /&gt;
An example overview diagram of a fixed-wing system layout is presented. The classic MicroJet is illustrated here. Different configurations are certainly possible!&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[image:Paparazzi_Equiped_Aircraft.jpg|Paparazzi Equipped Fixed-wing 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 (if no IMU)&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 (Example: Camera &amp;amp; Video Transmitter)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The [[Gallery|User's Gallery]] and [[Booz/UserList|Booz User List]] show some of the many Paparazzi aircraft.&lt;br /&gt;
&lt;br /&gt;
=== Airborne Electronics ===&lt;br /&gt;
&lt;br /&gt;
==== [[Autopilots|Controller Board]] ====&lt;br /&gt;
&lt;br /&gt;
Over the years, a large number of autopilot main boards have been designed and tested for use as part of the Paparazzi system. Historically, Atmel AVR MCUs were used, though this transitioned to Philips/NXP ARM7 LPC21xx microcontrollers. More recently, support for the STMicroelectronics STM32Fxxx series of microcontrollers has been introduced. These boards include one or two microcontrollers and the required connectors to handle the servos, motor controllers, sensors, RC receiver, radio modem, and a variety of payloads.&lt;br /&gt;
&lt;br /&gt;
All of the hardware design files are available under the GPL and/or CC-BY-SA licences in the [https://github.com/paparazzi/paparazzi-hardware hardware file repository].&lt;br /&gt;
&lt;br /&gt;
Each control board was designed to meet some specific application. As such, most boards (even old designs) are still actively used. The software side is maintained to support all of the different hardware (exception being obsolete AVR-based boards). Some boards have onboard sensors for tighter integration while others separate all sensors from the main board to help with challenges mounting equipment and overcoming EMI, RFI and/or mechanical vibration issues.&lt;br /&gt;
&lt;br /&gt;
Work has also been completed in integrating Linux-based single board computers such as the Gumstix product line. These devices provide the computing power required for very advanced aircraft control schemes or payloads.&lt;br /&gt;
&lt;br /&gt;
More details on the controller boards are available on the [[Autopilots]] page.&lt;br /&gt;
&lt;br /&gt;
==== [[Sensors]] ====&lt;br /&gt;
&lt;br /&gt;
Paparazzi autopilots can interface with virtually any type of sensor. Many are supported by default, and adding support for new sensors is relatively straightforward given the software framework.&lt;br /&gt;
&lt;br /&gt;
Again, any Paparazzi-designed hardware sources are available under the GPL and/or CC-BY-SA licences in the [https://github.com/paparazzi/paparazzi-hardware hardware file repository].&lt;br /&gt;
&lt;br /&gt;
===== Attitude =====&lt;br /&gt;
&lt;br /&gt;
Historically, fixedwing aircraft used 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. More recently, full inertial measurement solutions have been integrated into the fixedwing systems. Paparazzi also uses conventional inertial systems on rotorcraft. There is software sources for a wide variety of inertial systems, including inexpensive analog accelerometers and gyroscopes, small paparazzi-targeted purpose-built IMUs, or commercially available AHRS solutions.&lt;br /&gt;
&lt;br /&gt;
Some autopilots have an IMU integrated on board while others use an external IMU. All autopilot main boards support both inertial and IR attitude sensing solutions.&lt;br /&gt;
&lt;br /&gt;
See the [[IMU]] page and the [[IR]] page for more details.&lt;br /&gt;
&lt;br /&gt;
===== [[GPS]] =====&lt;br /&gt;
&lt;br /&gt;
Generally, a standard GPS receiver from [http://www.u-blox.com/ u-blox] is used, either as an external stand-alone unit , or as a fully integrated package, like in the [[Tiny]] series of autopilot. This brand of GPS receiver is used because of its high performance and very efficient binary protocol. While more expensive than some other GPS units, the tighter integration, lower parsing overhead and generally better quality data makes it more advantageous. Support is also available for MediaTek MT3329 chipsets with DIYDrones firmware. In addition, limited or experimental support is available for SkyTraq binary and traditional NMEA sentence GPS data.&lt;br /&gt;
&lt;br /&gt;
GPS is required for UAV localization. It is used in the autonomous navigation stages of flight control to enable waypoint navigation, as well as to supplement Attitude Heading and Reference System (AHRS) state estimates (especially in fixedwing aircraft).&lt;br /&gt;
&lt;br /&gt;
More details are available on the [[GPS]] page.&lt;br /&gt;
&lt;br /&gt;
===== [[Sensors|Other Sensors]] =====&lt;br /&gt;
&lt;br /&gt;
A wide variety of other sensors may be useful onboard a UAV, either as part of flight control or just for measurement. Some examples of currently supported sensor types include:&lt;br /&gt;
* differential pressure (airspeed)&lt;br /&gt;
* barometric pressure (altitude)&lt;br /&gt;
* sonar (altitude)&lt;br /&gt;
* current (energy consumption)&lt;br /&gt;
* temperature and humidity (meteorological measurements)&lt;br /&gt;
&lt;br /&gt;
==== Communications ====&lt;br /&gt;
&lt;br /&gt;
Airborne hardware also includes communications devices: Radio Modem (Datalink) &amp;amp; RC Receiver (Safety Link).&lt;br /&gt;
&lt;br /&gt;
===== Telemetry and Datalink =====&lt;br /&gt;
&lt;br /&gt;
Any wireless device providing a serial link can be used for the telemetry and the telecontrol (Datalink). Historically, even audio-channel based telemetry has been used. Bi-directional communication is generally recommended, but not required in very special applications. The most common datalink device is the venerable XBee series of radio modem. Other systems include powerful long range radios such as the Digi 9XTend modules, cellular network communications or satellite communications with Iridium satellite modems.&lt;br /&gt;
&lt;br /&gt;
The telemetry part of the link (from aircraft to ground) is used to obtain status information about the UAV to aid an operator and monitor mission progress, as well as provide some payload data. The datalink or telecontrol part of the link (from ground to aircraft) is used to send commands to the aircraft and interact with a payload. Example: telemetry provides the current location of the aircraft with can be viewed on the GCS map in real time, while the datalink allows a user to move a waypoint on the ground to modify the path the aircraft will follow in real time.&lt;br /&gt;
&lt;br /&gt;
More details on communications hardware are available on the [[Modems]] page.&lt;br /&gt;
&lt;br /&gt;
===== Safety Link =====&lt;br /&gt;
&lt;br /&gt;
A traditional radio control transmitter and receiver pair is used to provide a manual control option for the UAV. The airborne hardware and software support the connection to a standard (patched) radio-control receiver. The autopilot reads output from the R/C receiver onboard the aircraft and decides what control mode is desired. When in manual mode, a safety pilot on the ground may use the R/C transmitter to control the aircraft. In the case of rotorcraft, some level of computer control is usually necessary to maintain stable flight, even under &amp;quot;manual&amp;quot; control. The Paparazzi manual bypass or &amp;quot;Fly-by-Wire&amp;quot; system has been finely tuned over many years and provides a reliable method of providing override control even though the autopilot always remains inline between R/C receiver and actuators.&lt;br /&gt;
&lt;br /&gt;
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;
Paparazzi can support almost all types of R/C system.&lt;br /&gt;
&lt;br /&gt;
Further information can be found on the [[RC_Receivers_and_Radios]] page.&lt;br /&gt;
&lt;br /&gt;
==== Example Setups and Tutorials ====&lt;br /&gt;
&lt;br /&gt;
List coming soon!&lt;br /&gt;
&lt;br /&gt;
==== Getting Hardware ====&lt;br /&gt;
&lt;br /&gt;
Because the Paparazzi project is open source, anyone can manufacture their own hardware. Alternatively, if this isn't really an option due to time or expertise, various vendors offer Paparazzi hardware or other useful products.&lt;br /&gt;
&lt;br /&gt;
Please see the [[Get_Hardware]] page for details.&lt;br /&gt;
&lt;br /&gt;
=== Airborne Software ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;buildworkflow&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Pprz_build_workflow.png|thumb|600px|Paparazzi Airborne Software Build Process]]&lt;br /&gt;
&lt;br /&gt;
The airborne portion of the software runs on the main autopilot control board.&lt;br /&gt;
&lt;br /&gt;
The Paparazzi autopilot provides by default the following features:&lt;br /&gt;
&lt;br /&gt;
==== Fixed-Wing ====&lt;br /&gt;
* Manual control with the RC Transmitter&lt;br /&gt;
* RC receiver (PPM signal or Spektrum) decoding&lt;br /&gt;
* Servos and motor controller (PWM signal) control&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 (takeoff, landing, sequence, loops, surveys, goto, etc.)&lt;br /&gt;
** Advanced failsafe configurations (geo-fencing, lost link behaviour, etc.)&lt;br /&gt;
* Telemetry to the ground station (sensor data, navigation data, status information, etc.)&lt;br /&gt;
* Telecontrol (datalink) from the ground station (navigation control, waypoint modifications, tuning, etc.)&lt;br /&gt;
&lt;br /&gt;
New features can be added by only changing a configuration setting&lt;br /&gt;
&lt;br /&gt;
==== Rotorcraft ====&lt;br /&gt;
&lt;br /&gt;
Description coming soon!&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
The autopilot code is written in C and features a level of hardware abstraction. Paparazzi uses code generation to allow for easy configuration through XML files. This build process is [[#buildworkflow|illustrated here]]. The primary configuration files are the:&lt;br /&gt;
* [[Airframe_Configuration|Airframe XML File]]&lt;br /&gt;
** defines all autopilot parameters, including hardware configurations and control loop default set values&lt;br /&gt;
* [[Flight_Plans|Flight Plan XML File]]&lt;br /&gt;
** defines autonomous flight behaviors and high level fail-safes&lt;br /&gt;
In addition, the following files are also used (either default or modified):&lt;br /&gt;
* [[Radio_Control|Radio XML File]]&lt;br /&gt;
** describes valid radio transmitter behavior used under manual control&lt;br /&gt;
* [[Telemetry|Telemetry XML File]]&lt;br /&gt;
** describes what messages are sent and at which rate a message is send&lt;br /&gt;
* [[Settings|Settings XML Files]]&lt;br /&gt;
** describes the available and valid settings for various autopilot parameters as seen in the GCS used for e.g. inflight tuning&lt;br /&gt;
&lt;br /&gt;
Code is segregated into two processes respectively handling the ''fly by wire'' (manual control) and the ''autopilot'' itself (stabilization and navigation). Usually, rotorcraft do not use a direct manual control mode as some level of computer-aided stabilization is often needed to maintain stable flight. In addition, onboard code is split between ''periodic tasks'' and ''event tasks''. Periodic tasks are scheduled time sensitive tasks executed at specific periodic intervals. Examples include navigation actions, control loops and periodic telemetry messages. Event tasks are carried out in response to something. For example, receiving new GPS data or a datalink message. The fly by wire process is always given priority.&lt;br /&gt;
&lt;br /&gt;
== Ground Control Station ([[GCS]]) ==&lt;br /&gt;
&lt;br /&gt;
The ground control station is where an operator interacts with an Unmanned Aircraft System. It generally consists of several parts, usually providing feedback about UAV activity, allowing command and control of the aircraft and providing a method of override control for the system.&lt;br /&gt;
&lt;br /&gt;
=== Ground Computer ===&lt;br /&gt;
&lt;br /&gt;
The software suite was developed to be run on a i386 architecture based on the [http://www.debian.org Debian GNU/linux] operating system. Currently, Ubuntu is a popular and well supported choice for Paparazzi, while Mac OS X is also supported. Selection of a computer will vary based on application, but a small notebook easy to take to the flying field with good battery life is typical.&lt;br /&gt;
&lt;br /&gt;
For more information on operating system options, please visit the [[Installation]] page.&lt;br /&gt;
&lt;br /&gt;
=== Ground Software ===&lt;br /&gt;
&lt;br /&gt;
Just as important as the software running onboard the main autopilot board in the air is the corresponding software on the GCS, providing the human interface for configuration, monitoring and control of the UAS.&lt;br /&gt;
&lt;br /&gt;
The Paparazzi software suite is fully featured with solid core functionality, easy customization and flexible extensibility. It supports all types of airframes, as well as multiple UAVs.&lt;br /&gt;
&lt;br /&gt;
The software suite mainly provides&lt;br /&gt;
* compilation tools to produce the airborne software from the configurations and source code&lt;br /&gt;
* a GUI to control and interact with the UAV(s) during flight as well as mission planning and simulation&lt;br /&gt;
* a basic simulator to ease the development of flight plans and verify some airborne code behaviour&lt;br /&gt;
* a data logging system with plot-based viewer for real-time and post-flight analysis&lt;br /&gt;
* a number of utilities for communicating with the UAV and other agents&lt;br /&gt;
* a number of tools for calibration, etc.&lt;br /&gt;
* a control panel GUI for configuration and program management&lt;br /&gt;
* an easy method of extending functionality with the Ivy Bus&lt;br /&gt;
&lt;br /&gt;
=== Groundside 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), as described above in the [[#Telemetry_and_Datalink|Airborne Telemetry and Datalink]] section. 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;
The ground side of the link usually consists of a matching radio modem, like an XBee, connected to the ground station computer over USB or serial port.&lt;br /&gt;
&lt;br /&gt;
=== Groundside Safety Link ===&lt;br /&gt;
&lt;br /&gt;
The ground side of the safety link usually consists of a radio control transmitter (and safety pilot). It is used to provide manual control of the aircraft, as described above in the [[#Safety_Link|Airborne Safety Link]] section.&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
&lt;br /&gt;
The following figure shows the main agents (processes or programs), 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)]], or '''gcs''' agent, 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;
* '''server''' - an agent that logs, distributes, and preprocesses these messages for the [[GCS]] and other agents&lt;br /&gt;
* '''messages''' - a real-time numeric display of all telemetry data&lt;br /&gt;
* A number of other useful agents, including:&lt;br /&gt;
** a GCS-based flight plan editor to modify waypoints&lt;br /&gt;
** a UAV [[Simulation|simulator]] to test flight plans and code modifications&lt;br /&gt;
** a [[RTPlotter|real-time plotter]] for graphical telemetry data visualization&lt;br /&gt;
** a [[Plotter|log plotter]] for graphical telemetry visualization after a flight&lt;br /&gt;
&lt;br /&gt;
All of these processes run simultaneously and each module is independently launched and configured from [[Paparazzi_Center]], where further detail can be found.&lt;br /&gt;
&lt;br /&gt;
First experiments with the system should be with the [[Simulation|'''simulator''']] where everything runs on a 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 aircraft and its radio link are replaced by the [[Simulation|'''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;
Because of the modular nature of the Paparazzi software suite, custom agents enhancing functionality are (relatively) easy to create and integrate with existing software. Some examples include:&lt;br /&gt;
* a [[WeatherStationInterface|weather station interface]]&lt;br /&gt;
* an external [[GPSd_position|gps position]] display&lt;br /&gt;
* a [[Input2Ivy|joystick interface]] for controlling aircraft or payloads from the GCS&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. Some boards can also be connected to a [http://www.gumstix.com Gumstix Computer] for highly sophisticated payload software applications, as described in [[OMAP|OMAP Integration]].&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.  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;
The Paparazzi software and hardware are distributed without any guarantee, in particular they are not certified by any national or international authorities. Before flying, please refer to your country national aviation regulation for Unmanned Aerial Systems, or the one of the country you intend to overfly.&lt;br /&gt;
&lt;br /&gt;
[[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Usaaib</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=9143</id>
		<title>Installation/MacOSX</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=9143"/>
		<updated>2011-03-14T03:15:24Z</updated>

		<summary type="html">&lt;p&gt;Usaaib: /* Keeping source files for debugging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The task of supporting Paparazzi on  Apple MacOS X is ongoing as the project evolves and the more people adapt it the process will be streamlined. Presently it is known that Paparazzi will install on OSX versions 10.5.8, 10.6, 10.6.2 and 10.6.6. &lt;br /&gt;
&lt;br /&gt;
= Intro =&lt;br /&gt;
Would it not be great to also be able to run Paparazzi from your shiny Apple Mac? Well, this page explains how you can manage to do just that.&lt;br /&gt;
&lt;br /&gt;
= Installing from source =&lt;br /&gt;
The tools that are required to work with paparazzi on a Mac are installed from MacPorts. All of the commands are given by terminal commands, please open your terminal first.&lt;br /&gt;
&lt;br /&gt;
In case you '''already have MacPorts installed''', it is advised to run the following steps before proceeding:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;check that /opt/local/bin is the first entry in your PATH, easy to check by giving the following command&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;env&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then give the following command to make sure your ports are up-to-date&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port selfupdate &amp;amp;&amp;amp; sudo port upgrade outdated&amp;lt;/pre&amp;gt;&lt;br /&gt;
..great, you now can run the installation steps starting from step '''3''' below.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don't already have MacPorts installed run the following steps:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the latest XCode http://developer.apple.com/technologies/tools/xcode.html&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install MacPorts from http://www.macports.org/install.php&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the file &amp;lt;code&amp;gt;/opt/local/etc/macports/sources.conf&amp;lt;/code&amp;gt; and above the &amp;lt;code&amp;gt;rsync://...&amp;lt;/code&amp;gt; line add &amp;lt;code&amp;gt;rsync://rsync.paparazziuav.org/macports/ports/&amp;lt;/code&amp;gt; It is important that this line comes before the path to the standard ports as some of the Paparazzi ports are intended to replace the standard versions. The file is write protected so it will be necessary to be root in order to edit it. The simplest way is to open a terminal window and use nano thus: &lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo nano /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now update the available ports with the command:&lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port selfupdate&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If you do not have your own copy of the paparazzi source then you now need to install paparazzi:&lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port install paparazzi&amp;lt;/pre&amp;gt; &lt;br /&gt;
OR if you do already have your own copy of the paparazzi source and you want to keep in then the tools required by paparazzi can be installed with the command &lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port install paparazzi-tools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;...Then go and have lunch, get a coffee, get some sleep. This will probably take a long time.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to follow the standard Paparazzi [[Git]] install then the prerequisite software can be installed by running the command &amp;lt;code&amp;gt;sudo port install paparazzi-tools&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If you continually experience problems installing paparazzi or paparazzi-tools then it may be that you have some other conflicting software installed. i.e. an old version of a library in /usr.&lt;br /&gt;
&lt;br /&gt;
One way to work around issues relating to prior MacPort installs that has been found is to clean out everything MacPorts has installed and install from scratch using the latest MacPorts&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port -f uninstall installed&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port clean --all uninstalled&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port selfupdate&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port -f install paparazzi-tools&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sudo port -f install paparazzi&amp;lt;/code&amp;gt;&lt;br /&gt;
This was in fact the process used to check that the code installed on a clean machine.&lt;br /&gt;
&lt;br /&gt;
== Keeping source files for debugging ==&lt;br /&gt;
If you wish to debug code using the source install then you'll find that many of the source files for the libraries are missing.&lt;br /&gt;
&lt;br /&gt;
This is because MacPorts cleans up the build artifacts and source files after the installation is complete. This behaviour can be changed by adding the -k option to the port command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
  sudo port -k install paparazzi-tools&lt;br /&gt;
This will result in all of the source and build artefact files being left on the hard disk.&lt;br /&gt;
&lt;br /&gt;
Should you later wish to clean up these files you can do so with the clean command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
  sudo port clean installed&lt;br /&gt;
&lt;br /&gt;
= Installation using the binary installer =&lt;br /&gt;
# Install the latest XCode http://developer.apple.com/technologies/tools/xcode.html&lt;br /&gt;
# Download the paparazzi binary installer from http://download.paparazziuav.org/darwin/&lt;br /&gt;
# Install paparazzi by double clicking on the downloaded file paparazzi.mpkg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to follow the standard Paparazzi [[Git]] install then the prerequisite software can be installed by downloading the paparazzi-tools binary installer from http://TODO find a place to host this file and installing the tools by doublclicking on the downloaded file paparazzi-tools.mpkg&lt;br /&gt;
&lt;br /&gt;
=Running Paparazzi=&lt;br /&gt;
Paparazzi can be started in the usual way&lt;br /&gt;
 cd ~/paparazzi&lt;br /&gt;
 ./paparazzi&lt;br /&gt;
&lt;br /&gt;
== Changing the GTK look and feel ==&lt;br /&gt;
&lt;br /&gt;
Run /opt/local/bin/switch2 to select a different theme.&lt;br /&gt;
More detailed instructions can be found at http://gtk.php.net/manual/en/html/tutorials/tutorials.installation.macosx-stepbystep.html&lt;br /&gt;
&lt;br /&gt;
Additional themes can be downloaded from http://art.gnome.org/themes/gtk2&lt;br /&gt;
&lt;br /&gt;
== USB Drivers for Telemetry ==&lt;br /&gt;
&lt;br /&gt;
No drivers need to be installed in order to program either the STM32 based or LPC2148 based autopilot boards (ie TINY, TWOG, Booz, Lisa/L, Lisa/M) using a USB port. However telemetry between the vehicle and ground control station requires a modem. On an Apple Mac this will generally be connected to a USB port. Whatever modem is used it will be necessary to load drivers that allow Paparazzi to communicate with the modem. It is not possible to describe all possible modems and their configuration. However the most commonly used chipset for USB to serial communication is produced by FTDI. Below is described the installation of the FTDI drivers. This can be used as a guide for installing drivers for modems using other chipsets.   &lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
FTDI drivers can be downloaded from [http://www.ftdichip.com/Drivers/VCP.htm FTDI]&lt;br /&gt;
&lt;br /&gt;
The device will probably become available as something like /dev/tty.usbserial-000013FD when connected. Note that different USB ports get different addresses. When connecting to another port the same device came up as /dev/tty.usbserial-000014FA&lt;br /&gt;
&lt;br /&gt;
Since Paparazzi is currently configured to use /dev/ttyUSB0 it's easiest to just create a link to the required device.&lt;br /&gt;
# Remove all USB devices from the computer and run the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; hopefully this will not list anything&lt;br /&gt;
# Plug in your radio and repeat the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; this should now list the serial port that the radio has been connected to. In my case I get&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Next we need to create a symbolic link to the tty.usbserial device listed to /dev/ttyUSB0 in my case the command is &amp;lt;code&amp;gt;sudo ln -s /dev/tty.usbserial-000013FD /dev/ttyUSB0&amp;lt;/code&amp;gt;&lt;br /&gt;
# To check that everything is correct run the first command again &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; and you should get something like this&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&lt;br /&gt;
#: lrwxr-xr-x  1 root  wheel         0 20 Jan 14:42 /dev/ttyUSB0 -&amp;gt; /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the FTDI driver (kernel extension) is loaded it takes over for all FTDI connections. This means that it will not be possible to program the Lisa/L or Lisa/M boards while the driver is loaded.&lt;br /&gt;
&lt;br /&gt;
To unload the driver use the command&lt;br /&gt;
 sudo kextunload/System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
This should not give an error. if it does then try again a few times after quitting programs that may have used the connection. If the driver still fails to unload then a reboot may be required.&lt;br /&gt;
&lt;br /&gt;
When it comes time to connect the modem again you'll again need the driver loaded. This can be done with the complementary command&lt;br /&gt;
 sudo kextload/System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
&lt;br /&gt;
== Workaround for Issues with errors (Device busy) when trying to program a Lisa/L ==&lt;br /&gt;
Programming the Lisa on OS X&lt;br /&gt;
&lt;br /&gt;
The problem:&lt;br /&gt;
The &amp;quot;default&amp;quot; vendor id and product id for the ftdi device on Lisa is the same one used by all the manufacturers of clone usb-serial interfaces. This isn't an issue on Linux because of the udev rules file we use does not load the ftdi drivers for lisas programming interface. Windows and Mac OS X don't use this file so they can only use vendor id and product id. &lt;br /&gt;
So as soon as you plug in Lisa they load USB-&amp;gt;serial port drivers for the two ports they believe are on Lisa causing a conflict. The programming of Lisa happens through a different mechanism and does not want the programming interface of Lisa to be taken by the FTDI driver which has already been loaded. For OS X there is a hack we can do that makes it better until we can get vendor and product ids sorted out. It involves modifying the /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist file. We change it so only the first of the two serial interfaces is loaded. The second is not as it is the programming interface.&lt;br /&gt;
&lt;br /&gt;
The File (edit with a text editor):&lt;br /&gt;
 /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist&lt;br /&gt;
&lt;br /&gt;
Here is a diff between a &amp;quot;vanilla OS X&amp;quot; and one that has been modified (Essentially below was removed):&lt;br /&gt;
 quadzilla:Contents root# diff ~/Info.plist Info.plist &lt;br /&gt;
 1784,1805d1783&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232C_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
 1830,1853d1807&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232H_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bcdDevice&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1792&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have edited the file&lt;br /&gt;
 - sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
 - sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
To reload the driver or you can just reboot.&lt;br /&gt;
&lt;br /&gt;
It is expected as Paparazzi moves to supporting more operating systems that unique product and vendor ids will be obtained thus removing the need for this step.&lt;br /&gt;
&lt;br /&gt;
=Installing FlightGear=&lt;br /&gt;
FlightGear has been packaged for use on OS X. This package can be downloaded from:&lt;br /&gt;
http://macflightgear.sourceforge.net/home/downloads/&lt;br /&gt;
&lt;br /&gt;
There are currently two packages available. The one released March 18, 2010 (2.0.0) installs and runs properly on OS X 10.6. Follow the directions [http://macflightgear.sourceforge.net/home/documents/users-guide/ here] for installation and basic usage. Additional documentation can be found  [http://macflightgear.sourceforge.net/home/documents/ here]. The Development Snapshot from August 21, 2010 does not seem as stable (did not work properly when tried on one machine).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a patch available for crashes encountered on the splash screen, as detailed here: http://macflightgear.sourceforge.net/a-patch-that-prevents-fg-200-from-crash-on-launch-is-available&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_launchgui_OSX_pprzoptions.png|thumb|350px|Screenshot of FlightGear launch gui in OS X with options for visualizing Paparazzi simulations]]&lt;br /&gt;
Once FlightGear is installed, the GUI launcher can be used to set common options. By clicking on the Advanced Features arrow, one can gain access to many more options as well as an interface to specify command line options (the Others tab). This is where one can specify the flight dynamics model and network connectivity required for visualizing Paparazzi simulations as described on the [[Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In Paparazzi Center, add to the simulator command the &amp;lt;tt&amp;gt;-fg&amp;lt;/tt&amp;gt; option plus the IP address of the machine running flightgear in this case the loopback interace is used as Flightgear and Paparazzi are running on the same machine:&lt;br /&gt;
 .../sw/simulator/launchsitl -a TJ1 -fg 127.0.0.1 -boot -norc&lt;br /&gt;
Note TJ1 is the name of the aircraft you must substitute this with the name of your aircraft.&lt;br /&gt;
* Launch Flight Gear with the following set in the others tab under advanced settings:&lt;br /&gt;
 --fdm=null --native-gui=socket,in,30,,5501,udp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_pprz_sim_OSX.png|thumb|right|350px|Screenshot of Flightgear visualizing the default Microjet simulation in OS X (not the default Muret, FR location)]]&lt;br /&gt;
&lt;br /&gt;
If it is night in FlightGear and you wish to view the simulation in daylight, follow the instructions on the [[Simulation#Why is it night in Flight Gear, if my sim is flying during the day?|Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
=Simulations Using JSBSim=&lt;br /&gt;
[http://jsbsim.sourceforge.net/index.html JSBSim] is an open-source flight dynamics and control software library. It can provide a more realistic simulation environment over the basic built-in Paparazzi simulator. See the [[Simulation|Simulation]] page for background information and how to run a normal simulation. After this can be done in a satisfactory manner, follow the steps below to utilize the JSBSim flight dynamics model.&lt;br /&gt;
&lt;br /&gt;
Note the current steps are a work in progress. As soon as they are checked, some changes to the source will be made and steps removed.&lt;br /&gt;
&lt;br /&gt;
==How to run JSBSim simulations:==&lt;br /&gt;
&lt;br /&gt;
Please see [[Simulation#JSBSim]] for instructions on how to use the JSBSim FDM in simulations, with the following changes:&lt;br /&gt;
&lt;br /&gt;
* Install the JSBSim libraries onto your system. This should already be installed with &amp;lt;tt&amp;gt;paparazzi-tools&amp;lt;/tt&amp;gt;, but if it isn't:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sudo port install jsbsim&amp;lt;/code&amp;gt;&lt;br /&gt;
It uses code from the cvs repo, so it should be the most up-to-date source.&lt;br /&gt;
&lt;br /&gt;
* Compile your airframe for the jsbsim target. Launch the GCS and Server as per normal simulation. The simulation needs the &amp;lt;tt&amp;gt;-jsbsim&amp;lt;/tt&amp;gt; option and the &amp;lt;tt&amp;gt;-b 224.255.255.255&amp;lt;/tt&amp;gt; option, like this:&lt;br /&gt;
  &amp;lt;code&amp;gt;&amp;lt;paparazzi home directory&amp;gt;/sw/simulator/launchsitl  -a &amp;lt;aircraft_name&amp;gt; -jsbsim  -b 224.255.255.255 -boot -norc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JSBSim simulation can be used with FlightGear visualization as described above, by adding the &amp;lt;tt&amp;gt;-fg 127.0.0.1&amp;lt;/tt&amp;gt; option in addition, like this:&lt;br /&gt;
  &amp;lt;code&amp;gt;&amp;lt;paparazzi home directory&amp;gt;/sw/simulator/launchsitl  -a &amp;lt;aircraft_name&amp;gt; -jsbsim  -b 224.255.255.255 -boot -norc -fg 127.0.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For information on using an optional initialization file for the simulation initial conditions and how to set the launch velocity, please see [[Simulation#Using_Optional_Parameters]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Usaaib</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=9142</id>
		<title>Installation/MacOSX</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=9142"/>
		<updated>2011-03-14T03:00:51Z</updated>

		<summary type="html">&lt;p&gt;Usaaib: /* Installing from source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The task of supporting Paparazzi on  Apple MacOS X is ongoing as the project evolves and the more people adapt it the process will be streamlined. Presently it is known that Paparazzi will install on OSX versions 10.5.8, 10.6, 10.6.2 and 10.6.6. &lt;br /&gt;
&lt;br /&gt;
= Intro =&lt;br /&gt;
Would it not be great to also be able to run Paparazzi from your shiny Apple Mac? Well, this page explains how you can manage to do just that.&lt;br /&gt;
&lt;br /&gt;
= Installing from source =&lt;br /&gt;
The tools that are required to work with paparazzi on a Mac are installed from MacPorts. All of the commands are given by terminal commands, please open your terminal first.&lt;br /&gt;
&lt;br /&gt;
In case you '''already have MacPorts installed''', it is advised to run the following steps before proceeding:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;check that /opt/local/bin is the first entry in your PATH, easy to check by giving the following command&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;env&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then give the following command to make sure your ports are up-to-date&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port selfupdate &amp;amp;&amp;amp; sudo port upgrade outdated&amp;lt;/pre&amp;gt;&lt;br /&gt;
..great, you now can run the installation steps starting from step '''3''' below.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don't already have MacPorts installed run the following steps:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the latest XCode http://developer.apple.com/technologies/tools/xcode.html&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install MacPorts from http://www.macports.org/install.php&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the file &amp;lt;code&amp;gt;/opt/local/etc/macports/sources.conf&amp;lt;/code&amp;gt; and above the &amp;lt;code&amp;gt;rsync://...&amp;lt;/code&amp;gt; line add &amp;lt;code&amp;gt;rsync://rsync.paparazziuav.org/macports/ports/&amp;lt;/code&amp;gt; It is important that this line comes before the path to the standard ports as some of the Paparazzi ports are intended to replace the standard versions. The file is write protected so it will be necessary to be root in order to edit it. The simplest way is to open a terminal window and use nano thus: &lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo nano /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now update the available ports with the command:&lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port selfupdate&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If you do not have your own copy of the paparazzi source then you now need to install paparazzi:&lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port install paparazzi&amp;lt;/pre&amp;gt; &lt;br /&gt;
OR if you do already have your own copy of the paparazzi source and you want to keep in then the tools required by paparazzi can be installed with the command &lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port install paparazzi-tools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;...Then go and have lunch, get a coffee, get some sleep. This will probably take a long time.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to follow the standard Paparazzi [[Git]] install then the prerequisite software can be installed by running the command &amp;lt;code&amp;gt;sudo port install paparazzi-tools&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If you continually experience problems installing paparazzi or paparazzi-tools then it may be that you have some other conflicting software installed. i.e. an old version of a library in /usr.&lt;br /&gt;
&lt;br /&gt;
One way to work around issues relating to prior MacPort installs that has been found is to clean out everything MacPorts has installed and install from scratch using the latest MacPorts&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port -f uninstall installed&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port clean --all uninstalled&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port selfupdate&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port -f install paparazzi-tools&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sudo port -f install paparazzi&amp;lt;/code&amp;gt;&lt;br /&gt;
This was in fact the process used to check that the code installed on a clean machine.&lt;br /&gt;
&lt;br /&gt;
== Keeping source files for debugging ==&lt;br /&gt;
If you wish to debug code using the source install then you'll find that many of the source files for the libraries are missing.&lt;br /&gt;
&lt;br /&gt;
This is because MacPorts cleans up the build artefacts and and source files after the installation is complete. This behaviour can be changed by adding the -k option to the port command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 sudo port -k install paparazzi-tools&lt;br /&gt;
This will result in all of the source and build artefact files being left on the hard disk.&lt;br /&gt;
&lt;br /&gt;
Should you later wish to clean up these files you can do so with the clean command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 sudo port clean installed&lt;br /&gt;
&lt;br /&gt;
= Installation using the binary installer =&lt;br /&gt;
# Install the latest XCode http://developer.apple.com/technologies/tools/xcode.html&lt;br /&gt;
# Download the paparazzi binary installer from http://download.paparazziuav.org/darwin/&lt;br /&gt;
# Install paparazzi by double clicking on the downloaded file paparazzi.mpkg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to follow the standard Paparazzi [[Git]] install then the prerequisite software can be installed by downloading the paparazzi-tools binary installer from http://TODO find a place to host this file and installing the tools by doublclicking on the downloaded file paparazzi-tools.mpkg&lt;br /&gt;
&lt;br /&gt;
=Running Paparazzi=&lt;br /&gt;
Paparazzi can be started in the usual way&lt;br /&gt;
 cd ~/paparazzi&lt;br /&gt;
 ./paparazzi&lt;br /&gt;
&lt;br /&gt;
== Changing the GTK look and feel ==&lt;br /&gt;
&lt;br /&gt;
Run /opt/local/bin/switch2 to select a different theme.&lt;br /&gt;
More detailed instructions can be found at http://gtk.php.net/manual/en/html/tutorials/tutorials.installation.macosx-stepbystep.html&lt;br /&gt;
&lt;br /&gt;
Additional themes can be downloaded from http://art.gnome.org/themes/gtk2&lt;br /&gt;
&lt;br /&gt;
== USB Drivers for Telemetry ==&lt;br /&gt;
&lt;br /&gt;
No drivers need to be installed in order to program either the STM32 based or LPC2148 based autopilot boards (ie TINY, TWOG, Booz, Lisa/L, Lisa/M) using a USB port. However telemetry between the vehicle and ground control station requires a modem. On an Apple Mac this will generally be connected to a USB port. Whatever modem is used it will be necessary to load drivers that allow Paparazzi to communicate with the modem. It is not possible to describe all possible modems and their configuration. However the most commonly used chipset for USB to serial communication is produced by FTDI. Below is described the installation of the FTDI drivers. This can be used as a guide for installing drivers for modems using other chipsets.   &lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
FTDI drivers can be downloaded from [http://www.ftdichip.com/Drivers/VCP.htm FTDI]&lt;br /&gt;
&lt;br /&gt;
The device will probably become available as something like /dev/tty.usbserial-000013FD when connected. Note that different USB ports get different addresses. When connecting to another port the same device came up as /dev/tty.usbserial-000014FA&lt;br /&gt;
&lt;br /&gt;
Since Paparazzi is currently configured to use /dev/ttyUSB0 it's easiest to just create a link to the required device.&lt;br /&gt;
# Remove all USB devices from the computer and run the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; hopefully this will not list anything&lt;br /&gt;
# Plug in your radio and repeat the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; this should now list the serial port that the radio has been connected to. In my case I get&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Next we need to create a symbolic link to the tty.usbserial device listed to /dev/ttyUSB0 in my case the command is &amp;lt;code&amp;gt;sudo ln -s /dev/tty.usbserial-000013FD /dev/ttyUSB0&amp;lt;/code&amp;gt;&lt;br /&gt;
# To check that everything is correct run the first command again &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; and you should get something like this&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&lt;br /&gt;
#: lrwxr-xr-x  1 root  wheel         0 20 Jan 14:42 /dev/ttyUSB0 -&amp;gt; /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the FTDI driver (kernel extension) is loaded it takes over for all FTDI connections. This means that it will not be possible to program the Lisa/L or Lisa/M boards while the driver is loaded.&lt;br /&gt;
&lt;br /&gt;
To unload the driver use the command&lt;br /&gt;
 sudo kextunload/System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
This should not give an error. if it does then try again a few times after quitting programs that may have used the connection. If the driver still fails to unload then a reboot may be required.&lt;br /&gt;
&lt;br /&gt;
When it comes time to connect the modem again you'll again need the driver loaded. This can be done with the complementary command&lt;br /&gt;
 sudo kextload/System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
&lt;br /&gt;
== Workaround for Issues with errors (Device busy) when trying to program a Lisa/L ==&lt;br /&gt;
Programming the Lisa on OS X&lt;br /&gt;
&lt;br /&gt;
The problem:&lt;br /&gt;
The &amp;quot;default&amp;quot; vendor id and product id for the ftdi device on Lisa is the same one used by all the manufacturers of clone usb-serial interfaces. This isn't an issue on Linux because of the udev rules file we use does not load the ftdi drivers for lisas programming interface. Windows and Mac OS X don't use this file so they can only use vendor id and product id. &lt;br /&gt;
So as soon as you plug in Lisa they load USB-&amp;gt;serial port drivers for the two ports they believe are on Lisa causing a conflict. The programming of Lisa happens through a different mechanism and does not want the programming interface of Lisa to be taken by the FTDI driver which has already been loaded. For OS X there is a hack we can do that makes it better until we can get vendor and product ids sorted out. It involves modifying the /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist file. We change it so only the first of the two serial interfaces is loaded. The second is not as it is the programming interface.&lt;br /&gt;
&lt;br /&gt;
The File (edit with a text editor):&lt;br /&gt;
 /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist&lt;br /&gt;
&lt;br /&gt;
Here is a diff between a &amp;quot;vanilla OS X&amp;quot; and one that has been modified (Essentially below was removed):&lt;br /&gt;
 quadzilla:Contents root# diff ~/Info.plist Info.plist &lt;br /&gt;
 1784,1805d1783&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232C_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
 1830,1853d1807&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232H_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bcdDevice&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1792&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have edited the file&lt;br /&gt;
 - sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
 - sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
To reload the driver or you can just reboot.&lt;br /&gt;
&lt;br /&gt;
It is expected as Paparazzi moves to supporting more operating systems that unique product and vendor ids will be obtained thus removing the need for this step.&lt;br /&gt;
&lt;br /&gt;
=Installing FlightGear=&lt;br /&gt;
FlightGear has been packaged for use on OS X. This package can be downloaded from:&lt;br /&gt;
http://macflightgear.sourceforge.net/home/downloads/&lt;br /&gt;
&lt;br /&gt;
There are currently two packages available. The one released March 18, 2010 (2.0.0) installs and runs properly on OS X 10.6. Follow the directions [http://macflightgear.sourceforge.net/home/documents/users-guide/ here] for installation and basic usage. Additional documentation can be found  [http://macflightgear.sourceforge.net/home/documents/ here]. The Development Snapshot from August 21, 2010 does not seem as stable (did not work properly when tried on one machine).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a patch available for crashes encountered on the splash screen, as detailed here: http://macflightgear.sourceforge.net/a-patch-that-prevents-fg-200-from-crash-on-launch-is-available&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_launchgui_OSX_pprzoptions.png|thumb|350px|Screenshot of FlightGear launch gui in OS X with options for visualizing Paparazzi simulations]]&lt;br /&gt;
Once FlightGear is installed, the GUI launcher can be used to set common options. By clicking on the Advanced Features arrow, one can gain access to many more options as well as an interface to specify command line options (the Others tab). This is where one can specify the flight dynamics model and network connectivity required for visualizing Paparazzi simulations as described on the [[Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In Paparazzi Center, add to the simulator command the &amp;lt;tt&amp;gt;-fg&amp;lt;/tt&amp;gt; option plus the IP address of the machine running flightgear in this case the loopback interace is used as Flightgear and Paparazzi are running on the same machine:&lt;br /&gt;
 .../sw/simulator/launchsitl -a TJ1 -fg 127.0.0.1 -boot -norc&lt;br /&gt;
Note TJ1 is the name of the aircraft you must substitute this with the name of your aircraft.&lt;br /&gt;
* Launch Flight Gear with the following set in the others tab under advanced settings:&lt;br /&gt;
 --fdm=null --native-gui=socket,in,30,,5501,udp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_pprz_sim_OSX.png|thumb|right|350px|Screenshot of Flightgear visualizing the default Microjet simulation in OS X (not the default Muret, FR location)]]&lt;br /&gt;
&lt;br /&gt;
If it is night in FlightGear and you wish to view the simulation in daylight, follow the instructions on the [[Simulation#Why is it night in Flight Gear, if my sim is flying during the day?|Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
=Simulations Using JSBSim=&lt;br /&gt;
[http://jsbsim.sourceforge.net/index.html JSBSim] is an open-source flight dynamics and control software library. It can provide a more realistic simulation environment over the basic built-in Paparazzi simulator. See the [[Simulation|Simulation]] page for background information and how to run a normal simulation. After this can be done in a satisfactory manner, follow the steps below to utilize the JSBSim flight dynamics model.&lt;br /&gt;
&lt;br /&gt;
Note the current steps are a work in progress. As soon as they are checked, some changes to the source will be made and steps removed.&lt;br /&gt;
&lt;br /&gt;
==How to run JSBSim simulations:==&lt;br /&gt;
&lt;br /&gt;
Please see [[Simulation#JSBSim]] for instructions on how to use the JSBSim FDM in simulations, with the following changes:&lt;br /&gt;
&lt;br /&gt;
* Install the JSBSim libraries onto your system. This should already be installed with &amp;lt;tt&amp;gt;paparazzi-tools&amp;lt;/tt&amp;gt;, but if it isn't:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sudo port install jsbsim&amp;lt;/code&amp;gt;&lt;br /&gt;
It uses code from the cvs repo, so it should be the most up-to-date source.&lt;br /&gt;
&lt;br /&gt;
* Compile your airframe for the jsbsim target. Launch the GCS and Server as per normal simulation. The simulation needs the &amp;lt;tt&amp;gt;-jsbsim&amp;lt;/tt&amp;gt; option and the &amp;lt;tt&amp;gt;-b 224.255.255.255&amp;lt;/tt&amp;gt; option, like this:&lt;br /&gt;
  &amp;lt;code&amp;gt;&amp;lt;paparazzi home directory&amp;gt;/sw/simulator/launchsitl  -a &amp;lt;aircraft_name&amp;gt; -jsbsim  -b 224.255.255.255 -boot -norc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JSBSim simulation can be used with FlightGear visualization as described above, by adding the &amp;lt;tt&amp;gt;-fg 127.0.0.1&amp;lt;/tt&amp;gt; option in addition, like this:&lt;br /&gt;
  &amp;lt;code&amp;gt;&amp;lt;paparazzi home directory&amp;gt;/sw/simulator/launchsitl  -a &amp;lt;aircraft_name&amp;gt; -jsbsim  -b 224.255.255.255 -boot -norc -fg 127.0.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For information on using an optional initialization file for the simulation initial conditions and how to set the launch velocity, please see [[Simulation#Using_Optional_Parameters]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Usaaib</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=9141</id>
		<title>Installation/MacOSX</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=9141"/>
		<updated>2011-03-14T03:00:21Z</updated>

		<summary type="html">&lt;p&gt;Usaaib: /* Installing from source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The task of supporting Paparazzi on  Apple MacOS X is ongoing as the project evolves and the more people adapt it the process will be streamlined. Presently it is known that Paparazzi will install on OSX versions 10.5.8, 10.6, 10.6.2 and 10.6.6. &lt;br /&gt;
&lt;br /&gt;
= Intro =&lt;br /&gt;
Would it not be great to also be able to run Paparazzi from your shiny Apple Mac? Well, this page explains how you can manage to do just that.&lt;br /&gt;
&lt;br /&gt;
= Installing from source =&lt;br /&gt;
The tools that are required to work with paparazzi on a Mac are installed from MacPorts. All of the commands are given by terminal commands, please open your terminal first.&lt;br /&gt;
&lt;br /&gt;
In case you '''already have MacPorts installed''', it is advised to run the following steps before proceeding:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;check that /opt/local/bin is the first entry in your PATH, easy to check by giving the following command&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;env&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then give the following command to make sure your ports are up-to-date&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port selfupdate &amp;amp;&amp;amp; sudo port upgrade outdated&amp;lt;/pre&amp;gt;&lt;br /&gt;
..great, you now can run the installation steps starting from step '''3''' below.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don't already have MacPorts installed run the following steps:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the latest XCode http://developer.apple.com/technologies/tools/xcode.html&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install MacPorts from http://www.macports.org/install.php&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the file &amp;lt;code&amp;gt;/opt/local/etc/macports/sources.conf&amp;lt;/code&amp;gt; and above the &amp;lt;code&amp;gt;rsync://...&amp;lt;/code&amp;gt; line add &amp;lt;code&amp;gt;rsync://rsync.paparazziuav.org/macports/ports/&amp;lt;/code&amp;gt; It is important that this line comes before the path to the standard ports as some of the Paparazzi ports are intended to replace the standard versions. The file is write protected so it will be necessary to be root in order to edit it. The simplest way is to open a terminal window and use nano thus: &lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo nano /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now update the available ports with the command:&lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port selfupdate&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If you do not have your own copy of the paparazzi source then you now need to install paparazzi:&lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port install paparazzi&amp;lt;/pre&amp;gt; &lt;br /&gt;
OR if you do already have your own copy of the paparazzi source and you want to keep in then the tools required by paparazzi can be installed with the command &lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port install paparazzi-tools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;...Then go and have lunch, get a coffee, get some sleep. This will probably take a long time.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to follow the standard Paparazzi [[Git]] install then the prerequisite software can be installed by running the command &amp;lt;code&amp;gt;sudo port install paparazzi-tools&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If you continually experience problems installing paparazzi or paparazzi-tools then it may be that you have some other conflicting software installed. i.e. an old version of a library in /usr.&lt;br /&gt;
&lt;br /&gt;
One way to work around issues relating to prior MacPort installs that has been found is to clean out everything MacPorts has installed and install from scratch using the latest MacPorts&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port -f uninstall installed&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port clean --all uninstalled&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port selfupdate&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port -f install paparazzi-tools&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sudo port -f install paparazzi&amp;lt;/code&amp;gt;&lt;br /&gt;
This was in fact the process used to check that the code installed on a clean machine.&lt;br /&gt;
&lt;br /&gt;
== Keeping source files for debugging ==&lt;br /&gt;
If you wish to debug code using the source install then you'll find that many of the source files for the libraries are missing.&lt;br /&gt;
&lt;br /&gt;
This is because MacPorts cleans up the build artefacts and and source files after the installation is complete. This behaviour can be changed by adding the -k option to the port command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 sudo port -k install paparazzi-tools&lt;br /&gt;
This will result in all of the source and build artefact files being left on the hard disk.&lt;br /&gt;
&lt;br /&gt;
Should you later wish to clean up these files you can do so with the clean command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 sudo port clean installed&lt;br /&gt;
&lt;br /&gt;
= Installation using the binary installer =&lt;br /&gt;
# Install the latest XCode http://developer.apple.com/technologies/tools/xcode.html&lt;br /&gt;
# Download the paparazzi binary installer from http://download.paparazziuav.org/darwin/&lt;br /&gt;
# Install paparazzi by double clicking on the downloaded file paparazzi.mpkg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to follow the standard Paparazzi [[Git]] install then the prerequisite software can be installed by downloading the paparazzi-tools binary installer from http://TODO find a place to host this file and installing the tools by doublclicking on the downloaded file paparazzi-tools.mpkg&lt;br /&gt;
&lt;br /&gt;
=Running Paparazzi=&lt;br /&gt;
Paparazzi can be started in the usual way&lt;br /&gt;
 cd ~/paparazzi&lt;br /&gt;
 ./paparazzi&lt;br /&gt;
&lt;br /&gt;
== Changing the GTK look and feel ==&lt;br /&gt;
&lt;br /&gt;
Run /opt/local/bin/switch2 to select a different theme.&lt;br /&gt;
More detailed instructions can be found at http://gtk.php.net/manual/en/html/tutorials/tutorials.installation.macosx-stepbystep.html&lt;br /&gt;
&lt;br /&gt;
Additional themes can be downloaded from http://art.gnome.org/themes/gtk2&lt;br /&gt;
&lt;br /&gt;
== USB Drivers for Telemetry ==&lt;br /&gt;
&lt;br /&gt;
No drivers need to be installed in order to program either the STM32 based or LPC2148 based autopilot boards (ie TINY, TWOG, Booz, Lisa/L, Lisa/M) using a USB port. However telemetry between the vehicle and ground control station requires a modem. On an Apple Mac this will generally be connected to a USB port. Whatever modem is used it will be necessary to load drivers that allow Paparazzi to communicate with the modem. It is not possible to describe all possible modems and their configuration. However the most commonly used chipset for USB to serial communication is produced by FTDI. Below is described the installation of the FTDI drivers. This can be used as a guide for installing drivers for modems using other chipsets.   &lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
FTDI drivers can be downloaded from [http://www.ftdichip.com/Drivers/VCP.htm FTDI]&lt;br /&gt;
&lt;br /&gt;
The device will probably become available as something like /dev/tty.usbserial-000013FD when connected. Note that different USB ports get different addresses. When connecting to another port the same device came up as /dev/tty.usbserial-000014FA&lt;br /&gt;
&lt;br /&gt;
Since Paparazzi is currently configured to use /dev/ttyUSB0 it's easiest to just create a link to the required device.&lt;br /&gt;
# Remove all USB devices from the computer and run the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; hopefully this will not list anything&lt;br /&gt;
# Plug in your radio and repeat the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; this should now list the serial port that the radio has been connected to. In my case I get&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Next we need to create a symbolic link to the tty.usbserial device listed to /dev/ttyUSB0 in my case the command is &amp;lt;code&amp;gt;sudo ln -s /dev/tty.usbserial-000013FD /dev/ttyUSB0&amp;lt;/code&amp;gt;&lt;br /&gt;
# To check that everything is correct run the first command again &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; and you should get something like this&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&lt;br /&gt;
#: lrwxr-xr-x  1 root  wheel         0 20 Jan 14:42 /dev/ttyUSB0 -&amp;gt; /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the FTDI driver (kernel extension) is loaded it takes over for all FTDI connections. This means that it will not be possible to program the Lisa/L or Lisa/M boards while the driver is loaded.&lt;br /&gt;
&lt;br /&gt;
To unload the driver use the command&lt;br /&gt;
 sudo kextunload/System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
This should not give an error. if it does then try again a few times after quitting programs that may have used the connection. If the driver still fails to unload then a reboot may be required.&lt;br /&gt;
&lt;br /&gt;
When it comes time to connect the modem again you'll again need the driver loaded. This can be done with the complementary command&lt;br /&gt;
 sudo kextload/System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
&lt;br /&gt;
== Workaround for Issues with errors (Device busy) when trying to program a Lisa/L ==&lt;br /&gt;
Programming the Lisa on OS X&lt;br /&gt;
&lt;br /&gt;
The problem:&lt;br /&gt;
The &amp;quot;default&amp;quot; vendor id and product id for the ftdi device on Lisa is the same one used by all the manufacturers of clone usb-serial interfaces. This isn't an issue on Linux because of the udev rules file we use does not load the ftdi drivers for lisas programming interface. Windows and Mac OS X don't use this file so they can only use vendor id and product id. &lt;br /&gt;
So as soon as you plug in Lisa they load USB-&amp;gt;serial port drivers for the two ports they believe are on Lisa causing a conflict. The programming of Lisa happens through a different mechanism and does not want the programming interface of Lisa to be taken by the FTDI driver which has already been loaded. For OS X there is a hack we can do that makes it better until we can get vendor and product ids sorted out. It involves modifying the /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist file. We change it so only the first of the two serial interfaces is loaded. The second is not as it is the programming interface.&lt;br /&gt;
&lt;br /&gt;
The File (edit with a text editor):&lt;br /&gt;
 /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist&lt;br /&gt;
&lt;br /&gt;
Here is a diff between a &amp;quot;vanilla OS X&amp;quot; and one that has been modified (Essentially below was removed):&lt;br /&gt;
 quadzilla:Contents root# diff ~/Info.plist Info.plist &lt;br /&gt;
 1784,1805d1783&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232C_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
 1830,1853d1807&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232H_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bcdDevice&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1792&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have edited the file&lt;br /&gt;
 - sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
 - sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
To reload the driver or you can just reboot.&lt;br /&gt;
&lt;br /&gt;
It is expected as Paparazzi moves to supporting more operating systems that unique product and vendor ids will be obtained thus removing the need for this step.&lt;br /&gt;
&lt;br /&gt;
=Installing FlightGear=&lt;br /&gt;
FlightGear has been packaged for use on OS X. This package can be downloaded from:&lt;br /&gt;
http://macflightgear.sourceforge.net/home/downloads/&lt;br /&gt;
&lt;br /&gt;
There are currently two packages available. The one released March 18, 2010 (2.0.0) installs and runs properly on OS X 10.6. Follow the directions [http://macflightgear.sourceforge.net/home/documents/users-guide/ here] for installation and basic usage. Additional documentation can be found  [http://macflightgear.sourceforge.net/home/documents/ here]. The Development Snapshot from August 21, 2010 does not seem as stable (did not work properly when tried on one machine).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a patch available for crashes encountered on the splash screen, as detailed here: http://macflightgear.sourceforge.net/a-patch-that-prevents-fg-200-from-crash-on-launch-is-available&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_launchgui_OSX_pprzoptions.png|thumb|350px|Screenshot of FlightGear launch gui in OS X with options for visualizing Paparazzi simulations]]&lt;br /&gt;
Once FlightGear is installed, the GUI launcher can be used to set common options. By clicking on the Advanced Features arrow, one can gain access to many more options as well as an interface to specify command line options (the Others tab). This is where one can specify the flight dynamics model and network connectivity required for visualizing Paparazzi simulations as described on the [[Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In Paparazzi Center, add to the simulator command the &amp;lt;tt&amp;gt;-fg&amp;lt;/tt&amp;gt; option plus the IP address of the machine running flightgear in this case the loopback interace is used as Flightgear and Paparazzi are running on the same machine:&lt;br /&gt;
 .../sw/simulator/launchsitl -a TJ1 -fg 127.0.0.1 -boot -norc&lt;br /&gt;
Note TJ1 is the name of the aircraft you must substitute this with the name of your aircraft.&lt;br /&gt;
* Launch Flight Gear with the following set in the others tab under advanced settings:&lt;br /&gt;
 --fdm=null --native-gui=socket,in,30,,5501,udp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_pprz_sim_OSX.png|thumb|right|350px|Screenshot of Flightgear visualizing the default Microjet simulation in OS X (not the default Muret, FR location)]]&lt;br /&gt;
&lt;br /&gt;
If it is night in FlightGear and you wish to view the simulation in daylight, follow the instructions on the [[Simulation#Why is it night in Flight Gear, if my sim is flying during the day?|Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
=Simulations Using JSBSim=&lt;br /&gt;
[http://jsbsim.sourceforge.net/index.html JSBSim] is an open-source flight dynamics and control software library. It can provide a more realistic simulation environment over the basic built-in Paparazzi simulator. See the [[Simulation|Simulation]] page for background information and how to run a normal simulation. After this can be done in a satisfactory manner, follow the steps below to utilize the JSBSim flight dynamics model.&lt;br /&gt;
&lt;br /&gt;
Note the current steps are a work in progress. As soon as they are checked, some changes to the source will be made and steps removed.&lt;br /&gt;
&lt;br /&gt;
==How to run JSBSim simulations:==&lt;br /&gt;
&lt;br /&gt;
Please see [[Simulation#JSBSim]] for instructions on how to use the JSBSim FDM in simulations, with the following changes:&lt;br /&gt;
&lt;br /&gt;
* Install the JSBSim libraries onto your system. This should already be installed with &amp;lt;tt&amp;gt;paparazzi-tools&amp;lt;/tt&amp;gt;, but if it isn't:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sudo port install jsbsim&amp;lt;/code&amp;gt;&lt;br /&gt;
It uses code from the cvs repo, so it should be the most up-to-date source.&lt;br /&gt;
&lt;br /&gt;
* Compile your airframe for the jsbsim target. Launch the GCS and Server as per normal simulation. The simulation needs the &amp;lt;tt&amp;gt;-jsbsim&amp;lt;/tt&amp;gt; option and the &amp;lt;tt&amp;gt;-b 224.255.255.255&amp;lt;/tt&amp;gt; option, like this:&lt;br /&gt;
  &amp;lt;code&amp;gt;&amp;lt;paparazzi home directory&amp;gt;/sw/simulator/launchsitl  -a &amp;lt;aircraft_name&amp;gt; -jsbsim  -b 224.255.255.255 -boot -norc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JSBSim simulation can be used with FlightGear visualization as described above, by adding the &amp;lt;tt&amp;gt;-fg 127.0.0.1&amp;lt;/tt&amp;gt; option in addition, like this:&lt;br /&gt;
  &amp;lt;code&amp;gt;&amp;lt;paparazzi home directory&amp;gt;/sw/simulator/launchsitl  -a &amp;lt;aircraft_name&amp;gt; -jsbsim  -b 224.255.255.255 -boot -norc -fg 127.0.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For information on using an optional initialization file for the simulation initial conditions and how to set the launch velocity, please see [[Simulation#Using_Optional_Parameters]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Usaaib</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=9140</id>
		<title>Installation/MacOSX</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=9140"/>
		<updated>2011-03-14T02:59:32Z</updated>

		<summary type="html">&lt;p&gt;Usaaib: /* Installing from source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The task of supporting Paparazzi on  Apple MacOS X is ongoing as the project evolves and the more people adapt it the process will be streamlined. Presently it is known that Paparazzi will install on OSX versions 10.5.8, 10.6, 10.6.2 and 10.6.6. &lt;br /&gt;
&lt;br /&gt;
= Intro =&lt;br /&gt;
Would it not be great to also be able to run Paparazzi from your shiny Apple Mac? Well, this page explains how you can manage to do just that.&lt;br /&gt;
&lt;br /&gt;
= Installing from source =&lt;br /&gt;
The tools that are required to work with paparazzi on a Mac are installed from MacPorts. All of the commands are given by terminal commands, please open your terminal first.&lt;br /&gt;
&lt;br /&gt;
In case you '''already have MacPorts installed''', it is advised to run the following steps before proceeding:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;check that /opt/local/bin is the first entry in your PATH, easy to check by giving the following command&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;env&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then give the following command to make sure your ports are up-to-date&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo port selfupdate &amp;amp;&amp;amp; sudo port upgrade outdated&amp;lt;/pre&amp;gt;&lt;br /&gt;
..great, you now can run the installation steps starting from step '''3''' below.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don't already have MacPorts installed run the following steps:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the latest XCode http://developer.apple.com/technologies/tools/xcode.html&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install MacPorts from http://www.macports.org/install.php&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the file &amp;lt;code&amp;gt;/opt/local/etc/macports/sources.conf&amp;lt;/code&amp;gt; and above the &amp;lt;code&amp;gt;rsync://...&amp;lt;/code&amp;gt; line add &amp;lt;code&amp;gt;rsync://rsync.paparazziuav.org/macports/ports/&amp;lt;/code&amp;gt; It is important that this line comes before the path to the standard ports as some of the Paparazzi ports are intended to replace the standard versions. The file is write protected so it will be necessary to be root in order to edit it. The simplest way is to open a terminal window and use nano thus: &lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo nano /opt/local/etc/macports/sources.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now update the available ports with the command:&lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port selfupdate&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If you do not have your own copy of the paparazzi source then you now need to install paparazzi:&lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port install paparazzi&amp;lt;/pre&amp;gt; &lt;br /&gt;
OR if you do already have your own copy of the paparazzi source and you want to keep in then the tools required by paparazzi can be installed with the command &lt;br /&gt;
 &amp;lt;pre&amp;gt;sudo port install paparazzi-tools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;...Then go and have lunch, get a coffee, get some sleep. This will probably take a long time.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to follow the standard Paparazzi [[Git]] install then the prerequisite software can be installed by running the command &amp;lt;code&amp;gt;sudo port install paparazzi-tools&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If you continually experience problems installing paparazzi or paparazzi-tools then it may be that you have some other conflicting software installed. i.e. an old version of a library in /usr.&lt;br /&gt;
&lt;br /&gt;
One way to work around issues relating to prior MacPort installs that has been found is to clean out everything MacPorts has installed and install from scratch using the latest MacPorts&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port -f uninstall installed&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port clean --all uninstalled&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port selfupdate&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;sudo port -f install paparazzi-tools&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sudo port -f install paparazzi&amp;lt;/code&amp;gt;&lt;br /&gt;
This was in fact the process used to check that the code installed on a clean machine.&lt;br /&gt;
&lt;br /&gt;
== Keeping source files for debugging ==&lt;br /&gt;
If you wish to debug code using the source install then you'll find that many of the source files for the libraries are missing.&lt;br /&gt;
&lt;br /&gt;
This is because MacPorts cleans up the build artefacts and and source files after the installation is complete. This behaviour can be changed by adding the -k option to the port command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 sudo port -k install paparazzi-tools&lt;br /&gt;
This will result in all of the source and build artefact files being left on the hard disk.&lt;br /&gt;
&lt;br /&gt;
Should you later wish to clean up these files you can do so with the clean command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 sudo port clean installed&lt;br /&gt;
&lt;br /&gt;
= Installation using the binary installer =&lt;br /&gt;
# Install the latest XCode http://developer.apple.com/technologies/tools/xcode.html&lt;br /&gt;
# Download the paparazzi binary installer from http://download.paparazziuav.org/darwin/&lt;br /&gt;
# Install paparazzi by double clicking on the downloaded file paparazzi.mpkg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to follow the standard Paparazzi [[Git]] install then the prerequisite software can be installed by downloading the paparazzi-tools binary installer from http://TODO find a place to host this file and installing the tools by doublclicking on the downloaded file paparazzi-tools.mpkg&lt;br /&gt;
&lt;br /&gt;
=Running Paparazzi=&lt;br /&gt;
Paparazzi can be started in the usual way&lt;br /&gt;
 cd ~/paparazzi&lt;br /&gt;
 ./paparazzi&lt;br /&gt;
&lt;br /&gt;
== Changing the GTK look and feel ==&lt;br /&gt;
&lt;br /&gt;
Run /opt/local/bin/switch2 to select a different theme.&lt;br /&gt;
More detailed instructions can be found at http://gtk.php.net/manual/en/html/tutorials/tutorials.installation.macosx-stepbystep.html&lt;br /&gt;
&lt;br /&gt;
Additional themes can be downloaded from http://art.gnome.org/themes/gtk2&lt;br /&gt;
&lt;br /&gt;
== USB Drivers for Telemetry ==&lt;br /&gt;
&lt;br /&gt;
No drivers need to be installed in order to program either the STM32 based or LPC2148 based autopilot boards (ie TINY, TWOG, Booz, Lisa/L, Lisa/M) using a USB port. However telemetry between the vehicle and ground control station requires a modem. On an Apple Mac this will generally be connected to a USB port. Whatever modem is used it will be necessary to load drivers that allow Paparazzi to communicate with the modem. It is not possible to describe all possible modems and their configuration. However the most commonly used chipset for USB to serial communication is produced by FTDI. Below is described the installation of the FTDI drivers. This can be used as a guide for installing drivers for modems using other chipsets.   &lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
FTDI drivers can be downloaded from [http://www.ftdichip.com/Drivers/VCP.htm FTDI]&lt;br /&gt;
&lt;br /&gt;
The device will probably become available as something like /dev/tty.usbserial-000013FD when connected. Note that different USB ports get different addresses. When connecting to another port the same device came up as /dev/tty.usbserial-000014FA&lt;br /&gt;
&lt;br /&gt;
Since Paparazzi is currently configured to use /dev/ttyUSB0 it's easiest to just create a link to the required device.&lt;br /&gt;
# Remove all USB devices from the computer and run the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; hopefully this will not list anything&lt;br /&gt;
# Plug in your radio and repeat the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; this should now list the serial port that the radio has been connected to. In my case I get&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Next we need to create a symbolic link to the tty.usbserial device listed to /dev/ttyUSB0 in my case the command is &amp;lt;code&amp;gt;sudo ln -s /dev/tty.usbserial-000013FD /dev/ttyUSB0&amp;lt;/code&amp;gt;&lt;br /&gt;
# To check that everything is correct run the first command again &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; and you should get something like this&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&lt;br /&gt;
#: lrwxr-xr-x  1 root  wheel         0 20 Jan 14:42 /dev/ttyUSB0 -&amp;gt; /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the FTDI driver (kernel extension) is loaded it takes over for all FTDI connections. This means that it will not be possible to program the Lisa/L or Lisa/M boards while the driver is loaded.&lt;br /&gt;
&lt;br /&gt;
To unload the driver use the command&lt;br /&gt;
 sudo kextunload/System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
This should not give an error. if it does then try again a few times after quitting programs that may have used the connection. If the driver still fails to unload then a reboot may be required.&lt;br /&gt;
&lt;br /&gt;
When it comes time to connect the modem again you'll again need the driver loaded. This can be done with the complementary command&lt;br /&gt;
 sudo kextload/System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
&lt;br /&gt;
== Workaround for Issues with errors (Device busy) when trying to program a Lisa/L ==&lt;br /&gt;
Programming the Lisa on OS X&lt;br /&gt;
&lt;br /&gt;
The problem:&lt;br /&gt;
The &amp;quot;default&amp;quot; vendor id and product id for the ftdi device on Lisa is the same one used by all the manufacturers of clone usb-serial interfaces. This isn't an issue on Linux because of the udev rules file we use does not load the ftdi drivers for lisas programming interface. Windows and Mac OS X don't use this file so they can only use vendor id and product id. &lt;br /&gt;
So as soon as you plug in Lisa they load USB-&amp;gt;serial port drivers for the two ports they believe are on Lisa causing a conflict. The programming of Lisa happens through a different mechanism and does not want the programming interface of Lisa to be taken by the FTDI driver which has already been loaded. For OS X there is a hack we can do that makes it better until we can get vendor and product ids sorted out. It involves modifying the /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist file. We change it so only the first of the two serial interfaces is loaded. The second is not as it is the programming interface.&lt;br /&gt;
&lt;br /&gt;
The File (edit with a text editor):&lt;br /&gt;
 /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist&lt;br /&gt;
&lt;br /&gt;
Here is a diff between a &amp;quot;vanilla OS X&amp;quot; and one that has been modified (Essentially below was removed):&lt;br /&gt;
 quadzilla:Contents root# diff ~/Info.plist Info.plist &lt;br /&gt;
 1784,1805d1783&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232C_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
 1830,1853d1807&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232H_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bcdDevice&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1792&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have edited the file&lt;br /&gt;
 - sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
 - sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
To reload the driver or you can just reboot.&lt;br /&gt;
&lt;br /&gt;
It is expected as Paparazzi moves to supporting more operating systems that unique product and vendor ids will be obtained thus removing the need for this step.&lt;br /&gt;
&lt;br /&gt;
=Installing FlightGear=&lt;br /&gt;
FlightGear has been packaged for use on OS X. This package can be downloaded from:&lt;br /&gt;
http://macflightgear.sourceforge.net/home/downloads/&lt;br /&gt;
&lt;br /&gt;
There are currently two packages available. The one released March 18, 2010 (2.0.0) installs and runs properly on OS X 10.6. Follow the directions [http://macflightgear.sourceforge.net/home/documents/users-guide/ here] for installation and basic usage. Additional documentation can be found  [http://macflightgear.sourceforge.net/home/documents/ here]. The Development Snapshot from August 21, 2010 does not seem as stable (did not work properly when tried on one machine).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a patch available for crashes encountered on the splash screen, as detailed here: http://macflightgear.sourceforge.net/a-patch-that-prevents-fg-200-from-crash-on-launch-is-available&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_launchgui_OSX_pprzoptions.png|thumb|350px|Screenshot of FlightGear launch gui in OS X with options for visualizing Paparazzi simulations]]&lt;br /&gt;
Once FlightGear is installed, the GUI launcher can be used to set common options. By clicking on the Advanced Features arrow, one can gain access to many more options as well as an interface to specify command line options (the Others tab). This is where one can specify the flight dynamics model and network connectivity required for visualizing Paparazzi simulations as described on the [[Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In Paparazzi Center, add to the simulator command the &amp;lt;tt&amp;gt;-fg&amp;lt;/tt&amp;gt; option plus the IP address of the machine running flightgear in this case the loopback interace is used as Flightgear and Paparazzi are running on the same machine:&lt;br /&gt;
 .../sw/simulator/launchsitl -a TJ1 -fg 127.0.0.1 -boot -norc&lt;br /&gt;
Note TJ1 is the name of the aircraft you must substitute this with the name of your aircraft.&lt;br /&gt;
* Launch Flight Gear with the following set in the others tab under advanced settings:&lt;br /&gt;
 --fdm=null --native-gui=socket,in,30,,5501,udp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_pprz_sim_OSX.png|thumb|right|350px|Screenshot of Flightgear visualizing the default Microjet simulation in OS X (not the default Muret, FR location)]]&lt;br /&gt;
&lt;br /&gt;
If it is night in FlightGear and you wish to view the simulation in daylight, follow the instructions on the [[Simulation#Why is it night in Flight Gear, if my sim is flying during the day?|Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
=Simulations Using JSBSim=&lt;br /&gt;
[http://jsbsim.sourceforge.net/index.html JSBSim] is an open-source flight dynamics and control software library. It can provide a more realistic simulation environment over the basic built-in Paparazzi simulator. See the [[Simulation|Simulation]] page for background information and how to run a normal simulation. After this can be done in a satisfactory manner, follow the steps below to utilize the JSBSim flight dynamics model.&lt;br /&gt;
&lt;br /&gt;
Note the current steps are a work in progress. As soon as they are checked, some changes to the source will be made and steps removed.&lt;br /&gt;
&lt;br /&gt;
==How to run JSBSim simulations:==&lt;br /&gt;
&lt;br /&gt;
Please see [[Simulation#JSBSim]] for instructions on how to use the JSBSim FDM in simulations, with the following changes:&lt;br /&gt;
&lt;br /&gt;
* Install the JSBSim libraries onto your system. This should already be installed with &amp;lt;tt&amp;gt;paparazzi-tools&amp;lt;/tt&amp;gt;, but if it isn't:&lt;br /&gt;
  &amp;lt;code&amp;gt;$ sudo port install jsbsim&amp;lt;/code&amp;gt;&lt;br /&gt;
It uses code from the cvs repo, so it should be the most up-to-date source.&lt;br /&gt;
&lt;br /&gt;
* Compile your airframe for the jsbsim target. Launch the GCS and Server as per normal simulation. The simulation needs the &amp;lt;tt&amp;gt;-jsbsim&amp;lt;/tt&amp;gt; option and the &amp;lt;tt&amp;gt;-b 224.255.255.255&amp;lt;/tt&amp;gt; option, like this:&lt;br /&gt;
  &amp;lt;code&amp;gt;&amp;lt;paparazzi home directory&amp;gt;/sw/simulator/launchsitl  -a &amp;lt;aircraft_name&amp;gt; -jsbsim  -b 224.255.255.255 -boot -norc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JSBSim simulation can be used with FlightGear visualization as described above, by adding the &amp;lt;tt&amp;gt;-fg 127.0.0.1&amp;lt;/tt&amp;gt; option in addition, like this:&lt;br /&gt;
  &amp;lt;code&amp;gt;&amp;lt;paparazzi home directory&amp;gt;/sw/simulator/launchsitl  -a &amp;lt;aircraft_name&amp;gt; -jsbsim  -b 224.255.255.255 -boot -norc -fg 127.0.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For information on using an optional initialization file for the simulation initial conditions and how to set the launch velocity, please see [[Simulation#Using_Optional_Parameters]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Usaaib</name></author>
	</entry>
</feed>