Simulateur d'évitement d'obstacles pour robots mobiles
Apprenez la navigation réactive, la télémétrie et l'arrêt en sécurité avec un simulateur de robotique d'évitement d'obstacles pour projets Raspberry Pi.
- Catégorie
- Raspberry Pi
- Durée
- 2–3 heures
- Plateforme
- Navigateur · Raspberry Pi
01 / Commencez ici
Introduction
L'évitement d'obstacles transforme des mesures incomplètes et bruitées en mouvements sûrs. Ce projet sépare la perception, la sécurité et la direction pour que vous puissiez raisonner sur chaque couche avant de déployer un robot mobile. Le simulateur expose la couverture des capteurs, la distance d'arrêt et les cas d'échec plutôt que de prétendre qu'une seule règle réactive résout tous les problèmes de navigation.
Live lab / Reactive range-sensing navigation
Obstacle avoidance simulator
Drive a mobile robot toward the goal while a fan of range sensors keeps it clear of obstacles. Reposition the scene by dragging or with the coordinate controls, add noise, and compare two steering rules.
Lines are sensor rays; a brighter ray marks the nearest reading. The dashed line ahead is the predicted stopping distance. The green ring is the goal. Drag a scene item or use the position controls below.
- Status
- Seeking
- Distance to goal
- 630 px
- Min clearance
- 170 px
- Stopping distance
- 24 px
- Elapsed
- 0.0 s
Keyboard: focus the workspace, then use Space to run/pause, N to step, R to reset, D to add an obstacle, and F for full screen.
Commandes
L’espace de travail comprend des obstacles déplaçables, la vitesse du robot, la portée de détection, le champ de vision, le bruit de mesure et un seuil de distance de sécurité. Les rayons des capteurs et la distance d’arrêt prédite restent visibles. Le mode pas à pas révèle exactement quelle observation a provoqué chaque décision de direction.
Théorie
Un robot doit s’arrêter ou tourner avant que son empreinte balayée ne croise un obstacle. La distance sûre dépend de la vitesse actuelle, de la latence du contrôleur, de la capacité de freinage, de l’incertitude de mesure et du rayon physique du robot — pas seulement de la dernière valeur de distance.
Les contrôleurs réactifs comme les champs de potentiels transforment les obstacles proches en vecteurs répulsifs et le but en vecteur attractif. Ils répondent vite mais peuvent rester piégés dans des minima locaux. Une pile pratique associe la sécurité réactive à un planificateur global ou local.
Algorithme
- Rejetez les échantillons de distance périmés et physiquement impossibles.
- Transformez les observations valides dans le repère du robot.
- Agrandissez chaque obstacle du rayon du robot plus une marge de sécurité.
- Calculez la distance d’arrêt à partir de la vitesse et de la décélération estimée.
- Arrêtez-vous quand le couloir avant est dangereux ; sinon dirigez-vous vers le secteur dégagé le plus aligné au but.
- Limitez l’accélération et la vitesse angulaire avant d’envoyer les commandes aux moteurs.
Code source
Gardez la décision d’urgence assez petite pour être testée exhaustivement :
def safe_velocity(target, ranges, stop_distance):
front = [r for angle, r in ranges if abs(angle) < 0.35]
if not front or min(front) <= stop_distance:
return 0.0, choose_clear_turn(ranges)
return limit_acceleration(target), steer_toward_clearance(ranges)
Dans un vrai système, enregistrez les horodatages des capteurs et passez à un état arrêté sûr quand des données requises deviennent indisponibles.
Hypothèses et différences avec le matériel
Le monde est vu de dessus et en deux dimensions : les rayons des capteurs sont instantanés, parfaitement fins, et jamais occultés par le corps du robot, et le robot est un disque qui peut freiner jusqu’à zéro sans inertie. Sur un robot Raspberry Pi, les faisceaux à ultrasons s’ouvrent à 15°, les mesures à temps de vol dépendent de la surface et du soleil, et la distance d’arrêt est fixée par la masse réelle, le couple des moteurs et la latence de détection-décision-action — tout cela couvert dans la feuille de route de navigation réactive. Le simulateur ignore aussi la gigue de boucle et les chutes d’alimentation, donc traitez la courbe de distance d’arrêt comme l’allure à intérioriser, pas comme un nombre à copier.
Schéma de câblage
Abaissez tout signal d’écho 5 V avant qu’il n’atteigne les GPIO du Raspberry Pi. Alimentez les moteurs séparément et reliez les masses en un point commun volontaire.
Expériences guidées
1. Déduisez le seuil d’arrêt au lieu de le deviner
Réglez une vitesse basse et abaissez le seuil d’arrêt jusqu’à ce que le robot commence à toucher les obstacles. Notez la valeur. Doublez maintenant la vitesse et répétez.
Le seuil nécessaire ne double pas, car c’est la somme d’un terme qui varie avec la vitesse et d’un terme qui varie avec son carré :
stop_distance = (v x t_latency) + (v^2 / (2 x a_brake)) + robot_radius + margin
| Vitesse | Terme de latence (80 ms) | Terme de freinage (1 m/s²) | Total, avec 90 mm de rayon + 50 mm de marge |
|---|---|---|---|
| 0,15 m/s | 12 mm | 11 mm | 16 cm |
| 0,30 m/s | 24 mm | 45 mm | 21 cm |
| 0,60 m/s | 48 mm | 180 mm | 37 cm |
| 0,90 m/s | 72 mm | 405 mm | 62 cm |
C’est pourquoi un robot qui évite fiablement au pas commence à heurter quand vous l’accélérez — et pourquoi la correction est un seuil dépendant de la vitesse plutôt qu’une grande valeur fixe qui rend le robot timide partout.
2. Produisez le bégaiement de seuil, puis corrigez-le
Garez le robot pour qu’il reste juste à la distance d’arrêt. Avec un seul seuil, il bascule entre roulage et virage plusieurs fois par seconde.
Séparez maintenant les deux : arrêtez à 20 cm, et ne repartez qu’à 30 cm. Le bégaiement disparaît car le comportement doit s’engager. Cet écart est l’hystérésis, et le même motif corrige presque toutes les oscillations pilotées par seuil dans le code robotique.
3. Piégez-le délibérément
Construisez un coin concave — un fer à cheval — et laissez le robot entrer. Avec une règle déterministe « tournez vers la direction la plus ouverte », il va tourner, rouler, et revenir là où il a commencé, pour toujours.
Ce n’est pas un bogue à corriger. C’est ce que signifie ne pas avoir de carte, et c’est la démonstration la plus claire possible du plafond de la navigation réactive. Les atténuations sont une composante aléatoire dans le virage et un détecteur de blocage qui escalade après plusieurs tentatives ratées ; la vraie correction est la mémoire, qui est un tout autre chemin.
4. Comparez résolution de balayage et temps de balayage
Augmentez le nombre d’angles de balayage et regardez deux choses bouger en sens opposés : les décisions de virage s’améliorent, et le robot passe plus de temps à l’arrêt.
Un balayage est un moment aveugle — le robot est arrêté et ne progresse pas. Trois à cinq angles est le compromis habituel, et au-delà l’information supplémentaire justifie rarement le temps supplémentaire.
Ce que vous devriez observer
| Comportement | Cause |
|---|---|
| Touche les obstacles à vitesse élevée | Seuil non mis à l’échelle pour le terme de freinage quadratique |
| Bégaie à distance fixe | Un seul seuil, pas d’hystérésis |
| Hésite gauche-droite sur place | Redécide avant que le virage ait changé quoi que ce soit |
| Tourne pour toujours dans un coin | Échappement déterministe d’un piège symétrique |
| S’arrête bien trop tôt partout | Seuil réglé pour le pire cas plutôt que pour la vitesse actuelle |
| Tourne vers le bord d’un passage | Choisit l’angle maximal plutôt qu’un centroïde pondéré |
Transposition au matériel
Les rayons du simulateur sont instantanés, sans bruit et infiniment fins. Un vrai capteur à ultrasons n’est rien de tout cela, et les différences sont tout le travail sur le matériel :
| Ce labo | Un HC-SR04 sur un vrai robot |
|---|---|
| Un rayon fin | Un cône d’environ 15°, soit environ 53 cm de large à 1 m |
| Chaque surface réfléchit | Les surfaces molles et très inclinées ne renvoient rien du tout |
| Mesures instantanées | Jusqu’à 25 ms par ping, environ 60 ms entre eux |
| Pas de servo | 100–200 ms de stabilisation par angle de balayage |
| Pas de bruit | Des valeurs aberrantes occasionnelles exigeant un filtre médian |
| Voit tout | Un rideau est invisible — c’est pourquoi on monte des microrupteurs |
Trouvez ici une distance d’arrêt sûre et une règle de direction dégagée, où une erreur ne coûte rien. Puis sur le matériel, ajoutez le filtre médian, le délai de stabilisation du servo et la détection de contact — le tutoriel d’algorithme d’évitement contient chacun en code.
Liste de vérification du matériel
Composants
- Raspberry Pi avec une alimentation prise en charge
- Deux capteurs à temps de vol ou à ultrasons ou plus
- Module caméra optionnel pour la détection visuelle
- Pont de puissance avec alimentation moteur séparée
- Châssis à propulsion différentielle et codeurs
Explorer le graphe
Où ce simulateur est utilisé
Les projets, parcours d'apprentissage et tutoriels qui s'appuient sur ce labo.
Continuer la construction
Ressources à télécharger
Utilisez ces références sur la page pendant que vous avancez dans le projet. Les archives de projet téléchargeables ne seront ajoutées qu'une fois leur source et leur version publiées.
Questions courantes
Questions fréquentes
Pourquoi un seul capteur frontal ne suffit-il pas ?
Un seul faisceau laisse des angles morts près du robot et ne distingue pas un objet étroit d'un mur. Plusieurs points de vue ou un capteur à balayage fournissent assez de géométrie pour choisir un virage plus sûr.
L'évitement d'obstacles remplace-t-il la planification de trajectoire ?
Non. L'évitement réactif gère les dangers immédiats, tandis qu'un planificateur assure la progression vers un but. Les robots robustes combinent les deux et laissent la couche de sécurité annuler tout mouvement planifié dangereux.
Capteur à ultrasons ou à temps de vol — lequel est meilleur pour l'évitement d'obstacles ?
Les capteurs à ultrasons sont bon marché et fonctionnent sur la plupart des surfaces mais ont une faible résolution angulaire et une zone aveugle près du capteur. Les capteurs à temps de vol (ToF) donnent une distance courte plus rapide et plus précise avec un faisceau étroit, mais peuvent être perturbés par un fort ensoleillement, des surfaces sombres ou miroirs, et des réflexions en coin. Beaucoup de robots utilisent les ultrasons pour la couverture grossière et le ToF là où une détection précise à courte portée compte.
Qu'est-ce qu'une zone aveugle de capteur et pourquoi est-ce important ?
La zone aveugle est la portée minimale sous laquelle un capteur ne peut pas rendre compte d'une distance valide — pour les capteurs à ultrasons, elle est fixée par la longueur de l'impulsion émise. Un obstacle dans la zone aveugle se lit comme dégagé, donc un robot qui fait confiance à la valeur brute peut foncer dans quelque chose juste devant lui. Montez les capteurs pour que la zone aveugle tombe à l'intérieur de l'empreinte du robot, et traitez les mesures suspectes trop petites comme invalides.
Comment calculer une distance d'arrêt sûre ?
La distance sûre est la distance de réaction plus la distance de freinage plus le rayon du robot et une marge. La distance de réaction croît linéairement avec la vitesse (vitesse fois latence de détection-décision-action), mais la distance de freinage croît avec le carré de la vitesse, donc l'écart requis augmente plus vite que la vitesse elle-même. C'est pourquoi une petite augmentation de vitesse peut exiger un écart sûr bien plus grand.
Pourquoi mon robot reste-t-il coincé devant un obstacle ?
Les méthodes réactives comme les champs de potentiels peuvent atteindre un minimum local où la poussée répulsive d'un obstacle annule l'attraction vers le but, et le robot cale ou oscille. Une direction par suivi d'ouverture qui s'engage vers l'ouverture dégagée la plus large, plus un planificateur global ou local au-dessus de la couche réactive, empêche le robot de se piéger lui-même.
Comment filtrer des mesures de distance bruitées ?
Rejetez les valeurs physiquement impossibles et les sauts soudains plutôt que d'agir dessus, horodatez chaque échantillon, et appliquez un filtre médian ou temporel léger pour supprimer les échos parasites. Si des données requises deviennent périmées ou indisponibles, passez à un état arrêté sûr au lieu de diriger sur une estimation.
Pour aller plus loin
Références
Des sources faisant autorité pour aller plus loin que le modèle pédagogique, borné, de ce simulateur.