Prototype de drone maritime à partie des tests réalisés
Grâce aux différents tests qui ont été réalisés en amont, il est maintenant envisageable de créer une première version de test qui intègre l'ensemble des développements. Il est donc nécessaire d'intégrer la solution de vidéo retenue, piloter le moteur à l'aide d'openrov-cockpit et remplacer les différents capteurs par une solution plus adaptée et plus simple pour la Raspberry Pi.
Quelques développements ont été réalisés dans le cadre d'un projet étudiant de 4ème année d'école d'ingénieur de Polytech pour valider une première preuve de concept. Je tiens donc à remercier ici Benjamin Claquin, Rihana Rabehasy, Salim Youssef, Julien Le Van Suu qui ont travaillé à partir des tests que j'avais réalisé et avec le matériel que je leur ai fourni afin d'intégrer et de réaliser une partie des développements nécessaires pour faire cette adaptation. Cela a débouché sur un projet de drone maritime pilotable à distance et avec la possibilité d'automatiquement prendre un cap. Leur travail a donné le résultat visible sur la vidéo ci-dessous. Il ne manque que la coque du sous-marin... ou presque. Ce projet a permis de mettre en évidence des lacunes que nous allons tenter de combler.
Je suis donc reparti de leur travail pour tenter de faire une intégration propre des développements dans l'interface d'OpenROV et surtout de pallier aux différents problèmes et limitations rencontrées durant leur projet.
Intégration de la vidéo HD dans openrov-cockpit
La première des choses à effectuer est d'intégrer la flux vidéo obtenue avec la solution peu gourmande en CPU (ffmpeg, crtmpserver et lighttpd) et de visualiser ce flux vidéo en temps réel dans l'interface graphique d'openrov-cockpit (qui lui travaille normalement avec mjpeg-streamer, solution qui n'exploite pas le GPU de la Raspberry Pi et qui présente un décalage important et un nombre de frames par secondes très limité). Toutefois cette solution envoie un flux vidéo avec le protocole RTMP. Celui-ci n'est lisible dans un navigateur qu'à l'aide d'un plugin Flash player (et encore sous certaines conditions bien particulières). Cela réduit considérablement le type de client que l'on peut utiliser pour se connecter au robot.
J'ai donc étudié une autre solution pour le streaming-vidéo qui permette de supporter un nombre moins restreint de clients possible. Cela a conduit à finalement utiliser une Raspberry Pi 2 avec moins de contraintes pour la consommation CPU, mais plus d'exigences sur la qualité du flux vidéo. Cette dernière solution, basée sur WebRTC, devrait en plus être beaucoup plus facile à intégrer dans le projet openrov-cockpit.
L'adaptation est en cours mais actuellement, la solution n'est pas encore fonctionnelle. A suivre donc.