﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://bacasable.arpitania.eu//index.php?action=history&amp;feed=atom&amp;title=Robots_suiveurs_3_-_Code_emitter-receiver</id>
	<title>Robots suiveurs 3 - Code emitter-receiver - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://bacasable.arpitania.eu//index.php?action=history&amp;feed=atom&amp;title=Robots_suiveurs_3_-_Code_emitter-receiver"/>
	<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Robots_suiveurs_3_-_Code_emitter-receiver&amp;action=history"/>
	<updated>2026-04-06T00:49:02Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=Robots_suiveurs_3_-_Code_emitter-receiver&amp;diff=11005&amp;oldid=prev</id>
		<title>Eric le 7 mars 2021 à 13:07</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Robots_suiveurs_3_-_Code_emitter-receiver&amp;diff=11005&amp;oldid=prev"/>
		<updated>2021-03-07T13:07:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version du 7 mars 2021 à 13:07&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l165&quot; &gt;Ligne 165 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 165 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Catégorie:TELECOM]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eric</name></author>
		
	</entry>
	<entry>
		<id>https://bacasable.arpitania.eu//index.php?title=Robots_suiveurs_3_-_Code_emitter-receiver&amp;diff=10940&amp;oldid=prev</id>
		<title>Clément Luton : Page créée avec «  &lt;nowiki&gt;  #include &lt;webots/Robot.hpp&gt; #include &lt;webots/Emitter.hpp&gt; #include &lt;webots/Receiver.hpp&gt; #include &lt;webots/Motor.hpp&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #inc... »</title>
		<link rel="alternate" type="text/html" href="https://bacasable.arpitania.eu//index.php?title=Robots_suiveurs_3_-_Code_emitter-receiver&amp;diff=10940&amp;oldid=prev"/>
		<updated>2020-05-12T14:26:24Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec «  &amp;lt;nowiki&amp;gt;  #include &amp;lt;webots/Robot.hpp&amp;gt; #include &amp;lt;webots/Emitter.hpp&amp;gt; #include &amp;lt;webots/Receiver.hpp&amp;gt; #include &amp;lt;webots/Motor.hpp&amp;gt; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;string.h&amp;gt; #inc... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;webots/Robot.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;webots/Emitter.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;webots/Receiver.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;webots/Motor.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;webots/DistanceSensor.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define COMMUNICATION_CHANNEL_EMITTER 2&lt;br /&gt;
#define COMMUNICATION_CHANNEL_RECEIVER 1&lt;br /&gt;
#define MAX_SPEED 6.28&lt;br /&gt;
&lt;br /&gt;
// toutes les classes webots sont définies dans le namespace &amp;quot;webots&amp;quot;&lt;br /&gt;
using namespace webots;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
&lt;br /&gt;
  // crée l'instance Robot&lt;br /&gt;
  Robot *robot = new Robot();&lt;br /&gt;
  &lt;br /&gt;
  // récupère le pas de temps du monde actuel&lt;br /&gt;
  int timeStep = (int)robot-&amp;gt;getBasicTimeStep();&lt;br /&gt;
&lt;br /&gt;
  // crée les instances des périphériques et les associe&lt;br /&gt;
  Emitter *emitter = robot-&amp;gt;getEmitter(&amp;quot;emitter&amp;quot;);&lt;br /&gt;
  Receiver *receiver = robot-&amp;gt;getReceiver(&amp;quot;receiver&amp;quot;);&lt;br /&gt;
  Motor *left_motor = robot-&amp;gt;getMotor(&amp;quot;left wheel motor&amp;quot;);&lt;br /&gt;
  Motor *right_motor = robot-&amp;gt;getMotor(&amp;quot;right wheel motor&amp;quot;);&lt;br /&gt;
  DistanceSensor *ps[8];&lt;br /&gt;
  char psNames[8][4] = {&lt;br /&gt;
    &amp;quot;ps0&amp;quot;, &amp;quot;ps1&amp;quot;, &amp;quot;ps2&amp;quot;, &amp;quot;ps3&amp;quot;,&lt;br /&gt;
    &amp;quot;ps4&amp;quot;, &amp;quot;ps5&amp;quot;, &amp;quot;ps6&amp;quot;, &amp;quot;ps7&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  for (int i = 0; i &amp;lt; 8; i++) {&lt;br /&gt;
    ps[i] = robot-&amp;gt;getDistanceSensor(psNames[i]);&lt;br /&gt;
    ps[i]-&amp;gt;enable(timeStep);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  int message_printed = 0; // utilisé pour éviter d'imprimer en continu l'état de communication&lt;br /&gt;
&lt;br /&gt;
  // initialisation du moteur&lt;br /&gt;
  left_motor-&amp;gt;setVelocity(0);&lt;br /&gt;
  right_motor-&amp;gt;setVelocity(0);&lt;br /&gt;
  left_motor-&amp;gt;setPosition(INFINITY);&lt;br /&gt;
  right_motor-&amp;gt;setPosition(INFINITY);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  // si mauvais canal de communication&lt;br /&gt;
  const int channel_receiver = receiver-&amp;gt;getChannel();&lt;br /&gt;
    if (channel_receiver != COMMUNICATION_CHANNEL_RECEIVER) &lt;br /&gt;
    {&lt;br /&gt;
      receiver-&amp;gt;setChannel(COMMUNICATION_CHANNEL_RECEIVER);&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
  const int channel_emitter = emitter-&amp;gt;getChannel();&lt;br /&gt;
    if (channel_emitter != COMMUNICATION_CHANNEL_EMITTER) &lt;br /&gt;
    {&lt;br /&gt;
      emitter-&amp;gt;setChannel(COMMUNICATION_CHANNEL_EMITTER);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
   emitter-&amp;gt;setRange(0.4); // définit la plage de l'émetteur&lt;br /&gt;
   &lt;br /&gt;
   receiver-&amp;gt;enable(timeStep); // active le récepteur&lt;br /&gt;
 &lt;br /&gt;
  // boucle principale&lt;br /&gt;
  while (robot-&amp;gt;step(timeStep) != -1) &lt;br /&gt;
  {&lt;br /&gt;
  &lt;br /&gt;
    // lit les sorties des capteurs de distance&lt;br /&gt;
    double psValues[8];&lt;br /&gt;
    for (int i = 0; i &amp;lt; 8 ; i++)&lt;br /&gt;
      psValues[i] = ps[i]-&amp;gt;getValue();&lt;br /&gt;
&lt;br /&gt;
    // détecte les obstacles&lt;br /&gt;
    bool right_obstacle =&lt;br /&gt;
      psValues[0] &amp;gt; 100.0 ||&lt;br /&gt;
      psValues[1] &amp;gt; 100.0 ||&lt;br /&gt;
      psValues[2] &amp;gt; 100.0;&lt;br /&gt;
    bool left_obstacle =&lt;br /&gt;
      psValues[5] &amp;gt; 100.0 ||&lt;br /&gt;
      psValues[6] &amp;gt; 100.0 ||&lt;br /&gt;
      psValues[7] &amp;gt; 100.0;&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
   // envoie un message terminé par null&lt;br /&gt;
   const char *message = &amp;quot;Hello!&amp;quot;;&lt;br /&gt;
   emitter-&amp;gt;send(message, strlen(message) + 1);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
    if (receiver-&amp;gt;getQueueLength() &amp;gt; 0) // y a-t-il au moins un paquet dans la file d'attente du récepteur ?&lt;br /&gt;
    {&lt;br /&gt;
      // lit les données des récepteurs&lt;br /&gt;
      const double *position=receiver-&amp;gt;getEmitterDirection();&lt;br /&gt;
      double signal=receiver-&amp;gt;getSignalStrength();&lt;br /&gt;
     &lt;br /&gt;
      if (message_printed != 1) &lt;br /&gt;
      {&lt;br /&gt;
        printf(&amp;quot;Follower 1 communcating with master\n&amp;quot;);&lt;br /&gt;
        message_printed = 1;&lt;br /&gt;
      }&lt;br /&gt;
          &lt;br /&gt;
      if(signal&amp;gt;80) // arrete le robot s'il est trop proche du maître&lt;br /&gt;
      {&lt;br /&gt;
        left_motor-&amp;gt;setVelocity(0);&lt;br /&gt;
        right_motor-&amp;gt;setVelocity(0);&lt;br /&gt;
      }&lt;br /&gt;
      else if (signal&amp;gt;50){ // réduit la vitesse du robot progressivement lorsqu'il s'approche du maître&lt;br /&gt;
          double produitEnCroix = ((80-signal)/(double)30);&lt;br /&gt;
          double vitesse = produitEnCroix * 0.5 * MAX_SPEED;&lt;br /&gt;
          left_motor-&amp;gt;setVelocity(vitesse);&lt;br /&gt;
          right_motor-&amp;gt;setVelocity(vitesse);&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      else{&lt;br /&gt;
      &lt;br /&gt;
      if (left_obstacle) {&lt;br /&gt;
        // tourne à droite&lt;br /&gt;
        left_motor-&amp;gt;setVelocity(0.5 * MAX_SPEED);&lt;br /&gt;
        right_motor-&amp;gt;setVelocity(0);&lt;br /&gt;
      }&lt;br /&gt;
      else if (right_obstacle) {&lt;br /&gt;
        // tourne à gauche&lt;br /&gt;
        left_motor-&amp;gt;setVelocity(0);&lt;br /&gt;
        right_motor-&amp;gt;setVelocity(0.5 * MAX_SPEED);&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
        // comportement suiveur&lt;br /&gt;
        else if (position[0]&amp;lt;-0.1)&lt;br /&gt;
        {&lt;br /&gt;
          left_motor-&amp;gt;setVelocity(0);&lt;br /&gt;
          right_motor-&amp;gt;setVelocity(0.5 * MAX_SPEED);&lt;br /&gt;
        }&lt;br /&gt;
        else if(position[0]&amp;gt;0.1)&lt;br /&gt;
        {&lt;br /&gt;
          left_motor-&amp;gt;setVelocity(0.5 * MAX_SPEED);&lt;br /&gt;
          right_motor-&amp;gt;setVelocity(0);&lt;br /&gt;
        }&lt;br /&gt;
        else &lt;br /&gt;
        {&lt;br /&gt;
          left_motor-&amp;gt;setVelocity(0.5 * MAX_SPEED);&lt;br /&gt;
          right_motor-&amp;gt;setVelocity(0.5 * MAX_SPEED);        &lt;br /&gt;
        }&lt;br /&gt;
      }  &lt;br /&gt;
           &lt;br /&gt;
      // récupère le prochain paquet&lt;br /&gt;
      receiver-&amp;gt;nextPacket();&lt;br /&gt;
      &lt;br /&gt;
     } &lt;br /&gt;
    &lt;br /&gt;
     else &lt;br /&gt;
     {&lt;br /&gt;
        if (message_printed != 2) &lt;br /&gt;
        {&lt;br /&gt;
          printf(&amp;quot;Follower 1 NOT communcating with master\n&amp;quot;);&lt;br /&gt;
          message_printed = 2;&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // code de nettoyage&lt;br /&gt;
  delete robot;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Clément Luton</name></author>
		
	</entry>
</feed>