<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://peip-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Acasisa</id>
		<title>Wiki de bureau d'études PeiP - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://peip-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Acasisa"/>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Acasisa"/>
		<updated>2026-04-24T19:31:08Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3944</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3944"/>
				<updated>2015-05-10T11:18:52Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Le terrain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Lorsqu'elles sont simples et courtes, ces dernières seront copiées en italique, dans un encadré en pointillé. Les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
Pour d'autres programmes, plus longs et compliqués, nous donnerons le fichier texte directement, avec l'explication brève du principe du programme en description du fichier. En plus de ceci, des commentaires sont disposés dans nos programme si nécessaire pour expliquer chaque étape.&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorLowspeed(IN_2);''&lt;br /&gt;
Lecture : &lt;br /&gt;
 ''result = ReadSensorHTIRSeeker2AC(IN_2,dir,s1,s2,s3,s4,s5);'' &lt;br /&gt;
Les valeurs qui nous intéressent sont celles de s1, s2, s3, s4, s5. Ils captent une valeur entre 0 et 255 selon l'intensité du signal reçu. Chacun correspond à un capteur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Infrarouge schéma.png]]&lt;br /&gt;
&lt;br /&gt;
Notre capteur peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
===== Problèmes =====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Résolution des problèmes=====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Terrain.jpg|500px|thumb|center|Les lignes du terrain]]&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Vérification des espaces latéraux]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Séparation des plaques]]&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. &lt;br /&gt;
Nous avons modifié l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki de la saison 5.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Garage.txt]]&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Terrain.jpg&amp;diff=3943</id>
		<title>Fichier:Terrain.jpg</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Terrain.jpg&amp;diff=3943"/>
				<updated>2015-05-10T11:16:44Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : Le terrain de jeu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le terrain de jeu&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3942</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3942"/>
				<updated>2015-05-10T11:14:53Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Le terrain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Lorsqu'elles sont simples et courtes, ces dernières seront copiées en italique, dans un encadré en pointillé. Les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
Pour d'autres programmes, plus longs et compliqués, nous donnerons le fichier texte directement, avec l'explication brève du principe du programme en description du fichier. En plus de ceci, des commentaires sont disposés dans nos programme si nécessaire pour expliquer chaque étape.&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorLowspeed(IN_2);''&lt;br /&gt;
Lecture : &lt;br /&gt;
 ''result = ReadSensorHTIRSeeker2AC(IN_2,dir,s1,s2,s3,s4,s5);'' &lt;br /&gt;
Les valeurs qui nous intéressent sont celles de s1, s2, s3, s4, s5. Ils captent une valeur entre 0 et 255 selon l'intensité du signal reçu. Chacun correspond à un capteur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Infrarouge schéma.png]]&lt;br /&gt;
&lt;br /&gt;
Notre capteur peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
===== Problèmes =====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Résolution des problèmes=====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Terrain.jpg]]&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Vérification des espaces latéraux]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Séparation des plaques]]&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. &lt;br /&gt;
Nous avons modifié l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki de la saison 5.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Garage.txt]]&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3941</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3941"/>
				<updated>2015-05-10T11:12:47Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Le capteur ultrason */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Lorsqu'elles sont simples et courtes, ces dernières seront copiées en italique, dans un encadré en pointillé. Les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
Pour d'autres programmes, plus longs et compliqués, nous donnerons le fichier texte directement, avec l'explication brève du principe du programme en description du fichier. En plus de ceci, des commentaires sont disposés dans nos programme si nécessaire pour expliquer chaque étape.&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorLowspeed(IN_2);''&lt;br /&gt;
Lecture : &lt;br /&gt;
 ''result = ReadSensorHTIRSeeker2AC(IN_2,dir,s1,s2,s3,s4,s5);'' &lt;br /&gt;
Les valeurs qui nous intéressent sont celles de s1, s2, s3, s4, s5. Ils captent une valeur entre 0 et 255 selon l'intensité du signal reçu. Chacun correspond à un capteur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Infrarouge schéma.png]]&lt;br /&gt;
&lt;br /&gt;
Notre capteur peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
===== Problèmes =====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Résolution des problèmes=====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Vérification des espaces latéraux]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Séparation des plaques]]&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. &lt;br /&gt;
Nous avons modifié l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki de la saison 5.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Garage.txt]]&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3940</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3940"/>
				<updated>2015-05-10T11:11:21Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Lorsqu'elles sont simples et courtes, ces dernières seront copiées en italique, dans un encadré en pointillé. Les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
Pour d'autres programmes, plus longs et compliqués, nous donnerons le fichier texte directement, avec l'explication brève du principe du programme en description du fichier. En plus de ceci, des commentaires sont disposés dans nos programme si nécessaire pour expliquer chaque étape.&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorLowspeed(IN_2);''&lt;br /&gt;
Lecture : &lt;br /&gt;
 ''result = ReadSensorHTIRSeeker2AC(IN_2,dir,s1,s2,s3,s4,s5);'' &lt;br /&gt;
Les valeurs qui nous intéressent sont celles de s1, s2, s3, s4, s5. Ils captent une valeur entre 0 et 255 selon l'intensité du signal reçu. Chacun correspond à un capteur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Infrarouge schéma.png]]&lt;br /&gt;
&lt;br /&gt;
Notre capteur peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
===== Problèmes =====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Résolution des problèmes=====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Vérification des espaces latéraux]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Séparation des plaques]]&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. &lt;br /&gt;
Nous avons modifié l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki de la saison 5.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Garage.txt]]&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3939</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3939"/>
				<updated>2015-05-10T11:07:25Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Le capteur de couleur */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorLowspeed(IN_2);''&lt;br /&gt;
Lecture : &lt;br /&gt;
 ''result = ReadSensorHTIRSeeker2AC(IN_2,dir,s1,s2,s3,s4,s5);'' &lt;br /&gt;
Les valeurs qui nous intéressent sont celles de s1, s2, s3, s4, s5. Ils captent une valeur entre 0 et 255 selon l'intensité du signal reçu. Chacun correspond à un capteur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Infrarouge schéma.png]]&lt;br /&gt;
&lt;br /&gt;
Notre capteur peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
===== Problèmes =====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Résolution des problèmes=====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Vérification des espaces latéraux]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Séparation des plaques]]&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. &lt;br /&gt;
Nous avons modifié l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki de la saison 5.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Garage.txt]]&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3938</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3938"/>
				<updated>2015-05-10T11:06:25Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Les capteurs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorLowspeed(IN_2);''&lt;br /&gt;
Lecture : &lt;br /&gt;
 ''result = ReadSensorHTIRSeeker2AC(IN_2,dir,s1,s2,s3,s4,s5);'' &lt;br /&gt;
Les valeurs qui nous intéressent sont celles de s1, s2, s3, s4, s5. Ils captent une valeur entre 0 et 255 selon l'intensité du signal reçu. Chacun correspond à un capteur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Infrarouge schéma.png]]&lt;br /&gt;
&lt;br /&gt;
Notre capteur peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
===== Problèmes =====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Résolution des problèmes=====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Vérification des espaces latéraux]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Séparation des plaques]]&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. &lt;br /&gt;
Nous avons modifié l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki de la saison 5.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Garage.txt]]&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Garage.txt&amp;diff=3937</id>
		<title>Fichier:Garage.txt</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Garage.txt&amp;diff=3937"/>
				<updated>2015-05-10T10:09:02Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Principe du programme :&lt;br /&gt;
&lt;br /&gt;
Il convient d'abord que le robot se trouve face au but adverse.&lt;br /&gt;
Dans ce cas, son garage est situé derrière lui.&lt;br /&gt;
Le terrain est symétrique par rapport à la ligne du milieu, par conséquent le garage se trouve à gauche ou à droite du robot selon le camp que nous avons choisi. En l'occurrence nous avons choisi la configuration où le garage se trouve derrière, à droite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le robot tourne à 90° à droite. Il avance jusqu'à rencontrer la ligne rouge. Une fois qu'il l'a rencontrée, il la suit par la droite. Au bout du terrain il rencontrera une ligne noire : il s'agit de son garage. Il le suit jusqu'au bout, puis fait demi-tour : il est garé.&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Garage.txt&amp;diff=3936</id>
		<title>Fichier:Garage.txt</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Garage.txt&amp;diff=3936"/>
				<updated>2015-05-10T10:04:09Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3935</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3935"/>
				<updated>2015-05-10T10:03:47Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Se replacer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorLowspeed(IN_2);''&lt;br /&gt;
Lecture : &lt;br /&gt;
 ''result = ReadSensorHTIRSeeker2AC(IN_2,dir,s1,s2,s3,s4,s5);'' &lt;br /&gt;
Les valeurs qui nous intéressent sont celles de s1, s2, s3, s4, s5. Ils captent une valeur entre 0 et 255 selon l'intensité du signal reçu. Chacun correspond à un capteur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Infrarouge schéma.png]]&lt;br /&gt;
&lt;br /&gt;
Notre capteur peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
===== Problèmes =====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Résolution des problèmes=====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Vérification des espaces latéraux]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Séparation des plaques]]&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. &lt;br /&gt;
Nous avons modifié l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki de la saison 5.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Garage.txt]]&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3934</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3934"/>
				<updated>2015-05-10T10:02:47Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Le terrain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorLowspeed(IN_2);''&lt;br /&gt;
Lecture : &lt;br /&gt;
 ''result = ReadSensorHTIRSeeker2AC(IN_2,dir,s1,s2,s3,s4,s5);'' &lt;br /&gt;
Les valeurs qui nous intéressent sont celles de s1, s2, s3, s4, s5. Ils captent une valeur entre 0 et 255 selon l'intensité du signal reçu. Chacun correspond à un capteur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Infrarouge schéma.png]]&lt;br /&gt;
&lt;br /&gt;
Notre capteur peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
===== Problèmes =====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Résolution des problèmes=====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Vérification des espaces latéraux]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Séparation des plaques]]&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Cherche_but.txt&amp;diff=3933</id>
		<title>Fichier:Cherche but.txt</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Cherche_but.txt&amp;diff=3933"/>
				<updated>2015-05-10T10:00:28Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le robot se place en mode 1200 Hz pour ignorer les ondes reçues par la balle qui continue d'émettre.&lt;br /&gt;
Il va tourner jusqu'à voir de l'infrarouge en face de lui : il est face à un but. Il mémorise la valeur d'infrarouge qu'il voit à cet instant. Il va, à chaque instant, comparer cette valeur avec la nouvelle valeur du capteur : lorsqu'il y a une différence notable (de 50 par exemple), alors c'est que le bu s'est éteint. Il convient ensuite de compter le nombre de secondes jusqu'au prochain changement : s'il vaut 4, il sait s'il s'agit de son but ou de celui de l'adversaire. Soit il tire, soit il cherche l'autre but.&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Cherche_but.txt&amp;diff=3932</id>
		<title>Fichier:Cherche but.txt</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Cherche_but.txt&amp;diff=3932"/>
				<updated>2015-05-10T09:55:38Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3931</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3931"/>
				<updated>2015-05-10T09:53:35Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Le capteur infrarouge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorLowspeed(IN_2);''&lt;br /&gt;
Lecture : &lt;br /&gt;
 ''result = ReadSensorHTIRSeeker2AC(IN_2,dir,s1,s2,s3,s4,s5);'' &lt;br /&gt;
Les valeurs qui nous intéressent sont celles de s1, s2, s3, s4, s5. Ils captent une valeur entre 0 et 255 selon l'intensité du signal reçu. Chacun correspond à un capteur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Infrarouge schéma.png]]&lt;br /&gt;
&lt;br /&gt;
Notre capteur peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
===== Problèmes =====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Résolution des problèmes=====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Infrarouge_sch%C3%A9ma.png&amp;diff=3930</id>
		<title>Fichier:Infrarouge schéma.png</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Infrarouge_sch%C3%A9ma.png&amp;diff=3930"/>
				<updated>2015-05-10T09:49:20Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : Il y a 5 capteurs, le central capte sur une plus grande zone
Ce schéma est très simplifié, en réalité les zones de capture peuvent se recouper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Il y a 5 capteurs, le central capte sur une plus grande zone&lt;br /&gt;
Ce schéma est très simplifié, en réalité les zones de capture peuvent se recouper&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3929</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3929"/>
				<updated>2015-05-10T09:46:57Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorLowspeed(IN_2);''&lt;br /&gt;
Lecture : &lt;br /&gt;
 ''result = ReadSensorHTIRSeeker2AC(IN_2,dir,s1,s2,s3,s4,s5);'' // Les valeurs qui nous intéressent sont celles de s1, s2, s3, s4, s5. Ils captent une valeur entre 0 et 255 selon l'intensité du signal reçu. Chacun correspond à un capteur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Infrarouge.jpg]]&lt;br /&gt;
&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
===== Problèmes =====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Résolution des problèmes=====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3928</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3928"/>
				<updated>2015-05-10T08:30:31Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici notre programme pour attraper la balle : [[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Pose_Scotch_3.jpg&amp;diff=3927</id>
		<title>Fichier:Pose Scotch 3.jpg</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Pose_Scotch_3.jpg&amp;diff=3927"/>
				<updated>2015-05-10T08:24:01Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : Le scotch est posé sur les plaques assemblées. Il faut donc le découper derrière&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le scotch est posé sur les plaques assemblées. Il faut donc le découper derrière&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Pose_Scotch_2.jpg&amp;diff=3926</id>
		<title>Fichier:Pose Scotch 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Pose_Scotch_2.jpg&amp;diff=3926"/>
				<updated>2015-05-10T08:19:49Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : a téléversé une nouvelle version de « Fichier:Pose Scotch 2.jpg »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vérification des espaces latéraux&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Pose_Scotch_2.jpg&amp;diff=3925</id>
		<title>Fichier:Pose Scotch 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Pose_Scotch_2.jpg&amp;diff=3925"/>
				<updated>2015-05-10T08:17:20Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : Vérification des espaces latéraux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vérification des espaces latéraux&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3924</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3924"/>
				<updated>2015-05-10T08:16:15Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voici notre programme pour attraper la balle :&lt;br /&gt;
[[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici le code [[Fichier:Attrape.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Pose_Scotch_1.jpg&amp;diff=3923</id>
		<title>Fichier:Pose Scotch 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Pose_Scotch_1.jpg&amp;diff=3923"/>
				<updated>2015-05-10T08:14:23Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : Le scotch est posé contre les lignes au crayon gris.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le scotch est posé contre les lignes au crayon gris.&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3922</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3922"/>
				<updated>2015-05-09T23:37:15Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|center|vue 1]] &lt;br /&gt;
[[Fichier:ronaldo1.jpg|200px|thumb|center|vue 2]] &lt;br /&gt;
[[Fichier:ronaldo2.jpg|200px|thumb|center|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voici notre programme pour attraper la balle :&lt;br /&gt;
[[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg|200px|thumb|center|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg|200px|thumb|left|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg|200px|thumb|center|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg|200px|thumb|right|Pose du scotch]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici le code [[Fichier:Attrape.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3921</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3921"/>
				<updated>2015-05-09T23:28:24Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voici notre programme pour attraper la balle :&lt;br /&gt;
[[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg]|200px|thumb|left|Tracé au crayon]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg]|200px|thumb|left|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg]|200px|thumb|left|Pose du scotch]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg]|200px|thumb|left|Pose du scotch]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici le code [[Fichier:Attrape.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Trace_crayon.jpg&amp;diff=3920</id>
		<title>Fichier:Trace crayon.jpg</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Trace_crayon.jpg&amp;diff=3920"/>
				<updated>2015-05-09T23:21:52Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : Le tracé du terrain au crayon gris, aidé d'une règle et d'un mètre-ruban.
Crayon gris non visible sur la photo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le tracé du terrain au crayon gris, aidé d'une règle et d'un mètre-ruban.&lt;br /&gt;
Crayon gris non visible sur la photo.&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3919</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3919"/>
				<updated>2015-05-09T23:11:52Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous ''&lt;br /&gt;
 ''//n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre ''&lt;br /&gt;
 ''//Blanc,Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
 ''SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voici notre programme pour attraper la balle :&lt;br /&gt;
[[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le terrain'''==&lt;br /&gt;
&lt;br /&gt;
C'est avec plusieurs groupes que nous avons fabriqué le terrain.&lt;br /&gt;
Nous avons assemblé 4 plaques de placo de 1m / 1,5m, formant un rectangle de 2m / 3m.&lt;br /&gt;
Le terrain en lui-même ne prend pas la totalité de l'espace : une distance est alloué de chaque côté. A chaque bout du rectangle est monté un mur. Ce dernier a pour but d'empêcher la balle de sortir trop loin en dehors du terrain.&lt;br /&gt;
&lt;br /&gt;
La structure globale de celui-ci, avec les lignes de couleur est donné sur la page de présentation de la saison 5, et a été proposé par l'enseignant.&lt;br /&gt;
L'un des groupes est allé questionner chacun des acteurs pour connaître la taille minimale à réserver pour chaque partie du terrain : emplacement des buts, espace entre limite du terrain et mur, emplacement de garage des joueurs...&lt;br /&gt;
Nous avons adapté ces mesures de manière à ce que nos robots joueurs puissent aller jusqu'au bout du terrain sans percuter le mur, et ce pour les 4 côtés.&lt;br /&gt;
&lt;br /&gt;
- Les robots joueurs doivent pouvoir avancer jusqu'au lignes latérales et les dépasser jusqu'au roues sans pour autant que leur pince ne touche le mur.&lt;br /&gt;
- Il doivent avoir la place pour se garer à côté des buts.&lt;br /&gt;
- Le robot ramasseur doit avoir sa place de garage aussi, donc réserve un emplacement latéral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons donc tracé les lignes du terrain au crayon gris&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Trace_crayon.jpg]]&lt;br /&gt;
&lt;br /&gt;
Ensuite nous avons pu installer les vraies lignes; nous avons utilisé du scotch de couleur : fort heureusement nous avions toutes les couleurs nécessaires à disposition.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pose_Scotch_1.jpg]]&lt;br /&gt;
[[Fichier:Pose_Scotch_2.jpg]]&lt;br /&gt;
[[Fichier:Pose_Scotch_3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]] Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]] Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire c'est assez simple. Il suffit de vérifier à chaque instant la couleur en-dessous, et dès qu'elle apparaît rouge, de faire demi-tour&lt;br /&gt;
 '' &lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    SV = ReadSensorColorEx(S1, cval, rawData, normData, scaledData); &lt;br /&gt;
    if(arret == 0 &amp;amp;&amp;amp; cval == 5) // Variable arrêt utilisée dans un autre programme&lt;br /&gt;
    {&lt;br /&gt;
      OnFwd(OUT_A, 50);&lt;br /&gt;
      OnFwd(OUT_B, -50);&lt;br /&gt;
      demitour = 1; // Cette variable nous sert à empêcher certaines actions lorsqu'elle vaut 1&lt;br /&gt;
      Wait(2600); // Temps approximatif d'un demi-tour à cette vitesse&lt;br /&gt;
      demitour = 0;   &lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
    }&lt;br /&gt;
    Wait(250); // Temps de latence entre deux vérifications&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
 ''&lt;br /&gt;
  while (1) &lt;br /&gt;
  {&lt;br /&gt;
    dist = SensorUS(IN_3);&lt;br /&gt;
    if ((balle == 0) &amp;amp;&amp;amp; dist &amp;lt;= 25)) // La variable balle vaut 1 si le robot considère qu'elle est juste devant.  Par conséquent le programme ne s'enclenchera pas dans ce cas&lt;br /&gt;
    {&lt;br /&gt;
      Off(OUT_AB);&lt;br /&gt;
      Wait(500);&lt;br /&gt;
      OnFwd(OUT_AB, 50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après initialisation du capteur on peut ajouter &lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_600); ''&lt;br /&gt;
ou&lt;br /&gt;
 ''SetHTIRSeeker2Mode(IN_2, HTIR2_MODE_1200); ''&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
Voici le code [[Fichier:Attrape.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
Voici un autre point compliqué de notre projet. Le robot doit trouver son propre but pour tirer. Les deux buts émettant sur la même fréquence, il convient d'utiliser le clignotement.&lt;br /&gt;
Chaque but va être programmé pour rester allumé un certain nombre de secondes, puis s'éteindre, et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cherche_but.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3918</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3918"/>
				<updated>2015-05-09T22:25:23Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous //n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre Blanc, //Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
'' SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voici notre programme pour attraper la balle :&lt;br /&gt;
[[Fichier:Attrape_Balle.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3917</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3917"/>
				<updated>2015-05-09T22:21:24Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
 ''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous //n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre Blanc, //Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
'' SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voici notre programme pour attraper la balle :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:attrape.mp4]]&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Attrape_Balle.txt&amp;diff=3916</id>
		<title>Fichier:Attrape Balle.txt</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Attrape_Balle.txt&amp;diff=3916"/>
				<updated>2015-05-09T22:13:22Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : a téléversé une nouvelle version de « Fichier:Attrape Balle.txt » : Le but du programme est de détecter la balle, d'avancer vers elle puis de l'attraper.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le but du programme est de détecter la balle, d'avancer vers elle puis de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Le principe est que si le robot détecte  de l'infrarouge sur les côtés alors il n'est pas en face de la balle. Il se tourne pour ne recevoir de l'infrarouge que de devant, puis avance. Une boucle infinie fait en sorte qu'il continue cette vérification pour corriger sa trajectoire en avançant.&lt;br /&gt;
&lt;br /&gt;
Une fois la balle assez prêt le capteur ultrason la détecte. Une variable &amp;quot;balle&amp;quot; indique au robot qu'il ne s'agit pas d'un obstacle comme le robot adverse. Le robot abaisse sa pince lorsqu'il est assez prêt. Il vérifie avec son capteur si elle est bien attrapée. Le cas échéant il recommence.&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Attrape_Balle.txt&amp;diff=3915</id>
		<title>Fichier:Attrape Balle.txt</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Attrape_Balle.txt&amp;diff=3915"/>
				<updated>2015-05-09T22:12:10Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : Le but du programme est de détecter la balle, d'avancer vers elle puis de l'attraper.

Le principe est que si le robot détecte  de l'infrarouge sur les côtés alors il n'est pas en face de la balle. Il se tourne pour ne recevoir de l'infrarouge que de &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le but du programme est de détecter la balle, d'avancer vers elle puis de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Le principe est que si le robot détecte  de l'infrarouge sur les côtés alors il n'est pas en face de la balle. Il se tourne pour ne recevoir de l'infrarouge que de devant, puis avance. Une boucle infinie fait en sorte qu'il continue cette vérification pour corriger sa trajectoire en avançant.&lt;br /&gt;
&lt;br /&gt;
Une fois la balle assez prêt le capteur ultrason la détecte. Une variable &amp;quot;balle&amp;quot; indique au robot qu'il ne s'agit pas d'un obstacle comme le robot adverse. Le robot abaisse sa pince lorsqu'il est assez prêt. Il vérifie avec son capteur si elle est bien attrapée. Le cas échéant il recommence.&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3827</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3827"/>
				<updated>2015-04-22T16:05:56Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Le capteur ultrason */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous //n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre Blanc, //Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
'' SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voici notre programme pour attraper la balle :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:]]&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3826</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3826"/>
				<updated>2015-04-22T16:05:20Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Le capteur ultrason */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous //n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre Blanc, //Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
//Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il// nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
'' SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voici notre programme pour attraper la balle :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:]]&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3825</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3825"/>
				<updated>2015-04-22T16:04:08Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet enseignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
Ce twiki expliquera en détail nos manières de procéder pour atteindre nos objectifs, présentant également des lignes de codes. Ces dernières seront copiées en italique, les phrases écrites après un double slash (//) signifiant que c'est un commentaire, en langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
Ils sont l'essence même de notre robot, et ce sont eux qui vont nous permettre de faire ce projet.&lt;br /&gt;
Leur utilisation via un programme NXC requiert :&lt;br /&gt;
- Une initialisation, dans laquelle on indique au robot à quel port ils sont branchés.&lt;br /&gt;
- Une lecture. C'est-à-dire que le robot ne les utilise pas à tout instant. Il faut déclencher une lecture à un instant t, et à cet instant nous pouvons utiliser les valeurs que nous fournissent ces capteurs.&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (pour une détection correcte, il doit être placé à au moins 1 cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage en suivant les lignes de couleur.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
Côté programmation :&lt;br /&gt;
Initialisation grâce à la commande :&lt;br /&gt;
''SetSensorColorFull(IN_1); // IN_1 indique que le port auquel il est branché est numéroté 1''&lt;br /&gt;
Lecture :&lt;br /&gt;
 ''SV = ReadSensorColorEx(IN_1, cval, rawData, normData, scaledData); // Cette formule bien complète n'est pas si compliquée. A notre niveau, nous //n'utilisons que la variable cval, un int qui va contenir un chiffre entre 0 et 5. Ce chiffre signifie tout simplement une certaine couleur entre Blanc, //Bleu, Rouge, Jaune, Vert et Noir. Nul besoin d'apprendre leur correspondance, un simple test du type &amp;quot;if (cval == INPUT_REDCOLOR)&amp;quot; par exemple suffit.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;, ainsi que pour détecter la balle.&lt;br /&gt;
&lt;br /&gt;
Initialisation :&lt;br /&gt;
'' SetSensorUltrasonic(IN_3);''&lt;br /&gt;
Lecture :&lt;br /&gt;
''dist = SensorUS(IN_3); // dist est un byte (octet) contenant une valeur allant de 0 à 255. Cette valeur correspond à une distance. Plus le nombre est //grand, plus l'obstacle est loin.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Nous pensions que ce capteur aurait pu nous être utile pour vérifier la bonne capture de la balle. Mais son enclenchement était bien trop aléatoire pour être utilisé avec notre configuration. Nous avons donc opté pour le capteur ultrason.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33 (valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce. De plus si la balle arrive sur le côté, bien qu'elle soit entrée dans la pince, elle n'est pas détectée puisque l'enclenchement n'est pas systématique dans ce cas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voici notre programme pour attraper la balle :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:]]&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3821</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3821"/>
				<updated>2015-04-22T15:42:49Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Résolution des problèmes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (vu que pour une detection maximale il doit être placé à au moins 1cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Ce capteur nous sera utile pour vérifier la bonne capture de la balle.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33(valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; nous avons dû modifier notre programme afin de faire une distinction entre balle et adversaire puisque que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voilà notre programme pour attraper la balle&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:]]&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3820</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3820"/>
				<updated>2015-04-22T15:41:19Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Attraper la balle / Lancer la balle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (vu que pour une detection maximale il doit être placé à au moins 1cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Ce capteur nous sera utile pour vérifier la bonne capture de la balle.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33(valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; Nous avons dû modifié notre programme afin de faire une distinction entre balle et adversaire vu que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voilà notre programme pour attraper la balle&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra où la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (le capteur ultrason indique une présence proche), la pince s'abaisse grâce au servomoteur dédié. Si ce capteur voit une faible valeur alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs tests voilà les premiers résultats obtenus dans cette vidéo :[[Fichier:]]&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3819</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3819"/>
				<updated>2015-04-22T15:39:22Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Chercher la balle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (vu que pour une detection maximale il doit être placé à au moins 1cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Ce capteur nous sera utile pour vérifier la bonne capture de la balle.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33(valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; Nous avons dû modifié notre programme afin de faire une distinction entre balle et adversaire vu que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voilà notre programme pour attraper la balle&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur ultrason), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra ou la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (la valeur indiquée par le capteur est maximale), la pince s'abaisse grâce au servomoteur dédié. Si le capteur de contact sent une pression, alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs test voilà la premiers résultats obtenus dans cette vidéo :[[Fichier:]]&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3818</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3818"/>
				<updated>2015-04-22T15:38:41Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Le dispositif de capture de la balle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
Voila la seconde version du robot NXC que nous avons réalisé&lt;br /&gt;
[[Fichier:ronaldo.jpg|200px|thumb|left|vue 1]] [[Fichier:ronaldo1.jpg|200px|thumb|left|vue 2]] [[Fichier:ronaldo2.jpg|200px|thumb|left|vue 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot (vu que pour une detection maximale il doit être placé à au moins 1cm du sol) et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de contact ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Ce capteur nous sera utile pour vérifier la bonne capture de la balle.&lt;br /&gt;
&lt;br /&gt;
==== Problèmes ====&lt;br /&gt;
&lt;br /&gt;
Le premier problème rencontré avec ce capteur est le fait qu'il n'a pas de phase intermédiaire entre le moment où il touche quelque chose et celui où il ne touche rien. Les valeurs de ce capteur passe de 0 (il ne touche rien) à 33(valeur maximale atteinte quand le bouton du capteur est enfoncé au maximum).&lt;br /&gt;
&lt;br /&gt;
Le deuxième problème rencontré est que le bouton ne s'enfonce pas assez pour activer le moteur quand le robot entre en contact avec la balle. Il faut que la balle soit en mouvement rapide vers le robot pour que le bouton s'enfonce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Résolution des problèmes====&lt;br /&gt;
&lt;br /&gt;
Nous avons opté pour un remaniement du robot. Pour détecter et attraper la balle, nous avons utilisé l'action simultanée du capteur ultrason et du capteur infrarouge; Nous avons dû modifié notre programme afin de faire une distinction entre balle et adversaire vu que le capteur ultrason est aussi utilisé pour détecter les éventuels obstacles.&lt;br /&gt;
Voilà notre programme pour attraper la balle&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur ultrason. Il sert à détecter la balle et l'adversaire. Lorsque le robot détecte la balle assez prêt, il abaisse la pince. Ensuite il vérifie si la balle qui est présente. Dans le cas contraire il rouvre la pince.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur de pression), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra ou la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (la valeur indiquée par le capteur est maximale), la pince s'abaisse grâce au servomoteur dédié. Si le capteur de contact sent une pression, alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
Après plusieurs test voilà la premiers résultats obtenus dans cette vidéo :[[Fichier:]]&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3514</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3514"/>
				<updated>2015-03-08T10:59:33Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Le Robot Mindstorm NXC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
Il y a deux moyens de programmer ce robot : en utilisant le logiciel de programmation par blocs fourni avec la machine, ou en langage de programmation pur.&lt;br /&gt;
Nous avons choisi cette dernière option, l'éditeur et compilateur NxcEditor permet d'écrire en NXC, dérivé du langage C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur tactile ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Ce capteur nous sera utile pour vérifier la bonne capture de la balle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur tactile. Il n'est enfoncé que si la balle est présente dans la pince. En effet la capture de la balle n'est pas assurée à chaque coup.&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur de pression), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra ou la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (la valeur indiquée par le capteur est maximale), la pince s'abaisse grâce au servomoteur dédié. Si le capteur de contact sent une pression, alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3513</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3513"/>
				<updated>2015-03-08T10:55:21Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''Introduction''' =&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le Robot Mindstorm NXC''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
=== Le capteur de couleur ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur ultrason ===&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur infrarouge ===&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le capteur tactile ===&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Ce capteur nous sera utile pour vérifier la bonne capture de la balle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur tactile. Il n'est enfoncé que si la balle est présente dans la pince. En effet la capture de la balle n'est pas assurée à chaque coup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Le jeu''' =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Chercher la balle''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur de pression), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Attraper la balle / Lancer la balle''' ===&lt;br /&gt;
&lt;br /&gt;
Le principe pour trouver la balle est de regarder la valeur de chaque capteur : le robot comprendra ou la balle peut se trouver. Son but est que le capteur central soit le seul à avoir une valeur significative (supérieur à une valeur précise).&lt;br /&gt;
Une fois positionné face à la balle, il avance vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, (la valeur indiquée par le capteur est maximale), la pince s'abaisse grâce au servomoteur dédié. Si le capteur de contact sent une pression, alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3512</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3512"/>
				<updated>2015-03-08T10:47:12Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Le montage''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Les capteurs''' ===&lt;br /&gt;
&lt;br /&gt;
==== Le capteur de couleur ====&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Le capteur ultrason ====&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Le capteur infrarouge ====&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Le capteur tactile ====&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Ce capteur nous sera utile pour vérifier la bonne capture de la balle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== '''Le dispositif de capture de la balle''' ====&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur tactile. Il n'est enfoncé que si la balle est présente dans la pince. En effet la capture de la balle n'est pas assurée à chaque coup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Les limites du terrain''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Ne pas percuter l'adversaire''' ===&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''La Balle'''===&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== '''Chercher la balle''' ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur de pression), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Aller attraper la balle :''' &lt;br /&gt;
&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== '''Attraper la balle / Lancer la balle''' ====&lt;br /&gt;
&lt;br /&gt;
Lorsque la valeur du capteur central du capteur infrarouge atteint une certaine valeur, nous supposons que la balle est toute proche.&lt;br /&gt;
La pince s'abaisse alors grâce au servomoteur dédié. Si le capteur de contact sent une pression, alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ''' Detecter les buts''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Se replacer''' ===&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Obéir à l'arbitre''' ===&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3511</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3511"/>
				<updated>2015-03-08T10:39:00Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1) Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.1) Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.2) Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
== 1.2.1) Le capteur de couleur ==&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
Nous le plaçons sous notre robot et il servira à deux buts :&lt;br /&gt;
- Se replacer sur le garage.&lt;br /&gt;
- Ne jamais sortir du terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.2) Le capteur ultrason ==&lt;br /&gt;
&lt;br /&gt;
Ce capteur détecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
Il nous servira pour remplir la condition du cahier des charges &amp;quot;ne jamais percuter l'adversaire&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.3) Le capteur infrarouge ==&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour détecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
Nous avons accès librement à la valeur de chaque capteur.&lt;br /&gt;
Il peut être réglé pour recevoir plus spécifiquement des ondes de fréquence 600 Hz ou 1200 Hz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.4) Le capteur tactile ==&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Ce capteur nous sera utile pour vérifier la bonne capture de la balle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.3) Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur tactile. Il n'est enfoncé que si la balle est présente dans la pince. En effet la capture de la balle n'est pas assurée à chaque coup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2) Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.1) Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorsqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2) Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
Il est interdit aux deux joueurs de se rentrer dedans.&lt;br /&gt;
Le capteur ultrason, placé bien en évidence sur le robot, détecte les obstacles. Lorsqu'il voit quelque chose de très près, nous ordonnons à notre robot l'arrêt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3) La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.1) Chercher la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur de pression), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Aller attraper la balle :''' &lt;br /&gt;
&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.2) Attraper la balle / Lancer la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque la valeur du capteur central du capteur infrarouge atteint une certaine valeur, nous supposons que la balle est toute proche.&lt;br /&gt;
La pince s'abaisse alors grâce au servomoteur dédié. Si le capteur de contact sent une pression, alors la balle est bien emprisonnée et le robot continue son jeu. Sinon, il relève la pince et réessaie.&lt;br /&gt;
&lt;br /&gt;
Le dispositif de tir consiste à ouvrir la pince avec une certaine vitesse. La bout arrière de notre mécanisme pousse la balle à la vitesse souhaitée, et celle-ci se dirige tout droit. Pour peu que le robot soit correctement dirigé, elle avance vers le but.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.3) Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.4) Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
Lorsque l'arbitre le lui ordonne, le robot se replace sur son garage. Il suit l'algorithme précisé dans la partie &amp;quot;Robot de compétition&amp;quot; du twiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.5) Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3510</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3510"/>
				<updated>2015-03-08T10:27:32Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
== '''1) Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.1) Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.2) Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.1) Le capteur de couleur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.2) Le capteur ultrason ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur detecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.3) Le capteur infrarouge ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour detecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.4) Le capteur tactile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est enfoncé.&lt;br /&gt;
Ce capteur nous sera utile pour vérifier la bonne capture de la balle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.3) Le dispositif de capture de la balle''' ==&lt;br /&gt;
&lt;br /&gt;
Nous utilisons une pince articulée pour capturer la balle. Cette pince, lorsqu'elle s'ouvre, pousse également la balle en avant; c'est une pince à double action.&lt;br /&gt;
En plus de cette pince nous avons installé une pince rigide horizontale pour tenir la balle correctement sur les côtés, et permettre une capture plus précise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous installons dans la zone de capture le capteur tactile. Il n'est enfoncé que si la balle est présente dans la pince. En effet la capture de la balle n'est pas assurée à chaque coup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2) Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.1) Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2) Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
== '''2.3) La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.1) Aller chercher la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La difficulté majeure de notre projet est ici. La balle que nous utilisons émet un rayonnement infrarouge en continu. Les buts, pour qu'ils soient détectés par le robot, émettent un signal qui est intermittent. C'est à partir de ça que le robot doit différencier la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Deux solutions furent proposées. Nous avons opté sur le changement de fréquence :&lt;br /&gt;
Le rayonnement infrarouge se fait à une fréquence : elle peut être de 600 ou de 1200 Hz. Justement, le capteur infrarouge du robot peut être réglé pour recevoir plutôt du 600 Hz, ou du 1200 Hz. Nous utiliserons cette fonctionnalité pour distnguer la balle des buts.&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué des tests avec un autre groupe, nous avons trouvé que le robot détecte mieux les ondes sur le mode 600 Hz. C'est ce mode qui sera utilisé pour la balle. Nous demanderons donc aux constructeurs de buts de régler leur fréquence à 1200 HZ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot est en recherche de balle, il se placera en mode 600 Hz. Une fois la balle attrapée (condition vérifiée par l'activation du capteur de pression), le robot passe en mode 1200 Hz pour les buts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Aller attraper la balle :''' &lt;br /&gt;
&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.2) Attraper la balle / Lancer la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.3) Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.4) Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.5) Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3509</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3509"/>
				<updated>2015-03-08T10:13:11Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, nous avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
== '''1) Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.1) Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.2) Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.1) Le capteur de couleur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.2) Le capteur ultrason ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur detecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.3) Le capteur infrarouge ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour detecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.4) Le capteur tactile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est tout simplement enfoncé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2) Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.1) Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2) Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
== '''2.3) La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.1) Aller chercher la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La balle que nous utiliserons émet un rayonnement infrarouge en continu. C'est grâce à son capteur infrarouge que le robot la détectera.&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.2) Attraper la balle / Lancer la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.3) Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.4) Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.5) Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3258</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3258"/>
				<updated>2015-02-02T16:44:30Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, mon partenaire et moi avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1) Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.1) Le montage''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.2) Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.1) Le capteur de couleur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.2) Le capteur ultrason ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur detecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.3) Le capteur infrarouge ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour detecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.2.4) Le capteur tactile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est tout simplement enfoncé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2) Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.1) Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2) Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
== '''2.3) La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.1) Aller chercher la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La balle que nous utiliserons émet un rayonnement infrarouge en continu. C'est grâce à son capteur infrarouge que le robot la détectera.&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.2) Attraper la balle / Lancer la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.3) Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.4) Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.5) Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3257</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3257"/>
				<updated>2015-02-02T16:41:32Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* 2.2) Ne pas perctuer l'adversaire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, mon partenaire et moi avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1) Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.1) Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.1) Le capteur de couleur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.2) Le capteur ultrason ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur detecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.3) Le capteur infrarouge ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour detecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.4) Le capteur tactile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est tout simplement enfoncé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2) Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.1) Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2) Ne pas percuter l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
== '''2.3) La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.1) Aller chercher la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La balle que nous utiliserons émet un rayonnement infrarouge en continu. C'est grâce à son capteur infrarouge que le robot la détectera.&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.2) Attraper la balle / Lancer la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.3) Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.4) Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.5) Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3256</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3256"/>
				<updated>2015-02-02T16:39:56Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, mon partenaire et moi avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1) Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.1) Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.1) Le capteur de couleur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.2) Le capteur ultrason ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur detecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.3) Le capteur infrarouge ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour detecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.4) Le capteur tactile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est tout simplement enfoncé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2) Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.1) Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2) Ne pas perctuer l'adversaire''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3) La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.1) Aller chercher la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La balle que nous utiliserons émet un rayonnement infrarouge en continu. C'est grâce à son capteur infrarouge que le robot la détectera.&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.2) Attraper la balle / Lancer la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.3.3) Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.4) Se replacer''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.5) Obéir à l'arbitre''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3255</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3255"/>
				<updated>2015-02-02T16:37:03Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, mon partenaire et moi avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1) Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.1) Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.1) Le capteur de couleur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.2) Le capteur ultrason ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur detecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.3) Le capteur infrarouge ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour detecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.4) Le capteur tactile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est tout simplement enfoncé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2) Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.1) Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
== '''2.2) La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2.1) Aller chercher la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La balle que nous utiliserons émet un rayonnement infrarouge en continu. C'est grâce à son capteur infrarouge que le robot la détectera.&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2.2) Attraper la balle / Lancer la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2.3) Detecter les buts''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2.4) Se replacer''' ==&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3254</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3254"/>
				<updated>2015-02-02T16:35:27Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* La Balle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, mon partenaire et moi avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1) Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.1) Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.1) Le capteur de couleur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.2) Le capteur ultrason ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur detecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.3) Le capteur infrarouge ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour detecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.4) Le capteur tactile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est tout simplement enfoncé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2) Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.1) Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
== '''2.2) La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.2.1) Aller chercher la balle''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La balle que nous utiliserons émet un rayonnement infrarouge en continu. C'est grâce à son capteur infrarouge que le robot la détectera.&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3253</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3253"/>
				<updated>2015-02-02T16:34:17Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, mon partenaire et moi avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1) Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1.1) Les capteurs''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.1) Le capteur de couleur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.2) Le capteur ultrason ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce capteur detecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.3) Le capteur infrarouge ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour detecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1.1.4) Le capteur tactile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est tout simplement enfoncé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2) Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.1) Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
1) Aller chercher la balle&lt;br /&gt;
&lt;br /&gt;
La balle que nous utiliserons émet un rayonnement infrarouge en continu. C'est grâce à son capteur infrarouge que le robot la détectera.&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3252</id>
		<title>RobotCompetition2014-2</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=RobotCompetition2014-2&amp;diff=3252"/>
				<updated>2015-02-02T16:33:22Z</updated>
		
		<summary type="html">&lt;p&gt;Acasisa : /* 2.1) Les limites du terrain. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durant le bureau d'étude IMA de cette année, mon partenaire et moi avons pour rôle la réalisation d'un robot d'attaque et de défense. Pour la bonne compréhension de ce que nous allons faire au cours de cet ensaignement de spécialité nous allons reporter sur cette page tout ce qui sera fait pour atteindre la conception finale de ce robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''1) Le Robot Mindstorm NXC''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1.1) Les capteurs'''&lt;br /&gt;
&lt;br /&gt;
1.1.1) Le capteur de couleur&lt;br /&gt;
&lt;br /&gt;
Ce capteur permet de différencier les couleurs : il peut reconnaître du blanc, du noir, du rouge, du vert, du bleu.&lt;br /&gt;
&lt;br /&gt;
1.1.2) Le capteur ultrason&lt;br /&gt;
&lt;br /&gt;
Ce capteur detecte la présence d'éventuels obstacles et même la distance à laquelle ils se trouvent.&lt;br /&gt;
&lt;br /&gt;
1.1.3) Le capteur infrarouge&lt;br /&gt;
&lt;br /&gt;
Il nous sera utile pour detecter la balle et les buts.&lt;br /&gt;
&lt;br /&gt;
Son fonctionnement : 5 capteurs y sont intégrés. Un capteur scanne devant lui, les quatre autres permettent au robot de &amp;quot;voir&amp;quot; sur 180°.&lt;br /&gt;
&lt;br /&gt;
1.1.4) Le capteur tactile&lt;br /&gt;
&lt;br /&gt;
Lorsque le robot rencontre un obstacle, le bouton est tout simplement enfoncé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2) Le jeu''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2.1) Les limites du terrain''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les robots joueurs n'ont pas le droit de sortir du terrain. Le bord de celui-ci étant matérialisé par une ligne rouge, nous utiliserons le capteur de couleur, pour détecter la couleur en temps réel et faire faire demi-tour au robot lorsqu'il atteint cette ligne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Arrête.mp4]]&lt;br /&gt;
&lt;br /&gt;
Le robot s'arrête quand il voit une ligne rouge avec son capteur de couleur, ce qui va l'empêcher de sortir du terrain de foot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Demi tour.mp4]]&lt;br /&gt;
&lt;br /&gt;
Nous avons modifié le programme qui fait s'arrêter le robot et l'avons retravaillé afin qu'il puisse faire demi-tour toujours lorqu'il voit une ligne rouge.&lt;br /&gt;
C'est ce que montre la vidéo demi-tour.&lt;br /&gt;
&lt;br /&gt;
== '''La Balle'''==&lt;br /&gt;
&lt;br /&gt;
Le but du jeu est que le robot attrape la balle pour ensuite marquer des points.&lt;br /&gt;
&lt;br /&gt;
1) Aller chercher la balle&lt;br /&gt;
&lt;br /&gt;
La balle que nous utiliserons émet un rayonnement infrarouge en continu. C'est grâce à son capteur infrarouge que le robot la détectera.&lt;br /&gt;
Le robot commence par se positionner face à celle-ci, il avance ensuite vers elle, tout en corrigeant sa trajectoire de manière à rester bien en face de celle-ci : son objectif est de l'attraper.&lt;br /&gt;
&lt;br /&gt;
Il s'agit tout simplement de faire en sorte que seul le capteur du milieu capte quelque chose. Le robot pivote pour être toujours dans cette situation à mesure qu'il avance.&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé proche de la balle, la valeur indiquée par le capteur est maximale, le robot s'arrête.&lt;/div&gt;</summary>
		<author><name>Acasisa</name></author>	</entry>

	</feed>