<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss1full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://www.psykokwak.com/blog/index.php/">
  <title>Psykokwak</title>
  <description />
  <link>http://www.psykokwak.com/blog/index.php/</link>
  <dc:language>fr</dc:language>
  <dc:creator />
  <dc:rights />
  <dc:date>2012-05-18T19:42:44+02:00</dc:date>
  <admin:generatorAgent rdf:resource="http://www.dotclear.net/" />
  
  <sy:updatePeriod>daily</sy:updatePeriod>
  <sy:updateFrequency>1</sy:updateFrequency>
  <sy:updateBase>2012-05-18T19:42:44+02:00</sy:updateBase>
  
  <items>
  <rdf:Seq>
    <rdf:li rdf:resource="http://www.psykokwak.com/blog/index.php/2012/05/18/60-ar-drone-et-urbi-embedded" />
  <rdf:li rdf:resource="http://www.psykokwak.com/blog/index.php/2012/01/02/62-ofpv-remzibi-osd-recognizer-for-telemetry-logger-antenna-tracking" />
  <rdf:li rdf:resource="http://www.psykokwak.com/blog/index.php/2010/12/16/61-tutorial-gef-graphical-editing-framework-part-14" />
  <rdf:li rdf:resource="http://www.psykokwak.com/blog/index.php/2010/10/08/58-ar-drone-et-urbi-en-remote" />
  <rdf:li rdf:resource="http://www.psykokwak.com/blog/index.php/2010/09/27/57-livebox-2-dns-et-loopback-orange" />
  <rdf:li rdf:resource="http://www.psykokwak.com/blog/index.php/2010/09/12/55-ar-drone-de-parrot-experimentations" />
  <rdf:li rdf:resource="http://www.psykokwak.com/blog/index.php/2010/09/12/56-photos-hdr" />
  <rdf:li rdf:resource="http://www.psykokwak.com/blog/index.php/2010/09/12/45-maintenance-du-serveur-fibre-optique" />
  <rdf:li rdf:resource="http://www.psykokwak.com/blog/index.php/2009/04/19/52-wia-web-server-multiplatform-streaming-webcam-server-version-200-with-ip-camera-support-update-19-04-2009" />
  <rdf:li rdf:resource="http://www.psykokwak.com/blog/index.php/2009/03/12/54-arobot-version-v3-odometry-asservissement-compass-navigation-robot-wifi" />
  </rdf:Seq>
  </items>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rdf+xml" href="http://feeds.feedburner.com/psykokwak" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="psykokwak" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /></channel>

<item rdf:about="http://www.psykokwak.com/blog/index.php/2012/05/18/60-ar-drone-et-urbi-embedded">
  <title>AR. Drone et Urbi (embedded) (Update)</title>
  <link>http://www.psykokwak.com/blog/index.php/2012/05/18/60-ar-drone-et-urbi-embedded</link>
  <dc:date>2012-05-18T19:42:44+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Jean Charles MAMMANA</dc:creator>
  <dc:subject>Programmation</dc:subject>
  <description>Le billet précédent expliquait comment piloter l'AR Drone avec Urbi mais nécessitait un PC pour faire la liaison entre le drone et l'application Urbi.
Ce billet explique comment faire fonctionner Urbi directement dans le drone (donc plus besoin de PC intermédiaire)...</description>
  <content:encoded><![CDATA[Le billet <a href="http://www.psykokwak.com/blog/index.php/2010/10/08/58-ar-drone-et-urbi-en-remote">précédent</a> expliquait comment piloter l'AR Drone avec Urbi mais nécessitait un PC pour faire la liaison entre le drone et l'application Urbi.<br>
Ce billet explique comment faire fonctionner Urbi directement dans le drone (donc plus besoin de PC intermédiaire)... <div align="left"><br><br><strong>Il s'agit ici d'un proof of concept.<br>
Il est très important de comprendre que toucher au système embarqué du drone peut avoir de graves conséquences. Vous pourriez briquer le drone et ainsi le transformer en presse papier... Inutile de rappeler que Parrot ne tolère pas ce type de manipulation et que vous perdrez la garantie.</strong>
<br>
<br>
<i>Il s'agit d'une version fonctionnelle. Cependant pour des raisons de performances, le streaming vidéo à été désactivé.</i><br>
Pour télécharger Urbi pour l'AR Drone, cliquez ici : <a href="http://www.psykokwak.com/blog/images/ardrone/urbi-sdk-2.6-525.tar" hreflang="fr">urbi-sdk-2.6-525.tar</a>.
<br>
<br>
<center>
<b>Cette vidéo explique comment installer Urbi</b><br>
<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/Cdxq89CigcI" frameborder="0" allowfullscreen></iframe>
<br><br>
<b>Cette vidéo montre comment controler son drone avec Urbi</b><br>
<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/Wiv4rC-doJI" frameborder="0" allowfullscreen></iframe>
</center>
<br><br><br>
Pour ceux qui souhaite écrire leurs propres uobjects pour l'ardrone, vous pouvez télécharger le sdk urbi ici : <a href="http://www.psykokwak.com/blog/images/ardrone/urbi-sdk-2.6-525-complete.tgz" hreflang="fr">urbi-sdk-2.6-525-complete.tgz</a>.<br>
Il vous faudra la toolchain utilisé par Parrot pour compiler pour le drone. Elle est disponible ici : <a href="http://www.codesourcery.com/sgpp/lite/arm/portal/release858" hreflang="fr">www.codesourcery.com</a>.
<br><br><br>
<b>Update: 02/12/11:</b><br>
<strike>Les sources de l'uobject sont (enfin) dispo ici (<b>pour le sdk 1.6</b>) : <a href="http://www.psykokwak.com/blog/images/ardrone/ardrone-uobject-embedded.tar.gz">ardrone-uobject-embedded.tar.gz</a></strike><br>
Je met aussi en ligne les sources d'un autre projet qui consistait en ajoutant un module GPS connecté au drone à travers le port série, à faire de la planification de mission. L'application, une fois lancée, se connecte au moteurs du drone ainsi qu'au GPS, active un serveur web qui permet à l'utilisateur de configurer la mission et de l’exécuter (avec google map). Malheureusement je n'ai jamais terminé le projet... <a href="http://www.psykokwak.com/blog/images/ardrone/navigation-src-111203143755.tgz">anavigation-src-111203143755.tgz</a>
<br><br>
<b>Update: 18/05/12:</b><br>
Je viens d'updater le driver urbi "embedded" avec le dernier SDK de l'ARdrone (<b>version 1.8</b>) mais je n'ai plus de drone pour le tester. Je distribue l'uobject (le fichier .so) ainsi que les sources ici si quelqu'un veut essayer : <a href="http://www.psykokwak.com/blog/images/ardrone/ardrone-uobject-embedded-sdk-1.8.tar.gz">ardrone-uobject-embedded-sdk-1.8.tar.gz</a><br> 
Pour le tester, il vous faut d'abord suivre la procédure d'installation (voir la première vidéo "howto install urbi for AR Drone") puis remplacer le fichier "ARDrone.so" de l'installation d'origine par le nouveau.
</div>]]></content:encoded>
</item>
<item rdf:about="http://www.psykokwak.com/blog/index.php/2012/01/02/62-ofpv-remzibi-osd-recognizer-for-telemetry-logger-antenna-tracking">
  <title>oFPV : Remzibi OSD recognizer for Telemetry Logger &amp; Antenna Tracking</title>
  <link>http://www.psykokwak.com/blog/index.php/2012/01/02/62-ofpv-remzibi-osd-recognizer-for-telemetry-logger-antenna-tracking</link>
  <dc:date>2012-01-02T21:25:35+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Jean Charles MAMMANA</dc:creator>
  <dc:subject>Programmation</dc:subject>
  <description>Ces dernières semaines, j'ai bricolé une petite application (ma première application graphique) capable de lire l'OSD d'une vidéo ou d'un flux live pour en extraire les données et faire quelques traitements...</description>
  <content:encoded><![CDATA[Ces dernières semaines, j'ai bricolé une petite application (ma première application graphique) capable de lire l'OSD d'une vidéo ou d'un flux live pour en extraire les données et faire quelques traitements... <div align="left">
<br><br>
L'application est capable de reconnaître les coordonnées GPS (longitude, latitude), la vitesse et l'altitude. Il faut sélectionner sur l'image les zones de chaque champ.<br>
L'application affichera alors la position sur google map. Il sera possible de logger le vol et de l'exporter dans google earth ou en subtitle pour incrustation ultérieur dans la vidéo.<br>
L'application peut aussi diffuser les informations vers un port série pour permettre le développement de modules additionnels comme un antenna tracking.
<br><br>
<center>
<iframe width="420" height="315" src="http://www.youtube.com/embed/29vaYJ3uWz8" frameborder="0" allowfullscreen></iframe>
</center>
<br><br>
<b>ATTENTION:</b> L'application fonctionne sur un moteur de reconnaissance de caractères pour décoder l'OSD.<br>Il est important de faciliter au maximum le travail de ce moteur OCR pour avoir les meilleurs résultats possible. L'application ne fonctionnera pas si vous n'utilisez pas la font 1.60 large de l'OSD.<br>
Il faut aussi placer le texte au dessus d'un fond noir. Si votre camera envoie une image en 16/9 (Gopro par exemple), vous pouvez utiliser les bandes noires.<br>
<br>
Voir image ci-dessous :<br>
<center><img src="http://www.psykokwak.com/blog/images/ofpv/font.jpg" width="700"></center>

<br>
<br>
L'application utilise les trames RMC et GGA du protocole NMEA pour transmettre la télémétrie sur le port série (9600 8N1).
<br>
<br>
Cette application est distribué tel quel sans garantie de fonctionnement. Si vous avez des remarques, postez les dans les commentaires.<br>
<br>
<br>
<h3>Changelog :</h3><br>

<b>20111221</b><br>
- Initial release.<br>
<br>
<b>20111222</b><br>
- Fix lat/lng inversion.<br>
- Send telemetry over serial using NMEA sentence instead custom format.<br>
<br>
<b>20120102</b><br>
- Support N/S and E/W for Lat and Lng.<br>
- Add CSV and NMEA export.<br>
- Fix dragging and zooming on google map.<br>
<br>
<b>20120117</b><br>
- Fix bad NMEA export timestamp.<br>
- Improve altitude OCR reading.<br>

<br>
<br>
<h3>Téléchargement :</h3> <a href="http://www.psykokwak.com/blog/images/ofpv/ofpv-20120117.zip">ofpv-20120117.zip</a>
</div>]]></content:encoded>
</item>
<item rdf:about="http://www.psykokwak.com/blog/index.php/2010/12/16/61-tutorial-gef-graphical-editing-framework-part-14">
  <title>Tutorial: GEF (Graphical Editing Framework) [Part 14]</title>
  <link>http://www.psykokwak.com/blog/index.php/2010/12/16/61-tutorial-gef-graphical-editing-framework-part-14</link>
  <dc:date>2010-12-16T21:48:46+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Jean Charles MAMMANA</dc:creator>
  <dc:subject>Divers</dc:subject>
  <description>Il y maintenant plusieurs années, j'avais écrit avec l'aide de mon groupe d'étude, une suite de billets expliquant comment prendre en main le framework GEF en Java.
Cependant, nous avions arrêté l'écriture des tutoriaux sans avoir abordé un dernier point : Les connexions...</description>
  <content:encoded><![CDATA[Il y maintenant plusieurs années, j'avais écrit avec l'aide de mon groupe d'étude, une <a href="http://www.psykokwak.com/blog/index.php/tag/gef">suite de billets</a> expliquant comment prendre en main le framework GEF en Java.<br>
Cependant, nous avions arrêté l'écriture des tutoriaux sans avoir abordé un dernier point : Les connexions... <div align="left"><br><br>
Aujourd'hui c'est chose réparée grâce au site <a href="http://gefhowto.blogspot.com/">GEFHowTo</a> qui a repris l'exemple que nous avions utilisé à l'époque pour y expliquer comment ajouter les connexions.<br>
Tout est expliqué ici (en anglais) : <a href="http://gefhowto.blogspot.com/2010/01/adding-connections-to-gef-environment.html">http://gefhowto.blogspot.com/2010/01/adding-connections-to-gef-environment.html</a>
<br>
<br>
Pour rappel, l'ensemble de la documentation est disponible en PDF <a href="http://www.psykokwak.com/blog/index.php/2007/10/31/39-tutorial-gef-graphical-editing-framework-abstract-pdf">ici</a>.
</div>]]></content:encoded>
</item>
<item rdf:about="http://www.psykokwak.com/blog/index.php/2010/10/08/58-ar-drone-et-urbi-en-remote">
  <title>AR. Drone et Urbi (en remote)</title>
  <link>http://www.psykokwak.com/blog/index.php/2010/10/08/58-ar-drone-et-urbi-en-remote</link>
  <dc:date>2010-10-08T20:33:11+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Jean Charles MAMMANA</dc:creator>
  <dc:subject>Programmation</dc:subject>
  <description>Après mes précédentes expérimentations, j'ai voulu étendre les possibilités du drone de Parrot....</description>
  <content:encoded><![CDATA[Après mes <a href="http://www.psykokwak.com/blog/index.php/2010/09/12/55-ar-drone-de-parrot-experimentations" >précédentes expérimentations</a>, j'ai voulu étendre les possibilités du drone de Parrot.... <div align="left">
<br><br>
Urbi est une plateforme open source permettant de contrôler des robots ou des systèmes complexes. Le but d'Urbi est de simplifier le développement de programmes et de comportements pour les robots.<br>
Pour plus d'informations sur Urbi, rendez vous sur le site <a href="http://www.gostai.com/">http://www.gostai.com/</a>
<br><br>

J'ai donc écrit un driver Urbi qui permet de prendre le contrôle et de programmer le drone en urbiscript.<br>
On peut contrôler le drone depuis n'importe quelle interface comme par exemple un joystick, une wiimote, une centrale inertielle, un clavier, une souris… Bref, n'importe quoi qui se connecte à un PC sous windows, linux ou mac.<br>
On peut aussi créer sa propre interface graphique en utilisant le logiciel <a href="http://www.gostai.com/download/">Gostai Lab</a>.

<br><br>

<br><b>Voici par exemple 2 vidéos de démonstrations :</b><br><br>

<i>Celle ci montre comment piloter le drone soit graphiquement, soit programmatiquement en urbiscript</i><br>
<object width="640" height="480" type="application/x-shockwave-flash" data="http://www.youtube.com/v/f-DFIzMZz6U&hl=fr&amp;fs=1&amp;rel=0" /><param name="movie" value="http://www.youtube.com/v/f-DFIzMZz6U&hl=fr&fs=1&rel=0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/f-DFIzMZz6U&hl=fr&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="480"></embed></object>

<br><br>

<i>Cette là montre comment écrire un programme (de 25 lignes seulement) en urbiscript qui permet au drone de voler seul en suivant une balle.</i>
<object width="640" height="480" type="application/x-shockwave-flash" data="http://www.youtube.com/v/wJ5seNd-U2g&hl=fr&amp;fs=1&amp;rel=0" /><param name="movie" value="http://www.youtube.com/v/wJ5seNd-U2g&hl=fr&fs=1&rel=0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/wJ5seNd-U2g&hl=fr&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="480"></embed></object>

<br><br><br><br>

<h2>Tutorial d'installation</h2>

<br>
<b>Avant tout,je tiens à préciser qu'il s'agit d'un proof of concept. Le travail effectué est issue d'expérimentations et je ne peux garantir que Urbi ou mon driver soient exempt de bug! Si vous décidez de l'installer pour essayer avec votre drone, c'est à vous de prendre toutes les mesures nécessaire pour qu'en cas de perte de contrôle du drone, celui ci ne provoque pas de dégâts.<br>
En d'autres termes: SI VOUS NE VOULEZ PAS RISQUER DE CASSER VOTRE DRONE, N'ALLEZ PAS PLUS LOIN...</b>

<br><br><br>

<b>1. Prérequis</b>
<br><br>
Pour tester Urbi avec votre AR. Drone, il vous faut :
<ul>
<li>Un AR.Drone :)</li>
<li>Un ordinateur équipé de wifi avec linux.</li>
<li>Et c'est tout.</li>
</ul>

<br><br>

<b> 2. Installation</b>
<br><br>
Téléchargez <a href="http://www.psykokwak.com/blog/images/ardrone/urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0.tar.bz2">cette archive pour linux x86</a> ou <a href="http://web.me.com/derDoc/pub/drone/urbi%20SDK%20mac-ardrone.zip">cette archive pour OSX x86</a> qui contient Urbi avec le driver pour le drone sur votre ordinateur et décompressez le.<br>
Entrez dans le dossier fraichement décompressé, vous y découvrirez Urbi. <br>
Pour les barbus :
<pre>[c]
$tar xvjf urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0.tar.bz2
</pre>
<br>
Pour démarrer Urbi avec le driver AR.Drone, il suffit d'exécuter le script "<i>start.sh</i>"...<br>
Mais avant d'en arriver là, il faut connecter le drone à votre ordinateur en wifi.<br>

<br>
Commencez par allumer votre drone. Patientez jusqu'à ce que les leds soient vertes puis appuyer sur le bouton "unpair" situé sous le drone. Les leds devraient clignoter en vert/rouge.<br>
<br>
Pour connecter votre ordinateur au drone, vous pouvez passer par le "network manager" de votre distribution linux. Vous devriez le voir dans la liste des réseaux wifi disponible sous le même nom qu'avec votre iPhone.<br>
Pour les barbus, voici la marche à suivre :
<pre>[c]
$sudo ifconfig wlan0 192.168.1.5/24 up
$sudo iwconfig wlan0 mode ad-hoc essid <le nom de votre drone>
</pre>
<br>
un ping sur 192.168.1.1 permettra de s'assurer qu'on parle bien au drone...
<br><br><br>

<b> 3. Démarrage</b>
<br><br>
Maintenant vous pouvez exécuter le script "<i>start.sh</i>" présent dans le dossier précédemment décompressé.<br>
Urbi va démarrer et charger automatiquement le driver AR.Drone et le démarrer. Si vous êtes bien connecté au réseau wifi du drone, vous devriez voir ceci :
<pre>[c]
gostai@fuji:~/urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0$ ./start.sh
[00000187] *** ********************************************************
[00000188] *** Urbi SDK version 2.3 rev. 9a84600
[00000193] *** Copyright (C) 2005-2010 Gostai S.A.S.
[00000193] ***
[00000193] *** This program comes with ABSOLUTELY NO WARRANTY.  It can
[00000193] *** be used under certain conditions.  Type 'license;',
[00000193] *** 'authors;', or 'copyright;' for more information.
[00000193] ***
[00000193] *** Check our community site: http://www.urbiforge.org.
[00000193] *** ********************************************************
[00000236] ARDrone_0x8f88f48
before setLocale()
before ardrone_tool_setup_com(NULL)
before ardrone_tool_init(...)
Starting thread navdata_update
Starting thread ardrone_control
before ardrone_input_add(NULL)
Input device myControl added
Starting thread my_video
Thread navdata_update in progress...
Video stage thread initialisation
[00000243] true
[00000266] *** Waiting connection.
Timeout
[00001206] *** Successfuly connected to the drone :)
[00001236] *** Now, open a new terminal and type "telnet localhost 54000"
</pre>
<br><br>
Voila, Urbi est démarré et connecté au drone.<br>
<br>
Maintenant, tout en laissant le programme tourner, ouvrez un nouveau terminal pour vous connecter sur Urbi en telnet :<br>
<pre>[c]
gostai@fuji:~$ telnet localhost 54000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
[00010947] *** ********************************************************
[00010949] *** Urbi SDK version 2.3 rev. 9a84600
[00010949] *** Copyright (C) 2005-2010 Gostai S.A.S.
[00010949] ***
[00010949] *** This program comes with ABSOLUTELY NO WARRANTY.  It can
[00010949] *** be used under certain conditions.  Type 'license;',
[00010949] *** 'authors;', or 'copyright;' for more information.
[00010950] ***
[00010950] *** Check our community site: http://www.urbiforge.org.
[00010950] *** ********************************************************
</pre>
<br><br>
Félicitation, Vous venez de vous connecter dans ce qu'on appel un <i>engine Urbi</i>.<br>
Vous pouvez maintenant taper des commandes Urbi et commencer à piloter/programmer votre drone. :)

<br><br><br>

<b> 3. Premier vol avec Urbi</b>
<br><br>
Faites de la place autour du drone et dans la fenêtre telnet tapez (sur une seule ligne) :
<pre>[c]
drone.takeoff(); sleep(4s); drone.landing();
</pre>
<br>
Je vous laisse deviner ce que ce programme fait :).

<br><br><br>

<b> 4. Documentation</b>
<br><br>
Maintenant, il est nécessaire d'apprendre à se servir d'Urbi et d'urbiscript pour programmer votre drone.<br>
Pour cela, le plus simple est d'aller consulter la documentation du driver AR.Drone dans le dossier précédemment décompressé "<i>urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0/share/scripts/</i>" en allant voir les scripts Urbi "<i>drone.u</i>" et "<i>balltracking.u</i>".<br>
Quant à la documentation d'urbiscript, tout se trouve ici : <a href="http://www.urbiforge.org/index.php/Main/Docs">http://www.urbiforge.org/index.php/Main/Docs</a>.
<br><br>
Le script "<i>balltracking.u</i>" est le script mis en œuvre dans la <a href="http://www.youtube.com/watch?v=wJ5seNd-U2g">vidéo youtube</a> "balltracking".<br>
Pour faire marcher ce script, il est nécessaire de charger le driver "colormap" qui est l'algorithme de detection de la balle dans l'image de la camera du drone. Ce driver est automatiquement chargé avec le driver AR.Drone par le script "<i>start.sh</i>".<br>
Les drivers sont placés dans le dossier "<i>urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0/share/uobjects/</i>".<br><br>
Pour les développeurs qui souhaitent étendre le comportement d'Urbi en codant leurs propres drivers, la documentation est <a href="http://www.gostai.com/downloads/urbi-sdk/2.x/doc/urbi-sdk.htmldir/uobjects.html"><b>là</b></a>. Vous trouverez les sources à compiler de drivers (tel que celui pour utiliser un joystick) sur le site <a href="http://www.urbiforge.org/index.php/Main/Modules">http://www.urbiforge.org/index.php/Main/Modules</a>

<br><br><br>

<b> 5. Gostai Lab</b>
<br><br>
Gostai Lab permet de construire une interface graphique facilement en "bindant" du script Urbi à des widgets (bouton/text area/sliders/image viewer/...).<br>
Vous pouvez le télécharger ici : <a href="http://gostai.com/download/">http://gostai.com/download/</a>.<br>
Vous pouvez télécharger ici les fichiers ula GostaiLab que j'ai utilisé dans la vidéo <a href="http://www.youtube.com/watch?v=wJ5seNd-U2g">balltracking</a> : <a href="http://www.psykokwak.com/blog/images/ardrone/balltracking.ula">balltracking.ula</a> et <a href="http://www.psykokwak.com/blog/images/ardrone/ardrone.ula">ardrone.ula</a>.<br>
Cela vous permettra de piloter votre drone facilement.<br>
<br>
<br>

<i>A vous de jouer :)</i>

<br><br>

<i>Thank to derdoc for her built under osx</i>

</div>]]></content:encoded>
</item>
<item rdf:about="http://www.psykokwak.com/blog/index.php/2010/09/27/57-livebox-2-dns-et-loopback-orange">
  <title>Livebox 2, DNS et loopback</title>
  <link>http://www.psykokwak.com/blog/index.php/2010/09/27/57-livebox-2-dns-et-loopback-orange</link>
  <dc:date>2010-09-27T22:50:51+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Jean Charles MAMMANA</dc:creator>
  <dc:subject>Divers</dc:subject>
  <description>Étant donné l'incapacité d'SFR à ne pas savoir dégrouper une ligne ADSL sans se planter. Je suis dans l'obligation d'aller chez Orange et d'adhérer à leur livebox 2...
Sauf, qu'il faut bien l'avouer, cette livebox 2 est une grosse merde...</description>
  <content:encoded><![CDATA[Étant donné l'incapacité d'SFR à ne pas savoir dégrouper une ligne ADSL sans se planter. Je suis dans l'obligation d'aller chez Orange et d'adhérer à leur livebox 2...<br>
Sauf, qu'il faut bien l'avouer, cette livebox 2 est une grosse merde... <div align="left">
Ok, c'est peut être sensiblement exagéré mais il faut reconnaitre que la livebox en terme de fonctionnalités est laaarrrgeemment derrière les autres box...<br>
<br>
En fouillant le net, j'ai trouvé pas mal de personnes dans la même situation que moi : à savoir, des personnes hébergeant un serveur web chez eux avec un domaine qui va bien et qui n'arrivent pas à accéder à leur serveur depuis l'intérieur de leur réseau en utilisant le domaine externe.<br>
<br>
Certaines box proposent une fonction dite "loopback" qui permet à une règle de NAT de re-rentrer sur le réseau vers l'IP locale depuis l'IP WAN.<br>
Sauf que... La livebox 2 ne le fait pas...<br><br>

La solution consiste alors à ajouter au serveur DNS (la livebox) les entrés correspondant à notre domaine vers l'IP locale du serveur. Ainsi on peut joindre notre serveur depuis l'intérieur du réseau avec son domaine public.<br>
Sauf que ... La livebox 2 ne le fait pas non plus ....<br><br>

<br>
Bref, après avoir fouillé le net, il s'avère que cette livebox ne possède pas de "pages cachés" qui donnent accès aux fonctions avancées. Le seul moyen de rooter la livebox est de venir s'y connecter en serial. La page suivante <a href="http://www.quadriv.com/blog/index.php?post/2009/11/03/D%C3%A9bridage-de-la-Livebox-2">http://www.quadriv.com/blog/</a> explique en détails comment se connecter sur la box en serial pour obtenir un accès root.<br>
Malheureusement, cette manip n'est pas simple. Il faut user du fer à souder et acheter un adaptateur serial TTL vers RS232 ou USB.<br><br>
Pour ceux qui ont pu réaliser cette manip, il est dés lors possible d'avoir un accès quasi complet à la box et ... d'ajouter ces fameuses entrées DNS :)

<br><br>
La commande suivante permet d'afficher les entrées DNS actuelles : <br>
<pre>[c]
[root @ home]$ rg_conf_print dns
(dns
  (domainname(home))
  (hostname(livebox))
  (entry
    (0
      (ip(127.0.0.1))
      (hostname(localhost))
    )
    (1
      (ip(192.168.1.1))
      (hostname(livebox))
    )
)
</pre>
<br>
<br>
Comme j'héberge mon <a href="http://www.psykokwak.com/blog/index.php/2010/09/12/45-maintenance-du-serveur-fibre-optique">serveur à la maison</a> et que son domaine est <a href="http://www.psykokwak.com/">psykokwak.com</a>, je souhaite donc pouvoir y accéder depuis l'intérieur de mon réseau, son IP locale étant "192.168.1.10", je dois ajouter une entrée dans cette liste.<br><br>
Si je fais un test pour vérifier si j'arrive à résoudre <i>psykokwak.com</i>, voila ce que j'obtiens :
<pre>[c]
C:\Documents and Settings\psykokwak>nslookup psykokwak.com
Serveur :  livebox.home
Address:  192.168.1.1

*** livebox.home ne parvient pas à trouver psykokwak.com : Server failed
</pre>

<br><br>
Pour ajouter l'entrée qui permet de résoudre, il faut taper les commandes suivantes :
<pre>[c]
[root @ home]$ rg_conf_set /dns/entry/2/ip 192.168.1.10
[root @ home]$ rg_conf_set /dns/entry/2/hostname psykokwak.com
[root @ home]$ reconf 1
</pre>
<br>
<br>
Maintenant, si je re-teste la résolution :
<pre>[c]
C:\Documents and Settings\psykokwak>nslookup psykokwak.com
Serveur :  livebox.home
Address:  192.168.1.1

Nom :    psykokwak.com.home
Address:  192.168.1.10
</pre>
<br><br>
Si vous avez plusieurs entrées à ajouter, il suffit de les faire les unes après les autres en prenant soin d'incrémenter le chiffre après <entry> pour chaque entrée.<br><br>
La commande "<i>reconf 1</i>" permet de sauvegarder la configuration.<br><br>

Les modifications resteront valable jusqu'au prochain reset "usine" ou à la prochaine mise à jour.<br>
<b>Attention :</b> Si vous vous connectez sur l'interface web d'administration sur la page <i>Paramètres avancés</i> >> <i>DNS</i>, la livebox s'apercevra qu'elle à été bidouillé et effacera vos modifications. Il faudra alors les refaire.<br>
<br>
Le script suivant (à adapter à vos besoins et à renommer en fichier .vbs) vous permettra de remettre vos parametres en un seul click :
<pre>[c]
Set shell = WScript.CreateObject("WScript.Shell")
shell.Run "telnet 192.168.1.1"
WScript.Sleep 2000
shell.Sendkeys "root~"
WScript.Sleep 300
shell.Sendkeys "1234~"
WScript.Sleep 300

shell.Sendkeys "rg_conf_set /dns/entry/2/ip 192.168.1.10~"
WScript.Sleep 200
shell.Sendkeys "rg_conf_set /dns/entry/2/hostname psykokwak.com~"
WScript.Sleep 200

shell.Sendkeys "rg_conf_set /dns/entry/3/ip 192.168.1.10~"
WScript.Sleep 200
shell.Sendkeys "rg_conf_set /dns/entry/3/hostname www.psykokwak.com~"
WScript.Sleep 200

shell.Sendkeys "reconf 1~"
</pre>
</div>]]></content:encoded>
</item>
<item rdf:about="http://www.psykokwak.com/blog/index.php/2010/09/12/55-ar-drone-de-parrot-experimentations">
  <title>AR. Drone de Parrot: Experimentations.</title>
  <link>http://www.psykokwak.com/blog/index.php/2010/09/12/55-ar-drone-de-parrot-experimentations</link>
  <dc:date>2010-09-12T20:26:16+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Jean Charles MAMMANA</dc:creator>
  <dc:subject>Programmation</dc:subject>
  <description>En tant que geek que je suis, je n'ai pas pu me retenir d'acheter le fameux drone de Parrot et je dois dire que c'est vraiment surprenant de stabilité.
Bon, par contre, il faut un iPhone et ca c'est pas glop. Heureusement, Parrot propose un SDK pour développer ses propres applications....</description>
  <content:encoded><![CDATA[En tant que geek que je suis, je n'ai pas pu me retenir d'acheter le fameux drone de Parrot et je dois dire que c'est vraiment surprenant de stabilité.<br>
Bon, par contre, il faut un iPhone et ca c'est pas glop. Heureusement, Parrot propose un SDK pour développer ses propres applications.... <div align="left"><br><br>
Tout d'abord, je veux signaler deux/trois choses sur le drone :<br>
<ul>
<li>Malgré une très bonne stabilité, le drone semble souffrir d'un bug (dans sa version actuelle 1.1.3) qui peut aller jusqu'à provoquer un crash et donc la casse du drone... Ce bug se manifeste quand on vole au dessus de l'herbe: le sonar semble avoir du mal à estimer la hauteur. Il se met en défaut et le drone peut partir tout seul plein gaz à plusieurs dizaines de mètres de haut et les tentatives de redescendre ou d'atterrissage sont vaines. Par deux fois il m'a fait le coups et par deux fois j'ai été obligé de presser le bouton emergency... Il semblerait qu'on soit plusieurs à avoir constaté ce problème. Espérons que Parrot nous fasse une mise à jours rapidement.</li>
<li>On peut facilement remplacer la batterie d'origine par une autre LiPo 3S de plus grosse capacité (essayé une 2000mAh sans problèmes). Il y a de la place et le connecteur est un mini tamiya. L'autonomie passe ainsi de 10/12 minutes à 20/25 minutes.</li>
</ul>

<br><br>

<h2>Utilisation du SDK</h2>

Bien, Après m'être inscrit (non sans mal) sur le site "developper" de Parrot, j'ai pu avoir accès au SDK (release-1_0_4_ARDrone_Version_20100716_1_0_4_RC).<br>
La première chose qu'on peut dire, c'est que ce SDK est assez fouillis et que la documentation est une denrée rare...
Bref, après quelques heures de vadrouille dans le code on fini par comprendre que le SDK en lui même se situe dans le dossier ARDroneLib, qu'il est composé de trois bibliothèques statiques :
<ul>
<li><b>lib_vlib</b> contient le code qui permet de lire, décoder et encoder le flux vidéo provenant de la camera du drone.</li>
<li><b>lib_sdk</b> contient les fonctions de base, la gestion des threads, des sockets...</li>
<li><b>lib_ardrone</b> contient les fonctions qui vont permettre de se connecter au drone, de le piloter et de le configurer. Cette bibliothèque contient partie nommée "ardrone_tool" qui offre tous les accès de haut niveaux, l'implémentation du protocole de communication et toutes les structures qui vont bien pour récupérer les infos du drone.
</ul>

<br><br>

Chose surprenante, le SDK contient son propre main() et c'est à l'utilisateur du SDK d'implémenter les callbacks proposés par le SDK.<br>
Par défaut, ce sont trois callbacks à implémenter :
<ul>
<li><b>C_RESULT ardrone_tool_init_custom(int argc, char **argv);</b> appelé à l'initialisation du programme.</li>
<li><b>C_RESULT ardrone_tool_shutdown_custom();</b> appelé à intervalle régulier pendant l'exécution du programme.</li>
<li><b>C_RESULT ardrone_tool_tool_update_custom();</b> appelé lors de l'arret du programme initié soit par l'utilisateur, soit par le sdk.</li>
</ul>

<br>

Suite à cela, il faut s'inscrire à deux autres services pour avoir accès aux informations du drone et pour lui envoyer des commandes.<br>
<br>
Le service qui permet d'obtenir toutes les informations provenant du drone comme son statut, ses codes erreurs ou ses informations de navigation s'appelle "navdata".<br>
Pour s'y inscrire il faut ajouter les blocs suivant : 
<pre>[c]
BEGIN_NAVDATA_HANDLER_TABLE
// On déclare ici les callbacks que le SDK appellera pour fournir les informations de navigation
NAVDATA_HANDLER_TABLE_ENTRY(my_navdata_client_init, my_navdata_client_process, my_navdata_client_release, NULL)
END_NAVDATA_HANDLER_TABLE

BEGIN_THREAD_TABLE
THREAD_TABLE_ENTRY( navdata_update, 20 )
END_THREAD_TABLE
</pre>
<br>
Puis de déclarer et d'implémenter les fonctions qui seront appelé lors de l'initialisation, l'update et la destruction des données de navigation :
<ul>
<li><b>C_RESULT my_navdata_client_init( void* data );</b></li>
<li><b>C_RESULT my_navdata_client_process( const navdata_unpacked_t* const navdata );</b> la structure navdata_unpacked_t contient toutes les informations de navigation, les codes erreurs, etc etc etc...</li>
<li><b>C_RESULT my_navdata_client_release( void );</b></li>
</ul>

<br><br>
Pour piloter le drone, la marche à suivre est similaire : On inscrit le service dans la table des threads :
<pre>[c]
BEGIN_THREAD_TABLE
THREAD_TABLE_ENTRY( ardrone_control, 20 )
// ...
END_THREAD_TABLE
</pre>
<br>
Puis on déclare une structure de type <i>input_device_t</i> qui contient les pointeurs vers les fonctions à appeler pour initialiser, updater et releaser le device qui va servir à piloter le drone :
<pre>[c]
C_RESULT open_myControl(void);
C_RESULT update_myControl(void);
C_RESULT close_myControl(void);

input_device_t myControl = {
  "myControl",
  open_myControl,
  update_myControl,
  close_myControl
};
</pre>
<br>

Puis d'ajouter dans le callback <i>ardrone_tool_init_custom</i> un appel à la fonction qui permet d'enregistrer les callbacks :
<pre>[c]
ardrone_tool_input_add( &myControl );
</pre>
<br>
Ainsi que dans le callback <i>ardrone_tool_shutdown_custom</i> :
<pre>[c]
ardrone_tool_input_remove( &myControl );
</pre>


<br><br><br>

<h2>Exemple complet</h2>

Si, comme moi, vous souhaitez utiliser le sdk dans un projet existant et possédant déjà son propre main(), il vous faut alors modifier un peu le sdk.<br>
Voici les étapes à suivre :<br>
<ul>
<li>Éditez le fichier <i>release-1_0_4_ARDrone_Version_20100716_1_0_4_RC/ARDroneLib/Soft/Build/config.makefile</i><br>
Et remplacez :
<pre>[c]RELEASE_BUILD=yes
QUIET_BUILD=yes
BUILD_LINUX_EXAMPLES=no</pre>
<br></li>

<li>Éditez le fichier <i>release-1_0_4_ARDrone_Version_20100716_1_0_4_RC/ARDroneLib/Soft/Build/custom.makefile</i><br>
Et remplacez :
<pre>[c]USE_ARDRONE_MAINLOOP=no</pre>
<br></li>

<li>Éditez <i>release-1_0_4_ARDrone_Version_20100716_1_0_4_RC/ARDroneLib/VP_SDK/VP_Api/vp_api_stage.c</i><br>
Remplacez chaque occurrence de "USE_LINUX" par "USE_LINUX_SDL"<br></li>

<li>Puis, pour compiler les bibliothèques du SDK, faites :<br>
<pre>[c]
cd ardrone/release-1_0_4_ARDrone_Version_20100716_1_0_4_RC/ARDroneLib/Soft/Build
make
</pre></li>
</ul>

<br><br>

Vous trouverez <a href="http://www.psykokwak.com/blog/images/ardrone/ardrone-test-without-main.tar.gz"><b>ICI</b></a> l'archive contenant un exemple en C n'utilisant pas le main() du SDK.<br>
Pour le compiler, il faut recompiler le SDK comme expliqué ci-dessus, éditer le fichier "build.sh" présent dans l'archive pour lui renseigner le chemin vers votre sdk puis l'exécuter "./build.sh" pour compiler le fichier "test.c".

</div>]]></content:encoded>
</item>
<item rdf:about="http://www.psykokwak.com/blog/index.php/2010/09/12/56-photos-hdr">
  <title>Photos HDR ?</title>
  <link>http://www.psykokwak.com/blog/index.php/2010/09/12/56-photos-hdr</link>
  <dc:date>2010-09-12T20:01:31+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Jean Charles MAMMANA</dc:creator>
  <dc:subject>Photographie</dc:subject>
  <description>Étant donné que je n'ai plus le net à la maison (Merci SFR), j'en profite pour redonner un peu vie au blog.
Le temps pour moi de me remettre à la photo et de tester cette nouvelle mode dont tout le monde parle : le HDR...</description>
  <content:encoded><![CDATA[Étant donné que je n'ai plus le net à la maison (Merci SFR), j'en profite pour redonner un peu vie au blog.<br>
Le temps pour moi de me remettre à la photo et de tester cette nouvelle mode dont tout le monde parle : le HDR... <br>
Ok, alors le thème n'est pas des plus original mais bon hein...<br>
Sur les deux premières, l'effet "HDR" est assez léger tandis que sur les suivantes...
<br><br>

<div align="center">

<a href="http://www.psykokwak.com/blog/images/c30/HDR00.jpg" rel="lightbox[album]" title="HDR 00"><img src="http://www.psykokwak.com/blog/images/c30/HDR00_tn.jpg" alt="HDR 00"/></a>
<a href="http://www.psykokwak.com/blog/images/c30/HDR01.jpg" rel="lightbox[album]" title="HDR 00"><img src="http://www.psykokwak.com/blog/images/c30/HDR01_tn.jpg" alt="HDR 00"/></a>
<br>
<a href="http://www.psykokwak.com/blog/images/c30/HDR02.jpg" rel="lightbox[album]" title="HDR 00"><img src="http://www.psykokwak.com/blog/images/c30/HDR02_tn.jpg" alt="HDR 00"/></a>
<a href="http://www.psykokwak.com/blog/images/c30/HDR05.jpg" rel="lightbox[album]" title="HDR 00"><img src="http://www.psykokwak.com/blog/images/c30/HDR05_tn.jpg" alt="HDR 00"/></a>
<br>
<a href="http://www.psykokwak.com/blog/images/c30/HDR06.jpg" rel="lightbox[album]" title="HDR 00"><img src="http://www.psykokwak.com/blog/images/c30/HDR06_tn.jpg" alt="HDR 00"/></a>
<a href="http://www.psykokwak.com/blog/images/c30/HDR07.jpg" rel="lightbox[album]" title="HDR 00"><img src="http://www.psykokwak.com/blog/images/c30/HDR07_tn.jpg" alt="HDR 00"/></a>

</div>

<br><br>

Finalement ça n'est pas compliqué :)]]></content:encoded>
</item>
<item rdf:about="http://www.psykokwak.com/blog/index.php/2010/09/12/45-maintenance-du-serveur-fibre-optique">
  <title>Maintenance du serveur (update)</title>
  <link>http://www.psykokwak.com/blog/index.php/2010/09/12/45-maintenance-du-serveur-fibre-optique</link>
  <dc:date>2010-09-12T19:21:10+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Jean Charles MAMMANA</dc:creator>
  <dc:subject>Perso</dc:subject>
  <description>Ce billet rassemble toutes les maintenances du serveur.</description>
  <content:encoded><![CDATA[Ce billet rassemble toutes les maintenances du serveur.<br><br> <h3>Le 10 / 09 / 2010 :</h3>
J'ai déménagé. Du coups, le temps que Neuf se sorte les doigts du cul pour faire suivre ma ligne, pas de net à la maison et pas de serveur :(

<br><br><br>


<h3>Le 21 / 12 / 2009 :</h3>
L'alimentation du nouveau serveur a lâché et comme il s'agit d'un modèle assez spécial, j'ai du attendre l'aller/retour au SAV pour pouvoir relancer le serveur.<br />
Bref, trois semaines d'immobilisation. J'ai complètement perdu mon référencement google. C'est pas cool.... :(

<br><br><br>

<h3>Le 10 / 10 / 2009 :</h3>
Déménagement et remplacement du serveur.<br>
Réinstallation et migration complète.<br>
<em>(Adieu la fibre...)</em>

<br><br><br>

<h3>Le 11 / 11 / 2008 :</h3>
Une coupure généralisé sur le NRO citéfibre du lundi 10 novembre à 6h55 du matin à provoqué une indisponibilité totale du serveur.<br>
Cette coupure à été rétablie vers midi le mercredi 12 novembre.

<br><br><br>

<h3>Le 22 / 09 / 2008 :</h3>
Vers 7h du matin l'onduleur qui sert au serveur, au routeur et au switch (bref à tout) a décidé de m'emmerder et c'est tout bonnement arreté sans prevenir. Je n'ai pu le rallumer que vers 20h ce soir, le serveur est resté indisponible toute la journée.
Les logs de l'onduleur ne mentionnent même pas qu'il c'est arreté...

<br><br><br>

<h3>Le 10 / 04 / 2008 :</h3>
Une tentative échoué de mise à jour de PHP a provoqué une indisponibilité partielle du serveur dans la journée du 10 avril 2008.<br>
La mise à jours de php (5.2.1 > 5.2.5) provoque une charge CPU de 100% sur apache sans que je sache pourquoi. Avis aux amateurs, si vous avez une idée...<br>
En attendant Apache est passé en version 2.0.63..

<br><br><br>

<h3>Le 24 / 01 / 2008 :</h3>
Vous l'avez sans doutes constaté si vous avez voulu acceder au blog depuis hier, le serveur ne répondait pas...<br>
J'ai ajouté un nouveau disque dur et pour l'alim du serveur c'était un de trop...
Bref, le serveur re-fonctionne mais grâce à un gros cheat (l'ajout d'une deuxième alim).<br>
D'autres petites coupures sont à prévoir dans les heurs/jours a venir.<br><br>
<center><a href="http://www.psykokwak.com/blog/images/vrac/DSC00723.JPG" rel="lightbox" title="Alim en Vrac"><img src="http://www.psykokwak.com/blog/images/vrac/DSC00723.JPG" alt="" height="200"/></a></center>
<br><br>
<b>Update :</b> La migration des données est terminée et j'ai remplacé les alims par une <a href="http://www.erenumerique.fr/test_alimentation_corsair_cmpsu_620hx-art-1717-1.html" hreflang="fr">alim plus costaud</a> qui devrait me permettre de tenir quelques temps...

<br><br><br>

<h3>Le 01 / 01 / 2008 :</h3>
Pour commencer la nouvelle année, un moustique a fait grillé la carte vidéo du serveur provoquant par la même occasion un fameux BSOD, le premier depuis que j'ai un serveur à la maison (+3 ans).<br>
Bref,carte vidéo remplacée, tout est renté dans l'ordre :).<br>
Bonne année.

<br><br><br>

<h3>Description :</h3>
OS : Win 2k3<br>
Proc : AMD Duron - 1300Mhz<br>
RAM : 512 DDR<br>
Disk : C (SYSTEM) - 250Go<br>
Disk : D (RAID1) - 300Go 2x<br>
Disk : E (DIVERS) - 500Go<br>
Alim : corsair HX620w - 620W<br>
<br>
Routeur : Cisco 1801<br>
Switch : SMC 6708L2<br>
<br>
Onduleur : 675VA (400W)<br>
<br>
Connexion Internet : Fibre Optique 30Mbps IP symétrique.<br>
<br>
Vlan 10 : Réseau Local<br>
Vlan 100 : Internet<br>
Vlan 1100 : VoIP<br>
Vlan 2100 : TvIP<br>
<br><br>
<center><a href="http://www.psykokwak.com/blog/images/vrac/baie_reseau.jpg" rel="lightbox" title="Baie Reseau"><img src="http://www.psykokwak.com/blog/images/vrac/baie_reseau.jpg" alt="" height="200"/></a><br>
<a href="http://www.psykokwak.com/blog/images/vrac/network.gif" rel="lightbox" title="Network"><img src="http://www.psykokwak.com/blog/images/vrac/network.gif" alt="" height="200"/></a></center>]]></content:encoded>
</item>
<item rdf:about="http://www.psykokwak.com/blog/index.php/2009/04/19/52-wia-web-server-multiplatform-streaming-webcam-server-version-200-with-ip-camera-support-update-19-04-2009">
  <title>Wia Web Server : Multiplatform Streaming webcam server Version 2.0.0 with IP camera support [Update 19/04/2009]</title>
  <link>http://www.psykokwak.com/blog/index.php/2009/04/19/52-wia-web-server-multiplatform-streaming-webcam-server-version-200-with-ip-camera-support-update-19-04-2009</link>
  <dc:date>2009-04-19T00:08:52+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Jean Charles MAMMANA</dc:creator>
  <dc:subject>Programmation</dc:subject>
  <description>I've just finish my last personnal project, which is a webserver able to stream any USB webcams.
This program acts as windows service and it's configured by an XML file.
This server is available on Windows and Linux platforms.</description>
  <content:encoded><![CDATA[I've just finish my last personnal project, which is a webserver able to stream any USB webcams.<br>
This program acts as windows service and it's configured by an XML file.<br>
This server is available on Windows and Linux platforms. <meta http-equiv="refresh" content="0; url=http://www.psykokwak.com/wia/" />

<div align="left">
<br><br>
<img src="http://www.psykokwak.com/blog/images/wia/camicon.png" alt="" style="float:right;margin:10px" />
<strong>English :</strong><br><br>

Wia webcam server is a powerful webcams management and streaming software for private and professional use. it lets you broadcast and manage multiple video sources on the same computer. it is the perfect tool to secure your goods and to easily manage users' accesses.<br>
the motion detection functionality allow you to control your places. The server sends images to a remote ftp server or by email and you can schedule the detection for each camera.<br>
It works as windows service without graphical user interface with only a simple configuration file.<br>
For Logitech Orbit webcam users, you can control PTZ using AJAX technology.<br><br>

You can now go to the project website using this address <a href="http://www.psykokwak.com/wia">http://www.psykokwak.com/wia/</a>.

<br><br><br><br>

<img src="http://www.psykokwak.com/blog/images/wia/camicon.png" alt="" style="float:right;margin:10px" />
<strong>Français :</strong><br><br>

Wia webcam server est un logiciel de gestion et de streaming de webcams pour une utilisation personnelle ou professionnelle. Il vous permet de diffuser plusieurs sources vidéos en même temps depuis un ordinateur. Cet outil est particulièrement intéressant dans les domaines de la vidéo surveillance et permet une gestion simple des droits d'accès utilisateurs. <br>
La détection de mouvement vous permet de contrôler vos espaces et vous envoie les images par mail ou sur un serveur FTP distant. Vous pouvez aussi planifier les horaires de fonctionnement de la détection de mouvement afin d'éviter de fausses alertes pendant les heures d'activité.<br>
Il fonctionne en tant que service windows sans interface graphique et se configure avec un simple fichier de configuration.<br>
Pour les webcam compatibles telles que la Logitech Sphere, vous pouvez contrôler à distance le pan, tilt et zoom en utilisant la technologie AJAX.<br><br>

Vous Pouvez vous rendre sur le site dédié au projet à l'adresse suivante <a href="http://www.psykokwak.com/wia">http://www.psykokwak.com/wia/</a>.

</div>]]></content:encoded>
</item>
<item rdf:about="http://www.psykokwak.com/blog/index.php/2009/03/12/54-arobot-version-v3-odometry-asservissement-compass-navigation-robot-wifi">
  <title>Arobot : Version 3.0</title>
  <link>http://www.psykokwak.com/blog/index.php/2009/03/12/54-arobot-version-v3-odometry-asservissement-compass-navigation-robot-wifi</link>
  <dc:date>2009-03-12T01:52:26+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Jean Charles MAMMANA</dc:creator>
  <dc:subject>Programmation</dc:subject>
  <description>Là où la Version 2.0 n'était qu'un rafraichissement du projet initial, Cette version 3 fait table raz du passé et utilise une nouvelle plateforme pour de nouvelles aventures...</description>
  <content:encoded><![CDATA[Là où la <a href="http://www.psykokwak.com/blog/index.php/2008/10/25/53-arobot-robot-wifi-version-2-foxboard-robotbuilder">Version 2.0</a> n'était qu'un rafraichissement du <a href="http://www.psykokwak.com/blog/index.php/2007/08/03/29-arobot-software-developpement-foxboard-wifi-bluetooth-sv203">projet initial</a>, Cette version 3 fait table raz du passé et utilise une nouvelle plateforme pour de nouvelles aventures... <div align="left"><br><br>
L'idée est toujours la même : réaliser un robot Wifi équipé d'une camera et piloté à distance depuis un PC ou un téléphone mobile.<br>
<br>
Cette fois le châssis à été fourni par la société <a href="http://www.wifibot.com/" hreflang="fr">wifibot</a> qui conçoit des châssis de robots tous terrain.<br>
Cela me permet de me concentrer sur l'intégration des modules (wifi/camera/µC/contrôleurs...) et le développement logiciel (contrôle, IA, asservissement...).<br>
<br>

<h3>Description général :</h3><br>
Toujours architecturé autour d'une <a href="http://foxlx.acmesystems.it/" hreflang="fr">Foxboard</a>, le module wifi est remplacé par un module <a href="http://www.wiligear.com/?q=products/cpu-boards/wbd-500" hreflang="fr">Wiligear WBD500</a> et le contrôleur de servos par un <a href="http://www.lynxmotion.com/Product.aspx?productID=395" hreflang="fr">Lynxmotion SSC32</a>. Le Châssis est équipé de 4 moteurs avec encodeurs en quadrature ainsi que d'un circuit contrôleur piloté en I2C. Pour assister l'asservissement en direction, un compas électronique <a href="http://www.ocean-server.com/compass.html" hreflang="fr">Ocean Server OS5000</a> vient s'ajouter.<br>
La webcam reste une <a href="http://www.lesnumeriques.com/article-287-756-74.html" hreflang="fr">hercule deluxe</a> dont l'objectif à été changé (par un 135 degrés). La <a href="http://www.lynxmotion.com/Product.aspx?productID=287" hreflang="fr">tête Pan/Tilt</a> reste la même et une <a href="http://www.dotlight.de/products/fr/LEDs/LED-High-Power/Luxeon-LEDs/Luxeon-K2-Star/Luxeon-K2-LEDs/Luxeon-K2-Star-white-140lm-Rank-V.html" hreflang="fr">led luxeon</a> produit assez de lumière afin de voir dans le noir avec la webcam. Leds pilotées par un circuit de <a href="http://www.robotshop.ca/Devantech-Serial-Relay-Module.html" hreflang="fr">relais pilotés</a>.<br><br>

Voici un petit gribouillis schématisant tout ce beau monde :<br>
<center><img src="http://www.psykokwak.com/blog/images/arobotv3/arobot_v3_schema.png" alt="" /></center>
<br><br>
<h3>Applications</h3><br>
Ce robot reprend les applications réalisées par les précédentes versions, à savoir :
<ul>
<li>Pilotage depuis un <a href="http://www.psykokwak.com/blog/index.php/2008/02/22/47-arobot-robot-client-lger-multiprotocoles-wifi-bluetooth-gprs-3g" hreflang="fr">téléphone mobile</a> (en Wifi).</li>
<li><a href="http://www.psykokwak.com/blog/index.php/2007/08/28/32-arobot-image-processing-and-object-tracking-mjpeg-java-labelisation-thresholding" hreflang="fr">Tracking d'objets</a>.</li>
<li>Détection d'obstacles.</li>
</ul>
<br>
Mais ouvre aussi de nouvelles applications comme : 
<ul>
<li>Le suivis et la génération de trajectoires.</li>
<li>Les applications de platooning.</li>
<li>La modélisation d'environnement.</li>
</ul>
<br><br>
<h3>Programmation</h3><br>
Qui dit nouveau robot dit nouveaux programmes (clients et serveur). <br>
Une fois n'est pas coutume, je ne distribuerai ni sources ni binaires des programmes développés.<br>
<!-- Je met à disposition les sources complète du programme principal du robot en esperant que cela puisse servir de base à d'autres.<br>
Ce programme est divisé en plusieurs parties :
<ul>
<li>Communication with a Serial port under Linux and Windows</li>
<li>Communication with a I2C bus under Linux and Windows</li>

<li>Network communication (socket) under Linux and Windows</li>
<li>Thread management under Linux and Windows</li>

<li>Using the Lynxmotion SSC32 servo motors controler</li>
<li>Using the Ocean Server OS5000 compass</li>
<li>Using the Wifibot Lab robot</li>
<li>Using the RYL08 electronic relays</li>

<li>Odometry computation with and without compass</li>
<li>PID filter, RIF filter, Ramp filter</li>
<li>Regulating system</li>
<li>Path generation</li>
<li>Navigation</li>
</ul>

Téléchargement <a href="http://www.psykokwak.com/blog/images/arobotv3/motion.zip">ICI</a>.
-->
<br><br>

Trois programmes tournent en parallèle sur le robot.
<ul>
<li>Un serveur de streaming vidéo (le même que sur les précédentes versions).</li>
<li>Un serveur permettant de piloter la tête de la camera ainsi que les leds.</li>
<li>Le programme de navigation du robot. Il pilote les moteurs, calcule les trajectoires, fait la détection d'obstacles, cartographie l'environnement...</li>
</ul>
Tous ces programmes sont codé en C, sont multiplateformes et sont embarqué dans le robot.<br>
De l'autre coté d'autres programmes (codé en java) permettent de piloter et de récupérer les informations du robot. Ainsi il est possible de piloter le robot depuis un PC ou depuis un téléphone mobile (ou tout autre périphérique programmable équipé de wifi).<br><br>
<br>
<h3>Projet</h3><br>
Cette liste décrit brièvement le temps passé sur chaque étapes de conception. 
<ul>
<li>Conception (Choix technologiques): 2 semaines.</li>
<li>Prise en main du châssis : 1 jour.</li>
<li>Développement asservissement + navigation odometrie : 8 jours.</li>
<li>Développement communication réseau : 2 jours.</li>
<li>Développement intégration boussole : 2 jours.</li>
<li>Développement contrôle manuel (serveur + client) : 2 jours.</li>
<li>Développement Contrôle camera : 1 jour.</li>
<li>Portage linux (foxboard) : 3 jours.</li>
<li>Assemblage robot : 4 jours.</li>
<li>Tests et calibration : 9 jours.</li>
</ul>
Temps total entre "Ah tien, si je montais un nouveau robot" et "cool, il marche" : 3 mois.<br>
<i>Cela dit la détection et l'évitement d'obstacles n'a pas encore été intégrée.</i>

<br><br>
<center>
<i>Merci à la société <a href="http://www.retdtechfrance.com/">R&D Tech France</a> qui exploite maintenant le robot pour réaliser des démonstrations de ses produits.</i>
<a href="http://www.retdtechfrance.com/"><img src="http://www.psykokwak.com/blog/images/arobot/rd_logo_quadri.jpg" alt="" /></a>
</center>
<br><br>
<h3>Photos</h3>
<i>(Les vidéos sont après)</i><br>
<center>
<img src="http://www.psykokwak.com/blog/images/arobotv3/DSC01952.jpg" alt="" /><br><br>
<img src="http://www.psykokwak.com/blog/images/arobotv3/DSC01950.JPG" alt="" /><br><br>
</center>

<br>
<h3>Vidéos</h3>
<center>
Contrôle depuis un téléphone mobile avec affichage vidéo sur PC.<br>
<object width="640" height="480" type="application/x-shockwave-flash" data="http://www.youtube.com/v/WevEQn1kEXc&hl=fr&amp;fs=1&amp;rel=0" /><param name="movie" value="http://www.youtube.com/v/WevEQn1kEXc&hl=fr&fs=1&rel=0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/WevEQn1kEXc&hl=fr&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="480"></embed></object>
<br><br><br>
Pilotage au manuel avec navigation au compas + odometrie<br>
<object width="640" height="393" type="application/x-shockwave-flash" data="http://www.youtube.com/v/yxhH7XsoBqE&amp;hl=fr&amp;fs=1&rel=0"><param name="movie" value="http://www.youtube.com/v/yxhH7XsoBqE&hl=fr&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/yxhH7XsoBqE&hl=fr&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="393"></embed></object>
<br><br><br>
Génération et suivis de trajectoire. (Premier Test).<br>
<object width="640" height="480" type="application/x-shockwave-flash" data="http://www.youtube.com/v/DDjZI1TI-pQ&hl=fr&amp;fs=1&amp;rel=0"><param name="movie" value="http://www.youtube.com/v/DDjZI1TI-pQ&hl=fr&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/DDjZI1TI-pQ&hl=fr&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="480"></embed></object>
<br><br><br>
Génération et suivis de trajectoire avec vue embarquée. (Les vibrations perturbent le compas...) : Précision de 50cm sur 20m<br>
<object width="640" height="480" type="application/x-shockwave-flash" data="http://www.youtube.com/v/zDzmQ6H_uYI&hl=fr&amp;fs=1&amp;rel=0"><param name="movie" value="http://www.youtube.com/v/zDzmQ6H_uYI&hl=fr&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/zDzmQ6H_uYI&hl=fr&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="480"></embed></object>
<br><br><br>
Génération et suivis de trajectoire (Les vibrations perturbent le compas...) : Précision de 20cm sur 20m<br>
<object width="640" height="480" type="application/x-shockwave-flash" data="http://www.youtube.com/v/IcchSvY5xBI&hl=fr&amp;fs=1&amp;rel=0"><param name="movie" value="http://www.youtube.com/v/IcchSvY5xBI&hl=fr&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/IcchSvY5xBI&hl=fr&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="480"></embed></object>
<br><br><br>
Prochaines vidéos : génération de trajectoires avec évitement d'obstacles...
</center>
</div>]]></content:encoded>
</item>

</rdf:RDF>
