Intégration des différents développements pour une adaptation d'openrov-cockpit

OpenROV Cockpit Web Interface

Maintenant que les différents tests unitaires ont été réalisés, il est temps de passer à l'intégration et à la modification du logiciel openrov-cockpit et à l'installation des différentes configurations sur la plateforme.

Configuration et optimisation du système

Depuis le passage à Jessie, Raspbian fournit deux images pour le système: une image complète prête à l'emploi qui contient énormément d'outils qui nous sont inutiles (Mathematica, LibreOffice, ...) et une image lite qui est beaucoup plus compacte et que nous avons préféré lors de cette réinstallation complète du système. Cela évite quelques unes des opérations décrites dans la section "Configuration et Optimisation du Raspberry Pi".

Configuration de la vidéo

Pour la partie vidéo, après les différents tests effectués, j'ai finalement opté pour l'utilisation de mjpeg_streamer finalement. Avec les amélioration (version optimisée pour Raspberry et utilisation de la bonne résolution), la vidéo est assez fluide, sans consommer de ressources sur la plate-forme. J'ai donc installe uv4l et compilé et installé mjpeg_streamer tel que décrit dans la section "Comparatif des solutions de vidéo streaming sur Raspberry Pi 1 et Raspberry Pi 2.

Voici le paramétrage fixé dans le fichier /etc/uv4l/uv4l_raspicam.conf

encoding = mjpeg
width = 1280
height = 720
framerate = 25
...
server-option = --port=9001

Il est en effet conseillé d'utiliser une résolution de 1280x720 pour pouvoir bénéficier de l'angle maximal de vision (cf document sur le site officiel).

Installation de Node.js

L'installation de Node.js doit être réalisée afin de pouvoir exécuter le programme openrov-cockpit. Ceci a été réalisé tel que décrit dans la section "Utiliser openrov-cockpit sur Raspberry Pi".

Création d'un git personnel sur la base du cockpit d'OpenRov

Pour travailler à l'adaptation des sources d'openrov-cockpit aux contraintes du changement d'architecture pour une Raspberry Pi et tirer parti de cette plate-forme, j'ai du créer mon propre répertoire de sources à partir d'une version stable d'OpenRov. Pour ceci, j'ai cloné le git des sources de openrov-cockpit, je suis revenu à une version stable et ai créé une branche sur cette version sur laquelle j'ai commencé les adaptations. Voici les commandes qui m'ont permis de mettre en place ce git après avoir cloné le projet sur github.

git clone https://github.com/lavirott/openrov-cockpit.git
git checkout `git rev-list -n 1 --before="2015-10-08 12:00" master` -b raspberry_rov
git push --set-upstream origin raspberry_rov
# make some useful modifications
git add 
git commit
# enter a comment for the current commit
git push
# push these new modifications to the remote repository

Pour ceux qui auraient besoin de réviser le dataflow des commandes git, voici une très bonne illustration (réalisée par Oliver Steele).

Pour récupérer les sources modifiées avec les premiers patchs appliqués et ainsi contribuer au projet:

cd ~
sudo apt-get install git
git clone https://github.com/lavirott/openrov-cockpit.git -b raspberry_rov
cd openrov-cockpit

Configuration de GrovePi pour accès aux capteurs

Pour faciliter l'accès aux entrées sorties sur la Raspberry, j'ai eu recours à la plate-forme GrovePi. L'installation des logiciels nécessaires a été réalisée suivant les informations décrites dans la section "". Le capteurs utilisé actuellement est une centrale inertielle à 9 degré de liberté (9DOF) fournissant les informations suivantes: les angles yaw, pitch et roll ainsi que la boussole.

Monitoring et intégration des informations

Il est important de surveiller l'activité de sa plate-forme Raspberry. Pour réaliser cette tâche, j'ai installé rpimonitor.

sudo apt-get install apt-transport-https ca-certificates
sudo wget http://goo.gl/vewCLL -O /etc/apt/sources.list.d/rpimonitor.list
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 2C0D3C0F
sudo apt-get update
sudo apt-get install rpimonitor
sudo /usr/share/rpimonitor/scripts/updatePackagesStatus.pl

Il ne vous reste alors plus qu'à vous connecter à l'adresse suivante: http://rov.local:8888 pour surveiller votre système. Ce monitoring sera aussi réalisé dans openrov-cockpit grâce à quelques sondes, mais l'avantage de rpimonitor est de stocker ces informations grâce à une base rrd (Round Robin Database) et donc d'y avoir accès sur de plus longues durées.

Démarrage automatique d'openrov-cockpit au démarrage de la Raspberry Pi

Afin de complètement automatiser le démarrage d'openrov-cockpit lors de l'alimentation de la Raspberry Pi, il est nécessaire d'ajouter un script dans le processus de lancement de la plate-forme. Raspbian est basé sur une Debian qui utilise toujours le système de démarrage basé sur Sys-V. Il suffit donc l'ajouter le script de démarrage du service openrov et de l'activer grâce aux commandes suivantes:

sudo ln -s /opt/openrov/cockpit/linux/openrov.service /etc/init.d/openrov
update-rc.d openrov defaults

Pour ne plus lancer le service openrov lors du démarrage de la plate-forme, il suffit de le retirer de la liste des scripts via la commande:

update-rc.d -f openrov remove

A partir de cette étape, disposant d'un système fonctionnel pour les éléments principaux, j'ai pensé qu'il serait intéressant de mettre à disposition une image complète du système mis en place. Vous pouvez retrouver la dernière version de cette image sur la page d'accueil du projet RaspiROV.