Bin picking robotisé et vision 3D : comment ça marche de bout en bout
Comment fonctionne un système de bin picking guidé par la vision, de la caméra 3D au robot : segmentation, estimation de pose 6D sur modèle CAO, choix de la prise et ROS 2.
Le bin picking, ou prélèvement en vrac, a l'air simple. Un robot regarde dans un bac de pièces jetées en vrac et les sort une par une. Un humain le fait sans réfléchir. Pour une machine, c'est l'un des grands problèmes classiques de l'automatisation industrielle, parce que chaque prise part d'une scène différente et désordonnée.
J'étais responsable du logiciel de PickNet, la chaîne de vision et de commande d'une cellule industrielle de bin picking construite par l'équipe AutoMates. La cellule robotisée, le matériel et l'intégration étaient un travail d'équipe ; la chaîne de la caméra jusqu'à la prise, c'était ma partie. Voici comment fonctionne un tel système, étape par étape, et où se trouve la vraie difficulté.
Ce que le bin picking robotisé doit résoudre
Pour saisir une pièce, le système doit répondre à quatre questions, à chaque fois :
- Où sont les pièces ? Quels pixels et quels points 3D appartiennent à quel objet.
- Comment chaque pièce est-elle orientée ? Sa pose 6D complète : position et rotation dans les trois dimensions.
- Quelle pièce prendre, et par où ? Un point de préhension accessible au préhenseur sans toucher le bac ni les autres pièces.
- Comment le robot y va-t-il ? Un mouvement sans collision depuis la position du bras jusqu'à la prise, puis le retour.
Une seule erreur et le robot rate la pièce, la lâche, ou percute la paroi du bac.
La chaîne, étape par étape
Voici comment PickNet procède.
1. Une caméra 3D regarde dans le bac
Une caméra 3D Zivid capture le bac. Au lieu d'une photo plate, on obtient un nuage de points : chaque pixel a une profondeur. C'est cette profondeur qui rend le bin picking 3D possible. Une image 2D peut dire qu'il y a une pièce ; elle ne peut pas dire de façon fiable comment elle est inclinée.
2. Segmentation : un masque par pièce
Le premier modèle sépare la scène en pièces individuelles. PickNet utilise FastSAM, un modèle de segmentation de fondation, sur un worker GPU dédié. Il renvoie un masque pour chaque pièce de l'image en environ une seconde.
L'avantage d'un modèle de fondation : pas besoin d'entraîner un réseau de segmentation de zéro pour chaque nouvelle pièce. Il sait déjà séparer des objets en général.
3. Estimation de pose 6D à partir du modèle CAO
Un masque dit quels points appartiennent à une pièce, pas sa pose. Pour ça, chaque masque est découpé dans le nuage de points et comparé au modèle CAO de la pièce.
C'est de la géométrie 3D classique, construite avec Open3D :
- RANSAC trouve un premier alignement entre le modèle CAO et les points observés, même avec beaucoup de bruit et de données manquantes.
- ICP (iterative closest point) affine cet alignement jusqu'à ce que le modèle colle à la surface observée.
- VSD (visible surface discrepancy) note l'ajustement, pour ne garder que les poses fiables.
Cette dernière étape compte plus qu'on ne le croit. Une pose fausse avec une confiance élevée, c'est le pire scénario. Mieux vaut sauter une pièce qu'envoyer le robot là où elle n'est pas.
4. Choisir la prise
Avec une pose fiable, le système sait exactement où est la pièce et comment elle est orientée : il peut placer un point de préhension réellement utilisable. En parallèle de la géométrie, j'ai aussi travaillé sur des modèles de qualité de prise (CNN et Vision Transformers), entraînés en partie sur des données synthétiques pour couvrir les cas rares.
5. Passer la main au robot
Un pont ROS 2 convertit la prise dans le repère de base du robot et la publie vers une machine à états MoveIt 2. MoveIt planifie le mouvement, avec le préhenseur modélisé pour la détection de collisions, pour que le bras ne touche ni le bac ni les pièces voisines.
Comment le logiciel est organisé
La chaîne tourne sous forme de cinq services Docker sur un réseau partagé, reliés par Redis. La segmentation est servie comme un microservice GPU via Redis, et le reste de la chaîne est réparti sur les autres services.
Ce découpage a des avantages concrets :
- Chaque brique se développe, redémarre et se remplace séparément. On change de modèle de segmentation sans toucher au code du robot.
- Le travail GPU est isolé. Le modèle lourd vit à un seul endroit, le reste reste léger.
- Tout est mesurable. Chaque exécution écrit une chronologie et un rapport de performance. C'est comme ça que le temps de bout en bout, environ 3,3 secondes de l'image caméra à la pose de prise, a été profilé et optimisé.
Instrumenter dès le premier jour, c'est l'habitude que je recommande le plus. On ne peut pas rendre une chaîne plus rapide ou plus fiable sans savoir où partent le temps et les échecs.
Le travail de données derrière
Les modèles ne valent que ce que valent les données. Derrière la chaîne, il y a la partie moins visible : annoter de vraies captures, générer des données synthétiques, entraîner, faire tourner l'inférence et déployer les modèles.
Les données synthétiques méritent une mention. Les vrais bacs donnent rarement assez d'exemples des cas difficiles : pièces sur la tranche, à moitié enfouies, éclairage inhabituel. Générer ces scènes de façon synthétique permet d'entraîner sur des situations qu'il faudrait des semaines pour collecter à la main.
Les difficultés du bin picking 3D
Certains problèmes reviennent dans presque tous les projets :
- Les pièces brillantes et réfléchissantes. Le métal renvoie la lumière d'une façon qui laisse des trous ou du bruit dans le nuage de points. Réglages de la caméra, angle de vue et éclairage comptent tous.
- L'occlusion. Des pièces les unes sur les autres ne sont que partiellement visibles, ce qui complique la segmentation et l'estimation de pose.
- Les pièces emmêlées ou imbriquées. En prendre une peut en entraîner une autre.
- Les dernières pièces. Celles qui sont à plat contre les parois ou dans les coins sont difficiles à atteindre sans collision.
- Savoir abandonner. Le système a besoin d'une règle claire quand aucune prise fiable n'est disponible : secouer le bac, refaire une capture ou demander de l'aide, plutôt que deviner.
Aucun de ces problèmes ne se règle avec un meilleur modèle seul. Ils se règlent avec tout le système qui travaille ensemble : caméra, vision, notation, planification de mouvement et solutions de repli sensées.
Quand le bin picking vaut le coup
Le bin picking robotisé a du sens quand les pièces arrivent en vrac, que la tâche est répétitive, et que l'alternative est une personne qui alimente une machine toute la journée, ou des montages et des bols vibrants coûteux pour chaque référence. C'est plus difficile à justifier quand les pièces sont très variées, très petites, ou faciles à présenter de façon ordonnée plus tôt dans le processus.
Le mieux est de faire un test de faisabilité avec vos vraies pièces et une caméra 3D, avant de vous engager sur une cellule complète.
Les mêmes principes valent pour d'autres systèmes d'IA : tout mesurer, et préférer un passage sûr à une mauvaise supposition. Voyez comment je conçois des systèmes multi-agents et l'IA privée sur votre propre matériel.
Travailler ensemble
Je suis Driss Briksine, ingénieur logiciel et ML basé au Maroc. Je construis des systèmes de vision par ordinateur, de perception 3D et d'IA de bout en bout, des données et de l'entraînement jusqu'au logiciel de production. Voyez l'étude de cas PickNet et mes autres réalisations.
Si vous étudiez un projet de bin picking ou un autre problème de vision, envoyez-moi un court descriptif et je vous dirai honnêtement ce qui est faisable.