Robot transporteur : Différence entre versions

De Wiki de bureau d'études PeiP
(La programmation)
(La programmation)
Ligne 53 : Ligne 53 :
 
''/* partie à détailler avec une vue d'ensemble des fonctions développées et plus de détail sur les algorithmes utilisés*/''
 
''/* partie à détailler avec une vue d'ensemble des fonctions développées et plus de détail sur les algorithmes utilisés*/''
  
 +
[[Fichier:main.jpg]]
 
Nous avons choisi de programmer en langage NXC (Not eXactly C) que nous avons compiler avec l'IDE BricxCC (Bricx Command Center).
 
Nous avons choisi de programmer en langage NXC (Not eXactly C) que nous avons compiler avec l'IDE BricxCC (Bricx Command Center).
 +
 
Nous avons décider de faire suivre au robot un ensemble d'action dans un ordre précis :
 
Nous avons décider de faire suivre au robot un ensemble d'action dans un ordre précis :
  

Version du 3 mars 2013 à 15:10

/* des coquilles / fautes à corriger => revoir l'utilisation de l'infinitif / participe */

Introduction

Nous allons vous présentez notre projet pour le bureau d'étude IMA 2012/2013. Nous sommes tous les deux très intéressé par ce département, et ce petit robot nous a passionné dans sa conception et sa programmation. Nous avons choisi de mélanger les différents style de robot à concevoir, pour proposer une idée personnelle de projet. Notre objectif est de créer un robot autonome qui transporte des objets. Cela passe par deux grandes étapes : la conception d'un système à 4 servomoteurs et la programmations des tâches réalisées en autonomie.

La Conception

Le robot est composé deux éléments essentiels : une base motrice et une pince de levage. Il comporte aussi deux capteurs pour le rendre autonome.

La base motrice

receptacle
Réceptacle pour boîtes NXT et Foxboard

La base est composé de deux servomoteurs qui sont reliés entre eux pour formé un socle solide. En effet, ce socle doit être capable de supporter le poids de deux boites NXT, ainsi que celui de la pince et de l'objet transporté. Les servomoteur entraînent la rotation de 4 roues sur lesquelles sont fixées des chenilles pour lui permettre d'avancer. La première boite NXT est directement fixée sur les servomoteurs, puis derrière, nous avons mis en place un réceptacle capable de contenir une deuxième boite NXT ou une Foxboard (nous ne savions pas encore comment guider le robot) La structure devait être solide, car on devait encore ajouter la pince de levage sur le dessus. Voici quelques illustration de la construction.

basemoteur
Base motrice à chenille, composée de deux servomoteur

La pince de levage

La pince de levage a été l'objet de toute la première séance, et aussi l'élément le plus compliquer à assembler. Nous avons été confronté à plusieurs contraintes : le poids des objets transporté, la résistance du système de levage, et l'adaptation de la forme de la pince.

Nous avons d'abord crée une pince composé de deux servomoteurs pour le serrage et un autre pour le levage de la pince, mais ce système était trop lourd et peu pratique à solidariser avec le reste du robot. Nous avons donc évoluer vers un système plus léger composer de seulement 2 servomoteurs. Dans ce nouveau système, un servomoteurs était dédié à serrer la pince et l'autre à la soulevée par un mouvement de rotation. Le problème est que la pince était encore lourde et très peu facile à fixer, car tout était accrocher à l'avant du véhicule, il y a donc eu un problème de répartition de poids.Inutile de préciser qu'en ajoutant en plus un objet dans la pince, le robot se serait effondré.Nous avons alors pensé à mettre en place une poulie, qui a permis de surpasser tout ces obstacles.

modelepince
Modèle de la pince, avec un bras mobile fixé sur le servomoteur et une barre fixe

La pince est donc composé de deux partie :

  • Un servomoteur fixé sur le dessus du robot, pour répartir le poids et assurer une fixation solide. Sur ce moteur, nous avons fixer de petits embouts, ainsi que l’extrémité d'un fil. De cette manière quand le moteur tourne, le fil s'enroule autour d'eux. C'est donc la poulie.
  • Un servomoteur relié à l'avant du véhicule par une liaison pivot. Il peut donc se déplacer de haut en bas sans problème. Ce moteur permet de serrer la pince par une rotation d'une des deux branches qui la compose. Vous verrez ci-dessous que la pince est constituée d'une barre fixe sur laquelle s'appuie l'objet quand la pince est en position fermée, et d'une partie partie mobile , liée au moteur (en arc de cercle pour favoriser la prise des objets à transporté) qui change de position pour ouvrir et fermer la pince. L'autre extrémité du fil, provenant de la poulie, est fixé sur la barre fixe.

Nous avons donc une pince qui se ferme pour saisir un objet, puis qui se soulève et redescend grâce à une poulie, pour enfin se rouvrir et déposer l'objet.

/* attention à ne pas confondre "er" et "é" .. */

Les capteurs

Le robot est doté de deux capteur : un capteur de couleur pour suivre une ligne, et un capteur RFID qui lui sert à détecté les bases sur lesquelles il doit effectuer une action.

Nous avions d'abord penser à installer un capteur de pression sur la pince pour vérifier si l'objet était bien serrer dans la pince. Mais celui-ci s'est avéré inutile après programmation, car le programme permet de serrer l'objet autant qu'il faut pour que l'objet soit correctement maintenu. La détection de pression n'était donc pas nécessaire.

capteur
Emplacement des capteurs sur le robot

En revanche,comme nous voulions faire un robot guider par des lignes de scotch noires au sol, nous avions besoin d'un capteur de couleurs. La difficulté est que ce capteur n'a qu'une très courte portée, c'est pourquoi nous avons du le placer dans un endroit ou il serait immobile, le plus proche du centre de l'avant du robot et le plus proche du sol possible. De cette façon, la détection est bonne continue, et permet une bonne correction de trajectoire. Cependant, le robot n'était pas conçu pour avoir un capteur à cet endroit, nous l'avons donc décentré un peu. Mais après quelques test, la position que nous avons choisi, nous a permis d'obtenir une trajectoire correcte.


Le capteur RFID a été beaucoup plus simple à installé, car il a une plus grande portée (3cm). Nous l'avons donc placé juste à coté du capteur de couleur. Cet emplacement, permet une bonne détection des cartes RFID,et le robot distingue facilement la position des objets a transporter.


Robot final

Voici l'allure de notre robot totalement assemblé, on peut voir les capteurs, la pince, mais surtout le fil qui relie la poulie et la pince.

final
Robot totalement assemblé

La programmation

/* partie à détailler avec une vue d'ensemble des fonctions développées et plus de détail sur les algorithmes utilisés*/

Fichier:Main.jpg Nous avons choisi de programmer en langage NXC (Not eXactly C) que nous avons compiler avec l'IDE BricxCC (Bricx Command Center).

Nous avons décider de faire suivre au robot un ensemble d'action dans un ordre précis :

Gestion de la pince

Le programme que nous avons conçu, se décompose en 4 partie :

  • serrer la pince : cette fonction reçoit un ordre de la boîte maître qui lui dit de serrer la pince.
  • lever la pince : la pince est remontée en effectuant une rotation de 3 tours environ de la poulie.
  • baisser la pince : elle effectue l'inverse de la fonction pour lever la pince.
  • ouvrir la pince : cette fonction ouvre la pince et indique au maître que l'objet a été déposé.

Le problème majeur, a été d’enchaîner ses tâches de manières fluide. Ce problème était en partie du aux pertes de données Bluetooth.

Gestion des déplacements

Gestion des connexions Bluetooth

Pour gérer les connexions Bluetooth, nous avons inclus une bibliothèque bluetooth dans notre programme. Cela nous a permis d'utiliser un certain nombre de fonctions prédéfinies pour faire communiquer nos boîtes NXT entre elles.