Séance 5

Lors de cette séance j’ai amélioré le déplacement de la balle. En effet elle ne se déplace plus de façon diagonale et maintenant va dans 2 directions et 4 sens:

-Vers le haut (y-1)

-Vers le bas (y+1)

-Vers la droite (x+1)

-Vers la gauche (x-1)

 

Cela créer un déplacement qui paraît plus fluide dans les lignes droite même si la balle rebondit plus dans les grands virages arrondis. Cela crée aussi un bug inattendu: quand la balle touche une un route perpendiculaire à sa trajectoire (comme dans une intersection en T) elle continue tout droit hors de la route.

En solution à ce bug je propose de rajouter un caractère aléatoire au mouvement de la balle pour que lorsqu’il se retrouve face perpendiculairement à une route.

 

Séance 4

Jacques:

Lors de cette séance j’ai amélioré la partie “dessin” du programme en créant une marge de 10 pixels dans laquelle on ne peut pas dessiner la route. Si l’utilisateur déplace sa souris Cela créer dans la marge la route va se dessiner sur le point de coordonnées le plus proche.

 

On a trouvé une solution possible à notre problème principal:

On pourrait créer un programme auxiliaire qui se déclenche automatiquement après que l’image à été créé et enregistré. On pense que ce serait possible d’indiquer comme paramètre que le programme charge l’image crée lors de la première partie pour ensuite l’utiliser comme image de fond. Ce programme auxiliaire s'éxecutera probalement dans une deuxième fenêtre.

Séance 3

La première partie du programme a été conçue Jacques Wenger:

On a réussi à créer une version fonctionnelle du programme. Notre programme est maintenant en deux parties:

La première partie du programme que l’on appelle la partie “dessin” a été écrite sous processing et permet de dessiner une image d’une route noire sur un fond blanc.

On peut dessiner une route grâce à la souris à travers les fonction mouseX et mouseY qui permettent de connaître la position de la souris. L’on utilise aussi la fonction ellipse.

L’utilisation de ces deux commandes nous donne:

ellipse(mouseX,mouseY,r,r)     r est une variable appelée au début du programme qui définie                      ,                                                  les deux rayons de l’ellipse.

Tout cela permet de dessiner une route selon la position de la souris.

 

On a aussi utilisé les fonction exit et save pour enregistrer la route sous forme d’un fichier image png et quitter le programme. Le fichier image s nomme “route.png” et est enregistré dans le même dossier que le programme.

 

Il me reste donc trois choses à améliorer:

-Créer une marge sur les bords de l’image tel que l’on ne peut pas déborder.

-Améliorer le temps que le programme a besoin pour quitter. En effet il a besoin de quelques secondes pour quitter le programme ce qui perturbant et inutile.

-Rajouter des utilités au programme comme un moyen d'effacer partiellement ou entièrement la route que l’on a dessiné. Aussi un moyen de bouger la souris sans qu’elle dessine une route. Une idée est que l’on pourrait dessiner seulement quand l’on a enfoncé le clic de la souris.


 

La seconde partie du programme est la plus complexe et son fondement a été conçu par Ludovic Delsol:




Il nous reste encore une importante amélioration à effectuer: notre programme est en deux parties car il faut enregistrer l’image et ensuite la charger dans la seconde partie du programme.

Séance 2: Fonctionnement du robot.

Comment un robot peut-il se déplacer de façon indépendante ?

Partie 1: mode automatique

Principe: Le robot devra être capable de s'adapter à certaines situations:
 -détecter la route.
-détecter un virage.

-détecter la lumière rouge.
-détecter un obstacle.

I. Comment détecter la route ?
  Avec un détecteur de lumière.
        A. Comment le détecteur saura si il est au dessus de la route?
        Si le détecteur se trouve au-dessus de la route (noire) alors il devrait envoyer une valeur plus faible                 que si il serait au dessus d'une surface blanche.
        B. Comment réagir face à la présence de la route ?
        Si le robot détecte la route alors il avancer tout droit jusqu'à un virage.

II.Comment détecter un virage?
Trois détecteurs seront placés à l'avant du robot. Si un détecteur envoie une valeur supérieure au palier alors le robot est soit face à un virage soit il a dévié de la route.
        A. Comment faire tourner le robot ?
        Pour faire touner le robot il suffit de changer la tension délivrée à un des moteurs du robot.
        B. Comment savoir de quel côté tourner?
        Si le détecteur gauche envoie un valeur plus forte que le palier mesuré alors le robot devra fournir une             tension plus forte au moteur gauche et inversement.

III. Comment détecter la lumière rouge ?
1ere solution: Une petite caméra arduino sera placée sur le haut du robot et enregistrera une image toutes les secondes.
2se solution: Une photoresistance sera placée dans la même direction que le feu rouge de sorte que le lumiere du feu rouge permette d'activer le photoresistance.
        A. Comment interpréter l'image de la caméra/activation de la photoresistance?
        1ere: Si une certaine quantité des pixels de l'image obtenue contiennent un certain taux de rouge alors le          robot devra s'arrêter.
         2se: Si la photorésistance revoie un signal plus puissant qu'un certain palier alors le robot devra s'arrêter.

IV. Comment réagir face à la lumière rouge ?
Le robot devra s'arrêter tout en vérifiant continuellement si la lumière est toujours rouge.
        A. Comment arrêter le robot?
        La tension délivrée aux moteurs devra être nulle.
   
V. Comment détecter un obstacle ?
On utilisera un système de réflection infrarouge.
        A. Comment mettre en place un système de réflection infrarouge?
        On utilisera un émetteur et un détecteur infrarouge. L'émetteur émet un rayon infrarouge qui devrait être         refleté par un obstacle éventuel. Le détecteur captera cette reflection. Si Le détecteur signale qu'il a             reçu une réfection cela voudra dire qu'il y a un obstacle devant le robot.
        B. Comment réagir face à un obstacle ?
        Le robot devra s'arrêter tout en verifiant continuellement si l'obstacle est toujours présent.

Partie 2: mode manuel

Principe: On devra être capable de conduire manuellement le robot, nous pourrons donc:
-Tourner avec au moins deux intensités (de préférence de manière analogique).
-S'arrêter et redémarrer.
-Contrôler le robot
sans fil.
-Le tout à partir d'un deuxième appareil (ordinateur, téléphone ou télécommande).
-Changer de vitesse.
-Remise en mode automatique.


I. Comment changer la vitesse du robot ?
Grâce à  panneau de commande on pourra changé la tension du courant que l'on envoie dans les moteurs.
        A. Comment changer le sens de déplacement du robot ?
        De la même manière, en variant l'intensité du courant.

II. Comment arret et démarrage du programme
On pourra utiliser une fonction similaire à la fonction exit().  Il faudra que le robot soit prêt à redémarrer son fonctionnement.

III. Comment controller le robot sans fil
On peut utiliser un bridge (carte d'extebsion) bluetooth pour la carte arduino. Elle devra permettre à l'utilisateur du robot de le contrôler en mode manuelle sans s'encombrer d'un fil.

IV. Comment remettre le robot en mode automatique
On devra être capable d'alterner entre deux fonction void. Une fonction pour la mode automatique et une pour la mode manuelle.

Modifié le 11/01/2016

Séance 1: Organisation globale du project

 

Le but de notre projet est de créer un robot relativement indépendant, c’est à dire capable de s’adapter à des situations différentes à chaque instant.

A la manière du Google car, notre robot suivra un ligne blanche, s'arrêtera à un feu bicolore ou si il détecte un obstacle proche. En outre, d’autres fonctionnalités, plus ou moins utiles, pourrons être ajoutées par la suite.

De plus, certains paramètres pourront être modifiables par l’utilisateur au lancement du programme afin s’adapter à l’environnement de test. D’autres seront modifiables à tout moment par l’utilisateur comme la vitesse du robot ainsi que l'arrêt du programme et aussi le sens de déplacement du robot.

Notre projet évoluera sûrement après avoir étudie en cours le langage arduino et la robotique.

 

Problématique: Comment un robot peut-il se déplacer de façon indépendante dans un environnement modifiable par l'utilisateur ?

 


Schéma de l'organisation globale du robot.

Setup

Lumière au dessus de la route (lumière ambiante)= palier

Valeur de l’infrarouge reflété par un obstacle = reflet

Draw


1.Détection de franchissement de ligne

Si aucun capteur envoie une valeur au dessus du palier alors les moteurs reçoivent la même tension.

Si le capteur de lumière A envoie une valeur au dessus du palier alors le moteur D reçoit une plus haute tension que le moteur G.

Si le capteur de lumière C envoie une valeur au dessus du palier alors le moteur G reçoit une plus haute tension que le moteur  D.

Si le capteur de lumière A et B envoient une valeur au dessus du palier alors le moteur D reçoit une tension encore plus haute que le moteur G.

Si le capteur de lumière C et B envoient une valeur au dessus du palier alors le moteur G reçoit une tension encore plus haute tension que le moteur  D.

Si aucun des capteurs envoient une valeur supérieure au palier alors les moteurs G et D reçoivent une tension égale.

 

2.Détection d’obstacle

Si le capteur I reçoit une valeur au dessous du palier “reflet” alors les tensions des moteurs ne varient pas. Sinon les moteurs reçoivent une tension nulle.


3.Régulation de la vitesse via une commande extérieur

L’utilisateur pourra grâce à un panneau de contrôle modifier à tout moment la vitesse du robot.

Pour cela il déclenche un interrupteur qui permet de changer la valeur de la vitesse globale du robot (à travers la valeur des tensions données aux moteurs). Le robot change aussi la valeur des différences de tensions des moteurs lors des virages.

Le 03/01/16

Carnet de bord 14/12/2015

Changement de la problématique:
-Comment un robot peut-il se déplacer de façon indépendentante dans un environnement modifiable
par l'utilisateur?

Carnet de bord 07/12/2015

Changement du titre du projet en "Robot à déplacement indépendant".

Le robot sera basé sur un système arduino et devra être capable de suivre une route tracé au préalable mais inconnue du robot.

Il devra s'arrêter face à une lumière rouge et devra continuer face à une lumière verte (donc une lumière ne contenant pas de rouge).

Il devra peut-être aussi être capable de s'arrêter face à un obstacle quelconque.

Carnet de bord 17/11/2015

Liste de nouvelles idées:

  • Projet arduino du type "voiture" qui détecte la présence et la couleur d'obstacle ou de vive lumière (comme un feu de circulation). Le robot devra agir en fonction de la couleur détectée.
  • Machine arduino d'exploration permettant d'envoyer un "stream" video à un autre appareil avec un minimum de retard. Il faudra donc s'informer sur les manières de transmettre un flux d'information sans fil.
  • Machine arduino pouvant détecter la présence d'ultrasons d'émetteurs placés au préalable. Le robot devra réagir en fonction de la présence ou abscence des ultrasons et peut-être de leur longueur d'onde.
  • Système arduino permettant de gérer de façon indépendante toutes ou la plupart des fonctionnalités d'un bateau. Cela devra prendre en compte de nombreux facteur extérieur et donc l'information de nombreux senseurs à la fois. L'objectif de ce projet serait de faciliter la gestion d'un voilier de plaisance lors d'une escale ou même en haute mer.

Carnet de bord 13/11/2015

Recherche du projet.
Création d'un prototype de site web.

-robot autonome dans ses mouvements et avec un miminum de raisonnement.