StereoPi - notre matériel pour étudier la vision par ordinateur, les drones et les robots

Bonjour à tous!

Aujourd'hui, je voudrais vous parler de notre nouveau matériel basé sur le module de calcul Raspberry Pi, conçu pour étudier la vision par ordinateur et installer sur des robots et des drones. En fait, il s'agit d'une caméra stéréo «intelligente» - elle prend en charge le travail avec deux caméras en même temps, a de vraies framboises comme «cœur» et, surtout, fonctionne avec la version stock de Raspbian.
Voici à quoi ressemble la solution assemblée, avec deux caméras installées et un module Pi Compute.

image

L'appareil fonctionne avec la version stock de Raspbian. Il vous suffit de copier notre fichier dtblob.bin pour activer la prise en charge de la double caméra.

Cela signifie que vous pouvez utiliser les utilitaires raspivid, raspistill et autres habituels pour travailler avec des images et des vidéos.

Pour référence, la prise en charge du mode stéréo est apparue dans Raspbian dès 2014, simultanément avec la sortie de la première version de Raspberry Pi Compute. Vous pouvez voir l'historique du développement du support stéréo sur le forum Raspberry.

Avant de décrire les détails techniques, permettez-moi de vous montrer quelques exemples concrets du fonctionnement de l'appareil.

1. Capture d'image


Code:

raspistill -3d sbs -w 1280 -h 480 -o 1.jpg 

et vous obtenez ce qui suit:

image

Vous pouvez télécharger l'image capturée originale ici .

2. Capture vidéo


Code:

 raspivid -3d sbs -w 1280 -h 480 -o 1.h264 

et vous obtenez ce qui suit:

image

Vous pouvez télécharger le fichier vidéo original (converti en mp4) à partir de ce lien .

3. Utilisation de Python et d'OpenCV pour construire une carte de profondeur


image

Dans ce cas, j'ai utilisé un code légèrement modifié d'un précédent projet 3Dberry ( https://github.com/realizator/3dberry-turorial ).

Pour obtenir ces photos et vidéos, nous avons utilisé cette paire d'appareils photo:

image

Pour l'installation sur drones, nous utilisons souvent le grand angle (160 degrés), ce sont:

image

Maintenant, un peu plus sur le morceau de fer lui-même




Détails techniques


Vue de face:

image

Vue de dessus:

image

Caractéristiques clés:
Dimensions: 90x40 mm
Caméras: 2 x câble CSI 15 voies
GPIO: 40 classiques Raspberry PI GPIO
USB: 2 x USB type A, 1 USB sur broches
Ethernet: RJ45
Mémoire: Micro SD (pour CM3 Lite), pour le reste NAND (flash)
Moniteur: sortie HDMI
Alimentation: 5V DC
Framboises prises en charge: Raspberry Pi Compute Module 3, Raspberry Pi CM 3 Lite, Raspberry Pi CM 1
Types de caméras prises en charge: caméra Raspberry Pi OV5647, caméra Raspberry Pi Sony IMX 219, entrée HDMI (mode unique)
Pour le firmware NAND: connecteur MicroUSB
Interrupteur d'alimentation: Oui, oui, c'est tout. Plus de plug-ins MicroUSB pour le redémarrage de l'alimentation!

Un peu d'histoire


En général, l'idée elle-même est apparue en 2015. La première version est née fin 2015. Certaines personnes savent que notre équipe a un "effet de mode" sur la télécommande de divers gadgets mécaniques, donc dans la première version, une puce supplémentaire a été installée à bord, ce qui nous a donné 16 sorties PWM - pour la direction, les moteurs et d'autres choses utiles.

image

À cette époque, il n'y avait que la première version du module Compute sur le marché, à bord qui était un ancien processeur de la toute première framboise. Le morceau de fer a fait un excellent travail de capture, de compression et de streaming vidéo, mais à la fin nous sommes tombés sur le processeur. Par exemple, ce n'était déjà pas suffisant pour un flux h264 vers un pilote et un flux RTMP vers un serveur en même temps. Et pour les constructeurs de robots, le principal souhait était de construire une carte spatiale en utilisant une carte de profondeur et SLAM - ici, le processeur manquait complètement.

image

Vous avez ici la version Compute Module 3. Ils ont immédiatement «sauté» de la première version à la troisième, plaçant le processeur du troisième Raspberry. Maintenant, sa puissance était déjà suffisante pour calculer quelque chose à la volée.

Cependant, il s'est avéré que les générations semblaient être compatibles, mais il ne semblait pas en être ainsi. Le fait que le module de calcul 3 soit un millimètre plus large ne nous a pas dérangés. Mais les besoins nutritionnels ont sérieusement changé.

De plus, nous avons déjà accumulé des commentaires sur les résultats du travail avec la première version, et nous avons décidé d'en publier une nouvelle, dans laquelle nous avons effectué toutes les modifications accumulées.

Ce qui est fixe dans la deuxième génération


Ajout de la prise en charge du module de calcul 3

Nous avons un schéma d'alimentation commutable, donc si vous le souhaitez, vous pouvez travailler avec la première framboise. Le choix ici est simple: si vous n'avez besoin que de diffuser la vidéo, la première framboise est parfaitement suffisante. En prime, il est livré avec près de trois fois moins de consommation d'énergie et de dissipation thermique. Et vous devez calculer quelque chose de plus sérieux (quelques vidéos ou vision par ordinateur) - mettez la troisième.

Module déployé "puces de la carte"

Dans la première version, le type de connecteur SoDIMM sur la carte était mélangé, en conséquence, le module informatique se levait avec des puces "à la mère". Sur le module de calcul 1, cela n'a pas causé de problèmes - le pourcentage chauffait légèrement et il y avait suffisamment de goulot d'étranglement entre les cartes pour un refroidissement normal. Avec un troisième, une telle astuce n'aurait pas roulé, nous avons donc «tourné» le connecteur, ce qui impliquait de recâbler toute la carte à partir de zéro.

Prise en charge microSD native

Le premier module informatique par défaut avait un FLASH intégré à bord et ne pouvait pas fonctionner avec microsd. Nous avons essayé d'y ajouter MicroSD en tant que deuxième lecteur, mais nous avons rencontré un gros problème pour le prendre en charge. La communication avec les travailleurs du noyau sur un forum framboise a montré que le problème n'est pas facile (lors du chargement, le module a choisi au hasard NAND ou MicroSD pour le démarrage). En conséquence, sur la révision actuelle, nous avons fait le câblage comme sur le devboard de framboise de référence. Si Compute Module Lite - sans NAND intégré - nous travaillons avec microsd comme dans les framboises ordinaires. Si la version n'est pas Lite ou le premier module, le microsd n'est pas disponible.

Déplacer les connecteurs de la caméra vers le haut et espacés de 65 mm

Dans la première version, les connecteurs étaient dirigés le long du plan de la carte. Une bagatelle, mais après de nombreuses installations dans le cas, plusieurs problèmes sont devenus évidents.

  • Une boucle d'une caméra sort des connecteurs, ce qui est conseillé de ne pas plier (en particulier la partie renforcée bleue). Cela a stupidement pris de l'espace inutile dans le boîtier et a empêché l'installation.
  • Les connecteurs étaient très proches - cela empêchait de travailler avec des câbles.
  • Les caméras dans le boîtier reposent généralement sur une base stéréo de 65 mm et les câbles sur la carte étaient à proximité. Il s'est avéré que chaque boucle devait être pliée de façon anormale - ruptures, déchirures, éclatement des connecteurs.

Suppression de la puce et de 16 PWM supplémentaires

Après avoir analysé de nombreux projets récents, nous avons réalisé que cette fonctionnalité n'était pas pertinente. Le plus souvent, les logiciels Raspberries PWM suffisent.

Commutateur d'alimentation ajouté

Ceux qui ont au moins un peu travaillé avec les framboises comprennent de quoi il s'agit :-)

Ajout d'un troisième USB sur les broches sur le côté

Dans nos projets framboise, nous avons souvent besoin de dongles USB à bord. S'ils sont coincés dans les connecteurs de la carte, nous avons un module collant vers l'extérieur. Tenter d'utiliser une rallonge USB aggrave le problème. Il n'y avait qu'une seule option: souder le câblage directement aux framboises. Les broches latérales que nous avons ajoutées nous permettent de fabriquer une simple rallonge et de placer un dongle USB (généralement WiFi ou 4G) directement le long de la carte, et toute cette économie s'intègre parfaitement dans un boîtier compact.

Voici une telle histoire que je voulais vous raconter aujourd'hui. Merci de votre attention et je suis prêt à répondre aux questions.

Source: https://habr.com/ru/post/fr415587/


All Articles