Skip to main content

Projet ROB3 : Fares, Ilyes, Albéric

Introduction

Dans le cadre de ce projet de robotique nous avons à réaliser un robot écrivain. Celui-ci dispose de plusieurs fonctions et mode qui participe à la complexité de ce projet. 

En premier lieu nous avons le mode manuel qui pilotera le robot à l'aide d'un joystick afin de dessiner ce que l'on souhaite. De plus notre robot dispose de quatre fonctions supplémentaires qui dessinerons de manière automatique une cercle et une ligne.

Le présent document détaille les exigences du projet, les différentes étapes de sa réalisation, ainsi que les ressources et les échéances qui nous guideront tout au long de ce processus.

Cahier des charges 

Dans ce cahier des charges, nous sommes chargés de concevoir un robot capable de réaliser des dessins sur une surface plane. Nous devons lui permettre d'accomplir différentes tâches, telles que tracer des lignes et des cercles de longueurs et de rayons spécifiques dans un temps défini. De plus, il doit être en mesure de reproduire un dessin particulier dans un carré donné, tout en étant contrôlé par un joystick pour son mouvement. Nous pouvons envisager d'ajouter une fonctionnalité supplémentaire pour ajuster la vitesse du robot selon les besoins. Les contraintes incluent l'utilisation exclusive des équipements du FABLAB de Sorbonne Université, le choix des composants prédéfinis, la fabrication des pièces avec des machines spécifiques, et la programmation en C via l'IDE Arduino. Notre objectif sera également de minimiser la quantité de matériau utilisé pour ce projet.

Conception préliminaire 

Voici trois choix possible de conception du robot : LES DESSINS NE SONT PAS AUTO-SUFFISANTS. QUELQUES MOTS DE DESCRIPTION S'IMPOSENT POUR CHAQUE SOLUTION. METTEZ PLUS DE CONTRASTE ON NE VOIT PAS BIEN. APPLIQUEZ VOUS UN PEU PLUS.

PAR EXEMPLE POUR LE PREMIER: 

image.png

Solution 1 :


La première solution utilise pour les mouvements dans le plan (horizontal)horizontal de la feuille un mécanisme en boucle fermée à 5 barres , 5 liaisons pivot, dont deux sont motorisées. Voir une explication de son fonctionnement sur ce site . Pour les mouvements verticaux, on produit une translation verticale de la base qui soulève l'ensemble du robot.

Solution 1 :


Solution 2 : 

Solution 3 : 


L’idée 3 à été écarté des possibilités en raison des composants disponibles.

Solution  Avantages Inconvénients

Idée 1

-Facilité de conception 

-Esthétique

-Précision : pas de contraintes mécanique trop importante sur l'axe des servomoteurs

 

-Possibilité d'une écriture du code plus complexe en raison de la forme.
Idée 2

-Mise en place simple

-Architecture simple

-Pas de contrainte potentielle sur les composants

-Possiblement difficile à réaliser car la contrainte mécanique sur l'axe d'un des servomoteur.

-Pas spécialement beau

 

Idée 3

- modèle cinématique facile à réaliser

-Guidage difficile à réaliser au niveau des courroies

-Composant non disponibles: courroie

-possibilité de perte de précision lors des déplacements à causes des roulements

Nous avons décidé après l'étude des différentes solution de sélectionner la première proposition. D'une part puisque nous trouvions le design  agréable et original. Et d'autre part pour certaines raisons pratiques cités ci-dessus. 

Ensemble des tâches à réaliser pour la conception du robot :

Voici dessous l'ensemble des tâches réaliser lors des différentes étapes de la réalisation de ce projet. 

image.png

Diagramme de Gantt :

image.png

Schéma electronique :

image.png

Code provisoire : 

#include <Arduino.h>
#include "Servo.h"

int axey = A1;  
int axex = A0;  
int valeurX;
int valeurY;
Servo servo1;
Servo servo2;

void setup() {
  // put your setup code here, to run once:
  servo1.attach(6);
  servo2.attach(5);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  valeurX = analogRead(axex);
  valeurY = analogRead(axey);
  valeurX = map(valeurX,0,1023,0,180);
  valeurY = map(valeurY,0,1023,0,180);
  servo1.write(valeurX);
  servo2.write(valeurY);
  delay(100);

  Serial.print("x = ");
  Serial.print(valeurX);
  Serial.print("   Y = ");
  Serial.println(valeurY);

}