Construire un robot de couverture qui balaie une pièce
Un robot qui couvre seul une pièce avec rien que deux microrupteurs — et un cas mesuré pour dire si ajouter odométrie et planificateur vaut le coup.
Ce que vous construisez
Un robot dont le travail n’est pas d’aller quelque part mais d’être passé partout. Cela semble un problème plus petit que la navigation et c’en est un plus grand, car il n’y a aucun objectif vers lequel diriger et aucun moyen de dire d’où vous êtes si vous gagnez.
C’est aussi le projet qui récompense le plus de mesurer avant de construire. Toute la première moitié est un robot avec deux interrupteurs et aucune idée d’où il est, et ça marche — ce qui est une découverte vraiment inconfortable si vous alliez passer un week-end sur une carte.
Le nombre qui pilote le projet
La surface au sol divisée par la largeur de votre brosse est la distance que parcourrait un robot parfait :
d_optimal = A / w
Une pièce de 20 m² et une brosse de 250 mm donnent 80 m. Chaque stratégie est jugée en multiple de cela, et les multiples ne sont pas proches :
| Stratégie | Distance à 90 % | Dans cette pièce, à 0,25 m/s |
|---|---|---|
| Balayage parfait | 1,0× | 5 min |
| Serpentin planifié | 1,35× | 7 min |
| Rebond aléatoire | 2,9× | 15 min |
| Spirale puis relocalisation | 5,5× | 30 min |
Ceux-ci viennent de l’exécution du simulateur de couverture sur cinq pièces. Avant tout achat, lancez-le vous-même et déplacez les meubles pendant — les nombres bougent avec la pièce, ce qui est l’essentiel de la leçon.
Nomenclature
| Pièce | Qté | Coût approx. | Notes |
|---|---|---|---|
| Arduino Uno | 1 | $5–8 | Le mode rebond aléatoire n’exige presque rien ; le balayage planifié exige les codeurs |
| Microrupteurs | 2 | $1 | Gauche et droit, derrière une coque enveloppante. Le capteur principal ici |
| Barrette de réflectance IR | 1 | $5 | Détection de vide — pointée vers le bas au bord du sol, pas vers une ligne |
| Moteurs à codeurs N20 | 2 | $16 | Exigés pour le balayage planifié ; la marche aléatoire marche sans eux |
| TB6612FNG | 1 | $3 | |
| Châssis 2 roues motrices | 1 | $10 | Rond vaut mieux que carré ici — il ne se coince pas dans les coins |
| Pack batterie | 1 | $8 | Les parcours de couverture sont longs ; la capacité compte plus que sur d’autres montages |
Total : environ $50–65.
C’est le seul projet du site où le capteur le moins cher est le principal. Deux microrupteurs et un virage aléatoire couvriront une pièce entière avec assez de temps — c’est exactement ainsi que marchait la première génération d’aspirateurs robots, et cela vaut d’être construit avant de saisir quoi que ce soit de plus malin.
La barrette IR est utilisée ici de façon inhabituelle : pointée vers le bas au sol comme capteur de vide plutôt qu’en avant vers une ligne. Un robot qui couvre une pièce trouvera le haut des escaliers.
Ordre de montage
1 — Faites courir les stratégies en simulateur. Une heure ici économise un week-end. Regardez la courbe de couverture s’aplatir et remarquez que les trois stratégies sont identiques sur la première moitié du sol.
2 — Construisez la transmission et le pare-chocs, et rien d’autre. Deux microrupteurs à levier derrière une coque sur ressort qui enveloppe jusqu’à au moins 45° de chaque côté, câblés normalement ouverts vers la masse avec les pull-ups internes. Anti-rebond correctement — un appui fait neuf fronts, et une interruption qui compte signalera une collision neuf fois.
3 — Ajoutez les capteurs de vide avant que le robot tourne sans surveillance. Capteurs de réflectance vers le bas aux coins avant, lus à chaque passage. Puis calculez à quelle vitesse vous pouvez rouler : latence fois vitesse, plus v²/2µg de freinage, doit tenir dans la distance entre voir le vide et l’atteindre.
4 — Écrivez le rebond aléatoire et laissez-le tourner une heure. Roulez droit ; sur un choc, reculez brièvement et tournez d’un montant aléatoire entre 90° et 270°. L’aléatoire est structurel — un angle de réflexion fixe transforme la pièce en billard et le robot trace un chemin fermé pour toujours.
5 — Mesurez-le. Quadrillez le sol à la craie ou au ruban, roulez un temps fixe, et comptez les cases. C’est la base, et la seule façon honnête de savoir si l’étape 6 vous apporte quelque chose.
6 — Seulement maintenant, ajoutez l’odométrie. Codeurs et odométrie différentielle donnent une estimation de position. Planifiez des rangées en serpentin espacées d’une largeur de brosse, moins 10–20 % de recouvrement, et routez autour des meubles plutôt que dedans.
7 — Regardez les rangées cesser d’être parallèles. Elles le feront, en une dizaine de rangées, car l’odométrie dérive. Ce n’est pas un bug de votre planificateur ; c’est la raison pour laquelle les machines du commerce embarquent un gyro, une caméra de plafond ou une balise. Décider d’en ajouter un est la vraie fin de ce projet.
Notes matérielles importantes
Châssis rond, roues sur le diamètre. Un robot circulaire peut toujours sortir en rotation d’une collision où il est entré. Un carré peut se coincer en diagonale dans un coin et exige un pare-chocs arrière et un comportement en plus pour s’échapper.
La brosse doit être plus large que le robot. Ce n’est pas décoratif. Un planificateur garde le corps à l’écart de chaque mur, donc tout ce que le corps ne peut pas atteindre est du sol jamais couvert — en simulateur, 130 des 133 cases manquées par le planificateur sont à deux cellules d’un mur ou d’un pied de table. Une brosse en surplomb les récupère.
Deux moitiés de pare-chocs, pas une. Un seul interrupteur dit que vous avez heurté quelque chose. Deux disent de quel côté, ce qui est l’information dont la direction du virage a besoin, et cela coûte une broche.
Budgétez la batterie en mètres, pas en minutes. Une heure à 0,25 m/s fait 900 m. Une pièce en rebond aléatoire fait environ 540 m à 99 %. Trois pièces n’arriveront pas, et cette arithmétique — pas une intuition algorithmique — est ce qui a poussé toute la catégorie de produits vers la cartographie.
À quoi ressemble un bon résultat
La couverture est l’un des rares comportements robotiques avec un seul nombre propre attaché, et la comparaison entre stratégies est spectaculaire :
| Stratégie | Couverture après 1× la surface roulée | Après 3× | Après 10× |
|---|---|---|---|
| Rebond aléatoire | ~35 % | ~70 % | ~93 % |
| Spirale, puis rebond | ~45 % | ~78 % | ~95 % |
| Balayage planifié en serpentin | ~85 % | ~99 % | ~99 % |
La forme de ces colonnes est toute la leçon. Le rebond aléatoire approche la couverture complète asymptotiquement sans jamais tout à fait arriver — les derniers pourcents prennent plus longtemps que les quatre-vingt-dix premiers. Un balayage planifié y arrive en à peu près une passe et n’a ensuite plus rien à faire.
C’est la différence entre avoir une mémoire et ne pas en avoir, énoncée en nombre.
| Mesure | Typique |
|---|---|
| Espacement des lignes de balayage | 80–90 % de la largeur effective du robot, pour que les passes se recouvrent |
| Dérive de cap sur une passe de 4 m | 3–8° sans gyro, moins de 2° avec un |
| Erreur de position après dix passes | 15–40 cm sur odométrie seule |
| Taille de pièce pratique en odométrie pure | Jusqu’à environ 4 × 4 m avant que le balayage biaise visiblement |
La dernière ligne est le plafond honnête de ce projet. Un balayage planifié dépend de savoir où vous êtes, et l’odométrie dérive sans borne — donc au-delà d’environ 4 m les passes parallèles cessent d’être parallèles et des bandes s’ouvrent. Ce n’est pas un problème de réglage ; c’est pourquoi la cartographie existe.
Quand ça tourne mal
| Symptôme | Habituellement |
|---|---|
| Trace la même boucle pour toujours | L’angle de rebond est déterministe ; rendez-le aléatoire |
| Couvre 90 % vite, puis semble s’arrêter | Fonctionnement nominal — c’est la courbe de couverture exponentielle |
| Un choc compté plusieurs fois | Pas d’anti-rebond, ou une fenêtre plus courte que les 5 ms de rebond |
| Tombe d’une marche | Trop vite pour le budget capteur de vide, ou la boucle est bloquante |
| Les rangées dérivent hors parallèle | Odométrie, pas planificateur. Ajoutez une référence de cap |
| Rate des bandes entre rangées | Espacement réglé à exactement la largeur de brosse sans recouvrement |
| Se coince dans un coin | Châssis carré, ou pas de pare-chocs arrière |
| Ne va jamais derrière le canapé | Le transit entre travées n’a jamais été planifié |
Six de ces huit sont de la perception, de la mécanique ou de l’arithmétique plutôt que de l’algorithme — la même distribution que la Micromouse, et pour la même raison.
Pour la couche réactive partagée avec tous les autres robots mobiles, le robot éviteur d’obstacles est le montage plus doux avec l’essentiel du même matériel, et le parcours navigation réactive couvre la perception et le comportement sous les deux.
Parcours du projet
Le parcours de construction
Suivez l'arbre technologique, des pièces jusqu'à un robot qui fonctionne. Chaque nœud se débloque quand ses prérequis sont terminés, et votre progression est enregistrée sur cet appareil.
0 / 18 terminés
Composants
- ContrôleurArduino UnoLa carte 8 bits indulgente par laquelle la plupart découvrent la robotique.
- CapteurLever MicroswitchLe seul bit de détection qui dit à un robot qu'il a déjà touché quelque chose.
- CapteurIR Reflectance Sensor ArrayUne rangée d'yeux infrarouges qui indique au robot où se trouve la ligne.
- ActionneurN20 Encoder GearmotorUn micromoteur à réducteur métal avec codeur à l'arrière : le robot sait jusqu'où il est vraiment allé.
- PiloteTB6612FNG Motor DriverUn pont en H MOSFET qui garde les volts réellement payés.
- Châssis2WD Robot ChassisLe plateau sur lequel se fixent deux moteurs, une roulette libre et votre électronique.
- AlimentationRobot Battery & Power PackLa différence entre un robot qui roule et un qui redémarre sans cesse.
Tutoriels de ce parcours
- Intermédiaire · 30 min de lecturePlanification de couverture : balayer tout un solPourquoi un robot sans carte met sept fois la distance pour finir la même pièce.
- Débutant · 25 min de lectureCapteurs de collision et anti-rebond pour robotsUn appui, neuf transitions — et l'interruption compte chacune.
- Intermédiaire · 25 min de lectureS'arrêter à un bord : latence et distance de freinageQuelle distance un robot parcourt après la ligne qu'il vient de voir, et la vitesse qui la fait tenir.
- Débutant · 17 min de lectureLire des encodeurs en quadrature pour distance et vitesseTransformez les impulsions d'un encodeur en quadrature en mesures fiables de sens, distance et vitesse de roue.
- Intermédiaire · 20 min de lectureOdométrie différentielle depuis les encodeurs de rouesIntégrez le mouvement des roues gauche et droite en pose d'un robot mobile, puis identifiez et étalonnez la dérive.
Entraînez-vous avant de câbler
Réglez-le dans le simulateur interactif
Le parcours de construction passe par un labo dans le navigateur. Obtenez ici le bon comportement, puis reportez vos réglages sur le vrai robot.
Questions fréquentes
Est-ce un robot aspirateur ?
C'est la moitié navigation d'un aspirateur, qui est la moitié intéressante. Ajouter l'aspiration est un problème mécanique — un ventilateur, une brosse rotative, un bac à poussière et bien plus de batterie — et n'enseigne rien que le problème de couverture n'enseigne pas. Construisez-le avec un chiffon sec ou une houppette dessous et il nettoie vraiment un sol dur, et chaque algorithme dessus est le même que celui d'une machine du commerce.
Pourquoi commencer par le rebond aléatoire si un balayage planifié est meilleur ?
Parce que le rebond aléatoire marche avec une perception constructible en un après-midi, et parce qu'il donne une base mesurée que le planificateur doit battre. En simulateur, l'aléatoire atteint la moitié du sol à même distance qu'un planificateur — l'écart ne s'ouvre qu'après. Si vous construisez le planificateur d'abord, vous passerez un week-end à combattre la dérive odométrique sans jamais savoir ce qu'elle vous a rapporté.
Que gagne vraiment le planificateur ?
Mesuré sur cinq pièces en laboratoire : un balayage planifié atteint 90 pour cent de couverture en 1,35 fois la distance minimale théorique, le rebond aléatoire en 2,9 fois, et une stratégie spirale en 5,5. Dans une pièce de 20 mètres carrés avec une brosse de 250 mm à 0,25 m/s, cela fait 7 minutes contre 15 contre 30. Le hic est que le planificateur n'atteint jamais 99 pour cent, car il garde une marge de sécurité loin de chaque mur et pied de table.
Faut-il les codeurs ?
Pas pour le premier robot — il n'en a aucun usage. Ils sont sur la liste car la seconde moitié du projet en a besoin et car ajouter des codeurs sur un châssis construit est bien plus pénible que les monter au départ. Achetez les moteurs avec codeurs, laissez les fils débranchés, et reprenez-les au balayage planifié.
Qu'est-ce qui l'empêche de tomber dans les escaliers ?
Des capteurs de réflectance vers le bas aux coins avant, lus à chaque passage de boucle, et une limite de vitesse qui sort de l'arithmétique plutôt que du goût. Le robot parcourt sa latence fois sa vitesse avant même que le freinage commence, puis une distance de freinage de v au carré sur deux fois mu g. Les deux termes doivent tenir dans la distance entre où le capteur voit le vide et où les roues l'atteignent.
Pourquoi un châssis rond ?
Parce que l'empreinte d'un robot circulaire ne change pas quand il tourne, donc il peut toujours sortir sur place d'une collision où il est entré. Un robot carré coincé en diagonale dans un coin doit d'abord reculer, ce qui exige un pare-chocs arrière et plus de comportement. C'est la même raison pour laquelle presque tous les robots de sol du commerce sont ronds.