Ceci est une ancienne révision du document !
Table des matières
Projet de Vision pour la robotique
Dans le cadre du confinement imposé par le gouvernement, vous devrez travailler à domicile. Profitons de cette occasion pour que vous puissiez mettre en oeuvre par vous même les concepts et utiliser les outils présentés dans le module de Vision: http://homepages.laas.fr/bvandepo/wiki/doku.php?id=visionlpro
Vous devrez développer une application en langage Python utilisant la librairie OpenCV afin de réaliser différents traitements: (Chaque étudiant se verra affecter un traitement de manière individuelle, et des améliorations seront demandées au fûr et à mesure de l'avancement des projets).
Lors des développements, vous pourrez communiquer avec l'enseignant par mail afin d'obtenir des informations. Les informations pertinentes seront mises en commun sur le wiki pour que tous puissent en bénéficier. Vous devrez vous assurer que la réponse à votre question n'est pas déjà présente sur le wiki avant de la poser, afin de minimiser les échanges inutiles.
La quantité de travail pour ce projet est de l'ordre de 30 heures. Il sera évalué sur la base du code produit par l'étudiant, sur les interactions que nous aurons eu (vous devrez faire preuve d'autonomie mais ne pas rester bloqué et donc solliciter de l'aide avant de perdre trop de temps) ainsi que sur le rapport que vous devrez fournir en fin de projet. Ce rapport devra comporter:
- Un échéancier faisant apparaître clairement le temps passé sur chaque étape.
- La description des étapes de traitement que vous aurez réalisé, et une justification pour chacun des choix que vous aurez fait.
- Une liste d'images que vous aurez traitées ainsi que les résultats de traitement attendus et obtenus.
- Une analyse de votre travail indiquant ce qui fonctionne (ou pas), ce qu'il faudrait faire pour améliorer (ou faire fonctionner).
Etape 1: Installation des outils de développement et premiers test
Dans un premier temps, vous devez installer les outils et librairies nécessaires.
Système Linux Debian
Première situation, la plus simple, vous disposez d'un système d'exploitation Linux avec distribution Debian (éventuellement installé dans une machine virtuelle avec un outil comme Virtualbox). Ce système peut être installé sur une carte raspberry Pi comme en TP ou bien sur votre PC.
Pour installer les outils, copier coller une ligne après l'autre dans une console (en vérifiant qu'il n'y a pas de message d'erreur):
sudo apt-get update && sudo apt-get upgrade sudo apt-get install python3-opencv libjasper-dev libqtgui4 libqt4-test libtiff5 libgstreamer1.0-0 libqtcore4 libopenexr23 libatlas3-base libsz2 build-essential cmake pkg-config libjpeg-dev libtiff5-dev libjasper-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libfontconfig1-dev libcairo2-dev libgdk-pixbuf2.0-dev libpango1.0-dev libgtk2.0-dev libgtk-3-dev libatlas-base-dev gfortran libhdf5-dev libhdf5-serial-dev libhdf5-103 libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5 python3-dev nano python3-pyqt4 screen imagemagick gitk iotop lsof geeqie idle3 python3-pip sudo python3 -m pip install imutils sudo python3 -m pip install opencv-python sudo python3 -m pip install matplotlib
Système Windows
Cette seconde situation est moins simple, et votre enseignant n'a pas une aussi bonne maîtrise. Vous privilégierez donc la première si possible. La page suivante détaille l'installation de python3 et openCV sous windows: https://solarianprogrammer.com/2016/09/17/install-opencv-3-with-python-3-on-windows/
Vous pouvez ensuite installer l'environnement de développement idle3 comme en TP, en suivant les instructions de: http://maths.spip.ac-rouen.fr/IMG/pdf/idle-windows.pdf
Premiers tests
Vous devriez maintenant pouvoir exécuter les programmes que nous avons développé ensemble et qui sont sur la page: http://homepages.laas.fr/bvandepo/wiki/doku.php?id=visionlpro
Etape 2: Projet commun
Dans un premier temps, vous devrez re développer l'application réalisant la lecture d'une face du rubikscube. Cette application a été décrite dans les modules de vision industrielle et de robotique de manipulation Kuka. Les étapes du traitement sont rappelées ici:
L'image de test à traiter est:
Vous devez spécifier manuellement les coordonnées des 4 coins de la face à traiter:
Vous devez ensuite générer une image rectifiée (par application de l'homographie) de la face du cube avec une résolution de 31×31 pixels:
Vous devez ensuite déterminer pour chacun des pixels de l'image quelle est la couleur (parmi les 6 couleurs apprises) la plus proche:
Vous devez finalement effectuer un vote pour chacune des cases du rubiks cube en utilisant les différentes valeurs calculées précédemment, et générer une image de 3×3 pixels:
Etape 3: Projets individuels
Après que l'enseignant ait validé des résultats sur le premier projet commun, il vous affectera l'un des projets individuels suivants:
Traitement d'images individuelles
Détecter des carrés et rectangles dans l'image et mesurer longueur/largeur/surface/position et orientation
Détecter des disques (pièces de monnaie) et mesurer position et orientation (par template matching)
Détecter des clous et mesurer leur longueur/position
Apprentissage et classification par réseau de neurones CNN: https://www.pyimagesearch.com/2018/11/19/mask-r-cnn-with-opencv/
Comptage du nombre d'anneaux concentriques (dans un premier temps intégralement vus dans l'image puis partiellement)
Traitement d'image de profondeur acquise avec la caméra RGB-D realsense
traitement d'image avec projecteurs lasers
Détecter des lignes pour robot mobile
Estimation de pose 3D avec tag 2D aruco pour la réalité augmentée: https://www.uco.es/investiga/grupos/ava/node/26
Détections de défauts sur objet manufacturé: motifs périodiques sur un tissus
Détecter différentes postures de main
Traitement d'images en séquence
Traitement d'une paire d'images acquises successivement pour la mesure de vitesse d'un objet sur un tapis