SE5 2023/2024 P3

De projets-se.plil.fr
Aller à la navigation Aller à la recherche

Présentation du Robot Centaure

Le robot Centaure est un robot d’accueil créé en 2004 par des élèves ingénieurs. Il peut avoir une discussion avec une personne et pouvoir la guider au sein de Polytech.

"centaure"


Préparation du projet

Calendrier prévisionnel

Afin d'avoir une bonne gestion de projet, j'ai choisi le diagramme de Gantt pour bien organiser les taches pour la réalisation de mon projet.

"gantt"


Cahier de charge

Je dois réaliser plusieurs tâches. Tout d’abord :

-Suite à l’état des lieux, une mission principale se dessine, sécuriser le robot en retravaillant le câblage et l’organisation .

-Etude générale du robot en se basant sur les anciens rapports.

-Commande du robot à travers la manette.

-finaliser l'implantation des capteurs.

Une fois ces tâches effectuées on peut envisager un contrôle de plus haut niveau du robot par caméra.

Spécifications technique

Partie Commande : Afin de développer la partie commande j'utilise l'IDE d'Arduino pour la programmation des différentes fonctionnalités.

"ide"

L’environnement de développement intégrée Arduino est un environnement facile à utiliser et en même temps contient plusieurs bibliothèques déjà installées .


Pour la partie matériel ,j'utilise : - Arduino MEGA :

"Arduino mega"

Arduino est un excellent outil pour développer des objets interactifs. Il existe de nombreuses bibliothèques permettant de faire des choses complexes, comme écrire sur des cartes SD, des écrans LCD, analyser des GPS, ainsi que des bibliothèques pour faire des choses simples, comme des boutons ou allumer une lumière.

L'Arduino Mega offre plus de broches d'E/S numériques (54 contre 14) et analogiques (16 contre 6), ainsi qu'une mémoire Flash plus grande (256 Ko contre 32 Ko) par rapport à l'Arduino Uno.


-Shield Arduino:

Carte d'interface permettant de raccorder facilement les modules capteurs et les actionneurs Grove à une carte Arduino.Développé par les anciennes promotions équipé par deux ADCs pour la commande des variateurs de vitesse.

-Relais électromécanique:

"relais"

L'utilisation d'un module relais avec Arduino offre de nombreux avantages. Tout d'abord, il permet à Arduino de contrôler des appareils qui nécessitent une tension ou un courant plus élevé que ce que le microcontrôleur peut fournir.Dans notre cas ,c’est le contrôle du variateur.

Partie puissance :

Dans la partie puissance on trouve plusieurs composants choisis en se basant sur les performances du système et avoir une consommation minimale d’énergie pour éviter les dissipations.

-Deux variateurs de vitesse 8CH2QM :

"VV"

-Deux moteurs DC:

-moteurs SRG0131 24V / 15.5 A / 0.35 kW / 10 km/h
 Ces moteurs ont un courant de pic d’approximativement 30-35A. En régime normal, leur
 consommation est d’environ 8A.

-Un convertisseur DC/DC :

"DC1"
 Tension d’entrée : 16,8…31,2V (Recommandée : 24V)
  Tension de sortie : 12 VDC
  Courant de sortie : 12,5A


-Un convertisseur DC/DC:

"DC2"
 Tension d’entrée : 19…36V (Recommandée : 24V)
  Tension de sortie : 12 VDC
  Courant de sortie : 12,5A

-Un contacteur:

"contacteur"
Les contacteurs sont des équipements de sécurité majeurs. Leur fonctionnement est
 toujours le même : un circuit de commande en courant faible (<2A) permet, grâce à une
 bobine, de fermer les contacts (équivalents à des interrupteurs) du circuit de courant fort
 (>2A).


Porte 5 fusibles :

"fusible"

On trouve aussi une carte mère avec une mémoire SSD , un écran et une caméra Kinect pour le traitement d’image.

- La combinaison entre les deux parties va permettre de former notre Robot.

"schèma"


Le projet est décomposé en deux parties :

- La première partie est la commande manuelle du Robot: grâce à des programmes informatiques téléversés dans le microcontrôleur de la carte Arduino , on peut contrôler notre robot.

-La deuxième partie est la commande automatique du robot à travers la caméra: grâce à des algorithmes d’intelligence artificielle , le robot peut prendre des décisions tout seul .


La partie commande va permettre d’actionner la partie puissance pour faire tourner les moteurs DC.


Suivi du Projet

Semaine 1

Début du projet le 11/10/2024

du 11/10 au 13/10

-la recherche des rapports des années précédentes sur le robot centaure.

-Compréhension de l’architecture du Robot

- Vérification de la charge des batteries.

- Développement d’un code arduino pour faire avancer le robot sans commande pour vérifier le fonctionnement des moteurs.7-Développement d’un code pour tester le joystick.


Problèmes rencontrés:

Une des deux batteries se déchargent rapidement d’où la nécessité d'acheter une autre batterie avec les mêmes dimensions Problème d’alimentation des deux variateurs de vitesse (absence de tension)

Le test de code n’est pas possible en attendant d’avoir la batterie et de pouvoir alimenter les variateurs correctement.


Semaine 2

J'ai commencé par la recherche des solutions pour les problèmes rencontrés dans la première semaine.Tout d'abord, pour les batteries je n'ai pas encore trouvé les batteries avec les dimensions souhaitées par suite j'ai pris la décision d'utiliser les mêmes batteries en attendant de trouver les mêmes dimensions mais en garantissant une charge continue des batteries comme ça je peux avoir les 24V pour l'alimentation des différents composants.

Pour l'alimentation des deux variateurs, après deux jours de recherche j'ai trouvé que le fil qui lie le premier variateur et le contacteur est défaillant et par suite j'étais obligé de le changer pour alimenter le premier variateur.

"schèma variateur"

La partie puissance fonctionne et donc j'ai passé à tester la partie commande en utilisant le joystick.A cause du problème d'alimentation les deux variateurs ne peuvent pas pas fonctionner en même temps mais le code fonctionne.

Comme vous voyez dans la vidéo , juste un seul moteur qui tourne et donc j'ai fait fait du débogage en utilisant des prints dans le programme pour savoir la source du problème mais apparemment tout marche nickel et pour confirmer l'hypothèse de l'alimentation , j'ai fait un programme pour faire tourner les moteurs sans joystick.

Résumé:

-Problème des variateurs résolu -

Je suis encore à la recherche des batteries avec les mêmes dimensions.

-Le programme fonctionne.

Durant les vacances , je vais essayer de développer plus le programme de la partie commande et en même temps développer des algorithmes d'intelligence artificielle pour la commande automatique.

Semaine3

La semaine 3 a commencé par la soutenance intermédiaire dont laquelle j'ai présenté mon état d'avancement et les taches à venir. J'ai eu plusieurs remarques de la part du Jury à propos de la méthodologie de travail et le faite que je dois prioriser les taches les plus importantes.

En ce qui concerne la présentation de mon état d'avancement ,j'avais présenté 3 points:

-Le test des moteurs par commande directe avec arduino.

-La commande de joystick non réussi car les batteries se déchargeait.

-En attendant la réception des batteries ,j'ai commencé par le développement du joystick virtuel. Dans cette partie j'ai commencé par définir les protocoles utilisé pour lier le serveur et le client et le serveur et l'arduino.


"schèma"

le protocole série est RS232.

Node.js est une plateforme logicielle libre en JavaScript, orientée vers les applications réseau évènementielles hautement concurrentes.

En résumé : j'utilise HTML ,CSS pour le frontend et Javascript avec NodeJS pour le Back-end ,comme ça j'aurai une interface Web qui contient un joystick virtuel pour commander le robot .

- Développement d'un algorithmes de reconnaissance vocale et de détection de visage.

Après la réception des deux batteries , je me suis lancé dans la partie commande du robot par joystick physique.J'ai commencé par charger les batteries et de les installer dans le Robot.Le code du Joystick physique était déjà prêt ,il fallait juste avoir des batteries en bonne état. Le résultat est comme suit:

Après plusieurs tests du code de Joystick Physique , j'ai rencontré le même problème des batteries qui se déchargent et donc ça montre que le problème ne provient pas des batteries.

Hypothèse 1 : les freins des moteurs non desserrés et par suite le circuit consomme plus que prévu et ça permet de décharger les batteries. Pour vérifier cette hypothèse , j'ai démonté le premier étage et de chercher le câble responsable de l'alimentation des freins Sachant que les freins doit être alimentés par 24V.

Après l'identification du câble responsable ,j'ai procédé à la mesure de la tension jusqu'au contacteur .Après les mesures de chaque point du chemin d'alimentation j'ai trouvé que la tension 24V est présente et donc logiquement le problème ne provient pas des freins des moteurs.

Hypothèse 2 : Un composant du circuit consomme plus que d'habitude.

Pour confirmer cette hypothèse, Monsieur Redon m'a proposé de voir avec Monsieur Chevalier pour trouver une solution à cette problématique.

Pour vérifier cette hypothèse ,j'ai posé plusieurs étapes :

- Vérification du courant sortant des batteries.

-Débrancher l'étage de commande et tester le courant sortant des deux batteries

En général ça va être un débogage de composant par composant pour trouver le composant qui consomme le courant.

Monsieur Redon m'a fait la remarque de l'organisation du Robot surtout la partie la commande ,donc en attendant de trouver la solution du problème , j'ai fait la conception d'un shield en se basant sur ce que les groupes précédents ont fait comme travail.

Un shield équipé par 2 DACs et un port RJ11 et un emplacement pour brancher les capteurs.

Pour la partie Joystick virtuel ,j'ai implémenté un serveur

"PCB"

semaine 4 et 5

ces deux semaines ont connu la finalisation de plusieurs tâches:

-Finalisation de la page web pour le joystick virtuel : comme mentionné précédemment que j'ai utilisé les langages HTML,CSS pour le Frontend et javascript,NodeJS pour le Backend.

""

Les caractéristiques de l'interface :

  1. 2 boutons ,un pour la connexion et l'autre pour la déconnexion.
  2. Pour se connecter il faut faire entrer l'adresse IP du Robot et le numéro de Port(8080)
  Les valeurs de X et Y sont comprises entre 0 et 200 pour avoir plus de précision et  la valeur de milieu est  à 100 (joystick à sa position initiale).

-Finalisation du développement de l'application mobile avec Cordova:


"App"

-Test de l'application avec le serveur NodeJS

-Écriture du code Arduino qui regroupe le joystick physique et le joystick virtuel:

  -L'Arduino reçoit deux informations: 
          1-Du joystick physique par le port RJ11
          2-Du joystick virtuel par port série 
   -Le joystick physique est prioritaire donc le joystick virtuel est activé dans le cas où le joystick  physique est dans sa position initiale.

-Réalisation des tests sur robot  : test du joystick physique :


Test du joystick virtuel :

Les tests ont montré que le code marche bien mains ça n’empêches pas de continuer l’amélioration du code Arduino et de continuer les tests.


Rendus