Difference between revisions of "GettingTheGCSRunningonAGumstixBoard"

From PaparazziUAV
Jump to navigation Jump to search
 
(250 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Intro =
= Introduction =


Please take note that the page is in work at the moment and that I am doing my best to have it updated as soon as possible.
Would it not be great to have your small UAS in your backpack, throw it in the air and monitor and even adjust the flight via a small device in your pocket? If you think this would be awesome, read on, since that is what this page is all about. It is the first attempt and will not be about iPad, Android Phones, Amazon Kindles or the likes as a ground station. For this we have other wiki pages. No, we will use a trusted solution; A Gumstix board with Linux on it connected to a small screen.
 
Would it not be great to have your small UAS in your backpack, throw it in the air and monitor and even adjust the flight via a small device in your pocket? If you think this would be awesome, read on, since that is what this page is all about. It is the first attempt and will not be about iPad, Android Phones, Amazon Kindles or the likes as a ground station. For this we have other wiki pages. No, we will use a thrusted solution; A Gumstix with Linux on it.
[[Image:GumstixBoard_OpenUAS.jpg|right|Gumstix carrier board and touchscreen]]


= Outcome =
= Outcome =


Have the Paparazzi GCS monitoring and adjusting a UA via an small Gumstix based device.
The outcome of our efforts will be to:
 
#Have the Paparazzi GCS running on a small [https://www.gumstix.com Gumstix] computer board so we can monitoring and adjust the flight of our unmanned aircraft with just a small simple device.
#Have fully correct instructions on how to get it to work on this wiki page.
 
{TODO add screenshot of working setup}


= Hardware =
= Hardware =


What do you need to get this working:
What do you need to get your groundstation up and running:


# A gumstix board
# A [http://www.gumstix.com/ gumstix] board with a power supply
# Camera
# 8 GB or higher capacity micro SD card, the faster the better
#3.5" screen (such as the LCD panel with the Chestnut) or 4.3"
# USB to mini-USB cable
# Regular UTP network cable
# A small, or big screen, preferably with touch such as the 4.3" LCD panel that comes with the Chestnut board kit or this [https://www.gumstix.com/store/product_info.php?products_id=344 fully integrated Gumstix board]
# Micro-SD to USB adapter or card reader
# A computer that runs Linux OS


= Software =
= Software =


Needed softwares to run this application:
We will install the following on the micro SD card
 
#Ubuntu OS for Gumstix
#Support libraries
#Paparazzi main software


#Paparazzi software
==Conventions==
#Kivy library
Note: You can just copy the line(s) in the box and paste them in your terminal.
#Ubuntu kernel on your Gumstix
'''But do not copy the $ or # sign at the beginning of a line'''. This symbol is just added on this page to show that the command is to be pasted at a terminal prompt as regular user($) or root user(#).
#Driver for the camera in order to be used with the Gumstix
$  this is an example of how a regular user command for your terminal looks


= How to start =
= Get the Operating System =


Well, we have some tutorials on this wiki about how to install Paparazzi. If you need any help to install Kivy, please look at their website, you will find there a good tutorial about how to get started.
= Create an OS =
Pre-requisites
Pre-requisites


    4GB SD card or larger
Have the micro SD card at hand and download this custom OS with everything already installed for a gumstix board and Chestnut43 with touchscreen.
    Download the pre-built image from [[http://releases.linaro.org/12.07/android/images/vexpress-ics-gcc47-armlt-staging-alt-open/vexpress-ics-gcc47-armlt-staging-alt-open.img.gz vexpress-ics-gcc47-armlt-staging-alt-open.img.gz]]


Installation Steps
{TODO: provide an image with everything already fully installed}


    unzip the downloaded pre-build image
==Installation Steps==
    Insert SD card and note the assigned '/dev/sdX'


    $ dmesg
===I'm in ahurry===
    $ SDCARD=/dev/sdX  (sdcard found from dmesg above)
    $ sudo dd bs=64k if=vexpress-ics-gcc47-armlt-staging-alt-open.img of=$SDCARD   


    Continue with the instructions below to Configure your TC2 board to boot the image [link].
If you are eager to start and do not want to install everything thant download [this file] and follow the steps of how to copy it ont an microSD card


Once you have the image written on your sd card you can insert it in the Gumstix and boot up.
Unzip the downloaded OS via
Then type the following in the CuteCom command prompt:
    printenv
    setenv defaultdisplay lcd43
    saveenv
    run mmcboot
After that you can reboot your system.


= Connecting peripherals=
$ gunzip gcsStix.img.gz
When you have a Linux version running on your Gumstix, you can add a LCD, or a mouse, or a keyboard.


To set up your LCD you must follow these steps:
Insert micro SD card in an SD reader and plug it in a USB port of your PC, then on the terminal type:  


Connect trough CuteCom to the Gumstix
$ dmesg
Restart the board and hit a key within 5 seconds:
<nowiki>
[170074.104194] sd 7:0:0:0: [sdb] Write Protect is off
[170074.104199] sd 7:0:0:0: [sdb] Mode Sense: 0b 00 00 08
[170074.104999] sd 7:0:0:0: [sdb] No Caching mode page present
[170074.105005] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[170074.107904] sd 7:0:0:0: [sdb] No Caching mode page present
[170074.107911] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[170074.109282]  sdb: sdb1 sdb2
[170074.112159] sd 7:0:0:0: [sdb] No Caching mode page present
[170074.112165] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[170074.112169] sd 7:0:0:0: [sdb] Attached SCSI removable disk
[170074.904553] kjournald starting.  Commit interval 5 seconds
[170074.916813] EXT3-fs (sdb2): using internal journal
[170074.916823] EXT3-fs (sdb2): recovery complete
[170074.916826] EXT3-fs (sdb2): mounted filesystem with ordered data mode
</nowiki>
Note: for my local machine the micro SD card was mounted on /dev/sdb as shown in the code above. Be aware of what you are doing at the next steps, as dd can completely overwrite your hard drive or other devices.
Where sdX is the SD reader device found with the command above, replace sdX with your specific device in the following commands and /path/to/file with the path to your previously downloaded Gumstix image file.


    Hit any key to stop autoboot: 5
$ SDCARD=/dev/sdX
$ sudo dd if=/path/to/file/gcsStix.img of=$SDCARD bs=64k


Then type the following in the CuteCom command prompt:
This will take several minutes depending on your configuration and when this is done, safely remove the micro SD card from your computer by right clicking on it and select eject. Then, insert the micro SD card into the Gumstix micro SD slot.


    setenv defaultdisplay lcd43
== Connecting peripherals==
When you have a Linux version running on your Gumstix, you can add a LCD, or a mouse, or a keyboard. First, install CuteCom on your local machine running on a terminal:


Or, if you are using a 3.5" screen (such as the LCD panel with the Palo35):
To set up your LCD you must follow these steps:
#Connect LCD flex cable to Gumstix connector
#Attach USB-to-mini-USB cable to both your local machine and Gumstix board.
#Power up Gumstix board
#Install and start cutecom
$ sudo apt-get install cutecom
$ cutecom
A window will pop up and you must adjust the pull-down menu settings as follows:
Device will usually be either /dev/ttyUSB0 or /dev/ttyUSB1 . You can figure this out by typing on your command prompt:
dmesg|tail
Note: This command lists the last connected devices.
Baud rate must be set to 115200, data bits to 8, stop bits to 1, parity to none, handshake none checked, open for both reading and writing checked, apply settings when opening checked, choose "CR,LF end line" and Char delay 1ms.


    setenv defaultdisplay lcd35
Click on Open device and your connection should start. If you encounter any problems, but you are sure you did everything right, check if your Gumstix board overheated or restart it.


Connect through CuteCom to the Gumstix, restart the board and hit a key within 5 seconds:
Hit any key to stop autoboot: 5
Then type the following in the CuteCom command prompt:
setenv defaultdisplay lcd43
Or, if you are using a 3.5" screen (such as the LCD panel with the Palo35):
setenv defaultdisplay lcd35
You can save this setting for future boots by saving it:
You can save this setting for future boots by saving it:
saveenv
Finally, continue with the boot process by typing in CuteCom command prompt:
boot
==Connect to the Gumstix through the network==


    saveenv
If you want to send files to the Gumstix, you can do it via a ssh connection. In order to do this, both devices, your computer and the Gumstix must be connected to the same network. Once you've done this, you can start setting up the connection.
In order to do so you need to know the IP address of the  Gumstix.


Finally, continue with the boot process by typing in CuteCom command prompt:
The first thing you need in order to get rid of the USB to mini-USB cable and its physical limitations is to create a user and set a password for it and install openssh.
Please feel free to replace "sergiu" with whatever username you choose, but keep in mind that you must replace it everywhere you encounter "sergiu".
useradd -c "Sergiu S" -m -s "/bin/bash" -G sudo sergiu
Note: -G option will add the user to the specified group.
$ passwd sergiu
You will be asked to enter a password and confirm it. Type your password, then hit CTRL + Enter key combination and then retype your password. If successful, you will get this message:
passwd: password updated successfully


    boot
$ sudo apt-get install openssh-server
Once you have accomplished this, you must discover the Gumstix ip address, typing on CuteCom:
$ ifconfig -a
Note: if you can't use this command for any reason you can get a list with all the IP addresses on the network using 'arp -a' on your machine.
Among the data returned, you will see something like this:
<nowiki>
eth0      Link encap:Ethernet  HWaddr 00:15:c9:28:c9:ff 
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::215:c9ff:fe28:c9ff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3960 errors:0 dropped:0 overruns:0 frame:0
          TX packets:727 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3734905 (3.7 MB)  TX bytes:63765 (63.7 KB)
          Interrupt:80
</nowiki>


Now you should be able to connect using:
$ ssh sergiu@192.168.0.100 {TODO USERNAME change}
You will be asked to type the password you previously set for the user.


=Connect to the Gumstix trought the network=
==Working With Gumstix==
Note: You may get some errors during this installation. This depends on how well you are cooling down your system, how much RAM you have on your platform and so on.  If you get errors when trying install a large number of packages/libraries at once, try to divide them into smaller groups.


1. Add a swap file
Due to lack of RAM memory it is possible to see errors like this:
==== ERROR [while installing ocamlfind.1.3.3] ====


If you want to send files to the Gumstix, you can do it via a ssh connection. In order to do this, both devices, your computer and the Gumstix must be connected to the same same network. Once you did this, you can start setting up the connection.
Internal error:
Fistly, you need to know the IP address of the  Gumstix. Start by opening CuteCom and connect to the device.
  # opam-version    1.0.1 (1.0.0-84-g9b3ff34)
When the system loaded, type into CuteCom command prompt:
# os              linux
opam: "fork" failed: Cannot allocate memory
'opam install ocamlfind' failed.
The solution to this problem is to create a swap file. For this case I created a 512 MB swap file, but you should adapt its size to the size of your SD card and the needed memory size.


  ifconfig -a (if you can't use this command from any reason you can get a list with all the ips on the network using 'arp -a')
Execute these commands to create and mount a swap file:
sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=524288 (will create 512 MB swap file)
sudo mkswap /swapfile1
sudo chown root:root /swapfile1
sudo chmod 0600 /swapfile1
sudo swapon /swapfile1
Note: this will remove the swap file each time you shutdown. If you need the file, you have to repeat the swapon command after each boot. An alternative would be to have it mounted every time you boot the system.
For more explanations you can go to [http://www.cyberciti.biz/faq/linux-add-a-swap-file-howto/ this website]


Among the data returned, you will see something like this:
2. Autologin


    <nowiki>eth0     
Remove the login prompt
    Link encap:Ethernet  HWaddr 00:15:c9:28:c9:ff 
    inet addr:169.16.29.3</nowiki>


Now enter into the command prompt:
You may want to set your OS to auto-login. Why? Because there may be times you don't have a keyboard for the Gumstix around. You can find a good explanation of this [http://www.liberiangeek.net/2012/03/automatically-login-to-ubuntu-12-04-precise-pangolin/ here] .
    sudo dhclient eth1 169.16.29.3


When this is done, install on the Gumstix openssh write into the command prompt:
$ sudo locale-gen en_US.UTF-8
    sudo apt-get install openssh-server
$ sudo apt-get install vim nano # (or use your favorite editor)
Set a password:
    sudo passwd username
    password  (replace password with any string you want as password)
    password  (retype the password you chose)
To add the user to the sudoers group do:
sudo adduser username sudo


Now you should be able to connect using:
Note: if you get an error at this step, use the --fix-missing option as recommended.
    ssh root@169.16.29.3


= Remove the login prompt=
$ sudo vim /etc/lightdm/lightdm.conf
You may want to set your OS to auto-login. Why? Because you may not have at any time a keyboard for the Gumstix around. It is explained [http://www.liberiangeek.net/2012/03/automatically-login-to-ubuntu-12-04-precise-pangolin/ here] very well how to do it.
You have to write in your command prompt:


    sudo vi /etc/lightdm/lightdm.conf
Edit the autologin-user line by replacing the username with your own


and then modify the lines as indicated on the webpage above.
autologin-user=sergiu


There is a chance to get an error like this "Gtk-WARNING **: Locale not supported by C library.". To solve this write into your command prompt:
and add this line:


    sudo locale-gen en_US.UTF-8
autologin-user-timeout=0


or the right locale for your keyboard. If this didn't solve your problem, you may want to read [https://help.ubuntu.com/community/Locale here] more about it.
or the right locale for your keyboard. If this didn't solve your problem, you may want to read [https://help.ubuntu.com/community/Locale here] more about it.


= Remove the Lightdm GUI for freeing memory=
3. More Memory
 
Remove the Lightdm GUI manager in order to free memory
$ sudo apt-get remove lightdm
After this step you '''must''' reboot.
 
4. More speed
 
Remove processes not needed
$ sudo killall -9 NetworkManager  #(for faster system), {TODO in start the config? still needed?}
Because the size of the original image was 4.3 GB, you have to execute the following set of instructions to resize the partition to 8 GB:
 
 
5. Add more space


    sudo apt-get remove lightdm
#Insert the micro SD card in your local machine´s card reader
After this step you must reboot.
#Use gparted to increase the size of the partition
$ sudo apt-get install gparted
$ sudo gparted


= Install paparazzi on the gumstix=
==Install the prerequsites==
Installing one package at a time is the best path to succes since it is likely during installation that you will be asked to re-run some of the commands with the "--fix-missing" option.


#Install Ocaml 4.0
$ sudo apt-get install gtk2-engines-pixbuf
  wget -O ocaml-4.00.0.tar.gz http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00.0.tar.gz
$ sudo apt-get install make #already latest
  tar -xvzf ocaml-4.00.0.tar.gz
  $ sudo apt-get install gcc #already latest
  cd ocaml-4.00.0
$ sudo apt-get install g++ #already latest
  ./configure
$ sudo apt-get install libgsl0-dev
  make world
$ sudo apt-get install gnuplot
  make opt
  $ sudo apt-get install libgnomecanvas2-dev
  umask 022
  $ sudo apt-get install bzip2
  sudo make install
  $ sudo apt-get install git
  git clone https://github.com/OCamlPro/opam.git
  $ sudo apt-get install libusb-dev
  cd opam
  $ sudo apt-get install speech-dispatcher
  ./configure
  $ sudo apt-get install glade
  make (because of overheating you may get some errors, but keep doing 'make')
  $ sudo apt-get install imagemagick
  sudo make install
$ sudo apt-get install libpcre3-dev
  $ sudo apt-get install git-core
$ sudo apt-get install python-usb
$ sudo apt-get install python-lxml
$ sudo apt-get install python-wxgtk2.8
$ sudo apt-get install m4
  $ sudo apt-get install python-yaml
  $ sudo apt-get install subversion
  $ sudo apt-get install libglade2-dev libgnomeui-dev libgnomecanvas2-dev librsvg2-dev libgtkspell-dev libcanberra-gtk-dev --fix-missing
  $ sudo apt-get install libsdl1.2-dev
Create a subdirectory where you will download and install all the libraries and other software tools needed. To keep your home dir tidy use a ''develop'' directory to store all the relevant downloads.


opam init
  $ mkdir ~/develop
eval `opam config env
  $ cd ~/develop/
  130 history
 
  131 sudo shutdown -h now
==OCAML==
  132  ll
 
  133  top
  $ wget http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00.1.tar.gz
  134  ll
  $ tar -xvzf ocaml-4.00.1.tar.gz
  135  tar -xvzf ll
  $ cd ocaml-4.00.1
  136  ll
  $ ./configure
  137 ocaml -version
  $ make world
  138  ocaml-4 -version
  $ make opt
  139 ocaml4 -version
  $ make ocamldoc
  140  which ocaml
  $ make ocamlbuild.native
  141  ulimit -s 65536
  $ make ocamlbuild.byte
  142  ll
  $ sudo make install
  143  cp -av ocaml-4.00.0 /tmp
  $ sudo make installopt
  144  ll
  $ ocaml -version  #(make sure you have the right version, meaning 4.00.1)
  145  ll /tmp
  $ cd ~/develop
  146  ll
 
  147 cd ocaml-4.00.0
==Opam tool==
  148  ll
#Install the OCAML '''Opam''' tool
  149 ./configure
 
  150 make world
  $ git clone https://github.com/OCamlPro/opam.git
  151 make opt
  $ cd opam
  152 make install
  $ ./configure
  153 cd /
  $ make (because of overheating you may get some errors, but keep doing 'make')
  154 ll
  $ sudo make install
  155  cd ~
  $ cd ~/develop
  156  cd ocaml-4.00.0
  $ mkdir ~/.opam
  157 ll
  $ opam init
  158  umask 022
  $ eval `opam config env`
  159 sudo make install
Please select yes.
  160 ocaml -version
  $ sudo opam install ocamlfind
  161 which ocaml
  $ sudo opam install lablgtk
  162  camlp4 -version
  $ sudo opam install pcre-ocaml
  163 sudo  ./build/install.sh
  $ sudo opam install ocamlnet
  164  ocaml -version
  $ sudo opam install xml-light
  165  which ocaml
 
  166 cd usr/local/bin
=portability-support=
  167  cd /usr/local/bin
 
  168  ll oc*
#Get paparazzi-portability-support related files
  169  ./ocaml
 
  170 ocaml -version
  $ sudo apt-get install debhelper devscripts fakeroot build-essential autoconf automake autotools-dev dh-make xutils lintian pbuilder dh-ocaml tcl-dev libxt-dev libXt-devel
  171  ll
  $ cd ~/develop
  172 ./ocaml
$ <nowiki>git clone https://github.com/paparazzi/paparazzi-portability-support.git</nowiki>
  173 ocaml -version
  $ cd paparazzi-portability-support/linux/
  174 which ocaml
  $ sudo ./develenv.sh
  175  su root
  $ cd ivy/
  176  exit
  $ svn checkout http://svn.tls.cena.fr/svn/ivy/ivy-c/trunk ivy-c
  177  ls
  $ cd ivy-c/src/
  178 cd develop
 
  179 ll
Patchthe Makefile with :
  180 cd paparazzi-portability-support/
Patch content:
  181 ll
  --- Makefile.orig 2013-05-23 16:36:45.000000000 +0000
  182  rm *.*
  +++ Makefile 2013-05-23 16:32:22.000000000 +0000
  183 ll
  @@ -28,6 +28,11 @@
  184 rm darwin
FPIC=
  185 rm -r *
  endif
  186 ll
   
  187 rm *
  +MACHINE = $(shell uname -m)
  188  ll
  +ifeq ("$(MACHINE)", "armv7l")
  189  rm /*
  + FPIC = -fPIC
  190  rm ~/develop/paparazzi-portability-support/*
  +endif
  191  rm -r  ~/develop/paparazzi-portability-support/*
  +
  192  ll
   
  193 rm -r ~/develop/paparazzi-portability-support/linux/*
  ifndef PREFIX
  194  yes
export PREFIX=/usr/local
  195  ll
 
  196  rm -rf  ~/develop/paparazzi-portability-support/linux/*
  $ make all
  197  sudo rm -rf ~/develop/paparazzi-portability-support/linux/*
  $ sudo make install
  198  ll
 
  199  cd linux
== IVY ==
  200  ll
 
  201  cd ..
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://www2.tls.cena.fr/products/ivy/  
  202  sudo rm -rf  ~/develop/paparazzi-portability-support/*
 
  203 ll
In the paparazzi project, Ivy is used to send telemetry data to where ever you want.
  204  sudo rm -rf  ~/develop/paparazzi-portability-support/*.*
 
  205  ll
NOTE: Do not confuse this IVY with the Apache Ivy project.  
  206 sudo rm -rf  ~/develop/paparazzi-portability-support/.*
 
  207 cd .git
== Ivy-OCAML ==
  208 ocaml -version
 
  209  wget -O ocaml-4.00.0.tar.gz http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00.0.tar.gz
The Ivy-ocaml is a Library that make it possible to use Ivy via the Ocaml language.
  210 $ cd ocaml-4.00.0
 
  211  cd ~
  $ cd ~/develop/paparazzi-portability-support/linux/ivy/
  212  $ cd ocaml-4.00.0
$ <nowiki>svn checkout http://svn.tls.cena.fr/svn/ivy/ivy-ocaml/trunk ivy-ocaml</nowiki>
  213  cd ocaml-4.00.0
  $ cd ivy-ocaml/
  214 wget -O ocaml-4.00.0.tar.gz http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00.0.tar.gz
  $ make
  215  cd ocaml-4.00.0
  $ sudo PATH=$PATH make install
  216 find -iname ocaml-4.*
 
  217 ll
 
  218  cd ocaml-4.00.0.tar.gz
=== Ivy-python ===
  219  tar -xvwzf ocaml-4.00.0.tar.gz
  220 tar -xvwf ocaml-4.00.0.tar.gz
  221 tar -xvwz ocaml-4.00.0.tar.gz
  222 tar -xvzf ocaml-4.00.0.tar.gz
  223 cd ocaml-4.00.0
  224 ll
  225  ./configure --with-pthreads
  226 make world.opt
  227 ocaml -version
  228 cd ..
  229 sudo apt-get install ocaml
  230  cd ocaml-4.00.0
  231  ll
  232 make world.opt
  233 sudo apt-get update
  234  sudo apt-get upgrade
  235 ocaml -version
  236  sudo apt-get remove ocaml
  237  ocaml -version
  238  cd ..
  239 ll
  240  cd develop/
  241  cd opam/
  242  ./configure
  243  ll
  244  ./configure
  245  make clean
  246  make
  247  sudo make install
  248  opam init
  249 . /home/sergiu/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true
  250  eval `opam config env`
  251  eval 'opam config env'
  252  sudo apt-get install libglade2-dev libgnomeui-dev libgnomecanvas2-dev librsvg2-dev libgtkspell-dev libcanberra-gtk-dev
  253  opam install ocamlfind xml-light pcre-ocamlopam install ocamlfind xml-light pcre-ocaml
  254  opam  ocamlfind xml-light pcre-ocamlopam install ocamlfind xml-light pcre-ocaml
  255 opam --help
  256  opam install ocamlfind xml-light pcre-ocamlopam install ocamlfind xml-light pcre-ocaml
  257 opam
  258 opam install
  259  opam install ocamlfind
  260  top
  261  history
Due to overheating i got errors like
==== ERROR [while installing ocamlfind.1.3.3] ====
Internal error:
  # opam-version    1.0.1 (1.0.0-84-g9b3ff34)
# os              linux
opam: "fork" failed: Cannot allocate memory
'opam install ocamlfind' failed.


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


and I had to shutdown and wait for the system to cool down a little.
  $ cd ~/develop/paparazzi-portability-support/linux/ivy/
Because the problem persisted, I had to add a swap file doing:
  $ <nowiki>svn co http://svn.tls.cena.fr/svn/ivy/ivy-python/trunk ivy-python</nowiki>
  dd if=/dev/zero of=/swapfile1 bs=1024 count=524288 (512 MB )
$ cd ivy-python/
mkswap /swapfile1
$ sudo python setup.py install
chown root:root /swapfile1
  chmod 0600 /swapfile1
swapon /swapfile1
For more explanations you can go to [http://www.cyberciti.biz/faq/linux-add-a-swap-file-howto/ this website]


=Attempt 10=
== Main sourcecode ==
Now all the prequisites are installed, finally we can grab a copy of the full Paparazzi project


    sudo add-apt-repository ppa:paparazzi-uav/ppa
$ cd ~
    (press enter as you will be asked)
$ <nowiki>git clone https://github.com/paparazzi/paparazzi.git</nowiki>
    sudo apt-get install ocaml-findlib libxml-light-ocaml-dev liblablgtk2-ocaml-dev liblablgtk2-gnome-ocaml-dev libocamlnet-ocaml-dev libsdl-ocaml-dev libpcre-ocaml-dev gtk2-engines-pixbuf make gcc g++ libgsl0-dev gnuplot libgnomecanvas2-dev bzip2 git libusb-dev speech-dispatcher glade imagemagick libpcre3-dev
$ cd paparazzi
    sudo apt-get install bzip2 git-core make gcc g++ gnuplot glade imagemagick libpcre3-dev libusb-dev python-usb python-lxml python-wxgtk2.8 speech-dispatcher libgnomecanvas2-dev m4
$ export PPRZ_HOME=~/paparazzi/
    sudo apt-get install python-lxml, python-wxgtk2.8, python-usb, python-yaml
$ export PAPARAZZI_HOME=~/paparazzi/
    sudo apt-get update
  $ export PAPARAZZI_SRC=~/paparazzi/
  sudo apt-get install libocamlnet-ocaml
$ make ground_segment
  sudo apt-get install libocamlnet-ocaml-dev
  could not install  sudo apt-get install liblablgtk-extras-ocaml-dev


Note: because of an error that occured, I installed the packages one by one and the process was succesfully.
Calibrate your touchsreen
$ sudo apt-get install xinput_calibrate
$ X &
$ export DISPLAY=:0
$ xinput_calibrate
You will have to touch the center of the  four circles. When you will have touched all four points, you will get a similar message on your command prompt.


  git clone https://github.com/paparazzi/paparazzi-portability-support.git
  --> Making the calibration permanent <--
  cd paparazzi-portability-support/linux
  copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf'
sudo ./develenv.sh
  Section "InputClass"
  sudo apt-get install libxt-dev tcl8.4-dev
<nowiki> Identifier "calibration" </nowiki>
<nowiki> MatchProduct "ADS7846 Touchscreen" </nowiki>
<nowiki> Option "Calibration" "147 3917 3783 251" </nowiki>
  EndSection


Note: each time you reboot you will need to start X server. Now, because we already started it to calibrate the screen, you can skip the next two commands. Only this time!


 
Fine, now lets start the X server.
  75 sudo apt-get install libocamlnet-ocaml-dev
  $ X &


  83  git clone https://github.com/paparazzi/paparazzi-portability-support.git
And make a display setting
  84  cd paparazzi-portability-support/linux
  85  sudo ./develenv.sh
  86  sudo apt-get install libxt-dev tcl8.4-dev
  87  cd ~/paparazzi-portability-support/linux/ivy/ivy-c
  88  cd ../../
  89  mv paparazzi-portability-support/ ../
  90  cd ../paparazzi-portability-support/
  91  pwd
  92  cd linux
  93  cd ivy/ivy-c/
  94  fakeroot debian/rules get-orig-source


  97 sudo apt-get install subversion
  $ export DISPLAY=:0
  98  fakeroot debian/rules get-orig-source
  99  tar -xvzf ivy-c_3.12.1.orig.tar.gz
  100  cd ivy-c-3.12.1/
  101  rm -rf debian/
  102  cp -r ../debian .
  103  dpkg-buildpackage -rfakeroot -us -uc
  104  cd ..
  105  sudo dpkg -i ivy-c_3.12.1-1_armel.deb ivy-c-dev_3.12.1-1_armel.deb
  128  cd ~/paparazzi-portability-support/linux/ivy/ivy-c


  130  ivy-c-3.12.1/
Finally, it's time to party, let's run the Paparazzi center
  131  cd ivy-c-3.12.1/


  137  make install
  $ cd ~/paparazzi
  140 cd ~/paparazzi-portability-support/linux/ivy/ivy-ocaml
  $ ./paparazzi
  141  fakeroot debian/rules get-orig-source
  142 cd ivy-ocaml-1.1/
  143  cp -r ../debian .
  144  make
  145  svn checkout http://svn.tls.cena.fr/svn/ivy/ivy-ocaml/trunk/ ivy-ocaml


  156  mv ivy-ocaml/ _ivy-ocaml.old
Add this to the session
  157  svn checkout http://svn.tls.cena.fr/svn/ivy/ivy-ocaml/trunk/ ivy-ocaml
  158  cd ivy-ocaml/
  166  make
  170  make install
  171  dpkg-buildpackage -rfakeroot -us -uc


    1  dpkg-buildpackage -rfakeroot -us -uc
  $ sw/ground_segment/cockpit/gcs -b 192.168.1:2010
    2 ll
    3  cd src/
    4  ll
    5  cd ..
    6  cd ~
    7  ll
    8  mk develop
    9  mkdir develop
  10  cd develop/
  11  ll
  12  git clone https://github.com/paparazzi/paparazzi-portability-support.git
  13  cd paparazzi-portability-support/linux
  14  sudo ./develenv.sh
  15  sudo adduser test sudo
  16  sudo adduser sergiu sudo
  17  su root
  18  cd paparazzi-portability-support/linux
  19  sudo ./develenv.sh
  20  su root
  21  logout
  22  exit
  23  dpkg-buildpackage -rfakeroot -us -uc
  24  sudo dpkg-buildpackage -rfakeroot -us -uc
  25  login
  26  su login
  27  su root
  28  exit
  29  sudo dpkg -i ivy-c_3.12.1-1_arm**.deb ivy-c-dev_3.12.1-1_arm**.deb
  30  su root
  31  exit
  32  fakeroot debian/rules get-orig-source
  33  su root
  34  exit
  35  sudo cd rules
  36  ls
  37  su root
  38  exit
  39  fakeroot debian/rules get-orig-source
  40  ls
  41  cd debian
  42  ls
  43  cd rules
  44  sudo cd rules
  45  sudo passwd sergiu
  46  su root
  47  exit
  48  cd develop/
  49  ll
  50  cd paparazzi-portability-support/
  51  ll
  52  cd linux
  53  ll
  54  sudo develenv.sh
  55  ./develenv.sh
  56  sudo ./develenv.sh
  57  sudo apt-get install libxt-dev tcl8.4-dev
  58  cd ..
  59  cd linux/ivy/ivy-c
  60  ll
  61  fakeroot debian/rules get-orig-source
  62  tar -xvzf ivy-c_3.12.1.orig.tar.gz
  63  cd ivy-c-3.12.1/
  64  rm -rf debian/
  65  cp -r ../debian .
  66  dpkg-buildpackage -rfakeroot -us -uc
  67  find replace-mkdirhier.patch
  68  find -iname  replace-mkdirhier.patch
  69  ll
  70  cd debian/
  71  ll
  72  rm patches/
  73  rmdir patches/
  74  rm -rf patches/
  75  rmdir patches/
  76  ll
  77  dpkg-buildpackage -rfakeroot -us -uc
  78  touch changelog
  79  dpkg-buildpackage -rfakeroot -us -uc
  80  ll
  81  cd ..
  82  dpkg-buildpackage -rfakeroot -us -uc
  83  sudo dpkg-buildpackage -rfakeroot -us -uc
  84  history
  85  dpkg-buildpackage -rfakeroot -us -uc
  86  top
  87  dpkg-buildpackage -rfakeroot -us -uc
  88  sudo make clean
  89  cat Makefile
  90  ll
  91  cd ..
  92  ll
  93  cd ivy-c-3.12.1/
  94  ll
  95  cd src/
  96  ll
  97  ivy-c-3.12.1/make clean
  98  make
  99  sudo make install
  100  cd ..
  101  cd ../../
  102  cd ivy-ocaml/
  103  ll
  104  fakeroot debian/rules get-orig-source
  105  cd ivy-ocaml-1.1/
  106  ll
  107  make
  108  cd ../../ivy-c/
  109  ll
  110  cd ivy-c-3.12.1/
  111  ll
  112  cd src/
  113  ll
  114  cat Makefile
  115  grep -Ri fPIC Makefile
  116  cd ../../
  117  cd ../
  118  cd ivy-ocaml/
  119  ll
  120  cd ivy-ocaml-1.1/
  121  ll
  122  grep -Ri fPIC Makefile


= Testing =
= Telemetry =
Hardware list:
#Laptop with paparazzi softaware
#Gumstix board
#XBee module
#USB power hub
#UAV with RC transceiver and xbee module
#internet connection


= Experimental steps =
Note: from the tests made, the xbee module won't be seen by the Gumstix board if it is not connected before you power up the system.
For this tests, it was used this drone:


# Remove LightDM GUI to preserver Gumstix memory
{TODO provide pictures}
You can find here all the configuration files. Download them and copy them as it follows:
$ cd ~/paparazzi/conf/system/udev/rules/
$ sudo cp -av *rules /etc/udev/rules.d/
$ mkdir conf/radios/sergiu
$ cp conf/radios/sergiu ~Downloads/sergiu_mx22_pprz-ap.xml {TODO change the names with something more appropriate}
$ git remote -v
$ mkdir conf/airframes/sergiu
$ cp conf/airframes/sergiu ~/Downloads/orange.xml {TODO change file name}
$ cp conf/ ~/Downloads/conf.xml
$ cp conf/airframes/sergiu/ ~/Downloads/orange.xml
$ ./paparazzi


{TODO: Describe STEPS}
Download this tarball {TODO provide tarball} and extract it in /home/user/paparazzi/var/ . Inside you will find all the files needed to run paparazzi GCS with datalink.


{install python}
{TODO provide files orange.xml,radio...xml, udev rules, config.xml; set datalink properly and
{install ivy python}
explain how to build, upload, execute + print screens}
{install kivy}


Compile example
= Add a joystick =
{TODO add calibration steps}


Source of Example
$ cd ~/paparazzi/sw/ground_segment/joystick
$ make clean
$ make
In Paparazzi Center select Tool>>Joystick and make sure that the line looks like this:
/home/sergiu/paparazzi/sw/ground_segment/joystick/input2ivy -ac orange2 extreme_3d_pro.xml
where '/sergiu' must be replaced with your user, 'orange2' with the name of your A/C and 'extreme_3d_pro.xml' with the name of your joystick.


X11 server to display on LCD
Edited ~/paparazzi/conf/conf.xml .
= Installing =


<nowiki>opened tools:
server  /home/sergiu/paparazzi/sw/ground_segment/tmtc/server
gcs    /home/sergiu/paparazzi/sw/ground_segment/cockpit/gcs
data link  /home/sergiu/paparazzi/sw/ground_segment/tmtc/link  -udp
joystick  /home/sergiu/paparazzi/sw/ground_segment/joystick/input2ivy  -ac ardrone2_sdk  extreme_3d_pro.xml
messages  /home/sergiu/paparazzi/sw/ground_segment/tmtc/messages
real-time plotter  /home/sergiu/paparazzi/sw/logalizer/plotter
</nowiki>
Notes: wireless connection in between the drone and laptop is required for data link.


= Testing =
= Testing =
{TODO: Describe here a first run with Paparazzi Sim}


= Next =
=onboard video=


The next step will be to make onboard video work in the GCS.
System identification
$ cat /proc/bus/input/devices
output
I: Bus=0019 Vendor=0000 Product=0006 Version=0000
N: Name="Video Bus"
P: Phys=LNXVIDEO/video/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input4
U: Uniq=
H: Handlers=kbd event4
B: PROP=0
B: EV=3
B: KEY=3e000b 0 0 0 0 0 0 0
 
Install mplayer
$ sudo apt-get install mplayer2
to make sure that the program is working properly type
$ mplayer
and you are supposed to get a list of the options available.
 
Get image using mplayer, Terratec Grabby digitizer, 2.4GHz receiver, and a camera with 2.4 GHz transmitter:
$ dmesg
and look if your digitizer is registered as /dev/video0 which is the default or otherwise and replace bellow
$  mplayer tv:// -tv driver=v4l2:width=320:height=240:norm=NTSC:input=0:device=/dev/video0:noaudio
where
  inputs: 0 = Composite1; 1 = S-Video;
If 0 doesn't work for you, try with value 1.
{TODO: video receiver connect description }
{TODO: video digitizer a description }


= Links =
= Links =
Links to related information


* [[OMAP]]
* [[OMAP]]
* https://www.gumstix.com/
* https://www.gumstix.com/
* [[Dev/Caspa]]
* [[Dev/Caspa]]
* https://github.com/paparazzi/paparazzi-portability-support

Latest revision as of 11:24, 14 August 2013

Introduction

Would it not be great to have your small UAS in your backpack, throw it in the air and monitor and even adjust the flight via a small device in your pocket? If you think this would be awesome, read on, since that is what this page is all about. It is the first attempt and will not be about iPad, Android Phones, Amazon Kindles or the likes as a ground station. For this we have other wiki pages. No, we will use a trusted solution; A Gumstix board with Linux on it connected to a small screen.

Gumstix carrier board and touchscreen

Outcome

The outcome of our efforts will be to:

  1. Have the Paparazzi GCS running on a small Gumstix computer board so we can monitoring and adjust the flight of our unmanned aircraft with just a small simple device.
  2. Have fully correct instructions on how to get it to work on this wiki page.

{TODO add screenshot of working setup}

Hardware

What do you need to get your groundstation up and running:

  1. A gumstix board with a power supply
  2. 8 GB or higher capacity micro SD card, the faster the better
  3. USB to mini-USB cable
  4. Regular UTP network cable
  5. A small, or big screen, preferably with touch such as the 4.3" LCD panel that comes with the Chestnut board kit or this fully integrated Gumstix board
  6. Micro-SD to USB adapter or card reader
  7. A computer that runs Linux OS

Software

We will install the following on the micro SD card

  1. Ubuntu OS for Gumstix
  2. Support libraries
  3. Paparazzi main software

Conventions

Note: You can just copy the line(s) in the box and paste them in your terminal. But do not copy the $ or # sign at the beginning of a line. This symbol is just added on this page to show that the command is to be pasted at a terminal prompt as regular user($) or root user(#).

$  this is an example of how a regular user command for your terminal looks

Get the Operating System

Pre-requisites

Have the micro SD card at hand and download this custom OS with everything already installed for a gumstix board and Chestnut43 with touchscreen.

{TODO: provide an image with everything already fully installed}

Installation Steps

I'm in ahurry

If you are eager to start and do not want to install everything thant download [this file] and follow the steps of how to copy it ont an microSD card

Unzip the downloaded OS via

$ gunzip gcsStix.img.gz

Insert micro SD card in an SD reader and plug it in a USB port of your PC, then on the terminal type:

$ dmesg 

[170074.104194] sd 7:0:0:0: [sdb] Write Protect is off
[170074.104199] sd 7:0:0:0: [sdb] Mode Sense: 0b 00 00 08
[170074.104999] sd 7:0:0:0: [sdb] No Caching mode page present
[170074.105005] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[170074.107904] sd 7:0:0:0: [sdb] No Caching mode page present
[170074.107911] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[170074.109282]  sdb: sdb1 sdb2
[170074.112159] sd 7:0:0:0: [sdb] No Caching mode page present
[170074.112165] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[170074.112169] sd 7:0:0:0: [sdb] Attached SCSI removable disk
[170074.904553] kjournald starting.  Commit interval 5 seconds
[170074.916813] EXT3-fs (sdb2): using internal journal
[170074.916823] EXT3-fs (sdb2): recovery complete
[170074.916826] EXT3-fs (sdb2): mounted filesystem with ordered data mode

Note: for my local machine the micro SD card was mounted on /dev/sdb as shown in the code above. Be aware of what you are doing at the next steps, as dd can completely overwrite your hard drive or other devices. Where sdX is the SD reader device found with the command above, replace sdX with your specific device in the following commands and /path/to/file with the path to your previously downloaded Gumstix image file.

$ SDCARD=/dev/sdX
$ sudo dd if=/path/to/file/gcsStix.img of=$SDCARD bs=64k

This will take several minutes depending on your configuration and when this is done, safely remove the micro SD card from your computer by right clicking on it and select eject. Then, insert the micro SD card into the Gumstix micro SD slot.

Connecting peripherals

When you have a Linux version running on your Gumstix, you can add a LCD, or a mouse, or a keyboard. First, install CuteCom on your local machine running on a terminal:

To set up your LCD you must follow these steps:

  1. Connect LCD flex cable to Gumstix connector
  2. Attach USB-to-mini-USB cable to both your local machine and Gumstix board.
  3. Power up Gumstix board
  4. Install and start cutecom
$ sudo apt-get install cutecom
$ cutecom

A window will pop up and you must adjust the pull-down menu settings as follows: Device will usually be either /dev/ttyUSB0 or /dev/ttyUSB1 . You can figure this out by typing on your command prompt:

dmesg|tail

Note: This command lists the last connected devices. Baud rate must be set to 115200, data bits to 8, stop bits to 1, parity to none, handshake none checked, open for both reading and writing checked, apply settings when opening checked, choose "CR,LF end line" and Char delay 1ms.

Click on Open device and your connection should start. If you encounter any problems, but you are sure you did everything right, check if your Gumstix board overheated or restart it.

Connect through CuteCom to the Gumstix, restart the board and hit a key within 5 seconds:

Hit any key to stop autoboot: 5

Then type the following in the CuteCom command prompt:

setenv defaultdisplay lcd43

Or, if you are using a 3.5" screen (such as the LCD panel with the Palo35):

setenv defaultdisplay lcd35

You can save this setting for future boots by saving it:

saveenv

Finally, continue with the boot process by typing in CuteCom command prompt:

boot

Connect to the Gumstix through the network

If you want to send files to the Gumstix, you can do it via a ssh connection. In order to do this, both devices, your computer and the Gumstix must be connected to the same network. Once you've done this, you can start setting up the connection. In order to do so you need to know the IP address of the Gumstix.

The first thing you need in order to get rid of the USB to mini-USB cable and its physical limitations is to create a user and set a password for it and install openssh. Please feel free to replace "sergiu" with whatever username you choose, but keep in mind that you must replace it everywhere you encounter "sergiu".

useradd -c "Sergiu S" -m -s "/bin/bash" -G sudo sergiu

Note: -G option will add the user to the specified group.

$ passwd sergiu

You will be asked to enter a password and confirm it. Type your password, then hit CTRL + Enter key combination and then retype your password. If successful, you will get this message:

passwd: password updated successfully
$ sudo apt-get install openssh-server

Once you have accomplished this, you must discover the Gumstix ip address, typing on CuteCom:

$ ifconfig -a 

Note: if you can't use this command for any reason you can get a list with all the IP addresses on the network using 'arp -a' on your machine. Among the data returned, you will see something like this:

eth0      Link encap:Ethernet  HWaddr 00:15:c9:28:c9:ff  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::215:c9ff:fe28:c9ff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3960 errors:0 dropped:0 overruns:0 frame:0
          TX packets:727 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3734905 (3.7 MB)  TX bytes:63765 (63.7 KB)
          Interrupt:80 

Now you should be able to connect using:

$ ssh sergiu@192.168.0.100 {TODO USERNAME change}

You will be asked to type the password you previously set for the user.

Working With Gumstix

Note: You may get some errors during this installation. This depends on how well you are cooling down your system, how much RAM you have on your platform and so on. If you get errors when trying install a large number of packages/libraries at once, try to divide them into smaller groups.

1. Add a swap file Due to lack of RAM memory it is possible to see errors like this:

==== ERROR [while installing ocamlfind.1.3.3] ====
Internal error:
  # opam-version    1.0.1 (1.0.0-84-g9b3ff34)
# os              linux
opam: "fork" failed: Cannot allocate memory
'opam install ocamlfind' failed.

The solution to this problem is to create a swap file. For this case I created a 512 MB swap file, but you should adapt its size to the size of your SD card and the needed memory size.

Execute these commands to create and mount a swap file:

sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=524288 (will create 512 MB swap file)
sudo mkswap /swapfile1
sudo chown root:root /swapfile1
sudo chmod 0600 /swapfile1
sudo swapon /swapfile1

Note: this will remove the swap file each time you shutdown. If you need the file, you have to repeat the swapon command after each boot. An alternative would be to have it mounted every time you boot the system. For more explanations you can go to this website

2. Autologin

Remove the login prompt

You may want to set your OS to auto-login. Why? Because there may be times you don't have a keyboard for the Gumstix around. You can find a good explanation of this here .

$ sudo locale-gen en_US.UTF-8
$ sudo apt-get install vim nano # (or use your favorite editor)

Note: if you get an error at this step, use the --fix-missing option as recommended.

$ sudo vim /etc/lightdm/lightdm.conf

Edit the autologin-user line by replacing the username with your own

autologin-user=sergiu

and add this line:

autologin-user-timeout=0

or the right locale for your keyboard. If this didn't solve your problem, you may want to read here more about it.

3. More Memory

Remove the Lightdm GUI manager in order to free memory

$ sudo apt-get remove lightdm

After this step you must reboot.

4. More speed

Remove processes not needed

$ sudo killall -9 NetworkManager  #(for faster system), {TODO in start the config? still needed?}

Because the size of the original image was 4.3 GB, you have to execute the following set of instructions to resize the partition to 8 GB:


5. Add more space

  1. Insert the micro SD card in your local machine´s card reader
  2. Use gparted to increase the size of the partition
$ sudo apt-get install gparted
$ sudo gparted

Install the prerequsites

Installing one package at a time is the best path to succes since it is likely during installation that you will be asked to re-run some of the commands with the "--fix-missing" option.

$ sudo apt-get install gtk2-engines-pixbuf
$ sudo apt-get install make #already latest
$ sudo apt-get install gcc #already latest
$ sudo apt-get install g++ #already latest
$ sudo apt-get install libgsl0-dev
$ sudo apt-get install gnuplot
$ sudo apt-get install libgnomecanvas2-dev
$ sudo apt-get install bzip2
$ sudo apt-get install git
$ sudo apt-get install libusb-dev
$ sudo apt-get install speech-dispatcher
$ sudo apt-get install glade
$ sudo apt-get install imagemagick 
$ sudo apt-get install libpcre3-dev
$ sudo apt-get install git-core
$ sudo apt-get install python-usb
$ sudo apt-get install python-lxml
$ sudo apt-get install python-wxgtk2.8
$ sudo apt-get install m4
$ sudo apt-get install python-yaml 
$ sudo apt-get install subversion
$ sudo apt-get install libglade2-dev libgnomeui-dev libgnomecanvas2-dev librsvg2-dev libgtkspell-dev libcanberra-gtk-dev --fix-missing
$ sudo apt-get install libsdl1.2-dev

Create a subdirectory where you will download and install all the libraries and other software tools needed. To keep your home dir tidy use a develop directory to store all the relevant downloads.

$ mkdir ~/develop
$ cd ~/develop/

OCAML

$ wget http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00.1.tar.gz
$ tar -xvzf ocaml-4.00.1.tar.gz 
$ cd ocaml-4.00.1
$ ./configure
$ make world
$ make opt
$ make ocamldoc
$ make ocamlbuild.native
$ make ocamlbuild.byte
$ sudo make install
$ sudo make installopt
$ ocaml -version  #(make sure you have the right version, meaning 4.00.1)
$ cd ~/develop

Opam tool

  1. Install the OCAML Opam tool
$ git clone https://github.com/OCamlPro/opam.git
$ cd opam
$ ./configure 
$ make (because of overheating you may get some errors, but keep doing 'make')
$ sudo make install
$ cd ~/develop
$ mkdir ~/.opam
$ opam init
$ eval `opam config env`

Please select yes.

$ sudo opam install ocamlfind
$ sudo opam install lablgtk 
$ sudo opam install pcre-ocaml
$ sudo opam install ocamlnet
$ sudo opam install xml-light

portability-support

  1. Get paparazzi-portability-support related files
$ sudo apt-get install  debhelper devscripts fakeroot build-essential autoconf automake autotools-dev dh-make xutils lintian pbuilder dh-ocaml tcl-dev libxt-dev libXt-devel
$ cd ~/develop
$ git clone https://github.com/paparazzi/paparazzi-portability-support.git
$ cd paparazzi-portability-support/linux/
$ sudo ./develenv.sh
$ cd ivy/
$ svn checkout http://svn.tls.cena.fr/svn/ivy/ivy-c/trunk ivy-c
$ cd ivy-c/src/

Patchthe Makefile with : Patch content:

--- Makefile.orig	2013-05-23 16:36:45.000000000 +0000
+++ Makefile	2013-05-23 16:32:22.000000000 +0000
@@ -28,6 +28,11 @@
	FPIC=
endif

+MACHINE = $(shell uname -m)
+ifeq ("$(MACHINE)", "armv7l")
+	FPIC = -fPIC
+endif
+

ifndef PREFIX
	export PREFIX=/usr/local
$ make all
$ sudo make install

IVY

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://www2.tls.cena.fr/products/ivy/

In the paparazzi project, Ivy is used to send telemetry data to where ever you want.

NOTE: Do not confuse this IVY with the Apache Ivy project.

Ivy-OCAML

The Ivy-ocaml is a Library that make it possible to use Ivy via the Ocaml language.

$ cd ~/develop/paparazzi-portability-support/linux/ivy/
$ svn checkout http://svn.tls.cena.fr/svn/ivy/ivy-ocaml/trunk ivy-ocaml
$ cd ivy-ocaml/
$ make
$ sudo PATH=$PATH make install


Ivy-python

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

$ cd ~/develop/paparazzi-portability-support/linux/ivy/
$ svn co http://svn.tls.cena.fr/svn/ivy/ivy-python/trunk ivy-python
$ cd ivy-python/
$ sudo python setup.py install

Main sourcecode

Now all the prequisites are installed, finally we can grab a copy of the full Paparazzi project

$ cd ~
$ git clone https://github.com/paparazzi/paparazzi.git
$ cd paparazzi
$ export PPRZ_HOME=~/paparazzi/
$ export PAPARAZZI_HOME=~/paparazzi/
$ export PAPARAZZI_SRC=~/paparazzi/
$ make ground_segment

Calibrate your touchsreen

$ sudo apt-get install xinput_calibrate
$ X &
$ export DISPLAY=:0
$ xinput_calibrate

You will have to touch the center of the four circles. When you will have touched all four points, you will get a similar message on your command prompt.

--> Making the calibration permanent <--
 copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf'
Section "InputClass"

Identifier "calibration" MatchProduct "ADS7846 Touchscreen" Option "Calibration" "147 3917 3783 251"

EndSection

Note: each time you reboot you will need to start X server. Now, because we already started it to calibrate the screen, you can skip the next two commands. Only this time!

Fine, now lets start the X server.

$ X &

And make a display setting

$ export DISPLAY=:0

Finally, it's time to party, let's run the Paparazzi center

$ cd ~/paparazzi
$ ./paparazzi

Add this to the session

$ sw/ground_segment/cockpit/gcs -b 192.168.1:2010

Testing

Telemetry

Hardware list:

  1. Laptop with paparazzi softaware
  2. Gumstix board
  3. XBee module
  4. USB power hub
  5. UAV with RC transceiver and xbee module
  6. internet connection

Note: from the tests made, the xbee module won't be seen by the Gumstix board if it is not connected before you power up the system. For this tests, it was used this drone:

{TODO provide pictures} You can find here all the configuration files. Download them and copy them as it follows:

$ cd ~/paparazzi/conf/system/udev/rules/
$ sudo cp -av *rules /etc/udev/rules.d/
$ mkdir conf/radios/sergiu
$ cp conf/radios/sergiu ~Downloads/sergiu_mx22_pprz-ap.xml {TODO change the names with something more appropriate}
$ git remote -v
$ mkdir conf/airframes/sergiu
$ cp conf/airframes/sergiu ~/Downloads/orange.xml {TODO change file name}
$ cp conf/ ~/Downloads/conf.xml
$ cp conf/airframes/sergiu/ ~/Downloads/orange.xml
$ ./paparazzi

Download this tarball {TODO provide tarball} and extract it in /home/user/paparazzi/var/ . Inside you will find all the files needed to run paparazzi GCS with datalink.

{TODO provide files orange.xml,radio...xml, udev rules, config.xml; set datalink properly and explain how to build, upload, execute + print screens}

Add a joystick

{TODO add calibration steps}

$ cd ~/paparazzi/sw/ground_segment/joystick
$ make clean
$ make

In Paparazzi Center select Tool>>Joystick and make sure that the line looks like this:

/home/sergiu/paparazzi/sw/ground_segment/joystick/input2ivy -ac orange2 extreme_3d_pro.xml 

where '/sergiu' must be replaced with your user, 'orange2' with the name of your A/C and 'extreme_3d_pro.xml' with the name of your joystick.

Edited ~/paparazzi/conf/conf.xml .

opened tools: server /home/sergiu/paparazzi/sw/ground_segment/tmtc/server gcs /home/sergiu/paparazzi/sw/ground_segment/cockpit/gcs data link /home/sergiu/paparazzi/sw/ground_segment/tmtc/link -udp joystick /home/sergiu/paparazzi/sw/ground_segment/joystick/input2ivy -ac ardrone2_sdk extreme_3d_pro.xml messages /home/sergiu/paparazzi/sw/ground_segment/tmtc/messages real-time plotter /home/sergiu/paparazzi/sw/logalizer/plotter Notes: wireless connection in between the drone and laptop is required for data link.

Testing

{TODO: Describe here a first run with Paparazzi Sim}

onboard video

System identification

$ cat /proc/bus/input/devices

output

I: Bus=0019 Vendor=0000 Product=0006 Version=0000
N: Name="Video Bus"
P: Phys=LNXVIDEO/video/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input4
U: Uniq=
H: Handlers=kbd event4 
B: PROP=0
B: EV=3
B: KEY=3e000b 0 0 0 0 0 0 0

Install mplayer

$ sudo apt-get install mplayer2

to make sure that the program is working properly type

$ mplayer

and you are supposed to get a list of the options available.

Get image using mplayer, Terratec Grabby digitizer, 2.4GHz receiver, and a camera with 2.4 GHz transmitter:

$ dmesg

and look if your digitizer is registered as /dev/video0 which is the default or otherwise and replace bellow

$  mplayer tv:// -tv driver=v4l2:width=320:height=240:norm=NTSC:input=0:device=/dev/video0:noaudio

where

 inputs: 0 = Composite1; 1 = S-Video;

If 0 doesn't work for you, try with value 1. {TODO: video receiver connect description } {TODO: video digitizer a description }

Links

Links to related information