Robots mobiles

De Wiki d'activités IMA
Révision datée du 9 mai 2011 à 14:38 par Ynguieye (discussion | contributions) (1e séance)

Présentation

Le but est de concevoir un robot capable de se déplacer dans un environnement hostile (avec des obstacles). Le robot doit pouvoir être contrôlé à distance par une interface web, l'utilisateur pouvant visualiser l'environnement grâce à une webcam. L'utilisateur ne pouvant pas toujours voir les obstacles à temps ou hors champ de la caméra, c'est au robot de refuser les ordres le faisant entrer en collision avec un obstacle.

Préparation du projet

Matériel requis

  • un premier châssis motorisé (disponible en E304 actuellement puis en E306 à terme) :
    • moteurs contrôlés par un micro-contrôleur de type Arduino ;
    • sonar et capteur de couleur géré par le micro-contrôleur ;
  • un second châssis motorisé (disponible en salle après l'interruption pédagogique):
    • moteurs contrôlés par Phidgets USB ;
    • capteurs contrôlés par une carte Altium ;
  • capteurs pour le premier châssis; détecteur de couleurs (à votre charge, commandé) ;
  • capteurs pour le second châssis; détecteur d'obstacle, détecteur de couleurs (à votre charge) ;
  • carte FoxBoard pour implanter l'algorithme du robot (disponible);
  • petit matériel divers :
    • connecteur pour le sonar (disponible);
    • vis (précisez);
  • plateforme Altium.

Commentaires des encadrants sur le matériel

Vous devez vous même donner les références des capteurs à installer sur les châssis. Pour le premier châssis, il est clair que vous devez trouver un capteur de couleurs prévu pour Arduino. Pour le second châssis, il faut trouver des capteurs adaptés à la plateforme Altium. Dans les deux cas le coût doit être ajusté. Le capteur de couleur pour le premier chassis a été commandé. Pour la fixation des détecteur la bande adhésive ne peut être qu'une solution à court terme. Donnez les caractéristiques des pièces nécessaires pour une fixation propre.

Commentaires des élèves sur le matériel

Pour le premier chassis nous avons trouvé le capteur DFRobot Grayscale Sensor ( pour plus d'informations [1] ). Ce dernier est compatible avec l'Arduino. Recherche d'un fournisseur français pour le capteur indiqué précédemment : [2]

Avancement du projet

Objectifs suggérés par les encadrants

  • Le premier châssis comporte des LEDs bleues pour des raisons esthétiques, une des ces LEDs est défaillante, résoudre le problème avec le liquide conducteur (attention toute manipulation approximative peut détruire l'électronique du châssis). FAIT
  • Installer et gérer le sonar sur le premier châssis, le montage du sonar sur un servo peut être un plus. FAIT
  • Sélectionner, acheter, installer et gérer le capteur de couleurs du premier châssis.

Realisations concrètes

  • Châssis 1 (arduino)
    • Réparation de la LED
    • Montage définitif du sonar sur un servomoteur fixé à l'avant du châssis
    • Implantation du code final pour la détection d'obstacles et correction de trajectoires
    • Fixation de la foxboard à l'arrière du châssis
    • Système Débian installé sur la fox
    • Alimentation de la fox par des batteries
    • Configuration de l'accès au réseau par wifi (Dongle Wifi)
    • Gestion du robot par liaison série à l'aide de la fox
    • interface web pour la gestion du robot (Marche/arrêt, commande ...)
    • Commande du robot via l'interface web


  • Châssis 2 (Phidgets)
    • a venir

1e séance

2e séance

  • Objectif
    • Prise en main du premier châssis et réalisation d'un programme test pour la commande des moteurs
  • Travail réalisé
    • Implantation du programme pour les moteurs
    • Correction d'une défaillance observée par rapport aux chenilles (ne tourne pas à la même vitesse)

3e séance

  • Objectif
    • Prise en main du second châssis
    • Prise en main du protocole de communication zigBee
    • Commande du servomoteur par la carte Arduino sur le premier châssis
    • Détection d'obstacles et déviation
  • Travail réalisé
    • Premier chassis
      • Commande du servomoteur
      • Détection d'obstacles par le châssis
    • Second chassis
      • Prise en main du second chassis à l'aide d'exemples recuperés sur le site phidgets.com [3]
      • Test du chassis avec une fonction moteur-simple.c qui permet de gérer la vitesse du chassis.
      • Test du capteur de distance avec la fonction InterfaceKit-simple.c qui permet de gérer la distance à laquelle se trouve un objet. Ce capteur sera utile pour éviter les obstacles.
      • Capteur de couleur pour le second chassis [4]

4e séance

  • Objectif :
    • Commander le robot en mettant en place un programme pour gerer le capteur de distance et la motricité du deuxième chassis.
    • Finaliser le programme de gestion du premier chassis.
  • Travail réalisé
    • Premier châssis
      • Finalisation du code pour la détection d'obstables
    • Second châssis
      • Création d 'un programme permettant d’arrêter le robot si le capteur un obstacle a moins de 100 cm du capteur.
      • Création d'un répertoire test avec les fonction interface-kit.c Moteur-simple.c de phidget.com et une fonction test.c
      • Fichier test.h et Makefile pour la compilation.
      • Fonction test.c contient de thread permettant de gérer le capteur de distance et la motricité des roues.
      • Test de la fonction test.c : compilation correcte mais résultat décevant en fin de séance!


5e séance

  • Objectifs
    • Amélioration du programme pour la détection obstacle sur le châssis 1
    • Montage d'un plexiglas sur le châssis 1 pour accueillir la foxboard
  • Travail réalisé
    • Premier châssis
      • Correction du bug sur le contournement d'obstacles
      • Perçage et fixation du plexiglas sur le châssis (par l'aide de l'enseignant)
      • Montage de la foxboard sur le plexiglas à l'aide de lego et de la colle
      • Ordre sur les câbles de connexion grâce à des colliers
    • Deuxième châssis
      • Gestion de l'avancée du robot et du capteur de distance réussie .
      • Programmes test.c, interfaceKit-simple.c et MotorControl-simple.c ( programmation bi-threads : thread moteur et thread capteur).
      • Élaboration de l’architecture technique du robot.
      • Emplacement du servomoteur qui gère la rotation du capteur de distance.
      • Emplacement du contrôleur du servomoteur.

Difficultés rencontrées

  • Deuxième châssis : le programme IR-simple.c qui gere les capteurs infrarouge a un problème ( Solution en cours !)

6e séance

  • Objectifs
    • Démarrer la foxboard avec le système Debian
  • Travail réalisé
    • Premier châssis
      • Téléchargement du système 'lego' sur la foxboard
      • Initialisation de la liaison série pour la communication avec arduino
      • Recherche d'un emplacement sous le châssis pour installer le capteur de couleur
    • Second châssis
      • Installation du servo moteur et controlleur de servo.
      • Test de la fonction Servo-simple.c
      • Implatation d'un thread pour gérer le capteur.
      • Programmation des méthodes: rotation droite, rotation gauche, avancer et recul.

Difficultés rencontrées

  • Deuxième châssis : le servomoteur ne tourne pas ( Solution en cours !).

7e séance

  • Objectifs
    • Installer le capteur de couleur sur le châssis 1
    • Écrire un programme pour tester le capteur de couleur
    • Correction du programme de gestion de la liaison série sur la foxboard
  • Travail effectué
    • Premier châssis
      • Test de la liaison série: le robot ne reçoit pas correctement les ordres (bug à corriger dans le programme)
      • Le capteur de couleur ne différencie pas correctement les niveaux de gris: l'ampoule peut être défectueuse
    • Deuxième châssis
      • Test du programme: le robot évite les obstacles devant lui et continue sa trajectoire.
      • Mise en ordre des différentes fonctions de gestion du robot dans un fichier test.c
      • Test le long d 'un parcours du robot.

8e et 9e séance

  • Objectifs
    • Installer le capteur de couleur sur le châssis 2 : lego
    • Écrire un programme pour tester le capteur de couleur
    • Écrire le foxboard pour la gestion de la liaison série
  • Travail réalisé
    • Premier châssis
      • Utilisation de l'adaptateur pour se connecter en wifi
      • Paramétrage du site web pour la commande du robot
    • Second châssis
      • Utilisation du capteur de couleur de lego mindstorms
      • Probleme avec le driver i2c de la foxboard G20

10e 11e et 12e séance

  • Objectifs
    • Test supplémentaire sur le capteur de couleur (châssis 1)
    • Mise en place des fonctions nécessaires pour la communication par le site web (châssis 1)
  • Travail réalisé
    • Premier châssis
      • Le capteur de couleur ne fonctionne pas en cas de faible éclairement (à changer)
      • Ajout des différentes fonctions nécessaires à la commande du robot par le web
    • Second châssis
      • Compilation du noyau de la foxboard ayant les drivers i2c
      • Test des fonctions examples au niveau de la foxboard

13e séance

  • Objectifs
    • Développement de l'interface de commande par le site web (châssis 1)
    • Test d'envoi de commande par l'interface web (châssis 1)
  • Travail réalisé
    • Premier châssis
      • Développement des fonctions associées à la liaison série
      • Le robot est maintenant commandé par l'interface web
    • Second châssis
      • Programme de gestion du robot par un utilisateur
      • Demarrage de la configuration de l'interface web

14e séance

  • Objectifs
    • Conception de l'algorithme pour le suivi de trajectoire (châssis 1)
    • Réalisation d'un test sur le grand circuit (châssis 1)
  • Travail réalisé
    • Châssis 1
      • Démarrage et arrêt du robot par l'interface web (fichier configure.php et conduire.php)
    • Châssis 2
      • Configuration de l'interface web
      • Programme de lecture des commandes de l'interface web


15e séance

  • Objectifs
    • Réaliser le support pour le capteur de couleur (châssis 1)
    • Câbler le capteur de couleur suivant le schéma requis (châssis 1)
    • Test d'un programme exemple sur l'arduino (châssis 1)
  • Travail réalisé
    • Châssis 1
      • Support pour le capteur de couleur
      • Test d'un programme exemple
    • Châssis 2
      • Commande du robot par interface web
      • Mise en place d'un programme de choix du mode de gestion du robot


Résultats

Nous sommes arrivés à concevoir des robots fonctionnels, notamment pour la présentation video. Le robot basé sur un micro contrôleur Arduino est opérationnel et prêt à répondre à vos ordres via son interface Web. Pour le suivi de ligne, le fonctionnement dépendra fortement de l'environnement dans lequel vous vous trouvé (peu de luminosité ...).

Rib final.jpg