start:arduino:cours:vittascience
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| start:arduino:cours:vittascience [2025/12/13 23:50] – [Principe] admin | start:arduino:cours:vittascience [2025/12/14 14:30] (Version actuelle) – [Televerser dans le robot mBot1 à partir de l'interface Vittascience] admin | ||
|---|---|---|---|
| Ligne 99: | Ligne 99: | ||
| 3- cliquer sur " | 3- cliquer sur " | ||
| - | 4- choisir le port COM du mBot1 et faire connexion ( exemple: **" | + | 4- choisir le port COM du mBot1 et faire connexion ( exemple: **" |
| et c'est tout , dans la console série de vittascience tu dois voir : | et c'est tout , dans la console série de vittascience tu dois voir : | ||
| Ligne 111: | Ligne 111: | ||
| | | ||
| ===== Exemples Vittascience Robot mBot1 ===== | ===== Exemples Vittascience Robot mBot1 ===== | ||
| + | |||
| + | [[start: | ||
| + | |||
| + | {{ : | ||
| == Image fond ecran pour virtualisation mBot1 sur Vittascience == | == Image fond ecran pour virtualisation mBot1 sur Vittascience == | ||
| Ligne 429: | Ligne 433: | ||
| </ | </ | ||
| - | === Sortie d un Labyrinthe avec un mBot === | + | ======= Sortie d un Labyrinthe avec un mBot ====== |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | **Exemples ** | + | |
| - | + | ||
| - | {{ : | + | |
| - | + | ||
| - | {{ : | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | {{ : | + | |
| - | + | ||
| - | {{ : | + | |
| - | + | ||
| - | {{ : | + | |
| - | + | ||
| - | + | ||
| - | == idées d' | + | |
| - | + | ||
| - | <code txt algolaby001.txt> | + | |
| - | Initialisation : | + | |
| - | *1 Démarrage du robot MBot. | + | |
| - | *2 Activation des capteurs de distance (Yeux). | + | |
| - | *3 Configuration des paramètres de vitesse et de détection. | + | |
| - | | + | |
| - | *4 Si la distance est supérieure à 20 cm, le robot accélère. | + | |
| - | *5 Si la distance est entre 20 cm et 10 cm, le robot maintient une vitesse constante. | + | |
| - | *6 Si la distance est inférieure à 10 cm mais supérieure à 5 cm, le robot ralentit. | + | |
| - | *7 Si la distance est inférieure à 5 cm, le robot s' | + | |
| - | | + | |
| - | *8 Si le robot est arrêté à cause d'un obstacle à 5 cm, il effectue une séquence d' | + | |
| - | *9 Si après un virage à droite de 90°, il n'y a pas d' | + | |
| - | *10 Sinon, s'il effectue un demi-tour (180°) et ne détecte pas d' | + | |
| - | *11 Sinon, après un virage à gauche de 90°, le robot avance (car il aura effectué un demi-tour). | + | |
| - | | + | |
| - | *12 Le robot continue à avancer tout en détectant les obstacles et ajustant sa vitesse en conséquence. | + | |
| - | *13 En cas d' | + | |
| - | *Fin : | + | |
| - | *14 Arrêt du robot lorsque la sortie du labyrinthe est détectée. | + | |
| - | </ | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | {{ : | + | |
| - | + | ||
| - | <code txt algolaby00.txt> | + | |
| - | il ne suffit pas de marcher en ligne droite. Il faut compter les changements de direction. | + | |
| - | + | ||
| - | Supposons que, comme dans les exemples précédents, | + | |
| - | tourner à droite ou à gauche selon un angle de 90°. On compte les changements de direction en augmentant d’un point | + | |
| - | lorsque l’on tourne à gauche et en diminuant d’un point lorsque l’on tourne à droite (y compris la première fois | + | |
| - | que l’on tourne à droite quand on atteint un mur). Au début, le décompte est à zéro. Les deux instructions sont | + | |
| - | alors les suivantes : | + | |
| - | + | ||
| - | *1 Aller tout droit jusqu’au mur, passer à l’instruction 2 ; | + | |
| - | *2 Longer le mur par la droite (ou par la gauche, mais toujours dans le même sens) jusqu’à | + | |
| - | ce que le décompte des changements de direction atteigne zéro, passer à l’instruction 1 ; | + | |
| - | + | ||
| - | Il faut répéter ces actions jusqu’à ce que l’on revienne à la lumière du jour. | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | === Algorithmes de sortie d un labyrinthe === | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | < | + | |
| - | + | ||
| - | Voici une **présentation claire des principaux algorithmes de résolution de labyrinthe pour un robot**, du plus simple au plus avancé. J’indique à chaque fois **le principe**, **les avantages** et **les limites**, avec un peu de pseudo-code quand c’est utile. | + | |
| - | + | ||
| - | --- | + | |
| - | + | ||
| - | ## 1. Algorithme de la **main droite** (ou main gauche) | + | |
| - | + | ||
| - | ### Principe | + | |
| - | + | ||
| - | Le robot garde **toujours la main droite en contact avec un mur**. | + | |
| - | Tant que le labyrinthe est **simplement connexe**, il finira par trouver la sortie. | + | |
| - | + | ||
| - | ### Avantages | + | |
| - | + | ||
| - | * Très simple à implémenter | + | |
| - | * Peu de mémoire | + | |
| - | * Adapté aux robots simples (Arduino, capteurs IR) | + | |
| - | + | ||
| - | ### Limites | + | |
| - | + | ||
| - | * Ne fonctionne pas si le labyrinthe a des îlots (murs isolés) | + | |
| - | * Pas forcément le chemin le plus court | + | |
| - | + | ||
| - | ### Pseudo-code | + | |
| - | + | ||
| - | ```text | + | |
| - | tant que sortie non trouvée : | + | |
| - | si mur à droite absent : | + | |
| - | tourner à droite | + | |
| - | avancer | + | |
| - | sinon si devant libre : | + | |
| - | avancer | + | |
| - | sinon : | + | |
| - | tourner à gauche | + | |
| - | ``` | + | |
| - | + | ||
| - | --- | + | |
| - | + | ||
| - | ## 2. Algorithme de **Trémaux** (marquage des chemins) | + | |
| - | + | ||
| - | ### Principe | + | |
| - | + | ||
| - | Le robot **marque les passages déjà visités** : | + | |
| - | + | ||
| - | * 1 marque → déjà visité | + | |
| - | * 2 marques → cul-de-sac | + | |
| - | + | ||
| - | Il évite de repasser inutilement au même endroit. | + | |
| - | + | ||
| - | ### Avantages | + | |
| - | + | ||
| - | * Fonctionne dans tous les labyrinthes | + | |
| - | * Garantit de trouver la sortie | + | |
| - | + | ||
| - | ### Limites | + | |
| - | + | ||
| - | * Besoin de mémoire (ou marquage physique) | + | |
| - | * Plus complexe que la main droite | + | |
| - | + | ||
| - | --- | + | |
| - | + | ||
| - | ## 3. **Parcours en profondeur (DFS – Depth First Search)** | + | |
| - | + | ||
| - | ### Principe | + | |
| - | + | ||
| - | Le robot explore un chemin **jusqu’au bout**, puis revient en arrière quand il est bloqué. | + | |
| - | + | ||
| - | ### Avantages | + | |
| - | + | ||
| - | * Simple conceptuellement | + | |
| - | * Garantie de trouver la sortie | + | |
| - | + | ||
| - | ### Limites | + | |
| - | + | ||
| - | * Peut être très long | + | |
| - | * Pas le plus court chemin | + | |
| - | + | ||
| - | ### Pseudo-code simplifié | + | |
| - | + | ||
| - | ```text | + | |
| - | fonction DFS(case): | + | |
| - | marquer case visitée | + | |
| - | si case = sortie : | + | |
| - | fin | + | |
| - | pour chaque voisin libre : | + | |
| - | si non visité : | + | |
| - | DFS(voisin) | + | |
| - | ``` | + | |
| - | + | ||
| - | --- | + | |
| - | + | ||
| - | ## 4. **Recherche en largeur (BFS – Breadth First Search)** | + | |
| - | + | ||
| - | ### Principe | + | |
| - | + | ||
| - | Le robot explore **niveau par niveau** toutes les possibilités. | + | |
| - | + | ||
| - | ### Avantages | + | |
| - | + | ||
| - | * Trouve **le plus court chemin** | + | |
| - | * Très fiable | + | |
| - | + | ||
| - | ### Limites | + | |
| - | + | ||
| - | * Utilise beaucoup de mémoire | + | |
| - | * Moins adapté aux petits robots | + | |
| - | + | ||
| - | --- | + | |
| - | + | ||
| - | ## 5. **Algorithme A*** (A-star) | + | |
| - | + | ||
| - | ### Principe | + | |
| - | + | ||
| - | Algorithme intelligent utilisant : | + | |
| - | + | ||
| - | * le coût déjà parcouru | + | |
| - | * une estimation de la distance jusqu’à la sortie | + | |
| - | + | ||
| - | ### Avantages | + | |
| - | + | ||
| - | * Très rapide | + | |
| - | * Chemin optimal | + | |
| - | * Utilisé en robotique avancée | + | |
| - | + | ||
| - | ### Limites | + | |
| - | + | ||
| - | * Nécessite une carte du labyrinthe | + | |
| - | * Plus complexe à programmer | + | |
| - | + | ||
| - | --- | + | |
| - | + | ||
| - | ## 6. Comparatif rapide | + | |
| - | + | ||
| - | | Algorithme | + | |
| - | | ----------- | ----------- | -------------- | ----------- | | + | |
| - | | Main droite | Très faible | ❌ | Très simple | | + | |
| - | | Trémaux | + | |
| - | | DFS | Moyenne | + | |
| - | | BFS | Élevée | + | |
| - | | A* | Élevée | + | |
| - | + | ||
| - | --- | + | |
| - | + | ||
| - | ## Recommandation selon ton robot | + | |
| - | * 🤖 **Robot simple (capteurs, pas de carte)** → Main droite ou Trémaux | + | [[vittascience: |
| - | * 🤖 **Robot | + | |
| - | * 🤖 **Projet scolaire** → DFS ou Trémaux | + | |
| - | --- | ||
| - | </ | ||
| - | |||
/home/chanteri/www/fablab37110/data/attic/start/arduino/cours/vittascience.1765666227.txt.gz · Dernière modification : de admin
