README.md 3,09 ko
Newer Older
mg134448's avatar
mg134448 a validé
#### Réalisation d'un robot autonome 
###### (M2 IWOCS, Remi Colet, Jules Quesney, Délia Weber, Geoffroy Millon)


## Arduino

Le projet est composé d'un arduino uno R3. Lui sont reliés :

- deux moteurs (avec roues)

- un capteur ultrason 

- un accéléromètre

#### Fonctionnement 

- Déplacement : les deux moteurs, une fois alimentés permettent au robot de se déplacer. Le robot se déplace sans cesse (tout droit gauche ou droite).

- Détection d'obstacle : le capteur ultrason permet au robot de détecter les éventuels obstacles se trouvant devant lui. Si le capteur détecte un obstacle alors le robot tournera aléatoirement à gauche ou à droite puis continuera d'avancer 

- Orientation et vitesse de déplacement : l'accéléromètre permet au robot de déterminer sa vitesse et son orientation 


#### Difficultés et solutions mises en place  : 

- Le capteur ultrason devait être le moyen pour le robot de détecter et d'analyser les obstacles qu'il rencontre afin de les matérialiser sur une interface Web. Cependant le capteur ultrason, produisant parfois des données inexactes et ne détectant que les surfaces planes étant exactement en face de lui il n'est pas possible d'identifier correctement les différents obstacles situés dans une pièce. 

- L'accéléromètre devait, originellement, être en mesure de déterminer la vitesse du robot. Malheureusement, les mesures retournées l'accéléromètre sont très variables et ne sont pas fiables, il nous est donc impossible de connaître la vitesse du robot chaque instant. En plus de la vitesse nous pensions pouvoir déterminer l'orientation du robot grâce à l'accéléromètre, malheureusement ça n'est pas possible. Seuls les axes de rotation  'pitch' et 'roll' peuvent être déterminés grâce aux mesures de l'accéléromètre. L'axe de rotation 'yaw' aurait put être détermine grâce à un magnétomètre. 
Pour palier à ce problème le robot retourne des valeurs codées 'en dur'. Nous considérons que lorsque le robot avance il se déplace à une vitesse de 0.16666m/s et à une vitesse de 0.016666 m/s lorsqu'il tourne. 
En ce qui concerne l'orientation, le robot ne se déplaçant jamais tout droit (car nous n'avons pas de servomoteur), nous considérons que son orientation augmente de 1 degrés lorsqu'il avance et de 22 degrés lorsqu'il tourne. 

mg134448's avatar
mg134448 a validé
Le fichier contenant le code source destiné a l'arduino se trouve dans le dossier 'arduino' a la racine du dépot et se nomme **'Arduino_sketch.ino'**.
mg134448's avatar
mg134448 a validé


## Serveur Web

Notre serveur web, est un serveur nodejs auquel nous avons ajouté les dépendances suivantes : 

- serialport
- @serialport/parser-readline
- http
- http-proxy-middleware
- ws

La récupération des données produites par l'arduino est effectuée par le biais du package npm serialport. Le package websocket permet permet d'établir des communications directes avec les différents clients connectés au serveur. 
Chaque paquet reçu depuis l'arduino est directement broadcasté vers les clients connectés au serveur web. Par la suite chaque client interprète les donnés reçues et les dessine par le biais d'un canvas.