# Projet ROB de Arnold, Evinia, Mathis

### Informations

- Membres de l'équipe 
    - <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Arnold AÏM</span></span>
    - <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Evinia ANASTASOPOULOU</span></span>
    - <span style="vertical-align: inherit;"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Mathis RENARD</span></span></span></span>

- Adresses mail : 
    - - <arnold.aim@etu.sorbonne-universite.fr>
        - [evanthia\_virginia.anastasopoulou@etu.sorbonne-universite.fr](mailto:evanthia_virginia.anastasopoulou@etu.sorbonne-universite.fr)
        - <mathis.renard@etu.sorbonne-universite.fr>

- Cursus 
    - - 1ere année cycle ingénieur en Robotique à Polytech Sorbonne

- Date de début - Date de fin 
    - 14/02/2024 - 23/05/2024

### <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Présentation du Projet</span></span>

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">L'objectif de ce projet est de réaliser un petit mécanisme robotisé permettant de dessiner des formes géométriques simples définies à l'avance ou à l'aide d'un joystick manipulé par l'utilisateur en temps réel en utilisant des mécanismes prédéfinis. </span></span>  
<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Pour la réalisation de ce projet nous respectons le cahier des charges défini par nos enseignants Guillaume MOREL et Lilian Carillet.</span></span>


### <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Cahier des charges et fonctions à réaliser</span></span>

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Le mais général est de faire un robot capable de dessiner avec un crayon. L</span></span>e robot est fixé sur un support carré horizontal comportant une petite zone de dessin. <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Un objectif important est d'utiliser un minimum en quantité de matière pour la réalisation du projet. La p<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">rogrammation est fait en C et en utilisant la chaîne de développement Arduino IDE. </span></span></span></span>Il y a 2 exercices que le mécanisme doit effectuer et un exercice/fonction optionnel.

#### Exercices à réaliser


***<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Exercice 1</span></span>***

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Avoir un code prédéfini pour que le mécanisme puisse tracer, en appuyant sur un seul button, les dessins suivants : </span></span>

1. <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Une ligne de 5 cm de long,</span></span>
2. <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Une ligne pointillée de 5cm de long,</span></span>
3. <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Un cercle de 2,5 cm de rayon,</span></span>
4. <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Un cercle pointillé de 2,5 cm de rayon.</span></span>

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Le tracé de chacune des figures doit être réalisé en </span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">10 secondes</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> +/- 0,2 secondes.</span></span>

***<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Exercice 2</span></span>***

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Dessiner une figure imposée dans un carré de 5cm par 5cm, tout en pilotant le mécanisme par un joystick.</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;"> Dans cet exercice il faut prendre en compte que la figure peut être discontinue, auquel cas l'effecteur du robot devrait être capable de se relever du support horizontal auquel il écrit.</span></span>

***<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Exercice 3 (optionnel) </span></span>***

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Ajouter une fonction supplémentaire qui sera capable de modifier la vitesse de déplacement du robot via l'interface.</span></span>

#### <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Matériel à notre disposition</span></span>

- Un crayon
- Interface de commande : 
    - Une carte arduino UNO avec câble USB-B;
    - Un joystick:
    - Une platine de protoypage;
    - Alimentation régulée 5V ;
    - Câbles, LEDs, boutons poussoirs, résistances.
- Motorisation : 
    - Deux servomoteurs HS422 180°;
    - Un servomoteur Emax ES08A 180°.
- Mécanique : 
    - Matière PLA pour impression 3D;
    - Feuilles medium : 3mm et 6mm d'épaisseur;
    - Vis et écrous : M2, M2.5, M3, M4.
    - Roulements et axes de diamètre 4mm.

<div aria-label="Page Section Options" class="pointer-container" id="bkmrk-%C2%A0-4" refs="pointer@pointer" tabindex="-1"><div class="pointer flex-container-row items-center justify-space-between p-s anim is-page-editable"><div class="flex-container-row items-center gap-s" refs="pointer@mode-section"><button class="text-button icon px-xs" title="Permalink mode, Press to show include tag"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button><div class="input-group"> <button class="button outline icon" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>

### <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Réflexion</span></span>

##### <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Idée Robot sur roues </span></span>

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Idée complexe à mettre en place, pas de roues à disposition donc fastidieux à construire plus compliquée de faire un circuit électrique propre à l'intérieur.</span></span>

[![brainstorming 1.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-02/scaled-1680-/Nm2brainstorm-1.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-02/Nm2brainstorm-1.jpg)

**Figure 1 : Idée de robot sur roues**


##### Idée Robot Type Imprimante 3D

Transformation de pivot en translation trop compliqué à faire car création de chaines en 3D trop dur à modéliser/ imprimer en 3D. Aussi, cela entraine une utilisation non pertinente des servomoteurs.

[![brainstorming 2.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-02/scaled-1680-/brainstorm-2.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-02/brainstorm-2.jpg)

**Figure 2 : Idée Robot Type Imprimante 3D**


##### Idée Robot Type FANUC

Nous avons ici une bonne utilisation des servo-moteurs, facile à modéliser/imprimer/découper par les outils en service.

[![1.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/scaled-1680-/1.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/1.jpg)

**<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Figure 3 : </span></span>Idée Robot Type FANUC**

##### <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Décision finale </span></span>

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Toutes les idées semblaient être plus ou moins possible à concevoir. </span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Nous avons décidé, après argumentations, discussions auprès du professeur, de retenir cette dernière solution car elle va produire des résultats plus précises.</span></span>

**<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Lien de notre diagramme de Gantt:</span></span>**

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">[https://docs.google.com/spreadsheets/d/1OmamPJELbAN48oTG1ooIXSrjbCt2yrp1qGpkE4TFLDg/edit?usp=sharing](https://docs.google.com/spreadsheets/d/1OmamPJELbAN48oTG1ooIXSrjbCt2yrp1qGpkE4TFLDg/edit?usp=sharing)</span></span>

### <span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Calcul du modèle géométrique inverse</span></span>

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">Premier idées de calcul de modèle géométrique, inverse, jacobienne… Finalement s'avérant inutile car le calcul d'angle était déjà donné dans le cours.</span></span>

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">[![1.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/scaled-1680-/6Vm1.jpg) ](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/6Vm1.jpg)[![1.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/scaled-1680-/7yK1.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/7yK1.jpg)</span></span>

[![1.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/scaled-1680-/zg31.jpg) ](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/zg31.jpg)[![1.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/scaled-1680-/w3E1.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/w3E1.jpg)

[![1.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/scaled-1680-/tpB1.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/tpB1.jpg)

**Figures 4 à 8 : Calcul du modèle géométrique**

Les formules de calcul finalement retenues sont donc les suivantes :

[![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/scaled-1680-/pyIimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-03/pyIimage.png)

**Figure 9 : Formules représentantes des angles**

Dans notre cas, il n'y a pas de bras violet, ni de bras rouge et vert en dessous. x' et y' deviennent juste x et y. Et theta3, alpha n'apparaissent plus dans le résultat final. Les angles du robot seront calculés dans une partie Matlab.



### Modélisation

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">[![projet.gif](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/Z5dprojet.gif)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/Z5dprojet.gif)</span></span>**Figure 10 : Mécanisme robotisé**

Notre robot se compose d'un châssis principal qui stabilise notre premier moteur HS422 180°, ainsi que d'un second bâti support plus petit qui supporte le servomoteur EMAX ES08A 180°. Deux palonniers sont utilisés comme bras. Le premier palonnier (le plus long), intègre le second moteur HS422 180°, responsable du mouvement de l'effecteur.

<span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">Nous avons décidé de positionner le servomoteur EMAX ES08A 180° à la sortie du premier servomoteur HS422 180° afin de contrôler à la fois les mouvements des bras du robot et leur rotation. Cette configuration et surtout cette rotation, nous permettra d'effectuer des dessins en pointillés en autorisant un mouvement vertical du stylo lorsque nécessaire ([Figure 11](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/screenshot-2024-05-22-221026.png)).</span>

[![Screenshot 2024-05-22 221026.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/screenshot-2024-05-22-221026.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/screenshot-2024-05-22-221026.png)

**Figure 11 : Rotation des bras**

#### Décomposition des éléments

##### <span style="text-decoration: underline;">*Bâti support*</span>

C'est le corps du robot. Il a été conçu pour maintenir notre premier servomoteur HS422 180° en place et il est capable de supporter le reste du robot. Le servomoteur permet la rotation du bras.

[![Screenshot 2024-05-22 111607.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/screenshot-2024-05-22-111607.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/screenshot-2024-05-22-111607.png)

**Figure 12 : Bâti support**



##### <span style="text-decoration: underline;">*Support petit servomoteur et support bras*</span>

Ces deux petit supports qui sont liés entre eux via l'actionneur du servomoteur EMAX ES08A 180° nous permettent :

- d'avoir un support pour le servomoteur EMAX ES08A 180°
- de transmettre la rotation du premier moteur au reste du robot
- d'avoir un support pour le bras du robot qui le relie à l' EMAX ES08A 180° et donc au corps
- de tourner le bras du robot pour contrôler si l'effecteur (crayon) touche ou pas la surface du dessin

Le support du petit servomoteur comporte l'empreinte du palonnier à la face du dessous ([Figure 14](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/ngvscreenshot-2024-05-22-224013.png)) pour bien le relier au premier servo. Nous avons décidé de placer un pont autour du servomoteur pour être sûr de son MAP avec le support. Nous avons aussi placé deux petits "freins" ([Figure 15](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/screenshot-2024-05-23-003150.png)) pour que le servomoteur puisse bien maintenir son position. Le palonnier du petit servomoteur est relié avec une vis centrale et deux fils de fer (parce que certains trous du palonnier sont trop petits et ne permettent pas l'insertion d'une vis) au support du bras. Cela fait partie du MAP de cet ensemble.

[![Screenshot 2024-05-22 223942.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/screenshot-2024-05-22-223942.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/screenshot-2024-05-22-223942.png)

**Figure 13 : Support petit servomoteur et support bras**

<table border="1" class="align-center" id="bkmrk-figure-13-%3A-support-" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>[![Ngvscreenshot-2024-05-22-224013.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/ngvscreenshot-2024-05-22-224013.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/ngvscreenshot-2024-05-22-224013.png)  
</td><td>[![Screenshot 2024-05-23 003150.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/screenshot-2024-05-23-003150.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/screenshot-2024-05-23-003150.png)</td></tr><tr><td class="align-center">**Figure 14 : Support servomoteur face du dessous**</td><td class="align-center">**Figure 15 : "Freins" (en bleu)**</td></tr></tbody></table>

##### <span style="text-decoration: underline;">*Bras*</span>

Le "main" du robot est composé de deux bras. Le premier (celui de gauche et donc celui qui est plus long, [Figure 16](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/screenshot-2024-05-23-002741.png)) comporte le troisième servomoteur (HS422 180°) qui réalise la deuxième rotation de l'effecteur dont on a besoin. Le deuxième bras ([Figure 17](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/screenshot-2024-05-23-002809.png)) comporte l'empreinte du palonnier pour qu'il puisse être rélié au servomoteur ainsi qu'un trou pour positionner le crayon.

<table border="1" id="bkmrk-figure-15-%3A-bras-lon" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>[![Screenshot 2024-05-23 002741.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/screenshot-2024-05-23-002741.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/screenshot-2024-05-23-002741.png)</td><td>[![Screenshot 2024-05-23 002809.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/screenshot-2024-05-23-002809.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/screenshot-2024-05-23-002809.png)</td></tr><tr><td class="align-center">**Figure 16 : Bras long**  
</td><td class="align-center">**Figure 17 : Bras en extrémité**</td></tr></tbody></table>



##### Fabrication des pièces

Toutes nos pièces sont fabriquées et prototypées en utilisant la méthode de découpe LASER Troctec Speedy 100. En effet, la précision de la machine permet d'obtenir des pièces précises et simples pour notre robot.


### Conception

Nous avons procédé à l'assemblage du robot en utilisant des vis et des écrous, de la colle à bois et des fils de fer. Cependant, le système initial avait un problème assez inqiétant, en raison d'une surcharge supportée par le petit servomoteur. Pour remédier à ce problème, nous avons réduit la taille du bras en extrémité. Par la suite, afin de faciliter sa manipulation lors du processus de dessin, nous avons fixé le robot sur un support en bois à l'aide de colle.

[![20240522_100001.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/20240522-100001.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/20240522-100001.jpg)

**Figure 18 : Robot monté**

### Schéma éléctronique

Sur notre schéma éléctronique il y a 4 boutons, chacun d'entre eux s'occupant d'un dessin prédéfini et un joystick analogique qui s'occupe du mode manuel, qui est tout le temps activé. Nous branchons les moteurs qui reçoient le signal en PWM representé par les petites vagues à côté de chaque pin (9, 10 et 11) de l'ARDUINO.

[![circuit_elec_propre.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/circuit-elec-propre.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/circuit-elec-propre.png)

**Figure 19 : Montage électronique**

Sur la [Figure 21](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/20240522-100004.jpg), nous pouvons visualiser le cablage qui a été fait en réalité et qui comporte tous les éléments éléctroniques dont nous avons besoin.

[![20240522_100004.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/20240522-100004.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/20240522-100004.jpg)

**Figure 20 : Système électronique**

### Programmation 

#### Organigramme

[![organigramme 2.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/organigramme-2.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/organigramme-2.png)

**Figure 21 : Organigramme du programme**

Pour le code du joystick on est parti d'une base existante qui est celle du code de Nacim et de Mehdy qui nous ont envoyé eux mêmes. Nous avons ensuite modifié ce code pour l'adapter à nos besoins, notamment la partie utilisant le bouton switch du joystick.

#### Tests du code et finalisation

Le premier test du modèle géométrique n'étant pas concluant, nous avons décidé de réaliser plus de tests en amont afin de déterminer les potentiels problèmes rencontrés. En effet, le modèle géométrique utilisé par rapport à la réalité ne convenait pas et après plusieurs tests et retravail sur le bras en extrémité, les angles données par le modèle géométrique étaient corrects.

[![20240523_102807.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/scaled-1680-/20240523-102807.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/20240523-102807.jpg)

**Figure 22 : Dessins imposés par le cahier des charges (cercle plein et pointillé de diamètre 5cm, ligne pleine et pointillée 5cm)**

Vous pouvez consultez le schéma éléctronique de la [Figure 20](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-05/circuit-elec-propre.png) ainsi que le programme de l'Arduino sur le lien suivant : [https://wokwi.com/projects/390879808315743233](https://wokwi.com/projects/390879808315743233)

### Conclusion 

Nous avons pu au travers de ce projet une bonne partie de la conception d'un robot 2R simple qui avait pour but de dessiner certaines formes prédéfinies et d'être piloté manuellement. Ce projet nous a permis d'apprendre et de perfectionner chacun.e de connaissances et compétences, pour certain.e.s cela était plus axé sur l'éléctronique et l'informatique quant à d'autres ont préféré perfectionner leur comrehénsion de modélisation et conception d'un mécanisme via SolidWorks (logiciel utilisé).

De plus, ce projet nous a initié à l'utilisation de certaines machines assez évoluées, mises à disposition grâce au FabLab SU, comme la Trotec Speedy100 et 360. Nous avons voulu, dans un souci de sobriété ne pas utiliser les imprimantes 3D qui utilisent plus d'énérgie et de matière dû à leur temps d'impression plus long (plusieurs heures).

Pour finir, ce projet nous a permis de travailler en équipe et d'utiliser les forces de chacun.e et de pallier nos lacunes à travers cette expérience enrichissante aussi bien du point de vue des compétences et de connaissances.