﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://bacasable.arpitania.eu//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Isabelle</id>
	<title>Learning Lab Environnements Connectés - Contributions de l’utilisateur [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://bacasable.arpitania.eu//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Isabelle"/>
	<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Sp%C3%A9cial:Contributions/Isabelle"/>
	<updated>2026-04-05T21:20:56Z</updated>
	<subtitle>Contributions de l’utilisateur</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13461</id>
		<title>REBEQA</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13461"/>
		<updated>2025-05-25T21:06:42Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* Le mouvement est comme suit : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet=&lt;br /&gt;
&lt;br /&gt;
==Mission générale==&lt;br /&gt;
Le but de notre projet est de retrouver et récupérer un objet déposé dans un labyrinthe. Pour se faire, nous aurons besoin &lt;br /&gt;
#D'un labyrinthe : il sera construit par des lignes de scotch noires collées sur un fond blanc . Les robots devront suivre ces lignes. &lt;br /&gt;
#Robot bandit : Son rôle est de déposer un objet aléatoirement dans un labyrinthe (on choisit aléatoirement un temps qui fixera le moment auquel il doit déposer l'objet. Une fois l'objet déposé, le robot (retourne à sa position de départ en réalisant le chemin inverse). &lt;br /&gt;
#Robot Policier : Recherche l'objet métallique en parcourant le labyrinthe. Une fois l'objet trouvé, il revient à sa position de départ, communique le chemin à suivre pour récupérer l'objet au troisième robot.&lt;br /&gt;
#Robot Démineur : Récupère l'objet en suivant le chemin indiqué par le robot policier et revient à la base.&lt;br /&gt;
&lt;br /&gt;
==Détail du labyrinthe et des robots==&lt;br /&gt;
::- Labyrinthe : Il sera conçu à l'aide de scotchs noirs qui définiront le chemin. Il ne comporte pas de murs ni d'obstacles. Un code couleur permet de détecter une fin de route (scotch rouge) et le robot devra revenir sur ses pas ou un type d'intersection (3 branches : vert / 4 branches : jaune). Par défaut, le robot tournera tout le temps à droite (environ 90 degré). Le point de départ n'est pas considéré comme une fin de route (détection de blanc). &lt;br /&gt;
Dimension du labyrinthe à ajouter et de la largeur du chemin&lt;br /&gt;
::- Les robots possèdent deux capteurs de suivi de lignes, 3 roues suédoises motorisées et un capteur de couleur. Ils intègrent tous une carte de commande R-Pi Picow. &lt;br /&gt;
::- Le robot policier et le robot démineur possèdent en plus deux capteurs à ultrasons et un module de communication Bluetooth &lt;br /&gt;
::- Le robot bandit et le robot démineur possèdent une pince motorisée, celle du robot démineur contiendra un &amp;quot;détecteur de métal&amp;quot; qui permettra de différencier un objet en métal d'un objet classique (en bois).&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
::- 3 cartes R-Pi Picow&lt;br /&gt;
::- 2 capteurs ultrasons : HC-SR04&lt;br /&gt;
::- 6 suiveurs de lignes&lt;br /&gt;
::- 3 capteurs couleurs RGB &lt;br /&gt;
::- 3 batteries&lt;br /&gt;
::- 2 pinces dont une avec un détecteur d'objets métallique&lt;br /&gt;
::- 2 Module Bluetooth &lt;br /&gt;
::- 9 roues &lt;br /&gt;
::- 1 objet métallique et 2 objets en bois de couleur &lt;br /&gt;
&lt;br /&gt;
==Pince==&lt;br /&gt;
Les robots 1 et 3 seront munis de pinces. Ces dernières ont été modélisées à l'aide du logiciel SolidWorks et imprimées avec une imprimante 3D. Il y a une base qui fait la jonction entre les deux pinces, le servomoteur et le robot. Nous nous sommes inspirés des travaux des années précédentes en faisant bouger seulement une pince grâce au servomoteur qui va entrainer avec un système d'engrenage la seconde pince.&lt;br /&gt;
&lt;br /&gt;
===Servo Moteur===&lt;br /&gt;
Afin de contrôler les pinces, nous allons utiliser 2 servo moteurs que nous avons récupéré d'anciens robots. &lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.kjell.com/globalassets/mediaassets/701916_87897_datasheet_en.pdf?ref=4287817A7A&lt;br /&gt;
&lt;br /&gt;
Nous avons donc testé leur bon fonctionnement avec une carte Arduino et le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Moteur_pince.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Identification de l'objet ===&lt;br /&gt;
On retrouve dans le labyrinthe un leurre et un objet déposé par le robot 1. Pour différencier le bon objet du leurre, nous avions d'abord pensé à utiliser un capteur de conductivité: le bon objet aurait été métallique et permettrait de laisser passer le courant, le différenciant du leurre non conducteur. Cependant, étant impossible à mettre en pratique avec le matériel à notre disposition et ayant un nombre de pin limité sur la carte de commande utilisée, nous avons opté pour une autre méthode d'identification d'objet basée sur la couleur.&lt;br /&gt;
A l'aide d'un capteur de couleur TCS3200, nous allons pouvoir différencier l'objet d'une couleur spécifique du leurre de couleur blanche.&lt;br /&gt;
&lt;br /&gt;
Code Arduino pour la détection d'un objet de couleur spécifique:&lt;br /&gt;
&lt;br /&gt;
==Capteurs==&lt;br /&gt;
&lt;br /&gt;
===Capteur couleur TCS3200===&lt;br /&gt;
:: - lien documentation : https://dronebotworkshop.com/arduino-color-sense/#TCS230_Arduino_Hookup Modification effectuée sur le code : allumage de la LED avec la commande&lt;br /&gt;
&amp;lt;&amp;lt;digitalWrite(PinDeLaLED, HIGH);&amp;gt;&amp;gt; Attention a bien laisser le mode LOW pour S1.&lt;br /&gt;
::- Utilisation d'une carte Arduino UNO pour les tests.&lt;br /&gt;
::- Meilleure détection pour une distance plus proche de 1cm (valeur exacte 1.5cm). Il sera donc placé sous les robots (au centre). &lt;br /&gt;
::- Intervalles de détection : int redMin = 27; (Red minimum value) // int redMax = 155; (Red maximum value) //  int greenMin = 33; (Green minimum value) // int greenMax = 210; (Green maximum value) // int blueMin = 30; (Blue minimum value) // int blueMax = 250; (Blue maximum value).&lt;br /&gt;
::- La sortie renvoyée est sous format RGB avec le code choisi&lt;br /&gt;
::- Les entrées S0 et S1 permettent la gestion du scaling (20% permettent de fixer une durée de pulsation acceptable et de limiter le bruit).&lt;br /&gt;
::- Les entrées S2 et S3 permettent de définir un filtre couleur qui permettra de récupérer l'intensité de chaque composante RGB. &lt;br /&gt;
Code C++ : [[Fichier:capteur_couleur_C.zip]]&lt;br /&gt;
===Capteur ultrasons HC-SR04===&lt;br /&gt;
::- On branche l'alimentation sur 5V, Gnd à la masse, le pin 12 sur la sortie et le pin 11 sur l'entrée &lt;br /&gt;
::- On le positionnera à l'avant pour détecter l'objet à récupérer (il n'y a pas d'obstacles extérieurs comme des murs).&lt;br /&gt;
Code Arduino : [[Fichier:capteur_US.zip]]&lt;br /&gt;
Code C++ : [[Fichier:capteur_US_C.zip]]&lt;br /&gt;
===Capteurs suivi de ligne===&lt;br /&gt;
Afin que les robots se déplacent dans le labyrinthe, nous allons utiliser des capteurs de lignes. Nous allons donc réutiliser le capteur de suivi de lignes des années précédentes qui est le capteur SparkFun Line sensor Breakout QRE1113.&lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.sparkfun.com/datasheets/Robotics/QR_QRE1113.GR.pdf&lt;br /&gt;
https://download.kamami.pl/p587610-KY-033-Joy-IT.pdf&lt;br /&gt;
&lt;br /&gt;
Nous avons utiliser une carte arduino afin de tester le bon fonctionnement des capteurs de suivi de lignes et nous en avons 2 par robots soit 6 en tout.&lt;br /&gt;
&lt;br /&gt;
Code C++ : [[Fichier:Suivi_lignes.zip]]&lt;br /&gt;
&lt;br /&gt;
===Détecteur d'objet métallique===&lt;br /&gt;
::- Permet de détecter si un courant passe dans l'objet situé à l'intérieur de la pince : si l'objet est métallique, il conduit l'électricité ce qui forme un circuit fermé et donc on obtient une tension proche de zéro. Sinon, il ne conduit pas pas l'électricité et on obtient un circuit ouvert et on obtiendra une valeur proche de la tension d'alimentation (environ 5V).&lt;br /&gt;
&lt;br /&gt;
===Capteur Optique===&lt;br /&gt;
&lt;br /&gt;
Nous avons décider de reprendre l'idée du capteur optique écoconçu du robot RAMBOT présent sur les pinces du robot. Ce capteur permet de détecter si il y a bien un objet entre les pinces. Pour cela, nous avons repris les schémas électriques et modifié les composants.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite testé ce capteur avec le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:capteuropt.zip]]&lt;br /&gt;
&lt;br /&gt;
===Ensemble des capteurs===&lt;br /&gt;
&lt;br /&gt;
Nous avons fait un test avec tous les capteurs mis en même temps sur une carte.&lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Robot3.zip]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
::-Communication Wifi&lt;br /&gt;
&lt;br /&gt;
==Gestion de la motorisation des roues==&lt;br /&gt;
&lt;br /&gt;
Les batteries ne générant pas de tension continue d'un moment à un autre et pour répondre au problème de glissement des roues, nous avons besoin d'asservir nos moteurs.&lt;br /&gt;
Pour cela nous avons chercher à visualiser des signaux des moteurs.&lt;br /&gt;
&lt;br /&gt;
Voici donc les signaux du moteur en tournant les roues dans un sens:&lt;br /&gt;
[[Fichier:Tek001.png|375px]]&lt;br /&gt;
&lt;br /&gt;
Et voici les signaux du moteurs en tournant dans l'autre sens&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tek002.png|375px]]&lt;br /&gt;
&lt;br /&gt;
==Batteries==&lt;br /&gt;
&lt;br /&gt;
=Fabrication=&lt;br /&gt;
==Nouvelle base==&lt;br /&gt;
&lt;br /&gt;
Nous avons fabriquer une nouvelle base holonome en bois en forme de triangle afin d'avoir trois robots similaire. Il en existait déjà deux de cette forme en plexiglas. &lt;br /&gt;
Nous n'avons pas trouvé de moteur équivalent aux deux bases en plexiglas (9V), nous avons donc récupéré des moteurs d'un autre robot qui sont en 6V.&lt;br /&gt;
Nous avons fabriqué des équerres en métal pour attacher les moteurs.&lt;br /&gt;
&lt;br /&gt;
==Carte Électronique==&lt;br /&gt;
&lt;br /&gt;
Nous avions deux cartes électroniques fonctionnelles sur trois donc nous avons décidé d'en fabriquer une nouvelle afin d'en avoir trois uniforme. De plus, dans le dernier wiki, il nous était conseillé de les refaire car elles commençaient à se faire vieille. Ainsi, nous avons fabriqué une nouvelle carte électronique permettant de contrôler une base holonome pour trois roues ainsi que les différents capteur et actionneurs nous permettant de réaliser nos actions. &lt;br /&gt;
&lt;br /&gt;
La contrainte principale de cette carte a été d'utiliser la carte Raspberry Pico W.&lt;br /&gt;
&lt;br /&gt;
La carte comporte: &lt;br /&gt;
::- La carte RaspberryPI Pico W, elle devra piloter les pont en H ainsi que les capteurs et actionneurs.&lt;br /&gt;
::- Un TRACO TEN 3-1211N pour convertir la tension d'alimentation de nos batteries (9-18V) en une tension d’alimentation pour la Pico W (5V).&lt;br /&gt;
::- Des ponts en H L293D pour contrôler les moteurs, le design est plus compacte que les L298N, cela prendra moins de place sur la PCB. &lt;br /&gt;
::- Le module complet permettant d'utiliser le capteur optique (AOP TLC271ACP) qui a été développé lors de l'année précédente.&lt;br /&gt;
::- Les sorties pour chacun des capteurs et actionneurs du projet.&lt;br /&gt;
::- Un cavalier pour choisir la tension d'alimentation des moteurs (Batterie ou 5V).&lt;br /&gt;
&lt;br /&gt;
Pour chacun des capteurs et actionneurs, on trouve les noms pour les brancher sur la PCB.&lt;br /&gt;
&lt;br /&gt;
De plus, comme nous manquions de pin disponible, le deuxième capteur couleur doit être paramétré manuellement et ne détecte qu'une couleur prédéfini. Il faut sélectionner S0, S1, S2 et S3 (Label : Couleur2_Sel1 sur la PCB) avec les headers de 3.3V et GND qui se trouvent au dessus (Label : 3.3Sel1 et GNDSel1). Par exemple, pour définir S0 à 1, il faut brancher le premier pin de &amp;quot;Couleur2_Sel1&amp;quot; à 3.3V.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la PCB nous avons réaliser le shématique et le routage sur le logiciel KiCad, voici les fichiers : [[Fichier:Projet_robotique_PCB.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pcb.png|375px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Shematic.png|375px]]&lt;br /&gt;
&lt;br /&gt;
Photo de la carte réalisé et de son prototype de test : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Prototype_pcb.jpg|375px]]&lt;br /&gt;
&lt;br /&gt;
=Simulation=&lt;br /&gt;
&lt;br /&gt;
==Tutoriels== &lt;br /&gt;
===Liens utiles===&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/introduction-to-webots Documentation officielle Webots (en anglais)]&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/samples-howto#omni_wheels-wbt Le fichier Webots du robot omni_wheels se trouve]&lt;br /&gt;
*[https://github.com/KajalGada/Youtube-Tutorial-Download-Material/tree/main/Line%20Follower%20Webots%20Tutorial Un tutoriel pour faire suivre une ligne au robot]&lt;br /&gt;
*[https://www.youtube.com/watch?v=D0jhvFZJ5Ok Le tutoriel vidéo en python]&lt;br /&gt;
*[https://www.youtube.com/watch?v=KGePGSKZu4w&amp;amp;t=13s en C++]&lt;br /&gt;
*[https://cyberbotics.com/doc/reference/menu Des tutoriels allant de la prise en mains à l’utilisation de certains capteur dans Webots sont disponibles]&lt;br /&gt;
&lt;br /&gt;
===Installation de Webots===&lt;br /&gt;
&lt;br /&gt;
Environnement VM (Ubuntu, il suffit alors d'installer Webots à partir à partir de l'app center) ou WSL (Linux pour windows avec Ubuntu)&lt;br /&gt;
&lt;br /&gt;
====Pour WSL====&lt;br /&gt;
&lt;br /&gt;
modification à faire dans Windows :&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=8wNqOpRRZho INSTALLER RAPIDEMENT UBUNTU SUR WINDOWS 10 - WSL [TUTO]]&lt;br /&gt;
&lt;br /&gt;
commande à taper : &lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/fr-fr/windows/wsl/install Installer WSL 2 | Microsoft Learn] &lt;br /&gt;
&lt;br /&gt;
Installer Webots  :&lt;br /&gt;
&lt;br /&gt;
[https://cyberbotics.com/doc/guide/installation-procedure Webots documentation: Installation Procedure]&lt;br /&gt;
&lt;br /&gt;
===Webots===&lt;br /&gt;
&lt;br /&gt;
Une simulation Webots contient au moins ces deux composants :&lt;br /&gt;
*Un fichier world file (.wbt) qui définit un ou plusieurs robots et leurs environnements. Le langage utilisé est ''VRML97''.&lt;br /&gt;
*Un ou plusieurs fichiers de contrôle (controller programs) pour ces robots. Ces fichiers sont en ''C/C++/Java/Python/MATLAB''. Nous utiliserons ''C++''.&lt;br /&gt;
&lt;br /&gt;
Eventuellement il peut y avoir des PROTO : un fichier qui permet de définir un nouveau type de robot, capteur, objet ou structure, en combinant des nœuds existants (comme Solid, Transform, Shape, etc.). C’est un modèle réutilisable avec une interface personnalisable (paramètres comme la taille, la couleur, la masse...)&lt;br /&gt;
&lt;br /&gt;
Pour exécuter le '''controller''' (procédure à refaire à chaque changement de code) : &lt;br /&gt;
*Dans le dossier du controller on tape les lignes de commandes &lt;br /&gt;
**Export WEBOTS_HOME=CHEMIN_INSTALLATION_WEBOTS (souvent : /usr/local/webots)&lt;br /&gt;
**make&lt;br /&gt;
*Dans webots recharger le monde (CTRL+SHIFT+R)&lt;br /&gt;
*Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
Modification d'un '''proto''' : &lt;br /&gt;
Pour apporter une modification à un PROTO on préférera modifier le Node Tree plutôt que le code, modifier le Node Tree ne modifie pas le fichier code (et inversement). Si on modifie le fichier code, il faut sauvegarder le fichier puis recharger le monde pour appliquer le changement.&lt;br /&gt;
&lt;br /&gt;
Créer un prototype dans Webots (en VRML97) est long et fastidieux. On préférera donc créer un modèle sous SolidWorks via 2 méthodes : &lt;br /&gt;
* Exporter en fichier .wrl et recupérer les coordonnées des points du solide&lt;br /&gt;
* Exporter un fichier .stl ou un .obj et récupérer directement la forme de notre modèle 3D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Créer un solide avec des formes originales===&lt;br /&gt;
On a utilisé SolidWorks (partie à détailler avec image) pour modéliser notre solide puis on l'a exporté en .wrl (à préciser avec images)  et on a extrait les coordonnées de notre solide.&lt;br /&gt;
Sur Webots, on obtient le code suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Solid {&lt;br /&gt;
  rotation 1 0 0 0&lt;br /&gt;
  children [&lt;br /&gt;
    Shape {&lt;br /&gt;
      appearance PBRAppearance {&lt;br /&gt;
        baseColor 0 0.8 0&lt;br /&gt;
        baseColorMap ImageTexture {&lt;br /&gt;
        }&lt;br /&gt;
        roughness 0.5&lt;br /&gt;
        metalness 0&lt;br /&gt;
      }&lt;br /&gt;
      geometry IndexedFaceSet {&lt;br /&gt;
        coord Coordinate {&lt;br /&gt;
          point [&lt;br /&gt;
             -0.089884 -0.040276 -0.000000, -0.089884 -0.040276 0.020000, -0.074666 -0.066129 0.000000, -0.074666 -0.066129 0.020000, -0.001198 0.116360 0.000000, -0.001198 0.116360 0.020000, 0.028801 0.116612 -0.000000, 0.028801 0.116612 0.020000, 0.105327 -0.064616 -0.000000, 0.105327 -0.064616 0.020000, 0.120108 -0.038510 -0.000000, 0.120108 -0.038510 0.020000&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
        coordIndex [&lt;br /&gt;
           7, 11, 6, -1, 6, 11, 10, -1, 5, 7, 4, -1,&lt;br /&gt;
           4, 7, 6, -1, 1, 5, 0, -1, 0, 5, 4, -1,&lt;br /&gt;
           3, 1, 2, -1, 2, 1, 0, -1, 9, 3, 8, -1,&lt;br /&gt;
           8, 3, 2, -1, 11, 9, 10, -1, 10, 9, 8, -1,&lt;br /&gt;
           11, 7, 9, -1, 9, 7, 5, -1, 9, 5, 3, -1,&lt;br /&gt;
           3, 5, 1, -1, 2, 0, 8, -1, 8, 0, 4, -1,&lt;br /&gt;
           8, 4, 10, -1, 10, 4, 6, -1&lt;br /&gt;
        ]&lt;br /&gt;
     &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour exporter en .stl nous l'avons fait pour modéliser un labyrinthe en 2D. Nous l'importons ensuite sur Webots en utilisant le type transform pour pouvoir utiliser une échelle &amp;quot;scale&amp;quot; car il peut y avoir des problèmes de conversion en les unités de SolidWordks et les unités de Webots. Il n'y a plus de scale sur les types &amp;quot;Solid&amp;quot; depuis une mise à jour.&lt;br /&gt;
Sur le transform on ajoute une Shape puis une apparence et une géométrie. nous n'avons pas réussi à avoir les couleurs que nous avions mis sur SolidWorks. &lt;br /&gt;
 [[Fichier:Webots_menu.png|400px|thumb|center|]]&lt;br /&gt;
Le modèle que nous avons modélisé sur SolidWork apparait sans les courleurs que nous avons mis sur SolidWorks&lt;br /&gt;
[[Fichier:labyrinth_SolidW.png|400px|thumb|center|Labyrinth 2D dans Webots]]&lt;br /&gt;
[[Fichier:labyrinth_Webots.png|400px|thumb|center|Labyrinth dans SolidWorks, après des modifications de l'apparence et de la forme]]   &lt;br /&gt;
Code pour contrôler notre robot [[Fichier:omnic_cmd.zip]]&lt;br /&gt;
Vidéo simulation du suivie de ligne par le robot:&lt;br /&gt;
[[Fichier:Test_2_robot capteur infra à l'avant.gif|500px|center|thumb|démonstration du suivi de ligne]]&lt;br /&gt;
&lt;br /&gt;
==Conclusion sur la simulation ==&lt;br /&gt;
=== Plus valus de la simulation ===&lt;br /&gt;
Avec Webots, on peut tester différents stratégies de commande du robots pour voir les avantages et inconvénients de certaines stratégies. On peut décrire un modèle de robot assez fidèle à la réalité et représenter aussi son environnement.&lt;br /&gt;
La simulation nous a permis de développer une stratégie de commande pour les suiveurs de ligne et de l'adapter au mieux pour notre robot.&lt;br /&gt;
===Limites et inconvénient de Webots===&lt;br /&gt;
Webots demande beaucoup de temps pour l'utiliser correctement et créer un modèle qui va représenter au mieux notre robot. On peut facilement perdre du temps sur une fonctionnalité que l'on ne maîtrise pas. Pour les délais que l'on a, il est souvent plus rentable d'investir du temps dans la conception du robot finale plutôt que d'essayer d'avoir une simulation. Tout dépend de la maîtrise du logiciel&lt;br /&gt;
&lt;br /&gt;
=Tâches effectuées=&lt;br /&gt;
#Réalisation d'un robot complet&lt;br /&gt;
#*Fabrication des cartes de commande&lt;br /&gt;
#*Fabrication de la base &lt;br /&gt;
#Contrôle du fonctionnement des pièces existantes&lt;br /&gt;
#* Capteurs &lt;br /&gt;
#* 2 robots déjà existants&lt;br /&gt;
#Simulation sur Webots&lt;br /&gt;
#*&lt;br /&gt;
#Réalisation de la pince avec imprimante avec détecteur de métal&lt;br /&gt;
#*&lt;br /&gt;
==Pi-Pico==&lt;br /&gt;
[[Fichier:Tuto_Installation_VSCODIUM.odt]]&lt;br /&gt;
&lt;br /&gt;
===Communication===&lt;br /&gt;
Nous avons choisis de faire une communication via Wifi pour transmettre le chemin jusqu'à l'objet d'un robot à un autre, ce qui possible grâce a l'utilisation de Raspberry Pi Pico WH pour l'échange d'information via TCP/IP. Pour cela, un des Raspberry, le &amp;quot;Serveur&amp;quot; sert d'Access Point (AP) avec un serveur TCP. Puis l'autre Raspberry, le &amp;quot;Client&amp;quot; se connecte au Wifi et en lui forçant une IP. On peut par la suite se connecter au serveur TCP et commencer à transférer des informations sous forme d'un string binaire de 0 et de 1. Par la suite, cela est traduit par le Raspberry &amp;quot;Serveur&amp;quot; pour soit tourner à droite, soit à gauche.&lt;br /&gt;
&lt;br /&gt;
==Mécanique==&lt;br /&gt;
===Objet===&lt;br /&gt;
Nous avons choisit un objet de 5cm de diamètre afin de pouvoir le détecter plus facilement avec le capteur de couleur.&lt;br /&gt;
L'objet fait 14cm de haut, et a des côtés plus larges que son centre afin de l'attraper plus facilement.&lt;br /&gt;
Il y a des transitions entre les différentes sections avec des pentes de 30° par rapport à l'horizontale afin de ne pas avoir besoin de support lors de l'impression de l'objet en 3D.&lt;br /&gt;
&lt;br /&gt;
===Pince===&lt;br /&gt;
Les branches de la pince ont une courbure adaptée au diamètre de l'objet, avec l'introduction d'un jeu.&lt;br /&gt;
La pince a un slot pour attacher le capteur de couleur. &lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'emplacement pour le détecteur de présence pour la LED infrarouge de réception et son récepteur associé. Nous avons fait ce choix car il serait trop long de modéliser un emplacement pour la LED sans fragiliser la pince, donc elle sera collée sur la tranche de la branche de la pince.&lt;br /&gt;
&lt;br /&gt;
[[fichier : test]]&lt;br /&gt;
&lt;br /&gt;
===Roue===&lt;br /&gt;
Pour la roue, on prend le modèle .stl suivant, ouvrable avec Solidworks : https://www.thingiverse.com/thing:5031000 .&lt;br /&gt;
On modifie le fichier de sorte d'avoir un diamètre d'axe de roue et une taille de roue similaire à ceux utilisés les années précédentes : &lt;br /&gt;
- Hauteur de roue : 40 mm&lt;br /&gt;
- Axe de roue : 4 mm&lt;br /&gt;
&lt;br /&gt;
On fait une mise à l'échelle qui ramène la hauteur de roue à 40 mm. Puis on essaye d'adapter ensuite l'axe de roue à 4 mm.&lt;br /&gt;
&lt;br /&gt;
=Algorithmes=&lt;br /&gt;
==Suivi de lignes==&lt;br /&gt;
La piste est bordée de deux lignes noires. La logique de l'algorithme est comme suit :&lt;br /&gt;
*le capteur de ligne gauche rencontre une ligne noire -&amp;gt; le robot corrige est va à gauche. Matériellement c'est la roue avant qui tourne. idem pour la droite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
*Les capteurs de lignes doivent être très proches du sol pour pouvoir capter la ligne, il faut donc faire des réglages précis à adapter pour chaque robot.&lt;br /&gt;
*La PWM permet de régler la vitesse des moteurs, la clock de la PWM a été choisie à 5kHz part la fonction pwm_set_clkdiv_int_frac(slice_num_M1,98,0); le calcul peut être repris à avec [https://raspberry-pi.developpez.com/actu/344283/Raspberry-Pi-Pico-moins-Apprendre-a-generer-des-signaux-PWM-un-billet-blog-de-f-leb/ ce site web]&lt;br /&gt;
*Le robot va trop vite pour que la correction soit efficace, il y a franchissement de ligne. De plus il faut prendre en compte que la correction n'a lieu uniquement quand le capteur détecte la ligne. Nous avons donc essayé :&lt;br /&gt;
**De '''rajouter un délais''' pour que la correction ait lieu pendant plus longtemps, mais nous avions tout de même des problèmes de franchissement de ligne, toujours dût à la vitesse du robot.&lt;br /&gt;
**De '''diminuer la vitesse des roues arrières''' pendant la correction en les passant de 255 à 180. '''Cette méthode est concluante''' et permet une correction de trajectoire même avec un angle d'attaque important. Cet angle va dépendre de la manière dont tourne le robot. Il faut s'assurer qu'il tourne suffisamment pour que la correction soit possible. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code comprend : &lt;br /&gt;
Un fichier contenant le main : ''suivie_moteur.c'', qui se sert des fonctions définies dans le fichier ''fonctions'' pour initialiser les différents ports GPIO de la carte pico et lancer la boucle infinie avec la fonction de suivie de ligne principale.&lt;br /&gt;
Les fichiers fonctions.h et fonctions.c contiennent les éléments suivants :&lt;br /&gt;
*Les différentes bibliothèques nécessaires au fonctionnement du code&lt;br /&gt;
*Les définitions des différents ports GPIO, un par capteur de ligne et trois par moteur (2 pour le sens : IN1 et IN2 et 1 pour la PWM : ENA)&lt;br /&gt;
*La fonction '''setup_capt''' qui initialise les différents ports GPIO, les moteurs dont PWM&lt;br /&gt;
*La fonction '''pico_set_led''' qui prend en argument un booléen ''led_on'' et qui permet d'allumer la led de la board pi pico à des fins de débogage.&lt;br /&gt;
*La fonction '''setPWM''' qui prend en argument le pin enable d'un moteur et qui fixe la valeur de la PWM par l'argument value qui prend une valeur entre 0 et 255.&lt;br /&gt;
*La fonction '''commande_moteur()''' qui ne prend aucun argument et qui est l'algorithme principal de suivie de chemin. &lt;br /&gt;
&lt;br /&gt;
[[Fichier : suivi_ligne.zip]]&lt;br /&gt;
&lt;br /&gt;
==Parcours du labyrinthe ==&lt;br /&gt;
=== Direction en fonction des couleurs ===&lt;br /&gt;
Les intersections du labyrinthe seront délimitées par des couleurs selon les directions possibles que le robot pourra emprunter :&lt;br /&gt;
*'''Violet''': présence d'une intersection&lt;br /&gt;
*'''Rouge''' : virage à droite&lt;br /&gt;
*'''Bleu''' : virage à gauche&lt;br /&gt;
*'''Vert''' : virage à droite ou à gauche&lt;br /&gt;
*'''Jaune''' : impasse&lt;br /&gt;
&lt;br /&gt;
Ces couleurs sont placées sur le labyrinthe comme sur l'image suivante :&lt;br /&gt;
[[Fichier:Image labyrinthe couleur.png|400px|thumb|center|Labyrinthe final avec les couleurs pour les intersections]]&lt;br /&gt;
&lt;br /&gt;
=== Parcours d'un arbre ===&lt;br /&gt;
Afin d'explorer l’ensemble des chemins du labyrinthe, on applique un algorithme basé sur une structure en arbre, où chaque nœud représente une intersection ou une impasse.&lt;br /&gt;
&lt;br /&gt;
L’algorithme parcourt chaque nœud à partir d’un point de départ, en explorant toutes les branches possibles. À chaque intersection, il choisit un chemin, le suit jusqu’à une impasse, puis revient en arrière pour explorer les autres options. Cela permet de visiter tous les chemins du labyrinthe. &lt;br /&gt;
&lt;br /&gt;
[[Fichier : codes_parcours_et_controle]]&lt;br /&gt;
&lt;br /&gt;
Ces fichiers sont tous necessaires au bon fonctionnement du robot. Le fichier capteur_acq initialise les différents capteurs et défini l'algorithme de détection de couleur, cette algorithme (la fonction measure_couleur) utilise la fonction ajouter du fichier Parcours. C'est dans cette fonction ajouter que sont gérer les commandes de rotation de robot, selon le prochain nœud.&lt;br /&gt;
&lt;br /&gt;
====Le mouvement est comme suit :====&lt;br /&gt;
* La variable booléenne go est utilisée dans le main. Le robot suit le chemin (algorithme de suivi de ligne, fonction commande_moteur du fichier fonctions) si go est vraie. Si go est fausse alors le robot s'arrête (fonction stop_moteur du fichier fonctions).&lt;br /&gt;
* Si le robot detecte la couleur violet (P), dans la fonction ajouter du fichier Parcours, la condition couleur == 'P' est vraie, go passe à faux et le robot s'arrête. On est alors au milieu de l'intersection.&lt;br /&gt;
*L'algorithme de parcours du graphe donne le nœud suivant à explorer. Exemple : la couleur est verte (V) et le nœud suivant est à droite, le robot tourne à droite, la variable go repasse à true et le robot suit de nouveau la ligne jusqu'à la detection de la prochaine intersection.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :'''&lt;br /&gt;
les fonctions pour tourner sont basés sur un delay (les roues tournent pendant un certain temps). Cette méthode n'est pas fiable selon le robot, la vitesse des roues, la batterie. Asservir les moteurs serait plus efficace mais nous avons manqué de temps.&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13460</id>
		<title>REBEQA</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13460"/>
		<updated>2025-05-25T21:03:54Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* Parcours d'un arbre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet=&lt;br /&gt;
&lt;br /&gt;
==Mission générale==&lt;br /&gt;
Le but de notre projet est de retrouver et récupérer un objet déposé dans un labyrinthe. Pour se faire, nous aurons besoin &lt;br /&gt;
#D'un labyrinthe : il sera construit par des lignes de scotch noires collées sur un fond blanc . Les robots devront suivre ces lignes. &lt;br /&gt;
#Robot bandit : Son rôle est de déposer un objet aléatoirement dans un labyrinthe (on choisit aléatoirement un temps qui fixera le moment auquel il doit déposer l'objet. Une fois l'objet déposé, le robot (retourne à sa position de départ en réalisant le chemin inverse). &lt;br /&gt;
#Robot Policier : Recherche l'objet métallique en parcourant le labyrinthe. Une fois l'objet trouvé, il revient à sa position de départ, communique le chemin à suivre pour récupérer l'objet au troisième robot.&lt;br /&gt;
#Robot Démineur : Récupère l'objet en suivant le chemin indiqué par le robot policier et revient à la base.&lt;br /&gt;
&lt;br /&gt;
==Détail du labyrinthe et des robots==&lt;br /&gt;
::- Labyrinthe : Il sera conçu à l'aide de scotchs noirs qui définiront le chemin. Il ne comporte pas de murs ni d'obstacles. Un code couleur permet de détecter une fin de route (scotch rouge) et le robot devra revenir sur ses pas ou un type d'intersection (3 branches : vert / 4 branches : jaune). Par défaut, le robot tournera tout le temps à droite (environ 90 degré). Le point de départ n'est pas considéré comme une fin de route (détection de blanc). &lt;br /&gt;
Dimension du labyrinthe à ajouter et de la largeur du chemin&lt;br /&gt;
::- Les robots possèdent deux capteurs de suivi de lignes, 3 roues suédoises motorisées et un capteur de couleur. Ils intègrent tous une carte de commande R-Pi Picow. &lt;br /&gt;
::- Le robot policier et le robot démineur possèdent en plus deux capteurs à ultrasons et un module de communication Bluetooth &lt;br /&gt;
::- Le robot bandit et le robot démineur possèdent une pince motorisée, celle du robot démineur contiendra un &amp;quot;détecteur de métal&amp;quot; qui permettra de différencier un objet en métal d'un objet classique (en bois).&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
::- 3 cartes R-Pi Picow&lt;br /&gt;
::- 2 capteurs ultrasons : HC-SR04&lt;br /&gt;
::- 6 suiveurs de lignes&lt;br /&gt;
::- 3 capteurs couleurs RGB &lt;br /&gt;
::- 3 batteries&lt;br /&gt;
::- 2 pinces dont une avec un détecteur d'objets métallique&lt;br /&gt;
::- 2 Module Bluetooth &lt;br /&gt;
::- 9 roues &lt;br /&gt;
::- 1 objet métallique et 2 objets en bois de couleur &lt;br /&gt;
&lt;br /&gt;
==Pince==&lt;br /&gt;
Les robots 1 et 3 seront munis de pinces. Ces dernières ont été modélisées à l'aide du logiciel SolidWorks et imprimées avec une imprimante 3D. Il y a une base qui fait la jonction entre les deux pinces, le servomoteur et le robot. Nous nous sommes inspirés des travaux des années précédentes en faisant bouger seulement une pince grâce au servomoteur qui va entrainer avec un système d'engrenage la seconde pince.&lt;br /&gt;
&lt;br /&gt;
===Servo Moteur===&lt;br /&gt;
Afin de contrôler les pinces, nous allons utiliser 2 servo moteurs que nous avons récupéré d'anciens robots. &lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.kjell.com/globalassets/mediaassets/701916_87897_datasheet_en.pdf?ref=4287817A7A&lt;br /&gt;
&lt;br /&gt;
Nous avons donc testé leur bon fonctionnement avec une carte Arduino et le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Moteur_pince.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Identification de l'objet ===&lt;br /&gt;
On retrouve dans le labyrinthe un leurre et un objet déposé par le robot 1. Pour différencier le bon objet du leurre, nous avions d'abord pensé à utiliser un capteur de conductivité: le bon objet aurait été métallique et permettrait de laisser passer le courant, le différenciant du leurre non conducteur. Cependant, étant impossible à mettre en pratique avec le matériel à notre disposition et ayant un nombre de pin limité sur la carte de commande utilisée, nous avons opté pour une autre méthode d'identification d'objet basée sur la couleur.&lt;br /&gt;
A l'aide d'un capteur de couleur TCS3200, nous allons pouvoir différencier l'objet d'une couleur spécifique du leurre de couleur blanche.&lt;br /&gt;
&lt;br /&gt;
Code Arduino pour la détection d'un objet de couleur spécifique:&lt;br /&gt;
&lt;br /&gt;
==Capteurs==&lt;br /&gt;
&lt;br /&gt;
===Capteur couleur TCS3200===&lt;br /&gt;
:: - lien documentation : https://dronebotworkshop.com/arduino-color-sense/#TCS230_Arduino_Hookup Modification effectuée sur le code : allumage de la LED avec la commande&lt;br /&gt;
&amp;lt;&amp;lt;digitalWrite(PinDeLaLED, HIGH);&amp;gt;&amp;gt; Attention a bien laisser le mode LOW pour S1.&lt;br /&gt;
::- Utilisation d'une carte Arduino UNO pour les tests.&lt;br /&gt;
::- Meilleure détection pour une distance plus proche de 1cm (valeur exacte 1.5cm). Il sera donc placé sous les robots (au centre). &lt;br /&gt;
::- Intervalles de détection : int redMin = 27; (Red minimum value) // int redMax = 155; (Red maximum value) //  int greenMin = 33; (Green minimum value) // int greenMax = 210; (Green maximum value) // int blueMin = 30; (Blue minimum value) // int blueMax = 250; (Blue maximum value).&lt;br /&gt;
::- La sortie renvoyée est sous format RGB avec le code choisi&lt;br /&gt;
::- Les entrées S0 et S1 permettent la gestion du scaling (20% permettent de fixer une durée de pulsation acceptable et de limiter le bruit).&lt;br /&gt;
::- Les entrées S2 et S3 permettent de définir un filtre couleur qui permettra de récupérer l'intensité de chaque composante RGB. &lt;br /&gt;
Code C++ : [[Fichier:capteur_couleur_C.zip]]&lt;br /&gt;
===Capteur ultrasons HC-SR04===&lt;br /&gt;
::- On branche l'alimentation sur 5V, Gnd à la masse, le pin 12 sur la sortie et le pin 11 sur l'entrée &lt;br /&gt;
::- On le positionnera à l'avant pour détecter l'objet à récupérer (il n'y a pas d'obstacles extérieurs comme des murs).&lt;br /&gt;
Code Arduino : [[Fichier:capteur_US.zip]]&lt;br /&gt;
Code C++ : [[Fichier:capteur_US_C.zip]]&lt;br /&gt;
===Capteurs suivi de ligne===&lt;br /&gt;
Afin que les robots se déplacent dans le labyrinthe, nous allons utiliser des capteurs de lignes. Nous allons donc réutiliser le capteur de suivi de lignes des années précédentes qui est le capteur SparkFun Line sensor Breakout QRE1113.&lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.sparkfun.com/datasheets/Robotics/QR_QRE1113.GR.pdf&lt;br /&gt;
https://download.kamami.pl/p587610-KY-033-Joy-IT.pdf&lt;br /&gt;
&lt;br /&gt;
Nous avons utiliser une carte arduino afin de tester le bon fonctionnement des capteurs de suivi de lignes et nous en avons 2 par robots soit 6 en tout.&lt;br /&gt;
&lt;br /&gt;
Code C++ : [[Fichier:Suivi_lignes.zip]]&lt;br /&gt;
&lt;br /&gt;
===Détecteur d'objet métallique===&lt;br /&gt;
::- Permet de détecter si un courant passe dans l'objet situé à l'intérieur de la pince : si l'objet est métallique, il conduit l'électricité ce qui forme un circuit fermé et donc on obtient une tension proche de zéro. Sinon, il ne conduit pas pas l'électricité et on obtient un circuit ouvert et on obtiendra une valeur proche de la tension d'alimentation (environ 5V).&lt;br /&gt;
&lt;br /&gt;
===Capteur Optique===&lt;br /&gt;
&lt;br /&gt;
Nous avons décider de reprendre l'idée du capteur optique écoconçu du robot RAMBOT présent sur les pinces du robot. Ce capteur permet de détecter si il y a bien un objet entre les pinces. Pour cela, nous avons repris les schémas électriques et modifié les composants.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite testé ce capteur avec le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:capteuropt.zip]]&lt;br /&gt;
&lt;br /&gt;
===Ensemble des capteurs===&lt;br /&gt;
&lt;br /&gt;
Nous avons fait un test avec tous les capteurs mis en même temps sur une carte.&lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Robot3.zip]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
::-Communication Wifi&lt;br /&gt;
&lt;br /&gt;
==Gestion de la motorisation des roues==&lt;br /&gt;
&lt;br /&gt;
Les batteries ne générant pas de tension continue d'un moment à un autre et pour répondre au problème de glissement des roues, nous avons besoin d'asservir nos moteurs.&lt;br /&gt;
Pour cela nous avons chercher à visualiser des signaux des moteurs.&lt;br /&gt;
&lt;br /&gt;
Voici donc les signaux du moteur en tournant les roues dans un sens:&lt;br /&gt;
[[Fichier:Tek001.png|375px]]&lt;br /&gt;
&lt;br /&gt;
Et voici les signaux du moteurs en tournant dans l'autre sens&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Tek002.png|375px]]&lt;br /&gt;
&lt;br /&gt;
==Batteries==&lt;br /&gt;
&lt;br /&gt;
=Fabrication=&lt;br /&gt;
==Nouvelle base==&lt;br /&gt;
&lt;br /&gt;
Nous avons fabriquer une nouvelle base holonome en bois en forme de triangle afin d'avoir trois robots similaire. Il en existait déjà deux de cette forme en plexiglas. &lt;br /&gt;
Nous n'avons pas trouvé de moteur équivalent aux deux bases en plexiglas (9V), nous avons donc récupéré des moteurs d'un autre robot qui sont en 6V.&lt;br /&gt;
Nous avons fabriqué des équerres en métal pour attacher les moteurs.&lt;br /&gt;
&lt;br /&gt;
==Carte Électronique==&lt;br /&gt;
&lt;br /&gt;
Nous avions deux cartes électroniques fonctionnelles sur trois donc nous avons décidé d'en fabriquer une nouvelle afin d'en avoir trois uniforme. De plus, dans le dernier wiki, il nous était conseillé de les refaire car elles commençaient à se faire vieille. Ainsi, nous avons fabriqué une nouvelle carte électronique permettant de contrôler une base holonome pour trois roues ainsi que les différents capteur et actionneurs nous permettant de réaliser nos actions. &lt;br /&gt;
&lt;br /&gt;
La contrainte principale de cette carte a été d'utiliser la carte Raspberry Pico W.&lt;br /&gt;
&lt;br /&gt;
La carte comporte: &lt;br /&gt;
::- La carte RaspberryPI Pico W, elle devra piloter les pont en H ainsi que les capteurs et actionneurs.&lt;br /&gt;
::- Un TRACO TEN 3-1211N pour convertir la tension d'alimentation de nos batteries (9-18V) en une tension d’alimentation pour la Pico W (5V).&lt;br /&gt;
::- Des ponts en H L293D pour contrôler les moteurs, le design est plus compacte que les L298N, cela prendra moins de place sur la PCB. &lt;br /&gt;
::- Le module complet permettant d'utiliser le capteur optique (AOP TLC271ACP) qui a été développé lors de l'année précédente.&lt;br /&gt;
::- Les sorties pour chacun des capteurs et actionneurs du projet.&lt;br /&gt;
::- Un cavalier pour choisir la tension d'alimentation des moteurs (Batterie ou 5V).&lt;br /&gt;
&lt;br /&gt;
Pour chacun des capteurs et actionneurs, on trouve les noms pour les brancher sur la PCB.&lt;br /&gt;
&lt;br /&gt;
De plus, comme nous manquions de pin disponible, le deuxième capteur couleur doit être paramétré manuellement et ne détecte qu'une couleur prédéfini. Il faut sélectionner S0, S1, S2 et S3 (Label : Couleur2_Sel1 sur la PCB) avec les headers de 3.3V et GND qui se trouvent au dessus (Label : 3.3Sel1 et GNDSel1). Par exemple, pour définir S0 à 1, il faut brancher le premier pin de &amp;quot;Couleur2_Sel1&amp;quot; à 3.3V.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la PCB nous avons réaliser le shématique et le routage sur le logiciel KiCad, voici les fichiers : [[Fichier:Projet_robotique_PCB.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pcb.png|375px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Shematic.png|375px]]&lt;br /&gt;
&lt;br /&gt;
Photo de la carte réalisé et de son prototype de test : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Prototype_pcb.jpg|375px]]&lt;br /&gt;
&lt;br /&gt;
=Simulation=&lt;br /&gt;
&lt;br /&gt;
==Tutoriels== &lt;br /&gt;
===Liens utiles===&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/introduction-to-webots Documentation officielle Webots (en anglais)]&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/samples-howto#omni_wheels-wbt Le fichier Webots du robot omni_wheels se trouve]&lt;br /&gt;
*[https://github.com/KajalGada/Youtube-Tutorial-Download-Material/tree/main/Line%20Follower%20Webots%20Tutorial Un tutoriel pour faire suivre une ligne au robot]&lt;br /&gt;
*[https://www.youtube.com/watch?v=D0jhvFZJ5Ok Le tutoriel vidéo en python]&lt;br /&gt;
*[https://www.youtube.com/watch?v=KGePGSKZu4w&amp;amp;t=13s en C++]&lt;br /&gt;
*[https://cyberbotics.com/doc/reference/menu Des tutoriels allant de la prise en mains à l’utilisation de certains capteur dans Webots sont disponibles]&lt;br /&gt;
&lt;br /&gt;
===Installation de Webots===&lt;br /&gt;
&lt;br /&gt;
Environnement VM (Ubuntu, il suffit alors d'installer Webots à partir à partir de l'app center) ou WSL (Linux pour windows avec Ubuntu)&lt;br /&gt;
&lt;br /&gt;
====Pour WSL====&lt;br /&gt;
&lt;br /&gt;
modification à faire dans Windows :&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=8wNqOpRRZho INSTALLER RAPIDEMENT UBUNTU SUR WINDOWS 10 - WSL [TUTO]]&lt;br /&gt;
&lt;br /&gt;
commande à taper : &lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/fr-fr/windows/wsl/install Installer WSL 2 | Microsoft Learn] &lt;br /&gt;
&lt;br /&gt;
Installer Webots  :&lt;br /&gt;
&lt;br /&gt;
[https://cyberbotics.com/doc/guide/installation-procedure Webots documentation: Installation Procedure]&lt;br /&gt;
&lt;br /&gt;
===Webots===&lt;br /&gt;
&lt;br /&gt;
Une simulation Webots contient au moins ces deux composants :&lt;br /&gt;
*Un fichier world file (.wbt) qui définit un ou plusieurs robots et leurs environnements. Le langage utilisé est ''VRML97''.&lt;br /&gt;
*Un ou plusieurs fichiers de contrôle (controller programs) pour ces robots. Ces fichiers sont en ''C/C++/Java/Python/MATLAB''. Nous utiliserons ''C++''.&lt;br /&gt;
&lt;br /&gt;
Eventuellement il peut y avoir des PROTO : un fichier qui permet de définir un nouveau type de robot, capteur, objet ou structure, en combinant des nœuds existants (comme Solid, Transform, Shape, etc.). C’est un modèle réutilisable avec une interface personnalisable (paramètres comme la taille, la couleur, la masse...)&lt;br /&gt;
&lt;br /&gt;
Pour exécuter le '''controller''' (procédure à refaire à chaque changement de code) : &lt;br /&gt;
*Dans le dossier du controller on tape les lignes de commandes &lt;br /&gt;
**Export WEBOTS_HOME=CHEMIN_INSTALLATION_WEBOTS (souvent : /usr/local/webots)&lt;br /&gt;
**make&lt;br /&gt;
*Dans webots recharger le monde (CTRL+SHIFT+R)&lt;br /&gt;
*Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
Modification d'un '''proto''' : &lt;br /&gt;
Pour apporter une modification à un PROTO on préférera modifier le Node Tree plutôt que le code, modifier le Node Tree ne modifie pas le fichier code (et inversement). Si on modifie le fichier code, il faut sauvegarder le fichier puis recharger le monde pour appliquer le changement.&lt;br /&gt;
&lt;br /&gt;
Créer un prototype dans Webots (en VRML97) est long et fastidieux. On préférera donc créer un modèle sous SolidWorks via 2 méthodes : &lt;br /&gt;
* Exporter en fichier .wrl et recupérer les coordonnées des points du solide&lt;br /&gt;
* Exporter un fichier .stl ou un .obj et récupérer directement la forme de notre modèle 3D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Créer un solide avec des formes originales===&lt;br /&gt;
On a utilisé SolidWorks (partie à détailler avec image) pour modéliser notre solide puis on l'a exporté en .wrl (à préciser avec images)  et on a extrait les coordonnées de notre solide.&lt;br /&gt;
Sur Webots, on obtient le code suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Solid {&lt;br /&gt;
  rotation 1 0 0 0&lt;br /&gt;
  children [&lt;br /&gt;
    Shape {&lt;br /&gt;
      appearance PBRAppearance {&lt;br /&gt;
        baseColor 0 0.8 0&lt;br /&gt;
        baseColorMap ImageTexture {&lt;br /&gt;
        }&lt;br /&gt;
        roughness 0.5&lt;br /&gt;
        metalness 0&lt;br /&gt;
      }&lt;br /&gt;
      geometry IndexedFaceSet {&lt;br /&gt;
        coord Coordinate {&lt;br /&gt;
          point [&lt;br /&gt;
             -0.089884 -0.040276 -0.000000, -0.089884 -0.040276 0.020000, -0.074666 -0.066129 0.000000, -0.074666 -0.066129 0.020000, -0.001198 0.116360 0.000000, -0.001198 0.116360 0.020000, 0.028801 0.116612 -0.000000, 0.028801 0.116612 0.020000, 0.105327 -0.064616 -0.000000, 0.105327 -0.064616 0.020000, 0.120108 -0.038510 -0.000000, 0.120108 -0.038510 0.020000&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
        coordIndex [&lt;br /&gt;
           7, 11, 6, -1, 6, 11, 10, -1, 5, 7, 4, -1,&lt;br /&gt;
           4, 7, 6, -1, 1, 5, 0, -1, 0, 5, 4, -1,&lt;br /&gt;
           3, 1, 2, -1, 2, 1, 0, -1, 9, 3, 8, -1,&lt;br /&gt;
           8, 3, 2, -1, 11, 9, 10, -1, 10, 9, 8, -1,&lt;br /&gt;
           11, 7, 9, -1, 9, 7, 5, -1, 9, 5, 3, -1,&lt;br /&gt;
           3, 5, 1, -1, 2, 0, 8, -1, 8, 0, 4, -1,&lt;br /&gt;
           8, 4, 10, -1, 10, 4, 6, -1&lt;br /&gt;
        ]&lt;br /&gt;
     &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour exporter en .stl nous l'avons fait pour modéliser un labyrinthe en 2D. Nous l'importons ensuite sur Webots en utilisant le type transform pour pouvoir utiliser une échelle &amp;quot;scale&amp;quot; car il peut y avoir des problèmes de conversion en les unités de SolidWordks et les unités de Webots. Il n'y a plus de scale sur les types &amp;quot;Solid&amp;quot; depuis une mise à jour.&lt;br /&gt;
Sur le transform on ajoute une Shape puis une apparence et une géométrie. nous n'avons pas réussi à avoir les couleurs que nous avions mis sur SolidWorks. &lt;br /&gt;
 [[Fichier:Webots_menu.png|400px|thumb|center|]]&lt;br /&gt;
Le modèle que nous avons modélisé sur SolidWork apparait sans les courleurs que nous avons mis sur SolidWorks&lt;br /&gt;
[[Fichier:labyrinth_SolidW.png|400px|thumb|center|Labyrinth 2D dans Webots]]&lt;br /&gt;
[[Fichier:labyrinth_Webots.png|400px|thumb|center|Labyrinth dans SolidWorks, après des modifications de l'apparence et de la forme]]   &lt;br /&gt;
Code pour contrôler notre robot [[Fichier:omnic_cmd.zip]]&lt;br /&gt;
Vidéo simulation du suivie de ligne par le robot:&lt;br /&gt;
[[Fichier:Test_2_robot capteur infra à l'avant.gif|500px|center|thumb|démonstration du suivi de ligne]]&lt;br /&gt;
&lt;br /&gt;
==Conclusion sur la simulation ==&lt;br /&gt;
=== Plus valus de la simulation ===&lt;br /&gt;
Avec Webots, on peut tester différents stratégies de commande du robots pour voir les avantages et inconvénients de certaines stratégies. On peut décrire un modèle de robot assez fidèle à la réalité et représenter aussi son environnement.&lt;br /&gt;
La simulation nous a permis de développer une stratégie de commande pour les suiveurs de ligne et de l'adapter au mieux pour notre robot.&lt;br /&gt;
===Limites et inconvénient de Webots===&lt;br /&gt;
Webots demande beaucoup de temps pour l'utiliser correctement et créer un modèle qui va représenter au mieux notre robot. On peut facilement perdre du temps sur une fonctionnalité que l'on ne maîtrise pas. Pour les délais que l'on a, il est souvent plus rentable d'investir du temps dans la conception du robot finale plutôt que d'essayer d'avoir une simulation. Tout dépend de la maîtrise du logiciel&lt;br /&gt;
&lt;br /&gt;
=Tâches effectuées=&lt;br /&gt;
#Réalisation d'un robot complet&lt;br /&gt;
#*Fabrication des cartes de commande&lt;br /&gt;
#*Fabrication de la base &lt;br /&gt;
#Contrôle du fonctionnement des pièces existantes&lt;br /&gt;
#* Capteurs &lt;br /&gt;
#* 2 robots déjà existants&lt;br /&gt;
#Simulation sur Webots&lt;br /&gt;
#*&lt;br /&gt;
#Réalisation de la pince avec imprimante avec détecteur de métal&lt;br /&gt;
#*&lt;br /&gt;
==Pi-Pico==&lt;br /&gt;
[[Fichier:Tuto_Installation_VSCODIUM.odt]]&lt;br /&gt;
&lt;br /&gt;
===Communication===&lt;br /&gt;
Nous avons choisis de faire une communication via Wifi pour transmettre le chemin jusqu'à l'objet d'un robot à un autre, ce qui possible grâce a l'utilisation de Raspberry Pi Pico WH pour l'échange d'information via TCP/IP. Pour cela, un des Raspberry, le &amp;quot;Serveur&amp;quot; sert d'Access Point (AP) avec un serveur TCP. Puis l'autre Raspberry, le &amp;quot;Client&amp;quot; se connecte au Wifi et en lui forçant une IP. On peut par la suite se connecter au serveur TCP et commencer à transférer des informations sous forme d'un string binaire de 0 et de 1. Par la suite, cela est traduit par le Raspberry &amp;quot;Serveur&amp;quot; pour soit tourner à droite, soit à gauche.&lt;br /&gt;
&lt;br /&gt;
==Mécanique==&lt;br /&gt;
===Objet===&lt;br /&gt;
Nous avons choisit un objet de 5cm de diamètre afin de pouvoir le détecter plus facilement avec le capteur de couleur.&lt;br /&gt;
L'objet fait 14cm de haut, et a des côtés plus larges que son centre afin de l'attraper plus facilement.&lt;br /&gt;
Il y a des transitions entre les différentes sections avec des pentes de 30° par rapport à l'horizontale afin de ne pas avoir besoin de support lors de l'impression de l'objet en 3D.&lt;br /&gt;
&lt;br /&gt;
===Pince===&lt;br /&gt;
Les branches de la pince ont une courbure adaptée au diamètre de l'objet, avec l'introduction d'un jeu.&lt;br /&gt;
La pince a un slot pour attacher le capteur de couleur. &lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'emplacement pour le détecteur de présence pour la LED infrarouge de réception et son récepteur associé. Nous avons fait ce choix car il serait trop long de modéliser un emplacement pour la LED sans fragiliser la pince, donc elle sera collée sur la tranche de la branche de la pince.&lt;br /&gt;
&lt;br /&gt;
[[fichier : test]]&lt;br /&gt;
&lt;br /&gt;
===Roue===&lt;br /&gt;
Pour la roue, on prend le modèle .stl suivant, ouvrable avec Solidworks : https://www.thingiverse.com/thing:5031000 .&lt;br /&gt;
On modifie le fichier de sorte d'avoir un diamètre d'axe de roue et une taille de roue similaire à ceux utilisés les années précédentes : &lt;br /&gt;
- Hauteur de roue : 40 mm&lt;br /&gt;
- Axe de roue : 4 mm&lt;br /&gt;
&lt;br /&gt;
On fait une mise à l'échelle qui ramène la hauteur de roue à 40 mm. Puis on essaye d'adapter ensuite l'axe de roue à 4 mm.&lt;br /&gt;
&lt;br /&gt;
=Algorithmes=&lt;br /&gt;
==Suivi de lignes==&lt;br /&gt;
La piste est bordée de deux lignes noires. La logique de l'algorithme est comme suit :&lt;br /&gt;
*le capteur de ligne gauche rencontre une ligne noire -&amp;gt; le robot corrige est va à gauche. Matériellement c'est la roue avant qui tourne. idem pour la droite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
*Les capteurs de lignes doivent être très proches du sol pour pouvoir capter la ligne, il faut donc faire des réglages précis à adapter pour chaque robot.&lt;br /&gt;
*La PWM permet de régler la vitesse des moteurs, la clock de la PWM a été choisie à 5kHz part la fonction pwm_set_clkdiv_int_frac(slice_num_M1,98,0); le calcul peut être repris à avec [https://raspberry-pi.developpez.com/actu/344283/Raspberry-Pi-Pico-moins-Apprendre-a-generer-des-signaux-PWM-un-billet-blog-de-f-leb/ ce site web]&lt;br /&gt;
*Le robot va trop vite pour que la correction soit efficace, il y a franchissement de ligne. De plus il faut prendre en compte que la correction n'a lieu uniquement quand le capteur détecte la ligne. Nous avons donc essayé :&lt;br /&gt;
**De '''rajouter un délais''' pour que la correction ait lieu pendant plus longtemps, mais nous avions tout de même des problèmes de franchissement de ligne, toujours dût à la vitesse du robot.&lt;br /&gt;
**De '''diminuer la vitesse des roues arrières''' pendant la correction en les passant de 255 à 180. '''Cette méthode est concluante''' et permet une correction de trajectoire même avec un angle d'attaque important. Cet angle va dépendre de la manière dont tourne le robot. Il faut s'assurer qu'il tourne suffisamment pour que la correction soit possible. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code comprend : &lt;br /&gt;
Un fichier contenant le main : ''suivie_moteur.c'', qui se sert des fonctions définies dans le fichier ''fonctions'' pour initialiser les différents ports GPIO de la carte pico et lancer la boucle infinie avec la fonction de suivie de ligne principale.&lt;br /&gt;
Les fichiers fonctions.h et fonctions.c contiennent les éléments suivants :&lt;br /&gt;
*Les différentes bibliothèques nécessaires au fonctionnement du code&lt;br /&gt;
*Les définitions des différents ports GPIO, un par capteur de ligne et trois par moteur (2 pour le sens : IN1 et IN2 et 1 pour la PWM : ENA)&lt;br /&gt;
*La fonction '''setup_capt''' qui initialise les différents ports GPIO, les moteurs dont PWM&lt;br /&gt;
*La fonction '''pico_set_led''' qui prend en argument un booléen ''led_on'' et qui permet d'allumer la led de la board pi pico à des fins de débogage.&lt;br /&gt;
*La fonction '''setPWM''' qui prend en argument le pin enable d'un moteur et qui fixe la valeur de la PWM par l'argument value qui prend une valeur entre 0 et 255.&lt;br /&gt;
*La fonction '''commande_moteur()''' qui ne prend aucun argument et qui est l'algorithme principal de suivie de chemin. &lt;br /&gt;
&lt;br /&gt;
[[Fichier : suivi_ligne.zip]]&lt;br /&gt;
&lt;br /&gt;
==Parcours du labyrinthe ==&lt;br /&gt;
=== Direction en fonction des couleurs ===&lt;br /&gt;
Les intersections du labyrinthe seront délimitées par des couleurs selon les directions possibles que le robot pourra emprunter :&lt;br /&gt;
*'''Violet''': présence d'une intersection&lt;br /&gt;
*'''Rouge''' : virage à droite&lt;br /&gt;
*'''Bleu''' : virage à gauche&lt;br /&gt;
*'''Vert''' : virage à droite ou à gauche&lt;br /&gt;
*'''Jaune''' : impasse&lt;br /&gt;
&lt;br /&gt;
Ces couleurs sont placées sur le labyrinthe comme sur l'image suivante :&lt;br /&gt;
[[Fichier:Image labyrinthe couleur.png|400px|thumb|center|Labyrinthe final avec les couleurs pour les intersections]]&lt;br /&gt;
&lt;br /&gt;
=== Parcours d'un arbre ===&lt;br /&gt;
Afin d'explorer l’ensemble des chemins du labyrinthe, on applique un algorithme basé sur une structure en arbre, où chaque nœud représente une intersection ou une impasse.&lt;br /&gt;
&lt;br /&gt;
L’algorithme parcourt chaque nœud à partir d’un point de départ, en explorant toutes les branches possibles. À chaque intersection, il choisit un chemin, le suit jusqu’à une impasse, puis revient en arrière pour explorer les autres options. Cela permet de visiter tous les chemins du labyrinthe. &lt;br /&gt;
&lt;br /&gt;
[[Fichier : codes_parcours_et_controle]]&lt;br /&gt;
&lt;br /&gt;
Ces fichiers sont tous necessaires au bon fonctionnement du robot. Le fichier capteur_acq initialise les différents capteurs et défini l'algorithme de détection de couleur, cette algorithme (la fonction measure_couleur) utilise la fonction ajouter du fichier Parcours. C'est dans cette fonction ajouter que sont gérer les commandes de rotation de robot, selon le prochain nœud.&lt;br /&gt;
&lt;br /&gt;
====Le mouvement est comme suit :====&lt;br /&gt;
* La variable booléenne go est utilisée dans le main. Le robot suit le chemin (algorithme de suivi de ligne, fonction commande_moteur du fichier fonctions) si go est vraie. Si go est fausse alors le robot s'arrête (fonction stop_moteur du fichier fonctions).&lt;br /&gt;
* Si le robot detecte la couleur violet (P), dans la fonction ajouter du fichier Parcours, la condition couleur == 'P' est vraie, go passe à faux et le robot s'arrête. On est alors au milieu de l'intersection.&lt;br /&gt;
*-L'algorithme de parcours du graphe donne le nœud suivant à explorer. Exemple : la couleur est verte (V) et le nœud suivant est à droite, le robot tourne à droite, la variable go repasse à true et le robot suit de nouveau la ligne jusqu'à la detection de la prochaine intersection.&lt;br /&gt;
&lt;br /&gt;
=====Remarque :=====&lt;br /&gt;
les fonctions pour tourner sont basés sur un delay (les roues tournent pendant un certain temps). Cette méthode n'est pas fiable selon le robot, la vitesse des roues, la batterie. Asservir les moteurs serait plus efficace mais nous avons manqué de temps.&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=Fichier:Suivi_ligne.zip&amp;diff=13438</id>
		<title>Fichier:Suivi ligne.zip</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Fichier:Suivi_ligne.zip&amp;diff=13438"/>
		<updated>2025-05-14T13:30:08Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : Projet VS code contenant le code principal du suivi de ligne et les fonctions qui lui sont nécessaires&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
Projet VS code contenant le code principal du suivi de ligne et les fonctions qui lui sont nécessaires&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13437</id>
		<title>REBEQA</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13437"/>
		<updated>2025-05-14T13:27:15Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* Suivi de lignes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet=&lt;br /&gt;
&lt;br /&gt;
==Mission générale==&lt;br /&gt;
Le but de notre projet est de retrouver et récupérer un objet déposé dans un labyrinthe. Pour se faire, nous aurons besoin &lt;br /&gt;
#D'un labyrinthe : il sera construit par des lignes de scotch noires collées sur un fond blanc . Les robots devront suivre ces lignes. &lt;br /&gt;
#Robot bandit : Son rôle est de déposer un objet aléatoirement dans un labyrinthe (on choisit aléatoirement un temps qui fixera le moment auquel il doit déposer l'objet. Une fois l'objet déposé, le robot (retourne à sa position de départ en réalisant le chemin inverse). &lt;br /&gt;
#Robot Policier : Recherche l'objet métallique en parcourant le labyrinthe. Une fois l'objet trouvé, il revient à sa position de départ, communique le chemin à suivre pour récupérer l'objet au troisième robot.&lt;br /&gt;
#Robot Démineur : Récupère l'objet en suivant le chemin indiqué par le robot policier et revient à la base.&lt;br /&gt;
&lt;br /&gt;
==Détail du labyrinthe et des robots==&lt;br /&gt;
::- Labyrinthe : Il sera conçu à l'aide de scotchs noirs qui définiront le chemin. Il ne comporte pas de murs ni d'obstacles. Un code couleur permet de détecter une fin de route (scotch rouge) et le robot devra revenir sur ses pas ou un type d'intersection (3 branches : vert / 4 branches : jaune). Par défaut, le robot tournera tout le temps à droite (environ 90 degré). Le point de départ n'est pas considéré comme une fin de route (détection de blanc). &lt;br /&gt;
Dimension du labyrinthe à ajouter et de la largeur du chemin&lt;br /&gt;
::- Les robots possèdent deux capteurs de suivi de lignes, 3 roues suédoises motorisées et un capteur de couleur. Ils intègrent tous une carte de commande R-Pi Picow. &lt;br /&gt;
::- Le robot policier et le robot démineur possèdent en plus deux capteurs à ultrasons et un module de communication Bluetooth &lt;br /&gt;
::- Le robot bandit et le robot démineur possèdent une pince motorisée, celle du robot démineur contiendra un &amp;quot;détecteur de métal&amp;quot; qui permettra de différencier un objet en métal d'un objet classique (en bois).&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
::- 3 cartes R-Pi Picow&lt;br /&gt;
::- 2 capteurs ultrasons : HC-SR04&lt;br /&gt;
::- 6 suiveurs de lignes&lt;br /&gt;
::- 3 capteurs couleurs RGB &lt;br /&gt;
::- 3 batteries&lt;br /&gt;
::- 2 pinces dont une avec un détecteur d'objets métallique&lt;br /&gt;
::- 2 Module Bluetooth &lt;br /&gt;
::- 9 roues &lt;br /&gt;
::- 1 objet métallique et 2 objets en bois de couleur &lt;br /&gt;
&lt;br /&gt;
==Pince==&lt;br /&gt;
Les robots 1 et 3 seront munis de pinces. Ces dernières ont été modélisées à l'aide du logiciel SolidWorks et imprimées avec une imprimante 3D. Il y a une base qui fait la jonction entre les deux pinces, le servomoteur et le robot. Nous nous sommes inspirés des travaux des années précédentes en faisant bouger seulement une pince grâce au servomoteur qui va entrainer avec un système d'engrenage la seconde pince.&lt;br /&gt;
&lt;br /&gt;
===Servo Moteur===&lt;br /&gt;
Afin de contrôler les pinces, nous allons utiliser 2 servo moteurs que nous avons récupéré d'anciens robots. &lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.kjell.com/globalassets/mediaassets/701916_87897_datasheet_en.pdf?ref=4287817A7A&lt;br /&gt;
&lt;br /&gt;
Nous avons donc testé leur bon fonctionnement avec une carte Arduino et le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Moteur_pince.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Identification de l'objet ===&lt;br /&gt;
On retrouve dans le labyrinthe un leurre et un objet déposé par le robot 1. Pour différencier le bon objet du leurre, nous avions d'abord pensé à utiliser un capteur de conductivité: le bon objet aurait été métallique et permettrait de laisser passer le courant, le différenciant du leurre non conducteur. Cependant, étant impossible à mettre en pratique avec le matériel à notre disposition et ayant un nombre de pin limité sur la carte de commande utilisée, nous avons opté pour une autre méthode d'identification d'objet basée sur la couleur.&lt;br /&gt;
A l'aide d'un capteur de couleur TCS3200, nous allons pouvoir différencier l'objet d'une couleur spécifique du leurre de couleur blanche.&lt;br /&gt;
&lt;br /&gt;
Code Arduino pour la détection d'un objet de couleur spécifique:&lt;br /&gt;
&lt;br /&gt;
==Capteurs==&lt;br /&gt;
&lt;br /&gt;
===Capteur couleur TCS3200===&lt;br /&gt;
:: - lien documentation : https://dronebotworkshop.com/arduino-color-sense/#TCS230_Arduino_Hookup Modification effectuée sur le code : allumage de la LED avec la commande&lt;br /&gt;
&amp;lt;&amp;lt;digitalWrite(PinDeLaLED, HIGH);&amp;gt;&amp;gt; Attention a bien laisser le mode LOW pour S1.&lt;br /&gt;
::- Utilisation d'une carte Arduino UNO pour les tests.&lt;br /&gt;
::- Meilleure détection pour une distance plus proche de 1cm (valeur exacte 1.5cm). Il sera donc placé sous les robots (au centre). &lt;br /&gt;
::- Intervalles de détection : int redMin = 27; (Red minimum value) // int redMax = 155; (Red maximum value) //  int greenMin = 33; (Green minimum value) // int greenMax = 210; (Green maximum value) // int blueMin = 30; (Blue minimum value) // int blueMax = 250; (Blue maximum value).&lt;br /&gt;
::- La sortie renvoyée est sous format RGB avec le code choisi&lt;br /&gt;
::- Les entrées S0 et S1 permettent la gestion du scaling (20% permettent de fixer une durée de pulsation acceptable et de limiter le bruit).&lt;br /&gt;
::- Les entrées S2 et S3 permettent de définir un filtre couleur qui permettra de récupérer l'intensité de chaque composante RGB. &lt;br /&gt;
Code C++ : [[Fichier:capteur_couleur_C.zip]]&lt;br /&gt;
===Capteur ultrasons HC-SR04===&lt;br /&gt;
::- On branche l'alimentation sur 5V, Gnd à la masse, le pin 12 sur la sortie et le pin 11 sur l'entrée &lt;br /&gt;
::- On le positionnera à l'avant pour détecter l'objet à récupérer (il n'y a pas d'obstacles extérieurs comme des murs).&lt;br /&gt;
Code Arduino : [[Fichier:capteur_US.zip]]&lt;br /&gt;
Code C++ : [[Fichier:capteur_US_C.zip]]&lt;br /&gt;
===Capteurs suivi de ligne===&lt;br /&gt;
Afin que les robots se déplacent dans le labyrinthe, nous allons utiliser des capteurs de lignes. Nous allons donc réutiliser le capteur de suivi de lignes des années précédentes qui est le capteur SparkFun Line sensor Breakout QRE1113.&lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.sparkfun.com/datasheets/Robotics/QR_QRE1113.GR.pdf&lt;br /&gt;
https://download.kamami.pl/p587610-KY-033-Joy-IT.pdf&lt;br /&gt;
&lt;br /&gt;
Nous avons utiliser une carte arduino afin de tester le bon fonctionnement des capteurs de suivi de lignes et nous en avons 2 par robots soit 6 en tout.&lt;br /&gt;
&lt;br /&gt;
Code C++ : [[Fichier:Suivi_lignes.zip]]&lt;br /&gt;
&lt;br /&gt;
===Détecteur d'objet métallique===&lt;br /&gt;
::- Permet de détecter si un courant passe dans l'objet situé à l'intérieur de la pince : si l'objet est métallique, il conduit l'électricité ce qui forme un circuit fermé et donc on obtient une tension proche de zéro. Sinon, il ne conduit pas pas l'électricité et on obtient un circuit ouvert et on obtiendra une valeur proche de la tension d'alimentation (environ 5V).&lt;br /&gt;
&lt;br /&gt;
===Capteur Optique===&lt;br /&gt;
&lt;br /&gt;
Nous avons décider de reprendre l'idée du capteur optique écoconçu du robot RAMBOT présent sur les pinces du robot. Ce capteur permet de détecter si il y a bien un objet entre les pinces. Pour cela, nous avons repris les schémas électriques et modifié les composants.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite testé ce capteur avec le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:capteuropt.zip]]&lt;br /&gt;
&lt;br /&gt;
===Ensemble des capteurs===&lt;br /&gt;
&lt;br /&gt;
Nous avons fait un test avec tous les capteurs mis en même temps sur une carte.&lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Robot3.zip]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
::-Communication Bluetooth&lt;br /&gt;
&lt;br /&gt;
==Gestion de la motorisation des roues==&lt;br /&gt;
&lt;br /&gt;
==Batteries==&lt;br /&gt;
&lt;br /&gt;
=Fabrication=&lt;br /&gt;
==Nouvelle base==&lt;br /&gt;
&lt;br /&gt;
Nous avons fabriquer une nouvelle base holonome en bois en forme de triangle afin d'avoir trois robots similaire. Il en existait déjà deux de cette forme en plexiglas. &lt;br /&gt;
Nous n'avons pas trouvé de moteur équivalent aux deux bases en plexiglas (9V), nous avons donc récupéré des moteurs d'un autre robot qui sont en 6V.&lt;br /&gt;
Nous avons fabriqué des équerres en métal pour attacher les moteurs.&lt;br /&gt;
&lt;br /&gt;
==Carte Électronique==&lt;br /&gt;
&lt;br /&gt;
Nous avions deux cartes électroniques fonctionnelles sur trois donc nous avons décidé d'en fabriquer une nouvelle afin d'en avoir trois uniforme. De plus, dans le dernier wiki, il nous était conseillé de les refaire car elles commençaient à se faire vieille. Ainsi, nous avons fabriqué une nouvelle carte électronique permettant de contrôler une base holonome pour trois roues ainsi que les différents capteur et actionneurs nous permettant de réaliser nos actions. &lt;br /&gt;
&lt;br /&gt;
La contrainte principale de cette carte a été d'utiliser la carte Raspberry Pico W.&lt;br /&gt;
&lt;br /&gt;
La carte comporte: &lt;br /&gt;
::- La carte RaspberryPI Pico W, elle devra piloter les pont en H ainsi que les capteurs et actionneurs.&lt;br /&gt;
::- Un TRACO TEN 3-1211N pour convertir la tension d'alimentation de nos batteries (9-18V) en une tension d’alimentation pour la Pico W (5V).&lt;br /&gt;
::- Des ponts en H L293D pour contrôler les moteurs, le design est plus compacte que les L298N, cela prendra moins de place sur la PCB. &lt;br /&gt;
::- Le module complet permettant d'utiliser le capteur optique (AOP TLC271ACP) qui a été développé lors de l'année précédente.&lt;br /&gt;
::- Les sorties pour chacun des capteurs et actionneurs du projet.&lt;br /&gt;
::- Un cavalier pour choisir la tension d'alimentation des moteurs (Batterie ou 5V).&lt;br /&gt;
&lt;br /&gt;
Pour chacun des capteurs et actionneurs, on trouve les noms pour les brancher sur la PCB.&lt;br /&gt;
&lt;br /&gt;
De plus, comme nous manquions de pin disponible, le deuxième capteur couleur doit être paramétré manuellement et ne détecte qu'une couleur prédéfini. Il faut sélectionner S0, S1, S2 et S3 (Label : Couleur2_Sel1 sur la PCB) avec les headers de 3.3V et GND qui se trouvent au dessus (Label : 3.3Sel1 et GNDSel1). Par exemple, pour définir S0 à 1, il faut brancher le premier pin de &amp;quot;Couleur2_Sel1&amp;quot; à 3.3V.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la PCB nous avons réaliser le shématique et le routage sur le logiciel KiCad, voici les fichiers : [[Fichier:Projet_robotique_PCB.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pcb.png|375px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Shematic.png|375px]]&lt;br /&gt;
&lt;br /&gt;
Photo de la carte réalisé et de son prototype de test : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Prototype_pcb.jpg|375px]]&lt;br /&gt;
&lt;br /&gt;
=Simulation=&lt;br /&gt;
&lt;br /&gt;
==Tutoriels== &lt;br /&gt;
===Liens utiles===&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/introduction-to-webots Documentation officielle Webots (en anglais)]&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/samples-howto#omni_wheels-wbt Le fichier Webots du robot omni_wheels se trouve]&lt;br /&gt;
*[https://github.com/KajalGada/Youtube-Tutorial-Download-Material/tree/main/Line%20Follower%20Webots%20Tutorial Un tutoriel pour faire suivre une ligne au robot]&lt;br /&gt;
*[https://www.youtube.com/watch?v=D0jhvFZJ5Ok Le tutoriel vidéo en python]&lt;br /&gt;
*[https://www.youtube.com/watch?v=KGePGSKZu4w&amp;amp;t=13s en C++]&lt;br /&gt;
*[https://cyberbotics.com/doc/reference/menu Des tutoriels allant de la prise en mains à l’utilisation de certains capteur dans Webots sont disponibles]&lt;br /&gt;
&lt;br /&gt;
===Installation de Webots===&lt;br /&gt;
&lt;br /&gt;
Environnement VM (Ubuntu, il suffit alors d'installer Webots à partir à partir de l'app center) ou WSL (Linux pour windows avec Ubuntu)&lt;br /&gt;
&lt;br /&gt;
====Pour WSL====&lt;br /&gt;
&lt;br /&gt;
modification à faire dans Windows :&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=8wNqOpRRZho INSTALLER RAPIDEMENT UBUNTU SUR WINDOWS 10 - WSL [TUTO]]&lt;br /&gt;
&lt;br /&gt;
commande à taper : &lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/fr-fr/windows/wsl/install Installer WSL 2 | Microsoft Learn] &lt;br /&gt;
&lt;br /&gt;
Installer Webots  :&lt;br /&gt;
&lt;br /&gt;
[https://cyberbotics.com/doc/guide/installation-procedure Webots documentation: Installation Procedure]&lt;br /&gt;
&lt;br /&gt;
===Webots===&lt;br /&gt;
&lt;br /&gt;
Une simulation Webots contient au moins ces deux composants :&lt;br /&gt;
*Un fichier world file (.wbt) qui définit un ou plusieurs robots et leurs environnements. Le langage utilisé est ''VRML97''.&lt;br /&gt;
*Un ou plusieurs fichiers de contrôle (controller programs) pour ces robots. Ces fichiers sont en ''C/C++/Java/Python/MATLAB''. Nous utiliserons ''C++''.&lt;br /&gt;
&lt;br /&gt;
Eventuellement il peut y avoir des PROTO : un fichier qui permet de définir un nouveau type de robot, capteur, objet ou structure, en combinant des nœuds existants (comme Solid, Transform, Shape, etc.). C’est un modèle réutilisable avec une interface personnalisable (paramètres comme la taille, la couleur, la masse...)&lt;br /&gt;
&lt;br /&gt;
Pour exécuter le '''controller''' (procédure à refaire à chaque changement de code) : &lt;br /&gt;
*Dans le dossier du controller on tape les lignes de commandes &lt;br /&gt;
**Export WEBOTS_HOME=CHEMIN_INSTALLATION_WEBOTS (souvent : /usr/local/webots)&lt;br /&gt;
**make&lt;br /&gt;
*Dans webots recharger le monde (CTRL+SHIFT+R)&lt;br /&gt;
*Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
Modification d'un '''proto''' : &lt;br /&gt;
Pour apporter une modification à un PROTO on préférera modifier le Node Tree plutôt que le code, modifier le Node Tree ne modifie pas le fichier code (et inversement). Si on modifie le fichier code, il faut sauvegarder le fichier puis recharger le monde pour appliquer le changement.&lt;br /&gt;
&lt;br /&gt;
Créer un prototype dans Webots (en VRML97) est long et fastidieux. On préférera donc créer un modèle sous SolidWorks via 2 méthodes : &lt;br /&gt;
* Exporter en fichier .wrl et recupérer les coordonnées des points du solide&lt;br /&gt;
* Exporter un fichier .stl ou un .obj et récupérer directement la forme de notre modèle 3D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Créer un solide avec des formes originales===&lt;br /&gt;
On a utilisé SolidWorks (partie à détailler avec image) pour modéliser notre solide puis on l'a exporté en .wrl (à préciser avec images)  et on a extrait les coordonnées de notre solide.&lt;br /&gt;
Sur Webots, on obtient le code suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Solid {&lt;br /&gt;
  rotation 1 0 0 0&lt;br /&gt;
  children [&lt;br /&gt;
    Shape {&lt;br /&gt;
      appearance PBRAppearance {&lt;br /&gt;
        baseColor 0 0.8 0&lt;br /&gt;
        baseColorMap ImageTexture {&lt;br /&gt;
        }&lt;br /&gt;
        roughness 0.5&lt;br /&gt;
        metalness 0&lt;br /&gt;
      }&lt;br /&gt;
      geometry IndexedFaceSet {&lt;br /&gt;
        coord Coordinate {&lt;br /&gt;
          point [&lt;br /&gt;
             -0.089884 -0.040276 -0.000000, -0.089884 -0.040276 0.020000, -0.074666 -0.066129 0.000000, -0.074666 -0.066129 0.020000, -0.001198 0.116360 0.000000, -0.001198 0.116360 0.020000, 0.028801 0.116612 -0.000000, 0.028801 0.116612 0.020000, 0.105327 -0.064616 -0.000000, 0.105327 -0.064616 0.020000, 0.120108 -0.038510 -0.000000, 0.120108 -0.038510 0.020000&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
        coordIndex [&lt;br /&gt;
           7, 11, 6, -1, 6, 11, 10, -1, 5, 7, 4, -1,&lt;br /&gt;
           4, 7, 6, -1, 1, 5, 0, -1, 0, 5, 4, -1,&lt;br /&gt;
           3, 1, 2, -1, 2, 1, 0, -1, 9, 3, 8, -1,&lt;br /&gt;
           8, 3, 2, -1, 11, 9, 10, -1, 10, 9, 8, -1,&lt;br /&gt;
           11, 7, 9, -1, 9, 7, 5, -1, 9, 5, 3, -1,&lt;br /&gt;
           3, 5, 1, -1, 2, 0, 8, -1, 8, 0, 4, -1,&lt;br /&gt;
           8, 4, 10, -1, 10, 4, 6, -1&lt;br /&gt;
        ]&lt;br /&gt;
     &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour exporter en .stl nous l'avons fait pour modéliser un labyrinthe en 2D. Nous l'importons ensuite sur Webots en utilisant le type transform pour pouvoir utiliser une échelle &amp;quot;scale&amp;quot; car il peut y avoir des problèmes de conversion en les unités de SolidWordks et les unités de Webots. Il n'y a plus de scale sur les types &amp;quot;Solid&amp;quot; depuis une mise à jour.&lt;br /&gt;
Sur le transform on ajoute une Shape puis une apparence et une géométrie. nous n'avons pas réussi à avoir les couleurs que nous avions mis sur SolidWorks. &lt;br /&gt;
 [[Fichier:Webots_menu.png|400px|thumb|center|]]&lt;br /&gt;
Le modèle que nous avons modélisé sur SolidWork apparait sans les courleurs que nous avons mis sur SolidWorks&lt;br /&gt;
[[Fichier:labyrinth_SolidW.png|400px|thumb|center|Labyrinth 2D dans Webots]]&lt;br /&gt;
[[Fichier:labyrinth_Webots.png|400px|thumb|center|Labyrinth dans SolidWorks, après des modifications de l'apparence et de la forme]]   &lt;br /&gt;
Code pour contrôler notre robot [[Fichier:omnic_cmd.zip]]&lt;br /&gt;
Vidéo simulation du suivie de ligne par le robot:&lt;br /&gt;
[[Fichier:Test_2_robot capteur infra à l'avant.gif|500px|center|thumb|démonstration du suivi de ligne]]&lt;br /&gt;
&lt;br /&gt;
==Conclusion sur la simulation ==&lt;br /&gt;
=== Plus valus de la simulation ===&lt;br /&gt;
&lt;br /&gt;
===Limites et inconvénient de Webots===&lt;br /&gt;
&lt;br /&gt;
=Tâches effectuées=&lt;br /&gt;
#Réalisation d'un robot complet&lt;br /&gt;
#*Fabrication des cartes de commande&lt;br /&gt;
#*Fabrication de la base &lt;br /&gt;
#Contrôle du fonctionnement des pièces existantes&lt;br /&gt;
#* Capteurs &lt;br /&gt;
#* 2 robots déjà existants&lt;br /&gt;
#Simulation sur Webots&lt;br /&gt;
#*&lt;br /&gt;
#Réalisation de la pince avec imprimante avec détecteur de métal&lt;br /&gt;
#*&lt;br /&gt;
==Pi-Pico==&lt;br /&gt;
[[Fichier:Tuto_Installation_VSCODIUM.odt]]&lt;br /&gt;
&lt;br /&gt;
==Mécanique==&lt;br /&gt;
===Objet===&lt;br /&gt;
Nous avons choisit un objet de 5cm de diamètre afin de pouvoir le détecter plus facilement avec le capteur de couleur.&lt;br /&gt;
L'objet fait 14cm de haut, et a des côtés plus larges que son centre afin de l'attraper plus facilement.&lt;br /&gt;
Il y a des transitions entre les différentes sections avec des pentes de 30° par rapport à l'horizontale afin de ne pas avoir besoin de support lors de l'impression de l'objet en 3D.&lt;br /&gt;
&lt;br /&gt;
===Pince===&lt;br /&gt;
Les branches de la pince ont une courbure adaptée au diamètre de l'objet, avec l'introduction d'un jeu.&lt;br /&gt;
La pince a un slot pour attacher le capteur de couleur. &lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'emplacement pour le détecteur de présence pour la LED infrarouge de réception et son récepteur associé. Nous avons fait ce choix car il serait trop long de modéliser un emplacement pour la LED sans fragiliser la pince, donc elle sera collée sur la tranche de la branche de la pince.&lt;br /&gt;
&lt;br /&gt;
[[fichier : test]]&lt;br /&gt;
&lt;br /&gt;
===Roue===&lt;br /&gt;
Pour la roue, on prend le modèle .stl suivant, ouvrable avec Solidworks : https://www.thingiverse.com/thing:5031000 .&lt;br /&gt;
On modifie le fichier de sorte d'avoir un diamètre d'axe de roue et une taille de roue similaire à ceux utilisés les années précédentes : &lt;br /&gt;
- Hauteur de roue : 40 mm&lt;br /&gt;
- Axe de roue : 4 mm&lt;br /&gt;
&lt;br /&gt;
On fait une mise à l'échelle qui ramène la hauteur de roue à 40 mm. Puis on essaye d'adapter ensuite l'axe de roue à 4 mm.&lt;br /&gt;
&lt;br /&gt;
=Algorithmes=&lt;br /&gt;
==Suivi de lignes==&lt;br /&gt;
La piste est bordée de deux lignes noires. La logique de l'algorithme est comme suit :&lt;br /&gt;
*le capteur de ligne gauche rencontre une ligne noire -&amp;gt; le robot corrige est va à gauche. Matériellement c'est la roue avant qui tourne. idem pour la droite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
*Les capteurs de lignes doivent être très proches du sol pour pouvoir capter la ligne, il faut donc faire des réglages précis à adapter pour chaque robot.&lt;br /&gt;
*La PWM permet de régler la vitesse des moteurs, la clock de la PWM a été choisie à 5kHz part la fonction pwm_set_clkdiv_int_frac(slice_num_M1,98,0); le calcul peut être repris à avec [https://raspberry-pi.developpez.com/actu/344283/Raspberry-Pi-Pico-moins-Apprendre-a-generer-des-signaux-PWM-un-billet-blog-de-f-leb/ ce site web]&lt;br /&gt;
*Le robot va trop vite pour que la correction soit efficace, il y a franchissement de ligne. De plus il faut prendre en compte que la correction n'a lieu uniquement quand le capteur détecte la ligne. Nous avons donc essayé :&lt;br /&gt;
**De '''rajouter un délais''' pour que la correction ait lieu pendant plus longtemps, mais nous avions tout de même des problèmes de franchissement de ligne, toujours dût à la vitesse du robot.&lt;br /&gt;
**De '''diminuer la vitesse des roues arrières''' pendant la correction en les passant de 255 à 180. '''Cette méthode est concluante''' et permet une correction de trajectoire même avec un angle d'attaque important. Cet angle va dépendre de la manière dont tourne le robot. Il faut s'assurer qu'il tourne suffisamment pour que la correction soit possible. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code comprend : &lt;br /&gt;
Un fichier contenant le main : ''suivie_moteur.c'', qui se sert des fonctions définies dans le fichier ''fonctions'' pour initialiser les différents ports GPIO de la carte pico et lancer la boucle infinie avec la fonction de suivie de ligne principale.&lt;br /&gt;
Les fichiers fonctions.h et fonctions.c contiennent les éléments suivants :&lt;br /&gt;
*Les différentes bibliothèques nécessaires au fonctionnement du code&lt;br /&gt;
*Les définitions des différents ports GPIO, un par capteur de ligne et trois par moteur (2 pour le sens : IN1 et IN2 et 1 pour la PWM : ENA)&lt;br /&gt;
*La fonction '''setup_capt''' qui initialise les différents ports GPIO, les moteurs dont PWM&lt;br /&gt;
*La fonction '''pico_set_led''' qui prend en argument un booléen ''led_on'' et qui permet d'allumer la led de la board pi pico à des fins de débogage.&lt;br /&gt;
*La fonction '''setPWM''' qui prend en argument le pin enable d'un moteur et qui fixe la valeur de la PWM par l'argument value qui prend une valeur entre 0 et 255.&lt;br /&gt;
*La fonction '''commande_moteur()''' qui ne prend aucun argument et qui est l'algorithme principal de suivie de chemin. &lt;br /&gt;
&lt;br /&gt;
[[Fichier : suivi_ligne.zip]]&lt;br /&gt;
&lt;br /&gt;
==Parcours du labyrinthe ==&lt;br /&gt;
=== Direction en fonction des couleurs ===&lt;br /&gt;
Les intersections du labyrinthe seront délimitées par des couleurs selon les directions possibles que le robot pourra emprunter:&lt;br /&gt;
violet: présence d'une intersection&lt;br /&gt;
rouge: aller à droite&lt;br /&gt;
bleu: aller à gauche&lt;br /&gt;
vert: aller à droite ou à gauche&lt;br /&gt;
jaune: aller à droite, à gauche ou en avant&lt;br /&gt;
orange: impasse&lt;br /&gt;
&lt;br /&gt;
Ces couleurs sont placées sur le labyrinthe comme sur la modélisation suivante:&lt;br /&gt;
SIMU&lt;br /&gt;
&lt;br /&gt;
=== Parcours d'un arbre ===&lt;br /&gt;
Afin d'explorer l’ensemble des chemins du labyrinthe, on applique un algorithme basé sur une structure en arbre, où chaque nœud représente une intersection ou une impasse.&lt;br /&gt;
&lt;br /&gt;
L’algorithme parcourt chaque nœud à partir d’un point de départ, en explorant toutes les branches possibles. À chaque intersection, il choisit un chemin, le suit jusqu’à une impasse, puis revient en arrière pour explorer les autres options. Cela permet de visiter tous les chemins du labyrinthe. &lt;br /&gt;
&lt;br /&gt;
code:&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13436</id>
		<title>REBEQA</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13436"/>
		<updated>2025-05-14T13:26:48Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* Suivi de lignes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet=&lt;br /&gt;
&lt;br /&gt;
==Mission générale==&lt;br /&gt;
Le but de notre projet est de retrouver et récupérer un objet déposé dans un labyrinthe. Pour se faire, nous aurons besoin &lt;br /&gt;
#D'un labyrinthe : il sera construit par des lignes de scotch noires collées sur un fond blanc . Les robots devront suivre ces lignes. &lt;br /&gt;
#Robot bandit : Son rôle est de déposer un objet aléatoirement dans un labyrinthe (on choisit aléatoirement un temps qui fixera le moment auquel il doit déposer l'objet. Une fois l'objet déposé, le robot (retourne à sa position de départ en réalisant le chemin inverse). &lt;br /&gt;
#Robot Policier : Recherche l'objet métallique en parcourant le labyrinthe. Une fois l'objet trouvé, il revient à sa position de départ, communique le chemin à suivre pour récupérer l'objet au troisième robot.&lt;br /&gt;
#Robot Démineur : Récupère l'objet en suivant le chemin indiqué par le robot policier et revient à la base.&lt;br /&gt;
&lt;br /&gt;
==Détail du labyrinthe et des robots==&lt;br /&gt;
::- Labyrinthe : Il sera conçu à l'aide de scotchs noirs qui définiront le chemin. Il ne comporte pas de murs ni d'obstacles. Un code couleur permet de détecter une fin de route (scotch rouge) et le robot devra revenir sur ses pas ou un type d'intersection (3 branches : vert / 4 branches : jaune). Par défaut, le robot tournera tout le temps à droite (environ 90 degré). Le point de départ n'est pas considéré comme une fin de route (détection de blanc). &lt;br /&gt;
Dimension du labyrinthe à ajouter et de la largeur du chemin&lt;br /&gt;
::- Les robots possèdent deux capteurs de suivi de lignes, 3 roues suédoises motorisées et un capteur de couleur. Ils intègrent tous une carte de commande R-Pi Picow. &lt;br /&gt;
::- Le robot policier et le robot démineur possèdent en plus deux capteurs à ultrasons et un module de communication Bluetooth &lt;br /&gt;
::- Le robot bandit et le robot démineur possèdent une pince motorisée, celle du robot démineur contiendra un &amp;quot;détecteur de métal&amp;quot; qui permettra de différencier un objet en métal d'un objet classique (en bois).&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
::- 3 cartes R-Pi Picow&lt;br /&gt;
::- 2 capteurs ultrasons : HC-SR04&lt;br /&gt;
::- 6 suiveurs de lignes&lt;br /&gt;
::- 3 capteurs couleurs RGB &lt;br /&gt;
::- 3 batteries&lt;br /&gt;
::- 2 pinces dont une avec un détecteur d'objets métallique&lt;br /&gt;
::- 2 Module Bluetooth &lt;br /&gt;
::- 9 roues &lt;br /&gt;
::- 1 objet métallique et 2 objets en bois de couleur &lt;br /&gt;
&lt;br /&gt;
==Pince==&lt;br /&gt;
Les robots 1 et 3 seront munis de pinces. Ces dernières ont été modélisées à l'aide du logiciel SolidWorks et imprimées avec une imprimante 3D. Il y a une base qui fait la jonction entre les deux pinces, le servomoteur et le robot. Nous nous sommes inspirés des travaux des années précédentes en faisant bouger seulement une pince grâce au servomoteur qui va entrainer avec un système d'engrenage la seconde pince.&lt;br /&gt;
&lt;br /&gt;
===Servo Moteur===&lt;br /&gt;
Afin de contrôler les pinces, nous allons utiliser 2 servo moteurs que nous avons récupéré d'anciens robots. &lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.kjell.com/globalassets/mediaassets/701916_87897_datasheet_en.pdf?ref=4287817A7A&lt;br /&gt;
&lt;br /&gt;
Nous avons donc testé leur bon fonctionnement avec une carte Arduino et le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Moteur_pince.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Identification de l'objet ===&lt;br /&gt;
On retrouve dans le labyrinthe un leurre et un objet déposé par le robot 1. Pour différencier le bon objet du leurre, nous avions d'abord pensé à utiliser un capteur de conductivité: le bon objet aurait été métallique et permettrait de laisser passer le courant, le différenciant du leurre non conducteur. Cependant, étant impossible à mettre en pratique avec le matériel à notre disposition et ayant un nombre de pin limité sur la carte de commande utilisée, nous avons opté pour une autre méthode d'identification d'objet basée sur la couleur.&lt;br /&gt;
A l'aide d'un capteur de couleur TCS3200, nous allons pouvoir différencier l'objet d'une couleur spécifique du leurre de couleur blanche.&lt;br /&gt;
&lt;br /&gt;
Code Arduino pour la détection d'un objet de couleur spécifique:&lt;br /&gt;
&lt;br /&gt;
==Capteurs==&lt;br /&gt;
&lt;br /&gt;
===Capteur couleur TCS3200===&lt;br /&gt;
:: - lien documentation : https://dronebotworkshop.com/arduino-color-sense/#TCS230_Arduino_Hookup Modification effectuée sur le code : allumage de la LED avec la commande&lt;br /&gt;
&amp;lt;&amp;lt;digitalWrite(PinDeLaLED, HIGH);&amp;gt;&amp;gt; Attention a bien laisser le mode LOW pour S1.&lt;br /&gt;
::- Utilisation d'une carte Arduino UNO pour les tests.&lt;br /&gt;
::- Meilleure détection pour une distance plus proche de 1cm (valeur exacte 1.5cm). Il sera donc placé sous les robots (au centre). &lt;br /&gt;
::- Intervalles de détection : int redMin = 27; (Red minimum value) // int redMax = 155; (Red maximum value) //  int greenMin = 33; (Green minimum value) // int greenMax = 210; (Green maximum value) // int blueMin = 30; (Blue minimum value) // int blueMax = 250; (Blue maximum value).&lt;br /&gt;
::- La sortie renvoyée est sous format RGB avec le code choisi&lt;br /&gt;
::- Les entrées S0 et S1 permettent la gestion du scaling (20% permettent de fixer une durée de pulsation acceptable et de limiter le bruit).&lt;br /&gt;
::- Les entrées S2 et S3 permettent de définir un filtre couleur qui permettra de récupérer l'intensité de chaque composante RGB. &lt;br /&gt;
Code C++ : [[Fichier:capteur_couleur_C.zip]]&lt;br /&gt;
===Capteur ultrasons HC-SR04===&lt;br /&gt;
::- On branche l'alimentation sur 5V, Gnd à la masse, le pin 12 sur la sortie et le pin 11 sur l'entrée &lt;br /&gt;
::- On le positionnera à l'avant pour détecter l'objet à récupérer (il n'y a pas d'obstacles extérieurs comme des murs).&lt;br /&gt;
Code Arduino : [[Fichier:capteur_US.zip]]&lt;br /&gt;
Code C++ : [[Fichier:capteur_US_C.zip]]&lt;br /&gt;
===Capteurs suivi de ligne===&lt;br /&gt;
Afin que les robots se déplacent dans le labyrinthe, nous allons utiliser des capteurs de lignes. Nous allons donc réutiliser le capteur de suivi de lignes des années précédentes qui est le capteur SparkFun Line sensor Breakout QRE1113.&lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.sparkfun.com/datasheets/Robotics/QR_QRE1113.GR.pdf&lt;br /&gt;
https://download.kamami.pl/p587610-KY-033-Joy-IT.pdf&lt;br /&gt;
&lt;br /&gt;
Nous avons utiliser une carte arduino afin de tester le bon fonctionnement des capteurs de suivi de lignes et nous en avons 2 par robots soit 6 en tout.&lt;br /&gt;
&lt;br /&gt;
Code C++ : [[Fichier:Suivi_lignes.zip]]&lt;br /&gt;
&lt;br /&gt;
===Détecteur d'objet métallique===&lt;br /&gt;
::- Permet de détecter si un courant passe dans l'objet situé à l'intérieur de la pince : si l'objet est métallique, il conduit l'électricité ce qui forme un circuit fermé et donc on obtient une tension proche de zéro. Sinon, il ne conduit pas pas l'électricité et on obtient un circuit ouvert et on obtiendra une valeur proche de la tension d'alimentation (environ 5V).&lt;br /&gt;
&lt;br /&gt;
===Capteur Optique===&lt;br /&gt;
&lt;br /&gt;
Nous avons décider de reprendre l'idée du capteur optique écoconçu du robot RAMBOT présent sur les pinces du robot. Ce capteur permet de détecter si il y a bien un objet entre les pinces. Pour cela, nous avons repris les schémas électriques et modifié les composants.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite testé ce capteur avec le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:capteuropt.zip]]&lt;br /&gt;
&lt;br /&gt;
===Ensemble des capteurs===&lt;br /&gt;
&lt;br /&gt;
Nous avons fait un test avec tous les capteurs mis en même temps sur une carte.&lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Robot3.zip]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
::-Communication Bluetooth&lt;br /&gt;
&lt;br /&gt;
==Gestion de la motorisation des roues==&lt;br /&gt;
&lt;br /&gt;
==Batteries==&lt;br /&gt;
&lt;br /&gt;
=Fabrication=&lt;br /&gt;
==Nouvelle base==&lt;br /&gt;
&lt;br /&gt;
Nous avons fabriquer une nouvelle base holonome en bois en forme de triangle afin d'avoir trois robots similaire. Il en existait déjà deux de cette forme en plexiglas. &lt;br /&gt;
Nous n'avons pas trouvé de moteur équivalent aux deux bases en plexiglas (9V), nous avons donc récupéré des moteurs d'un autre robot qui sont en 6V.&lt;br /&gt;
Nous avons fabriqué des équerres en métal pour attacher les moteurs.&lt;br /&gt;
&lt;br /&gt;
==Carte Électronique==&lt;br /&gt;
&lt;br /&gt;
Nous avions deux cartes électroniques fonctionnelles sur trois donc nous avons décidé d'en fabriquer une nouvelle afin d'en avoir trois uniforme. De plus, dans le dernier wiki, il nous était conseillé de les refaire car elles commençaient à se faire vieille. Ainsi, nous avons fabriqué une nouvelle carte électronique permettant de contrôler une base holonome pour trois roues ainsi que les différents capteur et actionneurs nous permettant de réaliser nos actions. &lt;br /&gt;
&lt;br /&gt;
La contrainte principale de cette carte a été d'utiliser la carte Raspberry Pico W.&lt;br /&gt;
&lt;br /&gt;
La carte comporte: &lt;br /&gt;
::- La carte RaspberryPI Pico W, elle devra piloter les pont en H ainsi que les capteurs et actionneurs.&lt;br /&gt;
::- Un TRACO TEN 3-1211N pour convertir la tension d'alimentation de nos batteries (9-18V) en une tension d’alimentation pour la Pico W (5V).&lt;br /&gt;
::- Des ponts en H L293D pour contrôler les moteurs, le design est plus compacte que les L298N, cela prendra moins de place sur la PCB. &lt;br /&gt;
::- Le module complet permettant d'utiliser le capteur optique (AOP TLC271ACP) qui a été développé lors de l'année précédente.&lt;br /&gt;
::- Les sorties pour chacun des capteurs et actionneurs du projet.&lt;br /&gt;
::- Un cavalier pour choisir la tension d'alimentation des moteurs (Batterie ou 5V).&lt;br /&gt;
&lt;br /&gt;
Pour chacun des capteurs et actionneurs, on trouve les noms pour les brancher sur la PCB.&lt;br /&gt;
&lt;br /&gt;
De plus, comme nous manquions de pin disponible, le deuxième capteur couleur doit être paramétré manuellement et ne détecte qu'une couleur prédéfini. Il faut sélectionner S0, S1, S2 et S3 (Label : Couleur2_Sel1 sur la PCB) avec les headers de 3.3V et GND qui se trouvent au dessus (Label : 3.3Sel1 et GNDSel1). Par exemple, pour définir S0 à 1, il faut brancher le premier pin de &amp;quot;Couleur2_Sel1&amp;quot; à 3.3V.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la PCB nous avons réaliser le shématique et le routage sur le logiciel KiCad, voici les fichiers : [[Fichier:Projet_robotique_PCB.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pcb.png|375px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Shematic.png|375px]]&lt;br /&gt;
&lt;br /&gt;
Photo de la carte réalisé et de son prototype de test : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Prototype_pcb.jpg|375px]]&lt;br /&gt;
&lt;br /&gt;
=Simulation=&lt;br /&gt;
&lt;br /&gt;
==Tutoriels== &lt;br /&gt;
===Liens utiles===&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/introduction-to-webots Documentation officielle Webots (en anglais)]&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/samples-howto#omni_wheels-wbt Le fichier Webots du robot omni_wheels se trouve]&lt;br /&gt;
*[https://github.com/KajalGada/Youtube-Tutorial-Download-Material/tree/main/Line%20Follower%20Webots%20Tutorial Un tutoriel pour faire suivre une ligne au robot]&lt;br /&gt;
*[https://www.youtube.com/watch?v=D0jhvFZJ5Ok Le tutoriel vidéo en python]&lt;br /&gt;
*[https://www.youtube.com/watch?v=KGePGSKZu4w&amp;amp;t=13s en C++]&lt;br /&gt;
*[https://cyberbotics.com/doc/reference/menu Des tutoriels allant de la prise en mains à l’utilisation de certains capteur dans Webots sont disponibles]&lt;br /&gt;
&lt;br /&gt;
===Installation de Webots===&lt;br /&gt;
&lt;br /&gt;
Environnement VM (Ubuntu, il suffit alors d'installer Webots à partir à partir de l'app center) ou WSL (Linux pour windows avec Ubuntu)&lt;br /&gt;
&lt;br /&gt;
====Pour WSL====&lt;br /&gt;
&lt;br /&gt;
modification à faire dans Windows :&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=8wNqOpRRZho INSTALLER RAPIDEMENT UBUNTU SUR WINDOWS 10 - WSL [TUTO]]&lt;br /&gt;
&lt;br /&gt;
commande à taper : &lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/fr-fr/windows/wsl/install Installer WSL 2 | Microsoft Learn] &lt;br /&gt;
&lt;br /&gt;
Installer Webots  :&lt;br /&gt;
&lt;br /&gt;
[https://cyberbotics.com/doc/guide/installation-procedure Webots documentation: Installation Procedure]&lt;br /&gt;
&lt;br /&gt;
===Webots===&lt;br /&gt;
&lt;br /&gt;
Une simulation Webots contient au moins ces deux composants :&lt;br /&gt;
*Un fichier world file (.wbt) qui définit un ou plusieurs robots et leurs environnements. Le langage utilisé est ''VRML97''.&lt;br /&gt;
*Un ou plusieurs fichiers de contrôle (controller programs) pour ces robots. Ces fichiers sont en ''C/C++/Java/Python/MATLAB''. Nous utiliserons ''C++''.&lt;br /&gt;
&lt;br /&gt;
Eventuellement il peut y avoir des PROTO : un fichier qui permet de définir un nouveau type de robot, capteur, objet ou structure, en combinant des nœuds existants (comme Solid, Transform, Shape, etc.). C’est un modèle réutilisable avec une interface personnalisable (paramètres comme la taille, la couleur, la masse...)&lt;br /&gt;
&lt;br /&gt;
Pour exécuter le '''controller''' (procédure à refaire à chaque changement de code) : &lt;br /&gt;
*Dans le dossier du controller on tape les lignes de commandes &lt;br /&gt;
**Export WEBOTS_HOME=CHEMIN_INSTALLATION_WEBOTS (souvent : /usr/local/webots)&lt;br /&gt;
**make&lt;br /&gt;
*Dans webots recharger le monde (CTRL+SHIFT+R)&lt;br /&gt;
*Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
Modification d'un '''proto''' : &lt;br /&gt;
Pour apporter une modification à un PROTO on préférera modifier le Node Tree plutôt que le code, modifier le Node Tree ne modifie pas le fichier code (et inversement). Si on modifie le fichier code, il faut sauvegarder le fichier puis recharger le monde pour appliquer le changement.&lt;br /&gt;
&lt;br /&gt;
Créer un prototype dans Webots (en VRML97) est long et fastidieux. On préférera donc créer un modèle sous SolidWorks via 2 méthodes : &lt;br /&gt;
* Exporter en fichier .wrl et recupérer les coordonnées des points du solide&lt;br /&gt;
* Exporter un fichier .stl ou un .obj et récupérer directement la forme de notre modèle 3D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Créer un solide avec des formes originales===&lt;br /&gt;
On a utilisé SolidWorks (partie à détailler avec image) pour modéliser notre solide puis on l'a exporté en .wrl (à préciser avec images)  et on a extrait les coordonnées de notre solide.&lt;br /&gt;
Sur Webots, on obtient le code suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Solid {&lt;br /&gt;
  rotation 1 0 0 0&lt;br /&gt;
  children [&lt;br /&gt;
    Shape {&lt;br /&gt;
      appearance PBRAppearance {&lt;br /&gt;
        baseColor 0 0.8 0&lt;br /&gt;
        baseColorMap ImageTexture {&lt;br /&gt;
        }&lt;br /&gt;
        roughness 0.5&lt;br /&gt;
        metalness 0&lt;br /&gt;
      }&lt;br /&gt;
      geometry IndexedFaceSet {&lt;br /&gt;
        coord Coordinate {&lt;br /&gt;
          point [&lt;br /&gt;
             -0.089884 -0.040276 -0.000000, -0.089884 -0.040276 0.020000, -0.074666 -0.066129 0.000000, -0.074666 -0.066129 0.020000, -0.001198 0.116360 0.000000, -0.001198 0.116360 0.020000, 0.028801 0.116612 -0.000000, 0.028801 0.116612 0.020000, 0.105327 -0.064616 -0.000000, 0.105327 -0.064616 0.020000, 0.120108 -0.038510 -0.000000, 0.120108 -0.038510 0.020000&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
        coordIndex [&lt;br /&gt;
           7, 11, 6, -1, 6, 11, 10, -1, 5, 7, 4, -1,&lt;br /&gt;
           4, 7, 6, -1, 1, 5, 0, -1, 0, 5, 4, -1,&lt;br /&gt;
           3, 1, 2, -1, 2, 1, 0, -1, 9, 3, 8, -1,&lt;br /&gt;
           8, 3, 2, -1, 11, 9, 10, -1, 10, 9, 8, -1,&lt;br /&gt;
           11, 7, 9, -1, 9, 7, 5, -1, 9, 5, 3, -1,&lt;br /&gt;
           3, 5, 1, -1, 2, 0, 8, -1, 8, 0, 4, -1,&lt;br /&gt;
           8, 4, 10, -1, 10, 4, 6, -1&lt;br /&gt;
        ]&lt;br /&gt;
     &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour exporter en .stl nous l'avons fait pour modéliser un labyrinthe en 2D. Nous l'importons ensuite sur Webots en utilisant le type transform pour pouvoir utiliser une échelle &amp;quot;scale&amp;quot; car il peut y avoir des problèmes de conversion en les unités de SolidWordks et les unités de Webots. Il n'y a plus de scale sur les types &amp;quot;Solid&amp;quot; depuis une mise à jour.&lt;br /&gt;
Sur le transform on ajoute une Shape puis une apparence et une géométrie. nous n'avons pas réussi à avoir les couleurs que nous avions mis sur SolidWorks. &lt;br /&gt;
 [[Fichier:Webots_menu.png|400px|thumb|center|]]&lt;br /&gt;
Le modèle que nous avons modélisé sur SolidWork apparait sans les courleurs que nous avons mis sur SolidWorks&lt;br /&gt;
[[Fichier:labyrinth_SolidW.png|400px|thumb|center|Labyrinth 2D dans Webots]]&lt;br /&gt;
[[Fichier:labyrinth_Webots.png|400px|thumb|center|Labyrinth dans SolidWorks, après des modifications de l'apparence et de la forme]]   &lt;br /&gt;
Code pour contrôler notre robot [[Fichier:omnic_cmd.zip]]&lt;br /&gt;
Vidéo simulation du suivie de ligne par le robot:&lt;br /&gt;
[[Fichier:Test_2_robot capteur infra à l'avant.gif|500px|center|thumb|démonstration du suivi de ligne]]&lt;br /&gt;
&lt;br /&gt;
==Conclusion sur la simulation ==&lt;br /&gt;
=== Plus valus de la simulation ===&lt;br /&gt;
&lt;br /&gt;
===Limites et inconvénient de Webots===&lt;br /&gt;
&lt;br /&gt;
=Tâches effectuées=&lt;br /&gt;
#Réalisation d'un robot complet&lt;br /&gt;
#*Fabrication des cartes de commande&lt;br /&gt;
#*Fabrication de la base &lt;br /&gt;
#Contrôle du fonctionnement des pièces existantes&lt;br /&gt;
#* Capteurs &lt;br /&gt;
#* 2 robots déjà existants&lt;br /&gt;
#Simulation sur Webots&lt;br /&gt;
#*&lt;br /&gt;
#Réalisation de la pince avec imprimante avec détecteur de métal&lt;br /&gt;
#*&lt;br /&gt;
==Pi-Pico==&lt;br /&gt;
[[Fichier:Tuto_Installation_VSCODIUM.odt]]&lt;br /&gt;
&lt;br /&gt;
==Mécanique==&lt;br /&gt;
===Objet===&lt;br /&gt;
Nous avons choisit un objet de 5cm de diamètre afin de pouvoir le détecter plus facilement avec le capteur de couleur.&lt;br /&gt;
L'objet fait 14cm de haut, et a des côtés plus larges que son centre afin de l'attraper plus facilement.&lt;br /&gt;
Il y a des transitions entre les différentes sections avec des pentes de 30° par rapport à l'horizontale afin de ne pas avoir besoin de support lors de l'impression de l'objet en 3D.&lt;br /&gt;
&lt;br /&gt;
===Pince===&lt;br /&gt;
Les branches de la pince ont une courbure adaptée au diamètre de l'objet, avec l'introduction d'un jeu.&lt;br /&gt;
La pince a un slot pour attacher le capteur de couleur. &lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'emplacement pour le détecteur de présence pour la LED infrarouge de réception et son récepteur associé. Nous avons fait ce choix car il serait trop long de modéliser un emplacement pour la LED sans fragiliser la pince, donc elle sera collée sur la tranche de la branche de la pince.&lt;br /&gt;
&lt;br /&gt;
[[fichier : test]]&lt;br /&gt;
&lt;br /&gt;
===Roue===&lt;br /&gt;
Pour la roue, on prend le modèle .stl suivant, ouvrable avec Solidworks : https://www.thingiverse.com/thing:5031000 .&lt;br /&gt;
On modifie le fichier de sorte d'avoir un diamètre d'axe de roue et une taille de roue similaire à ceux utilisés les années précédentes : &lt;br /&gt;
- Hauteur de roue : 40 mm&lt;br /&gt;
- Axe de roue : 4 mm&lt;br /&gt;
&lt;br /&gt;
On fait une mise à l'échelle qui ramène la hauteur de roue à 40 mm. Puis on essaye d'adapter ensuite l'axe de roue à 4 mm.&lt;br /&gt;
&lt;br /&gt;
=Algorithmes=&lt;br /&gt;
==Suivi de lignes==&lt;br /&gt;
La piste est bordée de deux lignes noires. La logique de l'algorithme est comme suit :&lt;br /&gt;
*le capteur de ligne gauche rencontre une ligne noire -&amp;gt; le robot corrige est va à gauche. Matériellement c'est la roue avant qui tourne. idem pour la droite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
*Les capteurs de lignes doivent être très proches du sol pour pouvoir capter la ligne, il faut donc faire des réglages précis à adapter pour chaque robot.&lt;br /&gt;
*La PWM permet de régler la vitesse des moteurs, la clock de la PWM a été choisie à 5kHz part la fonction pwm_set_clkdiv_int_frac(slice_num_M1,98,0); le calcul peut être repris à avec [https://raspberry-pi.developpez.com/actu/344283/Raspberry-Pi-Pico-moins-Apprendre-a-generer-des-signaux-PWM-un-billet-blog-de-f-leb/ ce site web]&lt;br /&gt;
*Le robot va trop vite pour que la correction soit efficace, il y a franchissement de ligne. De plus il faut prendre en compte que la correction n'a lieu uniquement quand le capteur détecte la ligne. Nous avons donc essayé :&lt;br /&gt;
**De '''rajouter un délais''' pour que la correction ait lieu pendant plus longtemps, mais nous avions tout de même des problèmes de franchissement de ligne, toujours dût à la vitesse du robot.&lt;br /&gt;
**De '''diminuer la vitesse des roues arrières''' pendant la correction en les passant de 255 à 180. '''Cette méthode est concluante''' et permet une correction de trajectoire même avec un angle d'attaque important. Cet angle va dépendre de la manière dont tourne le robot. Il faut s'assurer qu'il tourne suffisamment pour que la correction soit possible. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code comprend : &lt;br /&gt;
Un fichier contenant le main : ''suivie_moteur.c'', qui se sert des fonctions définies dans le fichier ''fonctions'' pour initialiser les différents ports GPIO de la carte pico et lancer la boucle infinie avec la fonction de suivie de ligne principale.&lt;br /&gt;
Les fichiers fonctions.h et fonctions.c contiennent les éléments suivants :&lt;br /&gt;
*Les différentes bibliothèques nécessaires au fonctionnement du code&lt;br /&gt;
*Les définitions des différents ports GPIO, un par capteur de ligne et trois par moteur (2 pour le sens : IN1 et IN2 et 1 pour la PWM : ENA)&lt;br /&gt;
*La fonction '''setup_capt''' qui initialise les différents ports GPIO, les moteurs dont PWM&lt;br /&gt;
*La fonction '''pico_set_led''' qui prend en argument un booléen ''led_on'' et qui permet d'allumer la led de la board pi pico à des fins de débogage.&lt;br /&gt;
*La fonction '''setPWM''' qui prend en argument le pin enable d'un moteur et qui fixe la valeur de la PWM par l'argument value qui prend une valeur entre 0 et 255.&lt;br /&gt;
*La fonction '''commande_moteur()''' qui ne prend aucun argument et qui est l'algorithme principal de suivie de chemin. &lt;br /&gt;
&lt;br /&gt;
[[Fichier :]]&lt;br /&gt;
&lt;br /&gt;
==Parcours du labyrinthe ==&lt;br /&gt;
=== Direction en fonction des couleurs ===&lt;br /&gt;
Les intersections du labyrinthe seront délimitées par des couleurs selon les directions possibles que le robot pourra emprunter:&lt;br /&gt;
violet: présence d'une intersection&lt;br /&gt;
rouge: aller à droite&lt;br /&gt;
bleu: aller à gauche&lt;br /&gt;
vert: aller à droite ou à gauche&lt;br /&gt;
jaune: aller à droite, à gauche ou en avant&lt;br /&gt;
orange: impasse&lt;br /&gt;
&lt;br /&gt;
Ces couleurs sont placées sur le labyrinthe comme sur la modélisation suivante:&lt;br /&gt;
SIMU&lt;br /&gt;
&lt;br /&gt;
=== Parcours d'un arbre ===&lt;br /&gt;
Afin d'explorer l’ensemble des chemins du labyrinthe, on applique un algorithme basé sur une structure en arbre, où chaque nœud représente une intersection ou une impasse.&lt;br /&gt;
&lt;br /&gt;
L’algorithme parcourt chaque nœud à partir d’un point de départ, en explorant toutes les branches possibles. À chaque intersection, il choisit un chemin, le suit jusqu’à une impasse, puis revient en arrière pour explorer les autres options. Cela permet de visiter tous les chemins du labyrinthe. &lt;br /&gt;
&lt;br /&gt;
code:&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13431</id>
		<title>REBEQA</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13431"/>
		<updated>2025-05-14T12:59:56Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* Suivi de lignes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet=&lt;br /&gt;
&lt;br /&gt;
==Mission générale==&lt;br /&gt;
Le but de notre projet est de retrouver et récupérer un objet déposé dans un labyrinthe. Pour se faire, nous aurons besoin &lt;br /&gt;
#D'un labyrinthe : il sera construit par des lignes de scotch noires collées sur un fond blanc . Les robots devront suivre ces lignes. &lt;br /&gt;
#Robot bandit : Son rôle est de déposer un objet aléatoirement dans un labyrinthe (on choisit aléatoirement un temps qui fixera le moment auquel il doit déposer l'objet. Une fois l'objet déposé, le robot (retourne à sa position de départ en réalisant le chemin inverse). &lt;br /&gt;
#Robot Policier : Recherche l'objet métallique en parcourant le labyrinthe. Une fois l'objet trouvé, il revient à sa position de départ, communique le chemin à suivre pour récupérer l'objet au troisième robot.&lt;br /&gt;
#Robot Démineur : Récupère l'objet en suivant le chemin indiqué par le robot policier et revient à la base.&lt;br /&gt;
&lt;br /&gt;
==Détail du labyrinthe et des robots==&lt;br /&gt;
::- Labyrinthe : Il sera conçu à l'aide de scotchs noirs qui définiront le chemin. Il ne comporte pas de murs ni d'obstacles. Un code couleur permet de détecter une fin de route (scotch rouge) et le robot devra revenir sur ses pas ou un type d'intersection (3 branches : vert / 4 branches : jaune). Par défaut, le robot tournera tout le temps à droite (environ 90 degré). Le point de départ n'est pas considéré comme une fin de route (détection de blanc). &lt;br /&gt;
Dimension du labyrinthe à ajouter et de la largeur du chemin&lt;br /&gt;
::- Les robots possèdent deux capteurs de suivi de lignes, 3 roues suédoises motorisées et un capteur de couleur. Ils intègrent tous une carte de commande R-Pi Picow. &lt;br /&gt;
::- Le robot policier et le robot démineur possèdent en plus deux capteurs à ultrasons et un module de communication Bluetooth &lt;br /&gt;
::- Le robot bandit et le robot démineur possèdent une pince motorisée, celle du robot démineur contiendra un &amp;quot;détecteur de métal&amp;quot; qui permettra de différencier un objet en métal d'un objet classique (en bois).&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
::- 3 cartes R-Pi Picow&lt;br /&gt;
::- 2 capteurs ultrasons : HC-SR04&lt;br /&gt;
::- 6 suiveurs de lignes&lt;br /&gt;
::- 3 capteurs couleurs RGB &lt;br /&gt;
::- 3 batteries&lt;br /&gt;
::- 2 pinces dont une avec un détecteur d'objets métallique&lt;br /&gt;
::- 2 Module Bluetooth &lt;br /&gt;
::- 9 roues &lt;br /&gt;
::- 1 objet métallique et 2 objets en bois de couleur &lt;br /&gt;
&lt;br /&gt;
==Pince==&lt;br /&gt;
Les robots 1 et 3 seront munis de pinces. Ces dernières ont été modélisées à l'aide du logiciel SolidWorks et imprimées avec une imprimante 3D. Il y a une base qui fait la jonction entre les deux pinces, le servomoteur et le robot. Nous nous sommes inspirés des travaux des années précédentes en faisant bouger seulement une pince grâce au servomoteur qui va entrainer avec un système d'engrenage la seconde pince.&lt;br /&gt;
&lt;br /&gt;
===Servo Moteur===&lt;br /&gt;
Afin de contrôler les pinces, nous allons utiliser 2 servo moteurs que nous avons récupéré d'anciens robots. &lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.kjell.com/globalassets/mediaassets/701916_87897_datasheet_en.pdf?ref=4287817A7A&lt;br /&gt;
&lt;br /&gt;
Nous avons donc testé leur bon fonctionnement avec une carte Arduino et le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Moteur_pince.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Identification de l'objet ===&lt;br /&gt;
On retrouve dans le labyrinthe un leurre et un objet déposé par le robot 1. Pour différencier le bon objet du leurre, nous avions d'abord pensé à utiliser un capteur de conductivité: le bon objet aurait été métallique et permettrait de laisser passer le courant, le différenciant du leurre non conducteur. Cependant, étant impossible à mettre en pratique avec le matériel à notre disposition et ayant un nombre de pin limité sur la carte de commande utilisée, nous avons opté pour une autre méthode d'identification d'objet basée sur la couleur.&lt;br /&gt;
A l'aide d'un capteur de couleur TCS3200, nous allons pouvoir différencier l'objet d'une couleur spécifique du leurre de couleur blanche.&lt;br /&gt;
&lt;br /&gt;
Code Arduino pour la détection d'un objet de couleur spécifique:&lt;br /&gt;
&lt;br /&gt;
==Capteurs==&lt;br /&gt;
&lt;br /&gt;
===Capteur couleur TCS3200===&lt;br /&gt;
:: - lien documentation : https://dronebotworkshop.com/arduino-color-sense/#TCS230_Arduino_Hookup Modification effectuée sur le code : allumage de la LED avec la commande&lt;br /&gt;
&amp;lt;&amp;lt;digitalWrite(PinDeLaLED, HIGH);&amp;gt;&amp;gt; Attention a bien laisser le mode LOW pour S1.&lt;br /&gt;
::- Utilisation d'une carte Arduino UNO pour les tests.&lt;br /&gt;
::- Meilleure détection pour une distance plus proche de 1cm (valeur exacte 1.5cm). Il sera donc placé sous les robots (au centre). &lt;br /&gt;
::- Intervalles de détection : int redMin = 27; (Red minimum value) // int redMax = 155; (Red maximum value) //  int greenMin = 33; (Green minimum value) // int greenMax = 210; (Green maximum value) // int blueMin = 30; (Blue minimum value) // int blueMax = 250; (Blue maximum value).&lt;br /&gt;
::- La sortie renvoyée est sous format RGB avec le code choisi&lt;br /&gt;
::- Les entrées S0 et S1 permettent la gestion du scaling (20% permettent de fixer une durée de pulsation acceptable et de limiter le bruit).&lt;br /&gt;
::- Les entrées S2 et S3 permettent de définir un filtre couleur qui permettra de récupérer l'intensité de chaque composante RGB. &lt;br /&gt;
Code C++ : [[Fichier:capteur_couleur_C.zip]]&lt;br /&gt;
===Capteur ultrasons HC-SR04===&lt;br /&gt;
::- On branche l'alimentation sur 5V, Gnd à la masse, le pin 12 sur la sortie et le pin 11 sur l'entrée &lt;br /&gt;
::- On le positionnera à l'avant pour détecter l'objet à récupérer (il n'y a pas d'obstacles extérieurs comme des murs).&lt;br /&gt;
Code Arduino : [[Fichier:capteur_US.zip]]&lt;br /&gt;
Code C++ : [[Fichier:capteur_US_C.zip]]&lt;br /&gt;
===Capteurs suivi de ligne===&lt;br /&gt;
Afin que les robots se déplacent dans le labyrinthe, nous allons utiliser des capteurs de lignes. Nous allons donc réutiliser le capteur de suivi de lignes des années précédentes qui est le capteur SparkFun Line sensor Breakout QRE1113.&lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.sparkfun.com/datasheets/Robotics/QR_QRE1113.GR.pdf&lt;br /&gt;
https://download.kamami.pl/p587610-KY-033-Joy-IT.pdf&lt;br /&gt;
&lt;br /&gt;
Nous avons utiliser une carte arduino afin de tester le bon fonctionnement des capteurs de suivi de lignes et nous en avons 2 par robots soit 6 en tout.&lt;br /&gt;
&lt;br /&gt;
Code C++ : [[Fichier:Suivi_lignes.zip]]&lt;br /&gt;
&lt;br /&gt;
===Détecteur d'objet métallique===&lt;br /&gt;
::- Permet de détecter si un courant passe dans l'objet situé à l'intérieur de la pince : si l'objet est métallique, il conduit l'électricité ce qui forme un circuit fermé et donc on obtient une tension proche de zéro. Sinon, il ne conduit pas pas l'électricité et on obtient un circuit ouvert et on obtiendra une valeur proche de la tension d'alimentation (environ 5V).&lt;br /&gt;
&lt;br /&gt;
===Capteur Optique===&lt;br /&gt;
&lt;br /&gt;
Nous avons décider de reprendre l'idée du capteur optique écoconçu du robot RAMBOT présent sur les pinces du robot. Ce capteur permet de détecter si il y a bien un objet entre les pinces. Pour cela, nous avons repris les schémas électriques et modifié les composants.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite testé ce capteur avec le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:capteuropt.zip]]&lt;br /&gt;
&lt;br /&gt;
===Ensemble des capteurs===&lt;br /&gt;
&lt;br /&gt;
Nous avons fait un test avec tous les capteurs mis en même temps sur une carte.&lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Robot3.zip]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
::-Communication Bluetooth&lt;br /&gt;
&lt;br /&gt;
==Gestion de la motorisation des roues==&lt;br /&gt;
&lt;br /&gt;
==Batteries==&lt;br /&gt;
&lt;br /&gt;
=Fabrication=&lt;br /&gt;
==Nouvelle base==&lt;br /&gt;
&lt;br /&gt;
Nous avons fabriquer une nouvelle base holonome en bois en forme de triangle afin d'avoir trois robots similaire. Il en existait déjà deux de cette forme en plexiglas. &lt;br /&gt;
Nous n'avons pas trouvé de moteur équivalent aux deux bases en plexiglas (9V), nous avons donc récupéré des moteurs d'un autre robot qui sont en 6V.&lt;br /&gt;
Nous avons fabriqué des équerres en métal pour attacher les moteurs.&lt;br /&gt;
&lt;br /&gt;
==Carte Électronique==&lt;br /&gt;
&lt;br /&gt;
Nous avions deux cartes électroniques fonctionnelles sur trois donc nous avons décidé d'en fabriquer une nouvelle afin d'en avoir trois uniforme. De plus, dans le dernier wiki, il nous était conseillé de les refaire car elles commençaient à se faire vieille. Ainsi, nous avons fabriqué une nouvelle carte électronique permettant de contrôler une base holonome pour trois roues ainsi que les différents capteur et actionneurs nous permettant de réaliser nos actions. &lt;br /&gt;
&lt;br /&gt;
La contrainte principale de cette carte a été d'utiliser la carte Raspberry Pico W.&lt;br /&gt;
&lt;br /&gt;
La carte comporte: &lt;br /&gt;
::- La carte RaspberryPI Pico W, elle devra piloter les pont en H ainsi que les capteurs et actionneurs.&lt;br /&gt;
::- Un TRACO TEN 3-1211N pour convertir la tension d'alimentation de nos batteries (9-18V) en une tension d’alimentation pour la Pico W (5V).&lt;br /&gt;
::- Des ponts en H L293D pour contrôler les moteurs, le design est plus compacte que les L298N, cela prendra moins de place sur la PCB. &lt;br /&gt;
::- Le module complet permettant d'utiliser le capteur optique (AOP TLC271ACP) qui a été développé lors de l'année précédente.&lt;br /&gt;
::- Les sorties pour chacun des capteurs et actionneurs du projet.&lt;br /&gt;
::- Un cavalier pour choisir la tension d'alimentation des moteurs (Batterie ou 5V).&lt;br /&gt;
&lt;br /&gt;
Pour chacun des capteurs et actionneurs, on trouve les noms pour les brancher sur la PCB.&lt;br /&gt;
&lt;br /&gt;
De plus, comme nous manquions de pin disponible, le deuxième capteur couleur doit être paramétré manuellement et ne détecte qu'une couleur prédéfini. Il faut sélectionner S0, S1, S2 et S3 (Label : Couleur2_Sel1 sur la PCB) avec les headers de 3.3V et GND qui se trouvent au dessus (Label : 3.3Sel1 et GNDSel1). Par exemple, pour définir S0 à 1, il faut brancher le premier pin de &amp;quot;Couleur2_Sel1&amp;quot; à 3.3V.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la PCB nous avons réaliser le shématique et le routage sur le logiciel KiCad, voici les fichiers : [[Fichier:Projet_robotique_PCB.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pcb.png|375px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Shematic.png|375px]]&lt;br /&gt;
&lt;br /&gt;
Photo de la carte réalisé et de son prototype de test : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Prototype_pcb.jpg|375px]]&lt;br /&gt;
&lt;br /&gt;
=Simulation=&lt;br /&gt;
&lt;br /&gt;
==Tutoriels== &lt;br /&gt;
===Liens utiles===&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/introduction-to-webots Documentation officielle Webots (en anglais)]&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/samples-howto#omni_wheels-wbt Le fichier Webots du robot omni_wheels se trouve]&lt;br /&gt;
*[https://github.com/KajalGada/Youtube-Tutorial-Download-Material/tree/main/Line%20Follower%20Webots%20Tutorial Un tutoriel pour faire suivre une ligne au robot]&lt;br /&gt;
*[https://www.youtube.com/watch?v=D0jhvFZJ5Ok Le tutoriel vidéo en python]&lt;br /&gt;
*[https://www.youtube.com/watch?v=KGePGSKZu4w&amp;amp;t=13s en C++]&lt;br /&gt;
*[https://cyberbotics.com/doc/reference/menu Des tutoriels allant de la prise en mains à l’utilisation de certains capteur dans Webots sont disponibles]&lt;br /&gt;
&lt;br /&gt;
===Installation de Webots===&lt;br /&gt;
&lt;br /&gt;
Environnement VM (Ubuntu, il suffit alors d'installer Webots à partir à partir de l'app center) ou WSL (Linux pour windows avec Ubuntu)&lt;br /&gt;
&lt;br /&gt;
====Pour WSL====&lt;br /&gt;
&lt;br /&gt;
modification à faire dans Windows :&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=8wNqOpRRZho INSTALLER RAPIDEMENT UBUNTU SUR WINDOWS 10 - WSL [TUTO]]&lt;br /&gt;
&lt;br /&gt;
commande à taper : &lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/fr-fr/windows/wsl/install Installer WSL 2 | Microsoft Learn] &lt;br /&gt;
&lt;br /&gt;
Installer Webots  :&lt;br /&gt;
&lt;br /&gt;
[https://cyberbotics.com/doc/guide/installation-procedure Webots documentation: Installation Procedure]&lt;br /&gt;
&lt;br /&gt;
===Webots===&lt;br /&gt;
&lt;br /&gt;
Une simulation Webots contient au moins ces deux composants :&lt;br /&gt;
*Un fichier world file (.wbt) qui définit un ou plusieurs robots et leurs environnements. Le langage utilisé est ''VRML97''.&lt;br /&gt;
*Un ou plusieurs fichiers de contrôle (controller programs) pour ces robots. Ces fichiers sont en ''C/C++/Java/Python/MATLAB''. Nous utiliserons ''C++''.&lt;br /&gt;
&lt;br /&gt;
Eventuellement il peut y avoir des PROTO : un fichier qui permet de définir un nouveau type de robot, capteur, objet ou structure, en combinant des nœuds existants (comme Solid, Transform, Shape, etc.). C’est un modèle réutilisable avec une interface personnalisable (paramètres comme la taille, la couleur, la masse...)&lt;br /&gt;
&lt;br /&gt;
Pour exécuter le '''controller''' (procédure à refaire à chaque changement de code) : &lt;br /&gt;
*Dans le dossier du controller on tape les lignes de commandes &lt;br /&gt;
**Export WEBOTS_HOME=CHEMIN_INSTALLATION_WEBOTS (souvent : /usr/local/webots)&lt;br /&gt;
**make&lt;br /&gt;
*Dans webots recharger le monde (CTRL+SHIFT+R)&lt;br /&gt;
*Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
Modification d'un '''proto''' : &lt;br /&gt;
Pour apporter une modification à un PROTO on préférera modifier le Node Tree plutôt que le code, modifier le Node Tree ne modifie pas le fichier code (et inversement). Si on modifie le fichier code, il faut sauvegarder le fichier puis recharger le monde pour appliquer le changement.&lt;br /&gt;
&lt;br /&gt;
Créer un prototype dans Webots (en VRML97) est long et fastidieux. On préférera donc créer un modèle sous SolidWorks via 2 méthodes : &lt;br /&gt;
* Exporter en fichier .wrl et recupérer les coordonnées des points du solide&lt;br /&gt;
* Exporter un fichier .stl ou un .obj et récupérer directement la forme de notre modèle 3D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Créer un solide avec des formes originales===&lt;br /&gt;
On a utilisé SolidWorks (partie à détailler avec image) pour modéliser notre solide puis on l'a exporté en .wrl (à préciser avec images)  et on a extrait les coordonnées de notre solide.&lt;br /&gt;
Sur Webots, on obtient le code suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Solid {&lt;br /&gt;
  rotation 1 0 0 0&lt;br /&gt;
  children [&lt;br /&gt;
    Shape {&lt;br /&gt;
      appearance PBRAppearance {&lt;br /&gt;
        baseColor 0 0.8 0&lt;br /&gt;
        baseColorMap ImageTexture {&lt;br /&gt;
        }&lt;br /&gt;
        roughness 0.5&lt;br /&gt;
        metalness 0&lt;br /&gt;
      }&lt;br /&gt;
      geometry IndexedFaceSet {&lt;br /&gt;
        coord Coordinate {&lt;br /&gt;
          point [&lt;br /&gt;
             -0.089884 -0.040276 -0.000000, -0.089884 -0.040276 0.020000, -0.074666 -0.066129 0.000000, -0.074666 -0.066129 0.020000, -0.001198 0.116360 0.000000, -0.001198 0.116360 0.020000, 0.028801 0.116612 -0.000000, 0.028801 0.116612 0.020000, 0.105327 -0.064616 -0.000000, 0.105327 -0.064616 0.020000, 0.120108 -0.038510 -0.000000, 0.120108 -0.038510 0.020000&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
        coordIndex [&lt;br /&gt;
           7, 11, 6, -1, 6, 11, 10, -1, 5, 7, 4, -1,&lt;br /&gt;
           4, 7, 6, -1, 1, 5, 0, -1, 0, 5, 4, -1,&lt;br /&gt;
           3, 1, 2, -1, 2, 1, 0, -1, 9, 3, 8, -1,&lt;br /&gt;
           8, 3, 2, -1, 11, 9, 10, -1, 10, 9, 8, -1,&lt;br /&gt;
           11, 7, 9, -1, 9, 7, 5, -1, 9, 5, 3, -1,&lt;br /&gt;
           3, 5, 1, -1, 2, 0, 8, -1, 8, 0, 4, -1,&lt;br /&gt;
           8, 4, 10, -1, 10, 4, 6, -1&lt;br /&gt;
        ]&lt;br /&gt;
     &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour exporter en .stl nous l'avons fait pour modéliser un labyrinthe en 2D. Nous l'importons ensuite sur Webots en utilisant le type transform pour pouvoir utiliser une échelle &amp;quot;scale&amp;quot; car il peut y avoir des problèmes de conversion en les unités de SolidWordks et les unités de Webots. Il n'y a plus de scale sur les types &amp;quot;Solid&amp;quot; depuis une mise à jour.&lt;br /&gt;
Sur le transform on ajoute une Shape puis une apparence et une géométrie. nous n'avons pas réussi à avoir les couleurs que nous avions mis sur SolidWorks. &lt;br /&gt;
[[Fichier:Webots_menu.png|400px|thumb|center|]]    &lt;br /&gt;
Code pour contrôler notre robot [[Fichier:omnic_cmd.zip]]&lt;br /&gt;
Vidéo simulation du suivie de ligne par le robot:&lt;br /&gt;
[[Fichier:Test_2_robot capteur infra à l'avant.gif|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Conclusion sur la simulation ==&lt;br /&gt;
=== Plus valus de la simulation ===&lt;br /&gt;
&lt;br /&gt;
===Limites et inconvénient de Webots===&lt;br /&gt;
&lt;br /&gt;
=Tâches effectuées=&lt;br /&gt;
#Réalisation d'un robot complet&lt;br /&gt;
#*Fabrication des cartes de commande&lt;br /&gt;
#*Fabrication de la base &lt;br /&gt;
#Contrôle du fonctionnement des pièces existantes&lt;br /&gt;
#* Capteurs &lt;br /&gt;
#* 2 robots déjà existants&lt;br /&gt;
#Simulation sur Webots&lt;br /&gt;
#*&lt;br /&gt;
#Réalisation de la pince avec imprimante avec détecteur de métal&lt;br /&gt;
#*&lt;br /&gt;
==Pi-Pico==&lt;br /&gt;
[[Fichier:Tuto_Installation_VSCODIUM.odt]]&lt;br /&gt;
&lt;br /&gt;
==Mécanique==&lt;br /&gt;
===Objet===&lt;br /&gt;
Nous avons choisit un objet de 5cm de diamètre afin de pouvoir le détecter plus facilement avec le capteur de couleur.&lt;br /&gt;
L'objet fait 14cm de haut, et a des côtés plus larges que son centre afin de l'attraper plus facilement.&lt;br /&gt;
Il y a des transitions entre les différentes sections avec des pentes de 30° par rapport à l'horizontale afin de ne pas avoir besoin de support lors de l'impression de l'objet en 3D.&lt;br /&gt;
&lt;br /&gt;
===Pince===&lt;br /&gt;
Les branches de la pince ont une courbure adaptée au diamètre de l'objet, avec l'introduction d'un jeu.&lt;br /&gt;
La pince a un slot pour attacher le capteur de couleur. &lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'emplacement pour le détecteur de présence pour la LED infrarouge de réception et son récepteur associé. Nous avons fait ce choix car il serait trop long de modéliser un emplacement pour la LED sans fragiliser la pince, donc elle sera collée sur la tranche de la branche de la pince.&lt;br /&gt;
&lt;br /&gt;
[[fichier : test]]&lt;br /&gt;
&lt;br /&gt;
===Roue===&lt;br /&gt;
Pour la roue, on prend le modèle .stl suivant, ouvrable avec Solidworks : https://www.thingiverse.com/thing:5031000 .&lt;br /&gt;
On modifie le fichier de sorte d'avoir un diamètre d'axe de roue et une taille de roue similaire à ceux utilisés les années précédentes : &lt;br /&gt;
- Hauteur de roue : 40 mm&lt;br /&gt;
- Axe de roue : 4 mm&lt;br /&gt;
&lt;br /&gt;
On fait une mise à l'échelle qui ramène la hauteur de roue à 40 mm. Puis on essaye d'adapter ensuite l'axe de roue à 4 mm.&lt;br /&gt;
&lt;br /&gt;
=Algorithmes=&lt;br /&gt;
==Suivi de lignes==&lt;br /&gt;
La piste est bordée de deux lignes noires. La logique de l'algorithme est comme suit :&lt;br /&gt;
*le capteur de ligne gauche rencontre une ligne noire -&amp;gt; le robot corrige est va à gauche. Matériellement c'est la roue avant qui tourne. idem pour la droite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
*Les capteurs de lignes doivent être très proches du sol pour pouvoir capter la ligne, il faut donc faire des réglages précis à adapter pour chaque robot.&lt;br /&gt;
*La PWM permet de régler la vitesse des moteurs, la clock de la PWM a été choisie à 5kHz part la fonction pwm_set_clkdiv_int_frac(slice_num_M1,98,0); le calcul peut être repris à avec [https://raspberry-pi.developpez.com/actu/344283/Raspberry-Pi-Pico-moins-Apprendre-a-generer-des-signaux-PWM-un-billet-blog-de-f-leb/ ce site web]&lt;br /&gt;
*Le robot va trop vite pour que la correction soit efficace, il y a franchissement de ligne. De plus il faut prendre en compte que la correction n'a lieu uniquement quand le capteur détecte la ligne. Nous avons donc essayé :&lt;br /&gt;
**De '''rajouter un délais''' pour que la correction ait lieu pendant plus longtemps, mais nous avions tout de même des problèmes de franchissement de ligne, toujours dût à la vitesse du robot.&lt;br /&gt;
**De '''diminuer la vitesse des roues arrières''' pendant la correction en les passant de 255 à 180. '''Cette méthode est concluante''' et permet une correction de trajectoire même avec un angle d'attaque important. Cet angle va dépendre de la manière dont tourne le robot. Il faut s'assurer qu'il tourne suffisamment pour que la correction soit possible. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le code comprend : &lt;br /&gt;
Un fichier contenant le main : ''suivie_moteur.c'', qui se sert des fonctions définies dans le fichier ''fonctions'' pour initialiser les différents ports GPIO de la carte pico et lancer la boucle infinie avec la fonction de suivie de ligne principale.&lt;br /&gt;
Les fichiers fonctions.h et fonctions.c contiennent les éléments suivants :&lt;br /&gt;
*Les différentes bibliothèques nécessaires au fonctionnement du code&lt;br /&gt;
*Les définitions des différents ports GPIO, un par capteur de ligne et trois par moteur (2 pour le sens : IN1 et IN2 et 1 pour la PWM : ENA)&lt;br /&gt;
*La fonction '''setup_capt''' qui initialise les différents ports GPIO, les moteurs dont PWM&lt;br /&gt;
*La fonction '''pico_set_led''' qui prend en argument un booléen ''led_on'' et qui permet d'allumer la led de la board pi pico à des fins de débogage.&lt;br /&gt;
*La fonction '''setPWM''' qui prend en argument le pin enable d'un moteur et qui set la valeur de la PWM par l'argument value qui prend une valeur entre 0 et 255&lt;br /&gt;
&lt;br /&gt;
==Parcours du labyrinthe ==&lt;br /&gt;
=== Direction en fonction des couleurs ===&lt;br /&gt;
Les intersections du labyrinthe seront délimitées par des couleurs selon les directions possibles que le robot pourra emprunter:&lt;br /&gt;
violet: présence d'une intersection&lt;br /&gt;
rouge: aller à droite&lt;br /&gt;
bleu: aller à gauche&lt;br /&gt;
vert: aller à droite ou à gauche&lt;br /&gt;
jaune: aller à droite, à gauche ou en avant&lt;br /&gt;
orange: impasse&lt;br /&gt;
&lt;br /&gt;
Ces couleurs sont placées sur le labyrinthe comme sur la modélisation suivante:&lt;br /&gt;
SIMU&lt;br /&gt;
&lt;br /&gt;
=== Parcours d'un arbre ===&lt;br /&gt;
Afin d'explorer l’ensemble des chemins du labyrinthe, on applique un algorithme basé sur une structure en arbre, où chaque nœud représente une intersection ou une impasse.&lt;br /&gt;
&lt;br /&gt;
L’algorithme parcourt chaque nœud à partir d’un point de départ, en explorant toutes les branches possibles. À chaque intersection, il choisit un chemin, le suit jusqu’à une impasse, puis revient en arrière pour explorer les autres options. Cela permet de visiter tous les chemins du labyrinthe. &lt;br /&gt;
&lt;br /&gt;
code:&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13422</id>
		<title>REBEQA</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13422"/>
		<updated>2025-05-14T11:58:50Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* Algorithmes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet=&lt;br /&gt;
&lt;br /&gt;
==Mission générale==&lt;br /&gt;
Le but de notre projet est de retrouver et récupérer un objet déposé dans un labyrinthe. Pour se faire, nous aurons besoin &lt;br /&gt;
#D'un labyrinthe : il sera construit par des lignes de scotch noires collées sur un fond blanc . Les robots devront suivre ces lignes. &lt;br /&gt;
#Robot bandit : Son rôle est de déposer un objet aléatoirement dans un labyrinthe (on choisit aléatoirement un temps qui fixera le moment auquel il doit déposer l'objet. Une fois l'objet déposé, le robot (retourne à sa position de départ en réalisant le chemin inverse). &lt;br /&gt;
#Robot Policier : Recherche l'objet métallique en parcourant le labyrinthe. Une fois l'objet trouvé, il revient à sa position de départ, communique le chemin à suivre pour récupérer l'objet au troisième robot.&lt;br /&gt;
#Robot Démineur : Récupère l'objet en suivant le chemin indiqué par le robot policier et revient à la base.&lt;br /&gt;
&lt;br /&gt;
==Détail du labyrinthe et des robots==&lt;br /&gt;
::- Labyrinthe : Il sera conçu à l'aide de scotchs noirs qui définiront le chemin. Il ne comporte pas de murs ni d'obstacles. Un code couleur permet de détecter une fin de route (scotch rouge) et le robot devra revenir sur ses pas ou un type d'intersection (3 branches : vert / 4 branches : jaune). Par défaut, le robot tournera tout le temps à droite (environ 90 degré). Le point de départ n'est pas considéré comme une fin de route (détection de blanc). &lt;br /&gt;
Dimension du labyrinthe à ajouter et de la largeur du chemin&lt;br /&gt;
::- Les robots possèdent deux capteurs de suivi de lignes, 3 roues suédoises motorisées et un capteur de couleur. Ils intègrent tous une carte de commande R-Pi Picow. &lt;br /&gt;
::- Le robot policier et le robot démineur possèdent en plus deux capteurs à ultrasons et un module de communication Bluetooth &lt;br /&gt;
::- Le robot bandit et le robot démineur possèdent une pince motorisée, celle du robot démineur contiendra un &amp;quot;détecteur de métal&amp;quot; qui permettra de différencier un objet en métal d'un objet classique (en bois).&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
::- 3 cartes R-Pi Picow&lt;br /&gt;
::- 2 capteurs ultrasons : HC-SR04&lt;br /&gt;
::- 6 suiveurs de lignes&lt;br /&gt;
::- 3 capteurs couleurs RGB &lt;br /&gt;
::- 3 batteries&lt;br /&gt;
::- 2 pinces dont une avec un détecteur d'objets métallique&lt;br /&gt;
::- 2 Module Bluetooth &lt;br /&gt;
::- 9 roues &lt;br /&gt;
::- 1 objet métallique et 2 objets en bois de couleur &lt;br /&gt;
&lt;br /&gt;
==Pince==&lt;br /&gt;
Les robots 1 et 3 seront munis de pinces. Ces dernières ont été modélisées à l'aide du logiciel SolidWorks et imprimées avec une imprimante 3D. Il y a une base qui fait la jonction entre les deux pinces, le servomoteur et le robot. Nous nous sommes inspirés des travaux des années précédentes en faisant bouger seulement une pince grâce au servomoteur qui va entrainer avec un système d'engrenage la seconde pince.&lt;br /&gt;
&lt;br /&gt;
===Servo Moteur===&lt;br /&gt;
Afin de contrôler les pinces, nous allons utiliser 2 servo moteurs que nous avons récupéré d'anciens robots. &lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.kjell.com/globalassets/mediaassets/701916_87897_datasheet_en.pdf?ref=4287817A7A&lt;br /&gt;
&lt;br /&gt;
Nous avons donc testé leur bon fonctionnement avec une carte Arduino et le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Moteur_pince.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Identification de l'objet ===&lt;br /&gt;
On retrouve dans le labyrinthe un leurre et un objet déposé par le robot 1. Pour différencier le bon objet du leurre, nous avions d'abord pensé à utiliser un capteur de conductivité: le bon objet aurait été métallique et permettrait de laisser passer le courant, le différenciant du leurre non conducteur. Cependant, étant impossible à mettre en pratique avec le matériel à notre disposition et ayant un nombre de pin limité sur la carte de commande utilisée, nous avons opté pour une autre méthode d'identification d'objet basée sur la couleur.&lt;br /&gt;
A l'aide d'un capteur de couleur TCS3200, nous allons pouvoir différencier l'objet d'une couleur spécifique du leurre de couleur blanche.&lt;br /&gt;
&lt;br /&gt;
Code Arduino pour la détection d'un objet de couleur spécifique:&lt;br /&gt;
&lt;br /&gt;
==Capteurs==&lt;br /&gt;
&lt;br /&gt;
===Capteur couleur TCS3200===&lt;br /&gt;
:: - lien documentation : https://dronebotworkshop.com/arduino-color-sense/#TCS230_Arduino_Hookup Modification effectuée sur le code : allumage de la LED avec la commande&lt;br /&gt;
&amp;lt;&amp;lt;digitalWrite(PinDeLaLED, HIGH);&amp;gt;&amp;gt; Attention a bien laisser le mode LOW pour S1.&lt;br /&gt;
::- Utilisation d'une carte Arduino UNO pour les tests.&lt;br /&gt;
::- Meilleure détection pour une distance plus proche de 1cm (valeur exacte 1.5cm). Il sera donc placé sous les robots (au centre). &lt;br /&gt;
::- Intervalles de détection : int redMin = 27; (Red minimum value) // int redMax = 155; (Red maximum value) //  int greenMin = 33; (Green minimum value) // int greenMax = 210; (Green maximum value) // int blueMin = 30; (Blue minimum value) // int blueMax = 250; (Blue maximum value).&lt;br /&gt;
::- La sortie renvoyée est sous format RGB avec le code choisi&lt;br /&gt;
::- Les entrées S0 et S1 permettent la gestion du scaling (20% permettent de fixer une durée de pulsation acceptable et de limiter le bruit).&lt;br /&gt;
::- Les entrées S2 et S3 permettent de définir un filtre couleur qui permettra de récupérer l'intensité de chaque composante RGB. &lt;br /&gt;
Code C++ : [[Fichier:capteur_couleur_C.zip]]&lt;br /&gt;
===Capteur ultrasons HC-SR04===&lt;br /&gt;
::- On branche l'alimentation sur 5V, Gnd à la masse, le pin 12 sur la sortie et le pin 11 sur l'entrée &lt;br /&gt;
::- On le positionnera à l'avant pour détecter l'objet à récupérer (il n'y a pas d'obstacles extérieurs comme des murs).&lt;br /&gt;
Code Arduino : [[Fichier:capteur_US.zip]]&lt;br /&gt;
Code C++ : [[Fichier:capteur_US_C.zip]]&lt;br /&gt;
===Capteurs suivi de ligne===&lt;br /&gt;
Afin que les robots se déplacent dans le labyrinthe, nous allons utiliser des capteurs de lignes. Nous allons donc réutiliser le capteur de suivi de lignes des années précédentes qui est le capteur SparkFun Line sensor Breakout QRE1113.&lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.sparkfun.com/datasheets/Robotics/QR_QRE1113.GR.pdf&lt;br /&gt;
https://download.kamami.pl/p587610-KY-033-Joy-IT.pdf&lt;br /&gt;
&lt;br /&gt;
Nous avons utiliser une carte arduino afin de tester le bon fonctionnement des capteurs de suivi de lignes et nous en avons 2 par robots soit 6 en tout.&lt;br /&gt;
&lt;br /&gt;
Code C++ : [[Fichier:Suivi_lignes.zip]]&lt;br /&gt;
&lt;br /&gt;
===Détecteur d'objet métallique===&lt;br /&gt;
::- Permet de détecter si un courant passe dans l'objet situé à l'intérieur de la pince : si l'objet est métallique, il conduit l'électricité ce qui forme un circuit fermé et donc on obtient une tension proche de zéro. Sinon, il ne conduit pas pas l'électricité et on obtient un circuit ouvert et on obtiendra une valeur proche de la tension d'alimentation (environ 5V).&lt;br /&gt;
&lt;br /&gt;
===Capteur Optique===&lt;br /&gt;
&lt;br /&gt;
Nous avons décider de reprendre l'idée du capteur optique écoconçu du robot RAMBOT présent sur les pinces du robot. Ce capteur permet de détecter si il y a bien un objet entre les pinces. Pour cela, nous avons repris les schémas électriques et modifié les composants.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite testé ce capteur avec le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:capteuropt.zip]]&lt;br /&gt;
&lt;br /&gt;
===Ensemble des capteurs===&lt;br /&gt;
&lt;br /&gt;
Nous avons fait un test avec tous les capteurs mis en même temps sur une carte.&lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Robot3.zip]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
::-Communication Bluetooth&lt;br /&gt;
&lt;br /&gt;
==Gestion de la motorisation des roues==&lt;br /&gt;
&lt;br /&gt;
==Batteries==&lt;br /&gt;
&lt;br /&gt;
=Fabrication=&lt;br /&gt;
==Nouvelle base==&lt;br /&gt;
&lt;br /&gt;
Nous avons fabriquer une nouvelle base holonome en bois en forme de triangle afin d'avoir trois robots similaire. Il en existait déjà deux de cette forme en plexiglas. &lt;br /&gt;
Nous n'avons pas trouvé de moteur équivalent aux deux bases en plexiglas (9V), nous avons donc récupéré des moteurs d'un autre robot qui sont en 6V.&lt;br /&gt;
Nous avons fabriqué des équerres en métal pour attacher les moteurs.&lt;br /&gt;
&lt;br /&gt;
==Carte Électronique==&lt;br /&gt;
&lt;br /&gt;
Nous avions deux cartes électroniques fonctionnelles sur trois donc nous avons décidé d'en fabriquer une nouvelle afin d'en avoir trois uniforme. De plus, dans le dernier wiki, il nous était conseillé de les refaire car elles commençaient à se faire vieille. Ainsi, nous avons fabriqué une nouvelle carte électronique permettant de contrôler une base holonome pour trois roues ainsi que les différents capteur et actionneurs nous permettant de réaliser nos actions. &lt;br /&gt;
&lt;br /&gt;
La contrainte principale de cette carte a été d'utiliser la carte Raspberry Pico W.&lt;br /&gt;
&lt;br /&gt;
La carte comporte: &lt;br /&gt;
::- La carte RaspberryPI Pico W, elle devra piloter les pont en H ainsi que les capteurs et actionneurs.&lt;br /&gt;
::- Un TRACO TEN 3-1211N pour convertir la tension d'alimentation de nos batteries (9-18V) en une tension d’alimentation pour la Pico W (5V).&lt;br /&gt;
::- Des ponts en H L293D pour contrôler les moteurs, le design est plus compacte que les L298N, cela prendra moins de place sur la PCB. &lt;br /&gt;
::- Le module complet permettant d'utiliser le capteur optique (AOP TLC271ACP) qui a été développé lors de l'année précédente.&lt;br /&gt;
::- Les sorties pour chacun des capteurs et actionneurs du projet.&lt;br /&gt;
::- Un cavalier pour choisir la tension d'alimentation des moteurs (Batterie ou 5V).&lt;br /&gt;
&lt;br /&gt;
Pour chacun des capteurs et actionneurs, on trouve les noms pour les brancher sur la PCB.&lt;br /&gt;
&lt;br /&gt;
De plus, comme nous manquions de pin disponible, le deuxième capteur couleur doit être paramétré manuellement et ne détecte qu'une couleur prédéfini. Il faut sélectionner S0, S1, S2 et S3 (Label : Couleur2_Sel1 sur la PCB) avec les headers de 3.3V et GND qui se trouvent au dessus (Label : 3.3Sel1 et GNDSel1). Par exemple, pour définir S0 à 1, il faut brancher le premier pin de &amp;quot;Couleur2_Sel1&amp;quot; à 3.3V.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser la PCB nous avons réaliser le shématique et le routage sur le logiciel KiCad, voici les fichiers : [[Fichier:Projet_robotique_PCB.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pcb.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Shematic.png]]&lt;br /&gt;
&lt;br /&gt;
Photo de la carte réalisé et de son prototype de test : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Prototype_pcb.jpg]]&lt;br /&gt;
=Simulation=&lt;br /&gt;
&lt;br /&gt;
==Tutoriels== &lt;br /&gt;
===Liens utiles===&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/introduction-to-webots Documentation officielle Webots (en anglais)]&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/samples-howto#omni_wheels-wbt Le fichier Webots du robot omni_wheels se trouve]&lt;br /&gt;
*[https://github.com/KajalGada/Youtube-Tutorial-Download-Material/tree/main/Line%20Follower%20Webots%20Tutorial Un tutoriel pour faire suivre une ligne au robot]&lt;br /&gt;
*[https://www.youtube.com/watch?v=D0jhvFZJ5Ok Le tutoriel vidéo en python]&lt;br /&gt;
*[https://www.youtube.com/watch?v=KGePGSKZu4w&amp;amp;t=13s en C++]&lt;br /&gt;
*[https://cyberbotics.com/doc/reference/menu Des tutoriels allant de la prise en mains à l’utilisation de certains capteur dans Webots sont disponibles]&lt;br /&gt;
&lt;br /&gt;
===Installation de Webots===&lt;br /&gt;
&lt;br /&gt;
Environnement VM (Ubuntu, il suffit alors d'installer Webots à partir à partir de l'app center) ou WSL (Linux pour windows avec Ubuntu)&lt;br /&gt;
&lt;br /&gt;
====Pour WSL====&lt;br /&gt;
&lt;br /&gt;
modification à faire dans Windows :&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=8wNqOpRRZho INSTALLER RAPIDEMENT UBUNTU SUR WINDOWS 10 - WSL [TUTO]]&lt;br /&gt;
&lt;br /&gt;
commande à taper : &lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/fr-fr/windows/wsl/install Installer WSL 2 | Microsoft Learn] &lt;br /&gt;
&lt;br /&gt;
Installer Webots  :&lt;br /&gt;
&lt;br /&gt;
[https://cyberbotics.com/doc/guide/installation-procedure Webots documentation: Installation Procedure]&lt;br /&gt;
&lt;br /&gt;
===Webots===&lt;br /&gt;
&lt;br /&gt;
Une simulation Webots contient au moins ces deux composants :&lt;br /&gt;
*Un fichier world file (.wbt) qui définit un ou plusieurs robots et leurs environnements. Le langage utilisé est ''VRML97''.&lt;br /&gt;
*Un ou plusieurs fichiers de contrôle (controller programs) pour ces robots. Ces fichiers sont en ''C/C++/Java/Python/MATLAB''. Nous utiliserons ''C++''.&lt;br /&gt;
&lt;br /&gt;
Eventuellement il peut y avoir des PROTO : un fichier qui permet de définir un nouveau type de robot, capteur, objet ou structure, en combinant des nœuds existants (comme Solid, Transform, Shape, etc.). C’est un modèle réutilisable avec une interface personnalisable (paramètres comme la taille, la couleur, la masse...)&lt;br /&gt;
&lt;br /&gt;
Pour exécuter le '''controller''' (procédure à refaire à chaque changement de code) : &lt;br /&gt;
*Dans le dossier du controller on tape les lignes de commandes &lt;br /&gt;
**Export WEBOTS_HOME=CHEMIN_INSTALLATION_WEBOTS (souvent : /usr/local/webots)&lt;br /&gt;
**make&lt;br /&gt;
*Dans webots recharger le monde (CTRL+SHIFT+R)&lt;br /&gt;
*Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
Modification d'un '''proto''' : &lt;br /&gt;
Pour apporter une modification à un PROTO on préférera modifier le Node Tree plutôt que le code, modifier le Node Tree ne modifie pas le fichier code (et inversement). Si on modifie le fichier code, il faut sauvegarder le fichier puis recharger le monde pour appliquer le changement.&lt;br /&gt;
&lt;br /&gt;
Créer un prototype dans Webots (en VRML97) est long et fastidieux. On préférera donc créer un modèle sous SolidWorks via 2 méthodes : &lt;br /&gt;
#* Exporter en fichier .wrl et recupérer les coordonnées des points du solide&lt;br /&gt;
#* Export un .stl ou un .obj et récupérer directement la forme de notre modèle 3D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Créer un solide avec des formes originales===&lt;br /&gt;
On a utilisé SolidWorks (partie à détailler avec image) pour modéliser notre solide puis on l'a exporté en .wrl (à préciser avec images)  et on a extrait les coordonnées de notre solide.&lt;br /&gt;
Sur Webots, on obtient le code suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Solid {&lt;br /&gt;
  rotation 1 0 0 0&lt;br /&gt;
  children [&lt;br /&gt;
    Shape {&lt;br /&gt;
      appearance PBRAppearance {&lt;br /&gt;
        baseColor 0 0.8 0&lt;br /&gt;
        baseColorMap ImageTexture {&lt;br /&gt;
        }&lt;br /&gt;
        roughness 0.5&lt;br /&gt;
        metalness 0&lt;br /&gt;
      }&lt;br /&gt;
      geometry IndexedFaceSet {&lt;br /&gt;
        coord Coordinate {&lt;br /&gt;
          point [&lt;br /&gt;
             -0.089884 -0.040276 -0.000000, -0.089884 -0.040276 0.020000, -0.074666 -0.066129 0.000000, -0.074666 -0.066129 0.020000, -0.001198 0.116360 0.000000, -0.001198 0.116360 0.020000, 0.028801 0.116612 -0.000000, 0.028801 0.116612 0.020000, 0.105327 -0.064616 -0.000000, 0.105327 -0.064616 0.020000, 0.120108 -0.038510 -0.000000, 0.120108 -0.038510 0.020000&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
        coordIndex [&lt;br /&gt;
           7, 11, 6, -1, 6, 11, 10, -1, 5, 7, 4, -1,&lt;br /&gt;
           4, 7, 6, -1, 1, 5, 0, -1, 0, 5, 4, -1,&lt;br /&gt;
           3, 1, 2, -1, 2, 1, 0, -1, 9, 3, 8, -1,&lt;br /&gt;
           8, 3, 2, -1, 11, 9, 10, -1, 10, 9, 8, -1,&lt;br /&gt;
           11, 7, 9, -1, 9, 7, 5, -1, 9, 5, 3, -1,&lt;br /&gt;
           3, 5, 1, -1, 2, 0, 8, -1, 8, 0, 4, -1,&lt;br /&gt;
           8, 4, 10, -1, 10, 4, 6, -1&lt;br /&gt;
        ]&lt;br /&gt;
     &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Code pour contrôler notre robot [[Fichier:omnic_cmd.zip]]&lt;br /&gt;
Vidéo simulation du suivie de ligne par le robot:&lt;br /&gt;
[[Fichier:Test_2_robot capteur infra à l'avant.gif]]&lt;br /&gt;
&lt;br /&gt;
==Conclusion sur la simulation ==&lt;br /&gt;
=== Plus valus de la simulation ===&lt;br /&gt;
&lt;br /&gt;
===Limites et inconvénient de Webots===&lt;br /&gt;
&lt;br /&gt;
=Tâches effectuées=&lt;br /&gt;
#Réalisation d'un robot complet&lt;br /&gt;
#*Fabrication des cartes de commande&lt;br /&gt;
#*Fabrication de la base &lt;br /&gt;
#Contrôle du fonctionnement des pièces existantes&lt;br /&gt;
#* Capteurs &lt;br /&gt;
#* 2 robots déjà existants&lt;br /&gt;
#Simulation sur Webots&lt;br /&gt;
#*&lt;br /&gt;
#Réalisation de la pince avec imprimante avec détecteur de métal&lt;br /&gt;
#*&lt;br /&gt;
==Pi-Pico==&lt;br /&gt;
[[Fichier:Tuto_Installation_VSCODIUM.odt]]&lt;br /&gt;
&lt;br /&gt;
==Mécanique==&lt;br /&gt;
===Objet===&lt;br /&gt;
Nous avons choisit un objet de 5cm de diamètre afin de pouvoir le détecter plus facilement avec le capteur de couleur.&lt;br /&gt;
L'objet fait 14cm de haut, et a des côtés plus larges que son centre afin de l'attraper plus facilement.&lt;br /&gt;
Il y a des transitions entre les différentes sections avec des pentes de 30° par rapport à l'horizontale afin de ne pas avoir besoin de support lors de l'impression de l'objet en 3D.&lt;br /&gt;
&lt;br /&gt;
===Pince===&lt;br /&gt;
Les branches de la pince ont une courbure adaptée au diamètre de l'objet, avec l'introduction d'un jeu.&lt;br /&gt;
La pince a un slot pour attacher le capteur de couleur. &lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'emplacement pour le détecteur de présence pour la LED infrarouge de réception et son récepteur associé. Nous avons fait ce choix car il serait trop long de modéliser un emplacement pour la LED sans fragiliser la pince, donc elle sera collée sur la tranche de la branche de la pince.&lt;br /&gt;
&lt;br /&gt;
[[fichier : test]]&lt;br /&gt;
&lt;br /&gt;
===Roue===&lt;br /&gt;
Pour la roue, on prend le modèle .stl suivant, ouvrable avec Solidworks : https://www.thingiverse.com/thing:5031000 .&lt;br /&gt;
On modifie le fichier de sorte d'avoir un diamètre d'axe de roue et une taille de roue similaire à ceux utilisés les années précédentes : &lt;br /&gt;
- Hauteur de roue : 40 mm&lt;br /&gt;
- Axe de roue : 4 mm&lt;br /&gt;
&lt;br /&gt;
On fait une mise à l'échelle qui ramène la hauteur de roue à 40 mm. Puis on essaye d'adapter ensuite l'axe de roue à 4 mm.&lt;br /&gt;
&lt;br /&gt;
=Algorithmes=&lt;br /&gt;
==Suivi de lignes==&lt;br /&gt;
==Parcours du labyrinthe ==&lt;br /&gt;
=== Direction en fonction des couleurs ===&lt;br /&gt;
Les intersections du labyrinthe seront délimitées par des couleurs selon les directions possibles que le robot pourra emprunter:&lt;br /&gt;
violet: présence d'une intersection&lt;br /&gt;
rouge: aller à droite&lt;br /&gt;
bleu: aller à gauche&lt;br /&gt;
vert: aller à droite ou à gauche&lt;br /&gt;
jaune: aller à droite, à gauche ou en avant&lt;br /&gt;
orange: impasse&lt;br /&gt;
&lt;br /&gt;
Ces couleurs sont placées sur le labyrinthe comme sur la modélisation suivante:&lt;br /&gt;
SIMU&lt;br /&gt;
&lt;br /&gt;
=== Parcours d'un arbre ===&lt;br /&gt;
Afin d'explorer l’ensemble des chemins du labyrinthe, on applique un algorithme basé sur une structure en arbre, où chaque nœud représente une intersection ou une impasse.&lt;br /&gt;
&lt;br /&gt;
L’algorithme parcourt chaque nœud à partir d’un point de départ, en explorant toutes les branches possibles. À chaque intersection, il choisit un chemin, le suit jusqu’à une impasse, puis revient en arrière pour explorer les autres options. Cela permet de visiter tous les chemins du labyrinthe. &lt;br /&gt;
&lt;br /&gt;
code:&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=Fichier:Omnic_cmd.zip&amp;diff=13380</id>
		<title>Fichier:Omnic cmd.zip</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Fichier:Omnic_cmd.zip&amp;diff=13380"/>
		<updated>2025-05-12T13:41:20Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : Isabelle a téléversé une nouvelle version de Fichier:Omnic cmd.zip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
Code pour la simulation sur webots&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13379</id>
		<title>REBEQA</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13379"/>
		<updated>2025-05-12T13:36:21Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* Webots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet=&lt;br /&gt;
&lt;br /&gt;
==Mission générale==&lt;br /&gt;
Le but de notre projet est de retrouver et récupérer un objet déposé dans un labyrinthe. Pour se faire, nous aurons besoin &lt;br /&gt;
#D'un labyrinthe : il sera construit par des lignes de scotch noires collées sur un fond blanc . Les robots devront suivre ces lignes. &lt;br /&gt;
#Robot bandit : Son rôle est de déposer un objet aléatoirement dans un labyrinthe (on choisit aléatoirement un temps qui fixera le moment auquel il doit déposer l'objet. Une fois l'objet déposé, le robot (retourne à sa position de départ en réalisant le chemin inverse). &lt;br /&gt;
#Robot Policier : Recherche l'objet métallique en parcourant le labyrinthe. Une fois l'objet trouvé, il revient à sa position de départ, communique le chemin à suivre pour récupérer l'objet au troisième robot.&lt;br /&gt;
#Robot Démineur : Récupère l'objet en suivant le chemin indiqué par le robot policier et revient à la base.&lt;br /&gt;
&lt;br /&gt;
==Détail du labyrinthe et des robots==&lt;br /&gt;
::- Labyrinthe : Il sera conçu à l'aide de scotchs noirs qui définiront le chemin. Il ne comporte pas de murs ni d'obstacles. Un code couleur permet de détecter une fin de route (scotch rouge) et le robot devra revenir sur ses pas ou un type d'intersection (3 branches : vert / 4 branches : jaune). Par défaut, le robot tournera tout le temps à droite (environ 90 degré). Le point de départ n'est pas considéré comme une fin de route (détection de blanc). &lt;br /&gt;
Dimension du labyrinthe à ajouter et de la largeur du chemin&lt;br /&gt;
::- Les robots possèdent deux capteurs de suivi de lignes, 3 roues suédoises motorisées et un capteur de couleur. Ils intègrent tous une carte de commande R-Pi Picow. &lt;br /&gt;
::- Le robot policier et le robot démineur possèdent en plus deux capteurs à ultrasons et un module de communication Bluetooth &lt;br /&gt;
::- Le robot bandit et le robot démineur possèdent une pince motorisée, celle du robot démineur contiendra un &amp;quot;détecteur de métal&amp;quot; qui permettra de différencier un objet en métal d'un objet classique (en bois).&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
::- 3 cartes R-Pi Picow&lt;br /&gt;
::- 2 capteurs ultrasons : HC-SR04&lt;br /&gt;
::- 6 suiveurs de lignes&lt;br /&gt;
::- 3 capteurs couleurs RGB &lt;br /&gt;
::- 3 batteries&lt;br /&gt;
::- 2 pinces dont une avec un détecteur d'objets métallique&lt;br /&gt;
::- 2 Module Bluetooth &lt;br /&gt;
::- 9 roues &lt;br /&gt;
::- 1 objet métallique et 2 objets en bois de couleur &lt;br /&gt;
&lt;br /&gt;
==Pince==&lt;br /&gt;
Les robots 1 et 3 seront munis de pinces. Ces dernières ont été modélisées à l'aide du logiciel SolidWorks et imprimées avec une imprimante 3D. Il y a une base qui fait la jonction entre les deux pinces, le servomoteur et le robot. Nous nous sommes inspirés des travaux des années précédentes en faisant bouger seulement une pince grâce au servomoteur qui va entrainer avec un système d'engrenage la seconde pince.&lt;br /&gt;
&lt;br /&gt;
===Servo Moteur===&lt;br /&gt;
Afin de contrôler les pinces, nous allons utiliser 2 servo moteurs que nous avons récupérer d'anciens robots. &lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.kjell.com/globalassets/mediaassets/701916_87897_datasheet_en.pdf?ref=4287817A7A&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tester leur bon fonctionnement avec une carte Arduino   et le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:Moteur_pince.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Identification de l'objet ===&lt;br /&gt;
On retrouve dans le labyrinthe un leurre et un objet déposé par le robot 1. Pour différencier le bon objet du leurre, nous avions d'abord pensé à utiliser un capteur de conductivité: le bon objet aurait été métallique et permettrait de laisser passer le courant, le différenciant du leurre non conducteur. Cependant, étant impossible à mettre en pratique avec le matériel à notre disposition et ayant un nombre de pin limité sur la carte de commande utilisée, nous avons opté pour une autre méthode d'identification d'objet basée sur la couleur.&lt;br /&gt;
A l'aide d'un capteur de couleur TCS3200, nous allons pouvoir différencier l'objet d'une couleur spécifique du leurre de couleur blanche.&lt;br /&gt;
&lt;br /&gt;
Code Arduino pour la détection d'un objet de couleur spécifique:&lt;br /&gt;
&lt;br /&gt;
==Capteurs==&lt;br /&gt;
&lt;br /&gt;
===Capteur couleur TCS3200===&lt;br /&gt;
:: - lien documentation : https://dronebotworkshop.com/arduino-color-sense/#TCS230_Arduino_Hookup Modification effectuée sur le code : allumage de la LED avec la commande&lt;br /&gt;
&amp;lt;&amp;lt;digitalWrite(PinDeLaLED, HIGH);&amp;gt;&amp;gt; Attention a bien laisser le mode LOW pour S1.&lt;br /&gt;
::- Utilisation d'une carte Arduino UNO pour les tests.&lt;br /&gt;
::- Meilleure détection pour une distance plus proche de 1cm (valeur exacte 1.5cm). Il sera donc placé sous les robots (au centre). &lt;br /&gt;
::- Intervalles de détection : int redMin = 27; (Red minimum value) // int redMax = 155; (Red maximum value) //  int greenMin = 33; (Green minimum value) // int greenMax = 210; (Green maximum value) // int blueMin = 30; (Blue minimum value) // int blueMax = 250; (Blue maximum value).&lt;br /&gt;
::- La sortie renvoyée est sous format RGB avec le code choisi&lt;br /&gt;
::- Les entrées S0 et S1 permettent la gestion du scaling (20% permettent de fixer une durée de pulsation acceptable et de limiter le bruit).&lt;br /&gt;
::- Les entrées S2 et S3 permettent de définir un filtre couleur qui permettra de récupérer l'intensité de chaque composante RGB. &lt;br /&gt;
Code C++ : [[Fichier:capteur_couleur_C.zip]]&lt;br /&gt;
===Capteur ultrasons HC-SR04===&lt;br /&gt;
::- On branche l'alimentation sur 5V, Gnd à la masse, le pin 12 sur la sortie et le pin 11 sur l'entrée &lt;br /&gt;
::- On le positionnera à l'avant pour détecter l'objet à récupérer (il n'y a pas d'obstacles extérieurs comme des murs).&lt;br /&gt;
Code Arduino : [[Fichier:capteur_US.zip]]&lt;br /&gt;
Code C++ : [[Fichier:capteur_US_C.zip]]&lt;br /&gt;
===Capteurs suivi de ligne===&lt;br /&gt;
Afin que les robots se déplacent dans le labyrinthe, nous allons utiliser des capteurs de lignes. Nous allons donc réutiliser le capteur de suivie de lignes des années précédentes qui est le capteur SparkFun Line sensor Breakout QRE1113.&lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.sparkfun.com/datasheets/Robotics/QR_QRE1113.GR.pdf&lt;br /&gt;
https://download.kamami.pl/p587610-KY-033-Joy-IT.pdf&lt;br /&gt;
&lt;br /&gt;
Nous avons utiliser une carte arduino afin de tester le bon fonctionnement des capteurs suivies de lignes et nous en avons 2 par robots soit 6 en tout.&lt;br /&gt;
&lt;br /&gt;
Code C++ : [[Fichier:Suivi_lignes.zip]]&lt;br /&gt;
&lt;br /&gt;
===Détecteur d'objet métallique===&lt;br /&gt;
::- Permet de détecter si un courant passe dans l'objet situé à l'intérieur de la pince : si l'objet est métallique, il conduit l'électricité ce qui forme un circuit fermé et donc on obtient une tension proche de zéro. Sinon, il ne conduit pas pas l'électricité et on obtient un circuit ouvert et on obtiendra une valeur proche de la tension d'alimentation (environ 5V).&lt;br /&gt;
&lt;br /&gt;
===Capteur Optique===&lt;br /&gt;
&lt;br /&gt;
Nous avons décider de reprendre l'idée du capteur optique écoconçue du robot RAMBOT présent sur les pinces du robot. Ce capteur permet de détecter si il y a bien un objet entre les pinces. Pour cela, nous avons repris les schémas électriques et modifier les composants.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite tester ce capteur avec le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:capteuropt.zip]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
::-Communication Bluetooth&lt;br /&gt;
&lt;br /&gt;
==Gestion de la motorisation des roues==&lt;br /&gt;
&lt;br /&gt;
==Batteries==&lt;br /&gt;
&lt;br /&gt;
=Simulation=&lt;br /&gt;
&lt;br /&gt;
==Tutoriels== &lt;br /&gt;
===Liens utiles===&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/introduction-to-webots Documentation officielle Webots (en anglais)]&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/samples-howto#omni_wheels-wbt Le fichier Webots du robot omni_wheels se trouve]&lt;br /&gt;
*[https://github.com/KajalGada/Youtube-Tutorial-Download-Material/tree/main/Line%20Follower%20Webots%20Tutorial Un tutoriel pour faire suivre une ligne au robot]&lt;br /&gt;
*[https://www.youtube.com/watch?v=D0jhvFZJ5Ok Le tutoriel vidéo en python]&lt;br /&gt;
*[https://www.youtube.com/watch?v=KGePGSKZu4w&amp;amp;t=13s en C++]&lt;br /&gt;
*[https://cyberbotics.com/doc/reference/menu Des tutoriels allant de la prise en mains à l’utilisation de certains capteur dans Webots sont disponibles]&lt;br /&gt;
&lt;br /&gt;
===Insatallation de Webots===&lt;br /&gt;
&lt;br /&gt;
Environnement VM (Ubuntu, il suffit alors d'installer Webots à partir à partir de l'app center) ou WSL (Linux pour windows avec Ubuntu)&lt;br /&gt;
&lt;br /&gt;
====Pour WSL====&lt;br /&gt;
&lt;br /&gt;
modification à faire dans Windows :&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=8wNqOpRRZho INSTALLER RAPIDEMENT UBUNTU SUR WINDOWS 10 - WSL [TUTO]]&lt;br /&gt;
&lt;br /&gt;
commande à taper : &lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/fr-fr/windows/wsl/install Installer WSL 2 | Microsoft Learn] &lt;br /&gt;
&lt;br /&gt;
Installer Webots  :&lt;br /&gt;
&lt;br /&gt;
[https://cyberbotics.com/doc/guide/installation-procedure Webots documentation: Installation Procedure]&lt;br /&gt;
&lt;br /&gt;
===Webots===&lt;br /&gt;
&lt;br /&gt;
Une simulation Webots contient au moins ces deux composants :&lt;br /&gt;
*Un fichier world file (.wbt) qui définit un ou plusieurs robots et leurs environnement. Le langage utilisé est ''VRML97''.&lt;br /&gt;
*Un ou plusieurs fichiers de contrôle (controller programs) pour ces robots. Ces fichiers sont en ''C/C++/Java/Python/MATLAB''. Nous utiliserons ''C++''.&lt;br /&gt;
&lt;br /&gt;
Eventuellement il peut y avoir des PROTO : un fichier qui permet de définir un nouveau type de robot, capteur, objet ou structure, en combinant des nœuds existants (comme Solid, Transform, Shape, etc.). C’est un modèle réutilisable avec une interface personnalisable (paramètres comme la taille, la couleur, la masse...)&lt;br /&gt;
&lt;br /&gt;
Pour exécuter le '''controller''' (procédure à refaire à chaque changement de code) : &lt;br /&gt;
*Dans le dossier du controller on tape les lignes de commandes &lt;br /&gt;
**Export WEBOTS_HOME=CHEMIN_INSTALLATION_WEBOTS (souvent : /usr/local/webots)&lt;br /&gt;
**make&lt;br /&gt;
*Dans webots recharger le monde (CTRL+SHIFT+R)&lt;br /&gt;
*Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
Modification d'un '''proto''' : &lt;br /&gt;
Pour apporter une modification à un PROTO on préférera modifier le Node Tree plutôt que le code, modifier le Node Tree ne modifie pas le fichier code (et inversement). Si on modifie le fichier code, il faut sauvegarder le fichier puis recharger le monde pour appliquer le changement.&lt;br /&gt;
&lt;br /&gt;
Créer un prototype dans Webots (en VRML97) est long et fastidieux. On préférera donc créer un modèle sous solidWorks puis l’exporter en fichier .wrl.&lt;br /&gt;
&lt;br /&gt;
Code pour contrôler notre robot [[Fichier:omnic_cmd.zip]]&lt;br /&gt;
&lt;br /&gt;
===Créer un solide avec des formes originales===&lt;br /&gt;
On a utiliser SolidWorks (partie à détailler avec image) pour modéliser notre solide puis on l'a exporté en .wrl (à préciser avec images)  et on a extrait les coordonnées de notre solide.&lt;br /&gt;
Sur Webots, on obtient le code suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Solid {&lt;br /&gt;
  rotation 1 0 0 0&lt;br /&gt;
  children [&lt;br /&gt;
    Shape {&lt;br /&gt;
      appearance PBRAppearance {&lt;br /&gt;
        baseColor 0 0.8 0&lt;br /&gt;
        baseColorMap ImageTexture {&lt;br /&gt;
        }&lt;br /&gt;
        roughness 0.5&lt;br /&gt;
        metalness 0&lt;br /&gt;
      }&lt;br /&gt;
      geometry IndexedFaceSet {&lt;br /&gt;
        coord Coordinate {&lt;br /&gt;
          point [&lt;br /&gt;
             -0.089884 -0.040276 -0.000000, -0.089884 -0.040276 0.020000, -0.074666 -0.066129 0.000000, -0.074666 -0.066129 0.020000, -0.001198 0.116360 0.000000, -0.001198 0.116360 0.020000, 0.028801 0.116612 -0.000000, 0.028801 0.116612 0.020000, 0.105327 -0.064616 -0.000000, 0.105327 -0.064616 0.020000, 0.120108 -0.038510 -0.000000, 0.120108 -0.038510 0.020000&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
        coordIndex [&lt;br /&gt;
           7, 11, 6, -1, 6, 11, 10, -1, 5, 7, 4, -1,&lt;br /&gt;
           4, 7, 6, -1, 1, 5, 0, -1, 0, 5, 4, -1,&lt;br /&gt;
           3, 1, 2, -1, 2, 1, 0, -1, 9, 3, 8, -1,&lt;br /&gt;
           8, 3, 2, -1, 11, 9, 10, -1, 10, 9, 8, -1,&lt;br /&gt;
           11, 7, 9, -1, 9, 7, 5, -1, 9, 5, 3, -1,&lt;br /&gt;
           3, 5, 1, -1, 2, 0, 8, -1, 8, 0, 4, -1,&lt;br /&gt;
           8, 4, 10, -1, 10, 4, 6, -1&lt;br /&gt;
        ]&lt;br /&gt;
     &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tâches effectuées=&lt;br /&gt;
#Réalisation d'un robot complet&lt;br /&gt;
#*Fabrication des cartes de commande&lt;br /&gt;
#*Fabrication de la base &lt;br /&gt;
#Contrôle du fonctionnement des pièces existantes&lt;br /&gt;
#* Capteurs &lt;br /&gt;
#* 2 robots déjà existants&lt;br /&gt;
#Simulation sur Webots&lt;br /&gt;
#*&lt;br /&gt;
#Réalisation de la pince avec imprimante avec détecteur de métal&lt;br /&gt;
#*&lt;br /&gt;
==Pi-Pico==&lt;br /&gt;
[[Fichier:Tuto_Installation_VSCODIUM.odt]]&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13369</id>
		<title>REBEQA</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=REBEQA&amp;diff=13369"/>
		<updated>2025-05-12T08:30:14Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : Première semaine de webots&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet=&lt;br /&gt;
&lt;br /&gt;
==Mission générale==&lt;br /&gt;
Le but de notre projet est de retrouver et récupérer un objet déposé dans un labyrinthe. Pour se faire, nous aurons besoin &lt;br /&gt;
#D'un labyrinthe : il sera construit par des lignes de scotch noires collées sur un fond blanc . Les robots devront suivre ces lignes. &lt;br /&gt;
#Robot bandit : Son rôle est de déposer un objet aléatoirement dans un labyrinthe (on choisit aléatoirement un temps qui fixera le moment auquel il doit déposer l'objet. Une fois l'objet déposé, le robot (retourne à sa position de départ en réalisant le chemin inverse). &lt;br /&gt;
#Robot Policier : Recherche l'objet métallique en parcourant le labyrinthe. Une fois l'objet trouvé, il revient à sa position de départ, communique le chemin à suivre pour récupérer l'objet au troisième robot.&lt;br /&gt;
#Robot Démineur : Récupère l'objet en suivant le chemin indiqué par le robot policier et revient à la base.&lt;br /&gt;
&lt;br /&gt;
==Détail du labyrinthe et des robots==&lt;br /&gt;
::- Labyrinthe : Il sera conçu à l'aide de scotchs noirs qui définiront le chemin. Il ne comporte pas de murs ni d'obstacles. Un code couleur permet de détecter une fin de route (scotch rouge) et le robot devra revenir sur ses pas ou un type d'intersection (3 branches : vert / 4 branches : jaune). Par défaut, le robot tournera tout le temps à droite (environ 90 degré). Le point de départ n'est pas considéré comme une fin de route (détection de blanc). &lt;br /&gt;
Dimension du labyrinthe à ajouter et de la largeur du chemin&lt;br /&gt;
::- Les robots possèdent deux capteurs de suivi de lignes, 3 roues suédoises motorisées et un capteur de couleur. Ils intègrent tous une carte de commande R-Pi Picow. &lt;br /&gt;
::- Le robot policier et le robot démineur possèdent en plus deux capteurs à ultrasons et un module de communication Bluetooth &lt;br /&gt;
::- Le robot bandit et le robot démineur possèdent une pince motorisée, celle du robot démineur contiendra un &amp;quot;détecteur de métal&amp;quot; qui permettra de différencier un objet en métal d'un objet classique (en bois).&lt;br /&gt;
&lt;br /&gt;
=Matériel utilisé=&lt;br /&gt;
::- 3 cartes R-Pi Picow&lt;br /&gt;
::- 2 capteurs ultrasons : HC-SR04&lt;br /&gt;
::- 6 suiveurs de lignes&lt;br /&gt;
::- 3 capteurs couleurs RGB &lt;br /&gt;
::- 3 batteries&lt;br /&gt;
::- 2 pinces dont une avec un détecteur d'objets métallique&lt;br /&gt;
::- 2 Module Bluetooth &lt;br /&gt;
::- 9 roues &lt;br /&gt;
::- 1 objet métallique et 2 objets en bois de couleur &lt;br /&gt;
&lt;br /&gt;
==Pince==&lt;br /&gt;
Les robots 1 et 3 seront munis de pinces. Ces dernières ont été modélisées à l'aide du logiciel SolidWorks et imprimées avec une imprimante 3D. Il y a une base qui fait la jonction entre les deux pinces, le servomoteur et le robot. Nous nous sommes inspirés des travaux des années précédentes en faisant bouger seulement une pince grâce au servomoteur qui va entrainer avec un système d'engrenage la seconde pince.&lt;br /&gt;
&lt;br /&gt;
===Servo Moteur===&lt;br /&gt;
Afin de contrôler les pinces, nous allons utiliser 2 servo moteurs que nous avons récupérer d'anciens robots. &lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.kjell.com/globalassets/mediaassets/701916_87897_datasheet_en.pdf?ref=4287817A7A&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tester leur bon fonctionnement avec une carte Arduino   et le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code :&lt;br /&gt;
&lt;br /&gt;
=== Identification de l'objet ===&lt;br /&gt;
On retrouve dans le labyrinthe un leurre et un objet déposé par le robot 1. Pour différencier le bon objet du leurre, nous avions d'abord pensé à utiliser un capteur de conductivité: le bon objet aurait été métallique et permettrait de laisser passer le courant, le différenciant du leurre non conducteur. Cependant, étant impossible à mettre en pratique avec le matériel à notre disposition et ayant un nombre de pin limité sur la carte de commande utilisée, nous avons opté pour une autre méthode d'identification d'objet basée sur la couleur.&lt;br /&gt;
A l'aide d'un capteur de couleur TCS3200, nous allons pouvoir différencier l'objet d'une couleur spécifique du leurre de couleur blanche.&lt;br /&gt;
&lt;br /&gt;
Code Arduino pour la détection d'un objet de couleur spécifique:&lt;br /&gt;
&lt;br /&gt;
==Capteurs==&lt;br /&gt;
&lt;br /&gt;
===Capteur couleur TCS3200===&lt;br /&gt;
:: - lien documentation : https://dronebotworkshop.com/arduino-color-sense/#TCS230_Arduino_Hookup Modification effectuée sur le code : allumage de la LED avec la commande&lt;br /&gt;
&amp;lt;&amp;lt;digitalWrite(PinDeLaLED, HIGH);&amp;gt;&amp;gt; Attention a bien laisser le mode LOW pour S1.&lt;br /&gt;
::- Utilisation d'une carte Arduino UNO pour les tests.&lt;br /&gt;
::- Meilleure détection pour une distance plus proche de 1cm (valeur exacte 1.5cm). Il sera donc placé sous les robots (au centre). &lt;br /&gt;
::- Intervalles de détection : int redMin = 27; (Red minimum value) // int redMax = 155; (Red maximum value) //  int greenMin = 33; (Green minimum value) // int greenMax = 210; (Green maximum value) // int blueMin = 30; (Blue minimum value) // int blueMax = 250; (Blue maximum value).&lt;br /&gt;
::- La sortie renvoyée est sous format RGB avec le code choisi&lt;br /&gt;
::- Les entrées S0 et S1 permettent la gestion du scaling (20% permettent de fixer une durée de pulsation acceptable et de limiter le bruit).&lt;br /&gt;
::- Les entrées S2 et S3 permettent de définir un filtre couleur qui permettra de récupérer l'intensité de chaque composante RGB. &lt;br /&gt;
Code C++ : [[Fichier:capteur_couleur_C.zip]]&lt;br /&gt;
===Capteur ultrasons HC-SR04===&lt;br /&gt;
::- On branche l'alimentation sur 5V, Gnd à la masse, le pin 12 sur la sortie et le pin 11 sur l'entrée &lt;br /&gt;
::- On le positionnera à l'avant pour détecter l'objet à récupérer (il n'y a pas d'obstacles extérieurs comme des murs).&lt;br /&gt;
Code Arduino : [[Fichier:capteur_US.zip]]&lt;br /&gt;
Code C++ : [[Fichier:capteur_US_C.zip]]&lt;br /&gt;
===Capteurs suivi de ligne===&lt;br /&gt;
Afin que les robots se déplacent dans le labyrinthe, nous allons utiliser des capteurs de lignes. Nous allons donc réutiliser le capteur de suivie de lignes des années précédentes qui est le capteur SparkFun Line sensor Breakout QRE1113.&lt;br /&gt;
&lt;br /&gt;
Datasheet : https://www.sparkfun.com/datasheets/Robotics/QR_QRE1113.GR.pdf&lt;br /&gt;
&lt;br /&gt;
Nous avons utiliser une carte arduino afin de tester le bon fonctionnement des capteurs suivies de lignes et nous en avons de 2 par robots soit 6 en tout.&lt;br /&gt;
&lt;br /&gt;
===Détecteur d'objet métallique===&lt;br /&gt;
::- Permet de détecter si un courant passe dans l'objet situé à l'intérieur de la pince : si l'objet est métallique, il conduit l'électricité ce qui forme un circuit fermé et donc on obtient une tension proche de zéro. Sinon, il ne conduit pas pas l'électricité et on obtient un circuit ouvert et on obtiendra une valeur proche de la tension d'alimentation (environ 5V).&lt;br /&gt;
&lt;br /&gt;
===Capteur Optique===&lt;br /&gt;
&lt;br /&gt;
Nous avons décider de reprendre l'idée du capteur optique écoconçue du robot RAMBOT présent sur les pinces du robot. Ce capteur permet de détecter si il y a bien un objet entre les pinces. Pour cela, nous avons repris les schémas électriques et modifier les composants.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite tester ce capteur avec le code suivant: &lt;br /&gt;
&lt;br /&gt;
Code : [[Fichier:capteuropt.zip]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
::-Communication Bluetooth&lt;br /&gt;
&lt;br /&gt;
==Gestion de la motorisation des roues==&lt;br /&gt;
&lt;br /&gt;
==Batteries==&lt;br /&gt;
&lt;br /&gt;
=Simulation=&lt;br /&gt;
&lt;br /&gt;
==Tutoriels== &lt;br /&gt;
===Liens utiles===&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/introduction-to-webots Documentation officielle Webots (en anglais)]&lt;br /&gt;
*[https://cyberbotics.com/doc/guide/samples-howto#omni_wheels-wbt Le fichier Webots du robot omni_wheels se trouve]&lt;br /&gt;
*[https://github.com/KajalGada/Youtube-Tutorial-Download-Material/tree/main/Line%20Follower%20Webots%20Tutorial Un tutoriel pour faire suivre une ligne au robot]&lt;br /&gt;
*[https://www.youtube.com/watch?v=D0jhvFZJ5Ok Le tutoriel vidéo en python]&lt;br /&gt;
*[https://www.youtube.com/watch?v=KGePGSKZu4w&amp;amp;t=13s en C++]&lt;br /&gt;
*[https://cyberbotics.com/doc/reference/menu Des tutoriels allant de la prise en mains à l’utilisation de certains capteur dans Webots sont disponibles]&lt;br /&gt;
&lt;br /&gt;
===Insatallation de Webots===&lt;br /&gt;
&lt;br /&gt;
Environnement VM (Ubuntu, il suffit alors d'installer Webots à partir à partir de l'app center) ou WSL (Linux pour windows avec Ubuntu)&lt;br /&gt;
&lt;br /&gt;
====Pour WSL====&lt;br /&gt;
&lt;br /&gt;
modification à faire dans Windows :&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=8wNqOpRRZho INSTALLER RAPIDEMENT UBUNTU SUR WINDOWS 10 - WSL [TUTO]]&lt;br /&gt;
&lt;br /&gt;
commande à taper : &lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/fr-fr/windows/wsl/install Installer WSL 2 | Microsoft Learn] &lt;br /&gt;
&lt;br /&gt;
Installer Webots  :&lt;br /&gt;
&lt;br /&gt;
[https://cyberbotics.com/doc/guide/installation-procedure Webots documentation: Installation Procedure]&lt;br /&gt;
&lt;br /&gt;
===Webots===&lt;br /&gt;
&lt;br /&gt;
Une simulation Webots contient au moins ces deux composants :&lt;br /&gt;
*Un fichier world file (.wbt) qui définit un ou plusieurs robots et leurs environnement. Le langage utilisé est ''VRML97''.&lt;br /&gt;
*Un ou plusieurs fichiers de contrôle (controller programs) pour ces robots. Ces fichiers sont en ''C/C++/Java/Python/MATLAB''. Nous utiliserons ''C++''.&lt;br /&gt;
&lt;br /&gt;
Eventuellement il peut y avoir des PROTO : un fichier qui permet de définir un nouveau type de robot, capteur, objet ou structure, en combinant des nœuds existants (comme Solid, Transform, Shape, etc.). C’est un modèle réutilisable avec une interface personnalisable (paramètres comme la taille, la couleur, la masse...)&lt;br /&gt;
&lt;br /&gt;
Pour exécuter le '''controller''' (procédure à refaire à chaque changement de code) : &lt;br /&gt;
*Dans le dossier du controller on tape les lignes de commandes &lt;br /&gt;
**Export WEBOTS_HOME=CHEMIN_INSTALLATION_WEBOTS (souvent : /usr/local/webots)&lt;br /&gt;
**make&lt;br /&gt;
*Dans webots recharger le monde (CTRL+SHIFT+R)&lt;br /&gt;
*Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
Modification d'un '''proto''' : &lt;br /&gt;
Pour apporter une modification à un PROTO on préférera modifier le Node Tree plutôt que le code, modifier le Node Tree ne modifie pas le fichier code (et inversement). Si on modifie le fichier code, il faut sauvegarder le fichier puis recharger le monde pour appliquer le changement.&lt;br /&gt;
&lt;br /&gt;
Créer un prototype dans Webots (en VRML97) est long et fastidieux. On préférera donc créer un modèle sous solidWorks puis l’exporter en fichier .wrl.&lt;br /&gt;
&lt;br /&gt;
===Créer un solide avec des formes originales===&lt;br /&gt;
On a utiliser SolidWorks (partie à détailler avec image) pour modéliser notre solide puis on l'a exporté en .wrl (à préciser avec images)  et on a extrait les coordonnées de notre solide.&lt;br /&gt;
Sur Webots, on obtient le code suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Solid {&lt;br /&gt;
  rotation 1 0 0 0&lt;br /&gt;
  children [&lt;br /&gt;
    Shape {&lt;br /&gt;
      appearance PBRAppearance {&lt;br /&gt;
        baseColor 0 0.8 0&lt;br /&gt;
        baseColorMap ImageTexture {&lt;br /&gt;
        }&lt;br /&gt;
        roughness 0.5&lt;br /&gt;
        metalness 0&lt;br /&gt;
      }&lt;br /&gt;
      geometry IndexedFaceSet {&lt;br /&gt;
        coord Coordinate {&lt;br /&gt;
          point [&lt;br /&gt;
             -0.089884 -0.040276 -0.000000, -0.089884 -0.040276 0.020000, -0.074666 -0.066129 0.000000, -0.074666 -0.066129 0.020000, -0.001198 0.116360 0.000000, -0.001198 0.116360 0.020000, 0.028801 0.116612 -0.000000, 0.028801 0.116612 0.020000, 0.105327 -0.064616 -0.000000, 0.105327 -0.064616 0.020000, 0.120108 -0.038510 -0.000000, 0.120108 -0.038510 0.020000&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
        coordIndex [&lt;br /&gt;
           7, 11, 6, -1, 6, 11, 10, -1, 5, 7, 4, -1,&lt;br /&gt;
           4, 7, 6, -1, 1, 5, 0, -1, 0, 5, 4, -1,&lt;br /&gt;
           3, 1, 2, -1, 2, 1, 0, -1, 9, 3, 8, -1,&lt;br /&gt;
           8, 3, 2, -1, 11, 9, 10, -1, 10, 9, 8, -1,&lt;br /&gt;
           11, 7, 9, -1, 9, 7, 5, -1, 9, 5, 3, -1,&lt;br /&gt;
           3, 5, 1, -1, 2, 0, 8, -1, 8, 0, 4, -1,&lt;br /&gt;
           8, 4, 10, -1, 10, 4, 6, -1&lt;br /&gt;
        ]&lt;br /&gt;
     &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tâches effectuées=&lt;br /&gt;
#Réalisation d'un robot complet&lt;br /&gt;
#*Fabrication des cartes de commande&lt;br /&gt;
#*Fabrication de la base &lt;br /&gt;
#Contrôle du fonctionnement des pièces existantes&lt;br /&gt;
#* Capteurs &lt;br /&gt;
#* 2 robots déjà existants&lt;br /&gt;
#Simulation sur Webots&lt;br /&gt;
#*&lt;br /&gt;
#Réalisation de la pince avec imprimante avec détecteur de métal&lt;br /&gt;
#*&lt;br /&gt;
==Pi-Pico==&lt;br /&gt;
[[Fichier:Tuto_Installation_VSCODIUM.odt]]&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12624</id>
		<title>Pilulier connecté</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12624"/>
		<updated>2024-04-05T14:22:14Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;u&amp;gt;Objectif du projet&amp;lt;/u&amp;gt; : le projet de pilulier connecté rejoint un précédent projet d'étudiants de [[Pharmalog|boite à pharmacie connectée]]. Les solutions techniques et fonctionnalités de Pharmalog peuvent largement inspirer le projet de pilulier. En outre, il est important de réfléchir à une interface utilisateur simple, adaptée au grand public, y compris aux personnes en situation de handicap.&lt;br /&gt;
=État de l'art=&lt;br /&gt;
&lt;br /&gt;
L'observance thérapeutique est définie comme la capacité à prendre correctement son traitement (i.e : comme prescrit par le médecin). Dans les pays développés, seuls 50% des personnes atteintes de maladies chroniques respecteraient leur traitement selon l’Organisation Mondiale de la Santé (1). C’est là qu'intervient le projet de pilulier connecté, afin d’aider à la bonne prise de traitements.&lt;br /&gt;
&lt;br /&gt;
==Quelques chiffres==&lt;br /&gt;
Chaque année, la non-observance thérapeutique a un coût socio-économique de 9 milliards d'euros par an et est aussi à l’origine de 12 000 décès(2). C’est 1 million de journées d’hospitalisation en raison d’une mauvaise prise de traitement(3).&lt;br /&gt;
(1)World Health Organization. Adherence to long-term therapies : Evidence for action. Genève ; WHO : 2003. 211 p. &lt;br /&gt;
(2)IMS Health France et le Cercle de réflexion de l'industrie pharmaceutique publiée en 2014&lt;br /&gt;
(3)L’observance des traitements : un défi aux politiques de santé. Livre Blanc de la Fondation Concorde, mars 2014&lt;br /&gt;
&lt;br /&gt;
==Piluliers déjà existants==&lt;br /&gt;
Source : [https://linote.fr/blog/pilulier-connecte/#memobox]&lt;br /&gt;
* '''LiNote''' : permet d’enregistrer des messages qui s’enverront aux horaires définis en se connectant à son compte LiNote  à distance afin de rappeler aux personnes âgées de prendre leur médicament. A l’horaire prévu LiNote sonne pour prévenir la personne âgée, la présence de cette dernière sera détectée et ses messages lui seront lu. Il est également possible de s’assurer que la personne a bien lu les messages.&lt;br /&gt;
* '''DO-Pill''' : pilulier de 28 compartiments comportant chacun une puce enregistrant les informations sur la prise de médicaments et les transmet à la personne en charge. Le pilulier émet une signal sonore ET lumineux pour attirer l’attention de la personne âgée. Doit généralement être prescrit par un médecin et peut être acheté pour 339€ ou loué pour 15€ par semaine ( services inclus ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine et doit être rechargé ( autonomie de 7 jours ).&lt;br /&gt;
* '''Imedipac''' : Pilulier comportant 28 compartiments chacun capable de s’éclairer ainsi qu'émettre un signal sonore en plus d’un message SMS ou appel si désirer afin de prévenir la personne âgée. Il est également possible pour les proches de savoir si les médicaments ont été pris.  Peut être acheté pour 299€ ou loué à 29.90€ par mois ( boîtier + système d’alarme ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine. Vidéo démonstration&lt;br /&gt;
* '''Hestec''' : Possède 7 boîtiers pour chaque jour de la semaine, chacun de couleur différente pour aider à les identifier plus facilement et munis de 4 compartiments chacun. Emet un signal sonore lorsqu’il faut prendre les médicaments. Un boîtier tient facilement dans un sac. Ce pilulier est peu cher ( 24,99€ ) et n’est pas remboursé par la Sécurité sociale; doit être rempli par un pharmacien chaque semaine. La sonnerie n’est pas que de 80 dB, dérangeant pour les personnes malentendantes. Les proches ne peuvent pas savoir si les médicaments ont été pris. Les piles s’usent rapidement et  le grand nombre de boutons sont petits , inconvénients pour les personnes âgées.&lt;br /&gt;
* '''Memobox classique''' : Pilulier équipé de capteurs reliés à une application mobile. Les proches peut suivre la prise de médicaments de la personne âgée et définir le nombre de rappels via l’application. Les rappels font clignoter et/ou sonner le pilulier. Il est également possible de faire sonner le téléphone de la personne âgée. Capable de bloquer certains compartiments pour éviter que le même médicament soit pris 2 fois. Possibilité de personnaliser la prise de médicaments jour après jour grâce à des boîtiers interchangeables pouvant être composés de 2 ou 4 compartiments. Peut être acheté pour 79.85€ et n’est pas remboursé par la Sécurité sociale. Doit être rechargé.&lt;br /&gt;
&lt;br /&gt;
==Notre proposition==&lt;br /&gt;
Pilulier circulaire connecté en Bluetooth à une appli sur smartphone. Il sera branché ou sur batterie rechargeable.&lt;br /&gt;
&lt;br /&gt;
===Le pilulier===&lt;br /&gt;
*Couvercle sécurisé (ne doit pas être ouvert par accident) pour déposer les médicaments.&lt;br /&gt;
*21 alvéoles (une semaine de prise matin midi et soir), labels au fond/sur les bords pour indiquer le jour et le temps de la prise&lt;br /&gt;
*Alerter (de manière et sonore et visuelle) quand il est l’heure de prendre les médicaments&lt;br /&gt;
*La pièce compartiment (voir schéma) tourne pour placer l’alvéole qui contient les médicaments sous l’ouverture dans le couvercle&lt;br /&gt;
*Doit être renversé pour “détecter” la prise (bip de confirmation)&lt;br /&gt;
*Ecran affichant l'heure / un message (exemple : &amp;quot;prise du midi&amp;quot; etc...)&lt;br /&gt;
*Indicateur de charge (bip différencié et affichage d'un message pour mettre en charge l'appareil s'il fonctionne sur batterie)&lt;br /&gt;
&lt;br /&gt;
===L'application compagnon===&lt;br /&gt;
*Envoyer un message d’alerte sur le téléphone (notification, mail, sms ?) après un certain temps de non prise (à l’utilisateur et/ou à sa personne aidante). Peut être doublé d'une alerte intermédiaire : alerte plus insistante sur le pilulier. Alerte batterie faible.&lt;br /&gt;
*Configurer les heures de prises&lt;br /&gt;
*Rentrer les contacts des personnes à alerter&lt;br /&gt;
*Informations sur les médicaments contenus dans le pilulier&lt;br /&gt;
&lt;br /&gt;
==Choix techniques et design==&lt;br /&gt;
&lt;br /&gt;
Deux architectures différentes ont été en débat pour le pilulier :&lt;br /&gt;
-Une première, basée sur un pilulier à cases fixes disposées en grille rectangulaire&lt;br /&gt;
-Une autre, imaginée comme un distributeur à cases rotatives &lt;br /&gt;
&lt;br /&gt;
=Besoins en matériel=&lt;br /&gt;
* Carte électronique (Arduino ?)&lt;br /&gt;
* Moteur pas à pas (Pour faire tourner la base du pilulier)&lt;br /&gt;
* De quoi quoi détecter quand l'appareil est retourné &lt;br /&gt;
* De quoi connecter la carte en Bluetooth&lt;br /&gt;
* Ecran, LED, haut-parleurs devront être intégrés au pilulier&lt;br /&gt;
&lt;br /&gt;
==Séance 1==&lt;br /&gt;
&lt;br /&gt;
Présentation orale de l'état de l'art.&lt;br /&gt;
&lt;br /&gt;
==Séance 2==&lt;br /&gt;
* Mise à jour de notre schéma de fonctions&lt;br /&gt;
* Découverte du matériel Maker Pi pico&lt;br /&gt;
* Code pour allumer le led RGB&lt;br /&gt;
&lt;br /&gt;
==Séance 3==&lt;br /&gt;
*Discussions sur les différentes manières de réaliser le pilulier: &lt;br /&gt;
    *Pilulier rectangle ou circulaire ( assez accessible ? ) &lt;br /&gt;
    *Capteurs à chaque cellule ou accéléromètre ( coût ) &lt;br /&gt;
    *Gobelets ou couvercle tournant ?&lt;br /&gt;
    *Moteur pas a pas : roue de Genève plutôt qu'électronique&lt;br /&gt;
* Code pour faire sonner le buzzer&lt;br /&gt;
* Choix d'utiliser un accéléromètre -&amp;gt; lecture de la datasheet de l'accéléromètre&lt;br /&gt;
&lt;br /&gt;
==Séance 4==&lt;br /&gt;
* Code pour faire fonctionner l'accéléromètre&lt;br /&gt;
    *Importer les librairies nécessaires&lt;br /&gt;
    *Coder afin d'obtenir les positions et l'accélération&lt;br /&gt;
    *Coder pour faire sonner le buzzer lorsque l'accéléromètre est à l'envers.&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12376</id>
		<title>Pilulier connecté</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12376"/>
		<updated>2024-03-09T16:18:07Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* L'application compagnon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;u&amp;gt;Objectif du projet&amp;lt;/u&amp;gt; : le projet de pilulier connecté rejoint un précédent projet d'étudiants de [[Pharmalog|boite à pharmacie connectée]]. Les solutions techniques et fonctionnalités de Pharmalog peuvent largement inspirer le projet de pilulier. En outre, il est important de réfléchir à une interface utilisateur simple, adaptée au grand public, y compris aux personnes en situation de handicap.&lt;br /&gt;
=État de l'art=&lt;br /&gt;
&lt;br /&gt;
L'observance thérapeutique est définie comme la capacité à prendre correctement son traitement (i.e : comme prescrit par le médecin). Dans les pays développés, seuls 50% des personnes atteintes de maladies chroniques respecteraient leur traitement selon l’Organisation Mondiale de la Santé (1). C’est là qu'intervient le projet de pilulier connecté, afin d’aider à la bonne prise de traitements.&lt;br /&gt;
&lt;br /&gt;
==Quelques chiffres==&lt;br /&gt;
Chaque année, la non-observance thérapeutique a un coût socio-économique de 9 milliards d'euros par an et est aussi à l’origine de 12 000 décès(2). C’est 1 million de journées d’hospitalisation en raison d’une mauvaise prise de traitement(3).&lt;br /&gt;
(1)World Health Organization. Adherence to long-term therapies : Evidence for action. Genève ; WHO : 2003. 211 p. &lt;br /&gt;
(2)IMS Health France et le Cercle de réflexion de l'industrie pharmaceutique publiée en 2014&lt;br /&gt;
(3)L’observance des traitements : un défi aux politiques de santé. Livre Blanc de la Fondation Concorde, mars 2014&lt;br /&gt;
&lt;br /&gt;
==Piluliers déjà existants==&lt;br /&gt;
Source : [https://linote.fr/blog/pilulier-connecte/#memobox]&lt;br /&gt;
* '''LiNote''' : permet d’enregistrer des messages qui s’enverront aux horaires définis en se connectant à son compte LiNote  à distance afin de rappeler aux personnes âgées de prendre leur médicament. A l’horaire prévu LiNote sonne pour prévenir la personne âgée, la présence de cette dernière sera détectée et ses messages lui seront lu. Il est également possible de s’assurer que la personne a bien lu les messages.&lt;br /&gt;
* '''DO-Pill''' : pilulier de 28 compartiments comportant chacun une puce enregistrant les informations sur la prise de médicaments et les transmet à la personne en charge. Le pilulier émet une signal sonore ET lumineux pour attirer l’attention de la personne âgée. Doit généralement être prescrit par un médecin et peut être acheté pour 339€ ou loué pour 15€ par semaine ( services inclus ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine et doit être rechargé ( autonomie de 7 jours ).&lt;br /&gt;
* '''Imedipac''' : Pilulier comportant 28 compartiments chacun capable de s’éclairer ainsi qu'émettre un signal sonore en plus d’un message SMS ou appel si désirer afin de prévenir la personne âgée. Il est également possible pour les proches de savoir si les médicaments ont été pris.  Peut être acheté pour 299€ ou loué à 29.90€ par mois ( boîtier + système d’alarme ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine. Vidéo démonstration&lt;br /&gt;
* '''Hestec''' : Possède 7 boîtiers pour chaque jour de la semaine, chacun de couleur différente pour aider à les identifier plus facilement et munis de 4 compartiments chacun. Emet un signal sonore lorsqu’il faut prendre les médicaments. Un boîtier tient facilement dans un sac. Ce pilulier est peu cher ( 24,99€ ) et n’est pas remboursé par la Sécurité sociale; doit être rempli par un pharmacien chaque semaine. La sonnerie n’est pas que de 80 dB, dérangeant pour les personnes malentendantes. Les proches ne peuvent pas savoir si les médicaments ont été pris. Les piles s’usent rapidement et  le grand nombre de boutons sont petits , inconvénients pour les personnes âgées.&lt;br /&gt;
* '''Memobox classique''' : Pilulier équipé de capteurs reliés à une application mobile. Les proches peut suivre la prise de médicaments de la personne âgée et définir le nombre de rappels via l’application. Les rappels font clignoter et/ou sonner le pilulier. Il est également possible de faire sonner le téléphone de la personne âgée. Capable de bloquer certains compartiments pour éviter que le même médicament soit pris 2 fois. Possibilité de personnaliser la prise de médicaments jour après jour grâce à des boîtiers interchangeables pouvant être composés de 2 ou 4 compartiments. Peut être acheté pour 79.85€ et n’est pas remboursé par la Sécurité sociale. Doit être rechargé.&lt;br /&gt;
&lt;br /&gt;
==Notre solution==&lt;br /&gt;
Pilulier circulaire connecté en Bluetooth à une appli sur smartphone. Il sera branché ou sur batterie rechargeable.&lt;br /&gt;
&lt;br /&gt;
===Le pilulier===&lt;br /&gt;
*Couvercle sécurisé (ne doit pas être ouvert par accident) pour déposer les médicaments.&lt;br /&gt;
*21 alvéoles (une semaine de prise matin midi et soir), labels au fond/sur les bords pour indiquer le jour et le temps de la prise&lt;br /&gt;
*Alerter (de manière et sonore et visuelle) quand il est l’heure de prendre les médicaments&lt;br /&gt;
*La pièce compartiment (voir schéma) tourne pour placer l’alvéole qui contient les médicaments sous l’ouverture dans le couvercle&lt;br /&gt;
*Doit être renversé pour “détecter” la prise (bip de confirmation)&lt;br /&gt;
*Ecran affichant l'heure / un message (exemple : &amp;quot;prise du midi&amp;quot; etc...)&lt;br /&gt;
*Indicateur de charge (bip différencié et affichage d'un message pour mettre en charge l'appareil s'il fonctionne sur batterie)&lt;br /&gt;
&lt;br /&gt;
===L'application compagnon===&lt;br /&gt;
*Envoyer un message d’alerte sur le téléphone (notification, mail, sms ?) après un certain temps de non prise (à l’utilisateur et/ou à sa personne aidante). Peut être doublé d'une alerte intermédiaire : alerte plus insistante sur le pilulier. Alerte batterie faible.&lt;br /&gt;
*Configurer les heures de prises&lt;br /&gt;
*Rentrer les contacts des personnes à alerter&lt;br /&gt;
*Informations sur les médicaments contenus dans le pilulier&lt;br /&gt;
&lt;br /&gt;
=Besoins en matériel=&lt;br /&gt;
* Carte électronique (Arduino ?)&lt;br /&gt;
* Moteur pas à pas (Pour faire tourner la base du pilulier)&lt;br /&gt;
* De quoi quoi détecter quand l'appareil est retourné &lt;br /&gt;
* De quoi connecter la carte en Bluetooth&lt;br /&gt;
* Ecran, LED, haut-parleurs devront être intégrés au pilulier&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12375</id>
		<title>Pilulier connecté</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12375"/>
		<updated>2024-03-09T16:17:43Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* Le pilulier */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;u&amp;gt;Objectif du projet&amp;lt;/u&amp;gt; : le projet de pilulier connecté rejoint un précédent projet d'étudiants de [[Pharmalog|boite à pharmacie connectée]]. Les solutions techniques et fonctionnalités de Pharmalog peuvent largement inspirer le projet de pilulier. En outre, il est important de réfléchir à une interface utilisateur simple, adaptée au grand public, y compris aux personnes en situation de handicap.&lt;br /&gt;
=État de l'art=&lt;br /&gt;
&lt;br /&gt;
L'observance thérapeutique est définie comme la capacité à prendre correctement son traitement (i.e : comme prescrit par le médecin). Dans les pays développés, seuls 50% des personnes atteintes de maladies chroniques respecteraient leur traitement selon l’Organisation Mondiale de la Santé (1). C’est là qu'intervient le projet de pilulier connecté, afin d’aider à la bonne prise de traitements.&lt;br /&gt;
&lt;br /&gt;
==Quelques chiffres==&lt;br /&gt;
Chaque année, la non-observance thérapeutique a un coût socio-économique de 9 milliards d'euros par an et est aussi à l’origine de 12 000 décès(2). C’est 1 million de journées d’hospitalisation en raison d’une mauvaise prise de traitement(3).&lt;br /&gt;
(1)World Health Organization. Adherence to long-term therapies : Evidence for action. Genève ; WHO : 2003. 211 p. &lt;br /&gt;
(2)IMS Health France et le Cercle de réflexion de l'industrie pharmaceutique publiée en 2014&lt;br /&gt;
(3)L’observance des traitements : un défi aux politiques de santé. Livre Blanc de la Fondation Concorde, mars 2014&lt;br /&gt;
&lt;br /&gt;
==Piluliers déjà existants==&lt;br /&gt;
Source : [https://linote.fr/blog/pilulier-connecte/#memobox]&lt;br /&gt;
* '''LiNote''' : permet d’enregistrer des messages qui s’enverront aux horaires définis en se connectant à son compte LiNote  à distance afin de rappeler aux personnes âgées de prendre leur médicament. A l’horaire prévu LiNote sonne pour prévenir la personne âgée, la présence de cette dernière sera détectée et ses messages lui seront lu. Il est également possible de s’assurer que la personne a bien lu les messages.&lt;br /&gt;
* '''DO-Pill''' : pilulier de 28 compartiments comportant chacun une puce enregistrant les informations sur la prise de médicaments et les transmet à la personne en charge. Le pilulier émet une signal sonore ET lumineux pour attirer l’attention de la personne âgée. Doit généralement être prescrit par un médecin et peut être acheté pour 339€ ou loué pour 15€ par semaine ( services inclus ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine et doit être rechargé ( autonomie de 7 jours ).&lt;br /&gt;
* '''Imedipac''' : Pilulier comportant 28 compartiments chacun capable de s’éclairer ainsi qu'émettre un signal sonore en plus d’un message SMS ou appel si désirer afin de prévenir la personne âgée. Il est également possible pour les proches de savoir si les médicaments ont été pris.  Peut être acheté pour 299€ ou loué à 29.90€ par mois ( boîtier + système d’alarme ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine. Vidéo démonstration&lt;br /&gt;
* '''Hestec''' : Possède 7 boîtiers pour chaque jour de la semaine, chacun de couleur différente pour aider à les identifier plus facilement et munis de 4 compartiments chacun. Emet un signal sonore lorsqu’il faut prendre les médicaments. Un boîtier tient facilement dans un sac. Ce pilulier est peu cher ( 24,99€ ) et n’est pas remboursé par la Sécurité sociale; doit être rempli par un pharmacien chaque semaine. La sonnerie n’est pas que de 80 dB, dérangeant pour les personnes malentendantes. Les proches ne peuvent pas savoir si les médicaments ont été pris. Les piles s’usent rapidement et  le grand nombre de boutons sont petits , inconvénients pour les personnes âgées.&lt;br /&gt;
* '''Memobox classique''' : Pilulier équipé de capteurs reliés à une application mobile. Les proches peut suivre la prise de médicaments de la personne âgée et définir le nombre de rappels via l’application. Les rappels font clignoter et/ou sonner le pilulier. Il est également possible de faire sonner le téléphone de la personne âgée. Capable de bloquer certains compartiments pour éviter que le même médicament soit pris 2 fois. Possibilité de personnaliser la prise de médicaments jour après jour grâce à des boîtiers interchangeables pouvant être composés de 2 ou 4 compartiments. Peut être acheté pour 79.85€ et n’est pas remboursé par la Sécurité sociale. Doit être rechargé.&lt;br /&gt;
&lt;br /&gt;
==Notre solution==&lt;br /&gt;
Pilulier circulaire connecté en Bluetooth à une appli sur smartphone. Il sera branché ou sur batterie rechargeable.&lt;br /&gt;
&lt;br /&gt;
===Le pilulier===&lt;br /&gt;
*Couvercle sécurisé (ne doit pas être ouvert par accident) pour déposer les médicaments.&lt;br /&gt;
*21 alvéoles (une semaine de prise matin midi et soir), labels au fond/sur les bords pour indiquer le jour et le temps de la prise&lt;br /&gt;
*Alerter (de manière et sonore et visuelle) quand il est l’heure de prendre les médicaments&lt;br /&gt;
*La pièce compartiment (voir schéma) tourne pour placer l’alvéole qui contient les médicaments sous l’ouverture dans le couvercle&lt;br /&gt;
*Doit être renversé pour “détecter” la prise (bip de confirmation)&lt;br /&gt;
*Ecran affichant l'heure / un message (exemple : &amp;quot;prise du midi&amp;quot; etc...)&lt;br /&gt;
*Indicateur de charge (bip différencié et affichage d'un message pour mettre en charge l'appareil s'il fonctionne sur batterie)&lt;br /&gt;
&lt;br /&gt;
===L'application compagnon===&lt;br /&gt;
*Envoyer un message d’alerte sur le téléphone (notification, mail, sms ?) après un certain temps de non prise (à l’utilisateur et/ou à sa personne aidante). Peut être doublé d'une alerte intermédiaire : alerte plus insistante sur le pilulier&lt;br /&gt;
*Configurer les heures de prises&lt;br /&gt;
*Rentrer les contacts des personnes à alerter&lt;br /&gt;
*Informations sur les médicaments contenus dans le pilulier&lt;br /&gt;
&lt;br /&gt;
=Besoins en matériel=&lt;br /&gt;
* Carte électronique (Arduino ?)&lt;br /&gt;
* Moteur pas à pas (Pour faire tourner la base du pilulier)&lt;br /&gt;
* De quoi quoi détecter quand l'appareil est retourné &lt;br /&gt;
* De quoi connecter la carte en Bluetooth&lt;br /&gt;
* Ecran, LED, haut-parleurs devront être intégrés au pilulier&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12374</id>
		<title>Pilulier connecté</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12374"/>
		<updated>2024-03-09T16:16:17Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* Notre solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;u&amp;gt;Objectif du projet&amp;lt;/u&amp;gt; : le projet de pilulier connecté rejoint un précédent projet d'étudiants de [[Pharmalog|boite à pharmacie connectée]]. Les solutions techniques et fonctionnalités de Pharmalog peuvent largement inspirer le projet de pilulier. En outre, il est important de réfléchir à une interface utilisateur simple, adaptée au grand public, y compris aux personnes en situation de handicap.&lt;br /&gt;
=État de l'art=&lt;br /&gt;
&lt;br /&gt;
L'observance thérapeutique est définie comme la capacité à prendre correctement son traitement (i.e : comme prescrit par le médecin). Dans les pays développés, seuls 50% des personnes atteintes de maladies chroniques respecteraient leur traitement selon l’Organisation Mondiale de la Santé (1). C’est là qu'intervient le projet de pilulier connecté, afin d’aider à la bonne prise de traitements.&lt;br /&gt;
&lt;br /&gt;
==Quelques chiffres==&lt;br /&gt;
Chaque année, la non-observance thérapeutique a un coût socio-économique de 9 milliards d'euros par an et est aussi à l’origine de 12 000 décès(2). C’est 1 million de journées d’hospitalisation en raison d’une mauvaise prise de traitement(3).&lt;br /&gt;
(1)World Health Organization. Adherence to long-term therapies : Evidence for action. Genève ; WHO : 2003. 211 p. &lt;br /&gt;
(2)IMS Health France et le Cercle de réflexion de l'industrie pharmaceutique publiée en 2014&lt;br /&gt;
(3)L’observance des traitements : un défi aux politiques de santé. Livre Blanc de la Fondation Concorde, mars 2014&lt;br /&gt;
&lt;br /&gt;
==Piluliers déjà existants==&lt;br /&gt;
Source : [https://linote.fr/blog/pilulier-connecte/#memobox]&lt;br /&gt;
* '''LiNote''' : permet d’enregistrer des messages qui s’enverront aux horaires définis en se connectant à son compte LiNote  à distance afin de rappeler aux personnes âgées de prendre leur médicament. A l’horaire prévu LiNote sonne pour prévenir la personne âgée, la présence de cette dernière sera détectée et ses messages lui seront lu. Il est également possible de s’assurer que la personne a bien lu les messages.&lt;br /&gt;
* '''DO-Pill''' : pilulier de 28 compartiments comportant chacun une puce enregistrant les informations sur la prise de médicaments et les transmet à la personne en charge. Le pilulier émet une signal sonore ET lumineux pour attirer l’attention de la personne âgée. Doit généralement être prescrit par un médecin et peut être acheté pour 339€ ou loué pour 15€ par semaine ( services inclus ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine et doit être rechargé ( autonomie de 7 jours ).&lt;br /&gt;
* '''Imedipac''' : Pilulier comportant 28 compartiments chacun capable de s’éclairer ainsi qu'émettre un signal sonore en plus d’un message SMS ou appel si désirer afin de prévenir la personne âgée. Il est également possible pour les proches de savoir si les médicaments ont été pris.  Peut être acheté pour 299€ ou loué à 29.90€ par mois ( boîtier + système d’alarme ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine. Vidéo démonstration&lt;br /&gt;
* '''Hestec''' : Possède 7 boîtiers pour chaque jour de la semaine, chacun de couleur différente pour aider à les identifier plus facilement et munis de 4 compartiments chacun. Emet un signal sonore lorsqu’il faut prendre les médicaments. Un boîtier tient facilement dans un sac. Ce pilulier est peu cher ( 24,99€ ) et n’est pas remboursé par la Sécurité sociale; doit être rempli par un pharmacien chaque semaine. La sonnerie n’est pas que de 80 dB, dérangeant pour les personnes malentendantes. Les proches ne peuvent pas savoir si les médicaments ont été pris. Les piles s’usent rapidement et  le grand nombre de boutons sont petits , inconvénients pour les personnes âgées.&lt;br /&gt;
* '''Memobox classique''' : Pilulier équipé de capteurs reliés à une application mobile. Les proches peut suivre la prise de médicaments de la personne âgée et définir le nombre de rappels via l’application. Les rappels font clignoter et/ou sonner le pilulier. Il est également possible de faire sonner le téléphone de la personne âgée. Capable de bloquer certains compartiments pour éviter que le même médicament soit pris 2 fois. Possibilité de personnaliser la prise de médicaments jour après jour grâce à des boîtiers interchangeables pouvant être composés de 2 ou 4 compartiments. Peut être acheté pour 79.85€ et n’est pas remboursé par la Sécurité sociale. Doit être rechargé.&lt;br /&gt;
&lt;br /&gt;
==Notre solution==&lt;br /&gt;
Pilulier circulaire connecté en Bluetooth à une appli sur smartphone. Il sera branché ou sur batterie rechargeable.&lt;br /&gt;
&lt;br /&gt;
===Le pilulier===&lt;br /&gt;
*Couvercle sécurisé (ne doit pas être ouvert par accident) pour déposer les médicaments.&lt;br /&gt;
*21 alvéoles (une semaine de prise matin midi et soir), labels au fond/sur les bords pour indiquer le jour et le temps de la prise&lt;br /&gt;
*Alerter (de manière et sonore et visuelle) quand il est l’heure de prendre les médicaments&lt;br /&gt;
*La pièce compartiment (voir schéma) tourne pour placer l’alvéole qui contient les médicaments sous l’ouverture dans le couvercle&lt;br /&gt;
*Doit être renversé pour “détecter” la prise (bip de confirmation)&lt;br /&gt;
*Ecran affichant l'heure / un message (exemple : &amp;quot;prise du midi&amp;quot; etc...)&lt;br /&gt;
*Alimentation ?&lt;br /&gt;
&lt;br /&gt;
===L'application compagnon===&lt;br /&gt;
*Envoyer un message d’alerte sur le téléphone (notification, mail, sms ?) après un certain temps de non prise (à l’utilisateur et/ou à sa personne aidante). Peut être doublé d'une alerte intermédiaire : alerte plus insistante sur le pilulier&lt;br /&gt;
*Configurer les heures de prises&lt;br /&gt;
*Rentrer les contacts des personnes à alerter&lt;br /&gt;
*Informations sur les médicaments contenus dans le pilulier&lt;br /&gt;
&lt;br /&gt;
=Besoins en matériel=&lt;br /&gt;
* Carte électronique (Arduino ?)&lt;br /&gt;
* Moteur pas à pas (Pour faire tourner la base du pilulier)&lt;br /&gt;
* De quoi quoi détecter quand l'appareil est retourné &lt;br /&gt;
* De quoi connecter la carte en Bluetooth&lt;br /&gt;
* Ecran, LED, haut-parleurs devront être intégrés au pilulier&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12373</id>
		<title>Pilulier connecté</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12373"/>
		<updated>2024-03-09T16:14:12Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : /* Besoins en matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;u&amp;gt;Objectif du projet&amp;lt;/u&amp;gt; : le projet de pilulier connecté rejoint un précédent projet d'étudiants de [[Pharmalog|boite à pharmacie connectée]]. Les solutions techniques et fonctionnalités de Pharmalog peuvent largement inspirer le projet de pilulier. En outre, il est important de réfléchir à une interface utilisateur simple, adaptée au grand public, y compris aux personnes en situation de handicap.&lt;br /&gt;
=État de l'art=&lt;br /&gt;
&lt;br /&gt;
L'observance thérapeutique est définie comme la capacité à prendre correctement son traitement (i.e : comme prescrit par le médecin). Dans les pays développés, seuls 50% des personnes atteintes de maladies chroniques respecteraient leur traitement selon l’Organisation Mondiale de la Santé (1). C’est là qu'intervient le projet de pilulier connecté, afin d’aider à la bonne prise de traitements.&lt;br /&gt;
&lt;br /&gt;
==Quelques chiffres==&lt;br /&gt;
Chaque année, la non-observance thérapeutique a un coût socio-économique de 9 milliards d'euros par an et est aussi à l’origine de 12 000 décès(2). C’est 1 million de journées d’hospitalisation en raison d’une mauvaise prise de traitement(3).&lt;br /&gt;
(1)World Health Organization. Adherence to long-term therapies : Evidence for action. Genève ; WHO : 2003. 211 p. &lt;br /&gt;
(2)IMS Health France et le Cercle de réflexion de l'industrie pharmaceutique publiée en 2014&lt;br /&gt;
(3)L’observance des traitements : un défi aux politiques de santé. Livre Blanc de la Fondation Concorde, mars 2014&lt;br /&gt;
&lt;br /&gt;
==Piluliers déjà existants==&lt;br /&gt;
Source : [https://linote.fr/blog/pilulier-connecte/#memobox]&lt;br /&gt;
* '''LiNote''' : permet d’enregistrer des messages qui s’enverront aux horaires définis en se connectant à son compte LiNote  à distance afin de rappeler aux personnes âgées de prendre leur médicament. A l’horaire prévu LiNote sonne pour prévenir la personne âgée, la présence de cette dernière sera détectée et ses messages lui seront lu. Il est également possible de s’assurer que la personne a bien lu les messages.&lt;br /&gt;
* '''DO-Pill''' : pilulier de 28 compartiments comportant chacun une puce enregistrant les informations sur la prise de médicaments et les transmet à la personne en charge. Le pilulier émet une signal sonore ET lumineux pour attirer l’attention de la personne âgée. Doit généralement être prescrit par un médecin et peut être acheté pour 339€ ou loué pour 15€ par semaine ( services inclus ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine et doit être rechargé ( autonomie de 7 jours ).&lt;br /&gt;
* '''Imedipac''' : Pilulier comportant 28 compartiments chacun capable de s’éclairer ainsi qu'émettre un signal sonore en plus d’un message SMS ou appel si désirer afin de prévenir la personne âgée. Il est également possible pour les proches de savoir si les médicaments ont été pris.  Peut être acheté pour 299€ ou loué à 29.90€ par mois ( boîtier + système d’alarme ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine. Vidéo démonstration&lt;br /&gt;
* '''Hestec''' : Possède 7 boîtiers pour chaque jour de la semaine, chacun de couleur différente pour aider à les identifier plus facilement et munis de 4 compartiments chacun. Emet un signal sonore lorsqu’il faut prendre les médicaments. Un boîtier tient facilement dans un sac. Ce pilulier est peu cher ( 24,99€ ) et n’est pas remboursé par la Sécurité sociale; doit être rempli par un pharmacien chaque semaine. La sonnerie n’est pas que de 80 dB, dérangeant pour les personnes malentendantes. Les proches ne peuvent pas savoir si les médicaments ont été pris. Les piles s’usent rapidement et  le grand nombre de boutons sont petits , inconvénients pour les personnes âgées.&lt;br /&gt;
* '''Memobox classique''' : Pilulier équipé de capteurs reliés à une application mobile. Les proches peut suivre la prise de médicaments de la personne âgée et définir le nombre de rappels via l’application. Les rappels font clignoter et/ou sonner le pilulier. Il est également possible de faire sonner le téléphone de la personne âgée. Capable de bloquer certains compartiments pour éviter que le même médicament soit pris 2 fois. Possibilité de personnaliser la prise de médicaments jour après jour grâce à des boîtiers interchangeables pouvant être composés de 2 ou 4 compartiments. Peut être acheté pour 79.85€ et n’est pas remboursé par la Sécurité sociale. Doit être rechargé.&lt;br /&gt;
&lt;br /&gt;
==Notre solution==&lt;br /&gt;
Pilulier circulaire connecté en Bluetooth à une appli sur smartphone. &lt;br /&gt;
&lt;br /&gt;
===Le pilulier===&lt;br /&gt;
*Couvercle sécurisé (ne doit pas être ouvert par accident) pour déposer les médicaments.&lt;br /&gt;
*21 alvéoles (une semaine de prise matin midi et soir), labels au fond/sur les bords pour indiquer le jour et le temps de la prise&lt;br /&gt;
*Alerter (de manière et sonore et visuelle) quand il est l’heure de prendre les médicaments&lt;br /&gt;
*La pièce compartiment (voir schéma) tourne pour placer l’alvéole qui contient les médicaments sous l’ouverture dans le couvercle&lt;br /&gt;
*Doit être renversé pour “détecter” la prise (bip de confirmation)&lt;br /&gt;
*Ecran affichant l'heure / un message (exemple : &amp;quot;prise du midi&amp;quot; etc...)&lt;br /&gt;
*Alimentation ?&lt;br /&gt;
&lt;br /&gt;
===L'application compagnon===&lt;br /&gt;
*Envoyer un message d’alerte sur le téléphone (notification, mail, sms ?) après un certain temps de non prise (à l’utilisateur et/ou à sa personne aidante). Peut être doublé d'une alerte intermédiaire : alerte plus insistante sur le pilulier&lt;br /&gt;
*Configurer les heures de prises&lt;br /&gt;
*Rentrer les contacts des personnes à alerter&lt;br /&gt;
*Informations sur les médicaments contenus dans le pilulier&lt;br /&gt;
&lt;br /&gt;
=Besoins en matériel=&lt;br /&gt;
* Carte électronique (Arduino ?)&lt;br /&gt;
* Moteur pas à pas (Pour faire tourner la base du pilulier)&lt;br /&gt;
* De quoi quoi détecter quand l'appareil est retourné &lt;br /&gt;
* De quoi connecter la carte en Bluetooth&lt;br /&gt;
* Ecran, LED, haut-parleurs devront être intégrés au pilulier&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12370</id>
		<title>Pilulier connecté</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Pilulier_connect%C3%A9&amp;diff=12370"/>
		<updated>2024-03-09T16:00:21Z</updated>

		<summary type="html">&lt;p&gt;Isabelle : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;u&amp;gt;Objectif du projet&amp;lt;/u&amp;gt; : le projet de pilulier connecté rejoint un précédent projet d'étudiants de [[Pharmalog|boite à pharmacie connectée]]. Les solutions techniques et fonctionnalités de Pharmalog peuvent largement inspirer le projet de pilulier. En outre, il est important de réfléchir à une interface utilisateur simple, adaptée au grand public, y compris aux personnes en situation de handicap.&lt;br /&gt;
=État de l'art=&lt;br /&gt;
&lt;br /&gt;
L'observance thérapeutique est définie comme la capacité à prendre correctement son traitement (i.e : comme prescrit par le médecin). Dans les pays développés, seuls 50% des personnes atteintes de maladies chroniques respecteraient leur traitement selon l’Organisation Mondiale de la Santé (1). C’est là qu'intervient le projet de pilulier connecté, afin d’aider à la bonne prise de traitements.&lt;br /&gt;
&lt;br /&gt;
==Quelques chiffres==&lt;br /&gt;
Chaque année, la non-observance thérapeutique a un coût socio-économique de 9 milliards d'euros par an et est aussi à l’origine de 12 000 décès(2). C’est 1 million de journées d’hospitalisation en raison d’une mauvaise prise de traitement(3).&lt;br /&gt;
(1)World Health Organization. Adherence to long-term therapies : Evidence for action. Genève ; WHO : 2003. 211 p. &lt;br /&gt;
(2)IMS Health France et le Cercle de réflexion de l'industrie pharmaceutique publiée en 2014&lt;br /&gt;
(3)L’observance des traitements : un défi aux politiques de santé. Livre Blanc de la Fondation Concorde, mars 2014&lt;br /&gt;
&lt;br /&gt;
==Piluliers déjà existants==&lt;br /&gt;
* '''LiNote''' : permet d’enregistrer des messages qui s’enverront aux horaires définis en se connectant à son compte LiNote  à distance afin de rappeler aux personnes âgées de prendre leur médicament. A l’horaire prévu LiNote sonne pour prévenir la personne âgée, la présence de cette dernière sera détectée et ses messages lui seront lu. Il est également possible de s’assurer que la personne a bien lu les messages.&lt;br /&gt;
* '''DO-Pill''' : pilulier de 28 compartiments comportant chacun une puce enregistrant les informations sur la prise de médicaments et les transmet à la personne en charge. Le pilulier émet une signal sonore ET lumineux pour attirer l’attention de la personne âgée. Doit généralement être prescrit par un médecin et peut être acheté pour 339€ ou loué pour 15€ par semaine ( services inclus ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine et doit être rechargé ( autonomie de 7 jours ).&lt;br /&gt;
* '''Imedipac''' : Pilulier comportant 28 compartiments chacun capable de s’éclairer ainsi qu'émettre un signal sonore en plus d’un message SMS ou appel si désirer afin de prévenir la personne âgée. Il est également possible pour les proches de savoir si les médicaments ont été pris.  Peut être acheté pour 299€ ou loué à 29.90€ par mois ( boîtier + système d’alarme ). Ce pilulier est cher et n’est pas remboursé par la Sécurité sociale, doit être rempli par un pharmacien chaque semaine. Vidéo démonstration&lt;br /&gt;
* '''Hestec''' : Possède 7 boîtiers pour chaque jour de la semaine, chacun de couleur différente pour aider à les identifier plus facilement et munis de 4 compartiments chacun. Emet un signal sonore lorsqu’il faut prendre les médicaments. Un boîtier tient facilement dans un sac. Ce pilulier est peu cher ( 24,99€ ) et n’est pas remboursé par la Sécurité sociale; doit être rempli par un pharmacien chaque semaine. La sonnerie n’est pas que de 80 dB, dérangeant pour les personnes malentendantes. Les proches ne peuvent pas savoir si les médicaments ont été pris. Les piles s’usent rapidement et  le grand nombre de boutons sont petits , inconvénients pour les personnes âgées.&lt;br /&gt;
* '''Memobox classique''' : Pilulier équipé de capteurs reliés à une application mobile. Les proches peut suivre la prise de médicaments de la personne âgée et définir le nombre de rappels via l’application. Les rappels font clignoter et/ou sonner le pilulier. Il est également possible de faire sonner le téléphone de la personne âgée. Capable de bloquer certains compartiments pour éviter que le même médicament soit pris 2 fois. Possibilité de personnaliser la prise de médicaments jour après jour grâce à des boîtiers interchangeables pouvant être composés de 2 ou 4 compartiments. Peut être acheté pour 79.85€ et n’est pas remboursé par la Sécurité sociale. Doit être rechargé.&lt;br /&gt;
&lt;br /&gt;
==Notre solution==&lt;br /&gt;
Pilulier circulaire connecté en Bluetooth à une appli sur smartphone. &lt;br /&gt;
&lt;br /&gt;
===Le pilulier===&lt;br /&gt;
*Couvercle sécurisé (ne doit pas être ouvert par accident) pour déposer les médicaments.&lt;br /&gt;
*21 alvéoles (une semaine de prise matin midi et soir), labels au fond/sur les bords pour indiquer le jour et le temps de la prise&lt;br /&gt;
*Alerter (de manière et sonore et visuelle) quand il est l’heure de prendre les médicaments&lt;br /&gt;
*La pièce compartiment (voir schéma) tourne pour placer l’alvéole qui contient les médicaments sous l’ouverture dans le couvercle&lt;br /&gt;
*Doit être renversé pour “détecter” la prise (bip de confirmation)&lt;br /&gt;
*Ecran affichant l'heure / un message (exemple : &amp;quot;prise du midi&amp;quot; etc...)&lt;br /&gt;
*Alimentation ?&lt;br /&gt;
&lt;br /&gt;
===L'application compagnon===&lt;br /&gt;
*Envoyer un message d’alerte sur le téléphone (notification, mail, sms ?) après un certain temps de non prise (à l’utilisateur et/ou à sa personne aidante). Peut être doublé d'une alerte intermédiaire : alerte plus insistante sur le pilulier&lt;br /&gt;
*Configurer les heures de prises&lt;br /&gt;
*Rentrer les contacts des personnes à alerter&lt;br /&gt;
*Informations sur les médicaments contenus dans le pilulier&lt;br /&gt;
&lt;br /&gt;
=Besoins en matériel=&lt;br /&gt;
* Carte Arduino&lt;br /&gt;
* Moteur pas à pas&lt;/div&gt;</summary>
		<author><name>Isabelle</name></author>
		
	</entry>
</feed>