Raspberry Pi et module vidéo

Introduction

Une composante essentielle pour le contrôle d’un robot est une caméra. L’opérateur doit avoir une idée précise de la position de son véhicule robotique et des obstacles qui l’entourent pour pouvoir se déplacer en toute sécurité.

Fort heureusement, les ingénieurs de la fondation Raspberry Pi on eut l’idée d’incorporer directement sur la carte mère un connecteur dédié pour un module vidéo externe. Ce connecteur facilite grandement l’acquisition d’image de haute définition. En plus du connecteur vidéo dédié, le Raspberry Pi peut utiliser ses ports USB pour interfacer avec une caméra USB externe conventionnelle.

Références

RaspberryPi.org – Python

RaspberryPi.org – Camera Module

Picamera – Site

Picamera – Recipes

Getting started with PiCamera

Modules Vidéo

Il existe plusieurs modèles de caméra vidéo disponibles pour le Raspberry Pi. Les caractéristiques à considérer sont les suivantes.

Résolution :  La transmission d’une image vidéo en temps réel va se traduire par un volume de données important. La bande passante souvent limitée des réseaux sans-fil va nous obliger à réduire au minimum le volume des données transmises. Il n’est donc pas utile de favoriser les modules vidéo offrant une haute définition. Plusieurs tests m’ont démontré que 640×480 ou 800×600 sont les valeurs de résolutions maximales utilisables.

Largeur du champ de vue : Les modules vidéo disponibles sur le marché offrent généralement un angle de vue de 75 degrés à 160 degrés. Un angle trop étroit va rendre difficile la navigation des obstacles mais offrira une image beaucoup plus précise. Une prise de vues large va augmenter la perspective et faciliter la navigation mais la lentille utilisée va déformer l’image. Il est préférable, dans le cas d’un véhicule robotique, d’avoir un champ de vue le plus large possible, même au prix d’une déformation partielle de l’image.

Luminosité : Certaines caméras vont offrir une meilleure sensibilité dans des conditions de faible luminosité. Cette sensibilité accrue aura toutefois comme conséquence de diminuer le rendu des couleurs et de livrer une image en noir et blanc.

Configuration de Raspberry Pi

L’outil de configuration raspi-config est utilisé pour activer les pilotes du système vidéo. L’utilisateur doit avoir les droits administratifs root, la commande sudo est utilisée.

Marche à suivre

1 – Sélectionner le menu 5 – Interface Options
2 – Sélectionnes le menu P1 caméra
3 – Accepter l’activation de l’interface video
4 – Redémarrer.

Commandes en mode console

pi@raspberrypi:~ $ sudo raspi-config
(1) 5 Interfacing Options  Configure connections to peripherals 
(2) P1 Camera      Enable/Disable connection to the Raspberry Pi Camera 
(3) Would you like the camera interface to be enabled?    <Yes> 

Python et librairies

Python propose une librairie logicielle fort pratique pour exploiter le module vidéo du Raspberry Pi. Son installation par l’utilisateur est requise.

Commande en mode console

pi@raspberrypi:~ $ sudo apt-get install python3-picamera

Environnement de développement

Le véhicule robotique utilise la version Stretch de Raspbian tandis que la station de contrôle client fonctionne sous Xubuntu 1804 LTS. Le client vidéo va utiliser un programme externe pour visualiser les images envoyées par le serveur. L’option la plus pratique pour Linux est le logiciel mplayer.

La librairie Python subprocess va permettre de contrôler mplayer et de lui rediriger le flot de données reçues. Le logiciel mplayer et la librairie subprocess doivent être installés manuellement sur la station de contrôle. Les configurations propres à mplayer sont définies dans une liste de commandes qui est exécutée par la librairie subprocess lors du démarrage du programme.

L’utilisateur pourra modifier les paramètres de mplayer selon ses propres besoins. Les valeurs proposées sont adéquates pour un environnement test donné. Certaines modifications pourraient être nécessaires afin de s’adapter  à d’autres conditions d’utilisation.