Aller au contenu


Photo
- - - - -

Bubu le robot autonome


5 réponses à ce sujet

#1 JuRob26

JuRob26

    Membre

  • Membres
  • 10 messages
  • Gender:Female

Posté 20 février 2021 - 09:38

Salut les gens, je me suis présentée sur ce forum il y à quelques mois mais je ne vous ai pas parlé de mon projet. Pour m'occuper depuis le début de cette pandémie je travaille sur Bubu qui sera à terme : un robot autonome.

 

Pourquoi "à terme" ? Car pour ne pas me décourager et avoir rapidement un robot qui roule, j'ai découpé ce projet en plusieurs versions.

Le Bubu version V1 doit avoir les caractéristiques suivants :

  • Robot roulant à l'aide de 2 roues motrices
  • Robot contrôlé par un smartphone

Cette version s'est réalisé en plusieurs étapes que je vais vous décrire.

 

Choix des composants électroniques

La première étape, et une des plus importantes, a été le choix des composants électroniques en fonction des caractéristiques attendues du robot :

  • micro-contrôleur : Raspberry Pi
  • moteurs : motoréducteurs encodeurs de Polulu et ses roues
  • contrôleur des moteurs : pont en H L298
  • source d'énergie : batterie sans fil à deux sorties pour alimenter le Raspberry Pi et les moteurs

Montage électronique

J'ai réalisé le montage électronique sur une petite plaque d'apprentissage qui ne nécessite aucune soudure. J'ai relié les moteurs aux ponts en H du L298 qui est lui même relié aux pin GPIO du micro-contrôleur. La batterie est reliée au Raspberry Pi et aux deux moteurs.

 

Programmation des moteurs

L'étape d'après, une de celles que je préfère était la programmation les moteurs et de leurs encodeurs et de les synchroniser pour que le robot puisse aller droit ou au contraire tourner quand la vitesse de l'un est plus basse que celle de l'autre. Pour programmer sur le micro-contrôleur j'ai opté pour le C++ qui est le langage que je maîtrise le mieux de  par mes études et mon travail.

 

Programmation d'une communication vers l'extérieur

Pour pouvoir piloter le robot de mon smartphone il fallait commencer par choisir le type de liaison utilisée. J'ai choisi le Wifi car je voulais une liaison sans fil qui puisse transmettre beaucoup de données sans être trop proche (comme le Bluetooth). Pour mettre en place une liaison peer-to-peer entre le robot et u smartphone il me fallait un serveur et un client. J'ai donc codé un serveur TCP sur la Raspberry. Pourquoi utiliser le protocole TCP et pas UDP ? C'est un protocole pour lequel on est certain qu'un message envoyé est un message reçu.

 

Programmation de l'application Android

J'ai réalisé l'application Android en Java. J'ai commencé par programmé le client TCP qui me permet de connecter le smartphone au robot. Ensuite il me fallait implémenter un moyen de contrôler le robot. Pour cela j'ai réalisé l'IHM suivante :

IHMApplication.jpg

La vitesse du robot est contrôlé par la SeekBar à gauche et le cap du robot est contrôlé par l'inclinaison du smartphone. Le bouton situé à droite permet d'arrêter les moteurs ou de les démarrer.

 

Conception d'un châssis

J'ai ensuite dessiné un châssis pour le robot sur FreeCad avant de l'imprimer à l'aide d'une imprimante 3D. Pour que le châssis ne soit pas trop grand à imprimer mais qu'il puisse quand même tenir tous les composants électronique, je l'ai réalisé en deux parties, avec l'une qui vient se mettre au-dessus de l'autre. J'ai dessiné la partie supérieur du châssis avec des "cales" pour tenir le matériel électronique et éviter qu'il ne tombe. J'ai du aussi dessiner des supports pour les moteurs et un support pour une roue folle située à l'avant su robot.

 

Et... Enfin !

Voici Bubu V1 :

20210219_174319.jpg

20210219_174332.jpg

20210219_174336.jpg

20210219_174344.jpg

20210219_174353.jpg

 

Bubu V2 à venir

Pour la version V2 de Bubu l'objectif est de le rendre autonome en lui rajoutant des capteurs pour qu'il puisse reconnaître son environnement et, pourquoi pas, en rajoutant un peu d'intelligence artificiel dans son programme.

 

 

La suite au prochain épisode... :thank_you:


  • Oracid , Melmet , Mike118 et 1 autre aiment ceci

#2 XB2000

XB2000

    Membre occasionnel

  • Membres
  • Pip
  • 81 messages

Posté 20 février 2021 - 01:57

Très sympa comme projet, qu'est-ce que tu entend par autonome ? Qu'il se déplace sans se cogner ?



#3 JuRob26

JuRob26

    Membre

  • Membres
  • 10 messages
  • Gender:Female

Posté 20 février 2021 - 04:01

Merci !
Oui c'est ça. Je voulais commencer par implémenter l'algorithme des robots aspirateurs qui roulent de façon aléatoire en esquivant les obstacles.

#4 JuRob26

JuRob26

    Membre

  • Membres
  • 10 messages
  • Gender:Female

Posté 15 mars 2021 - 07:29

Salut tout le monde,

J'ai un peu avancé sur la version 2 de mon robot qui, je le rappelle, devra se déplacer de façon autonome en évitant les obstacles.

 

Pour les capteurs, je me suis orienté vers des capteurs IR. J'ai commencé par en acheter un sur la boutique du forum : https://www.robot-ma...a02yk0f-71.html.

 

Ce capteurs fournissant un flux de données analogiques, je ne pouvais pas le brancher directement sur la Raspberry Pi, je l'ai donc branché sur une carte Arduino Uno. Cette Arduino est elle même branchée par câble USB à la Raspberry Pi. J'ai donc rajouté au programme tournant sur la Raspberry Pi une partie qui initialise une liaison série et permet d'envoyer des données à l'Arduino et d'en recevoir. J'ai fait de même sur l'Arduino.

PhotoCapteurIRArduinoRaspberry.jpg
 

Je me suis ensuite penchée sur la programmation d'algorithmes pour rendre le robot autonome. Après de longues recherches sur internet j'ai décidé de commencer par implémenter un algorithme simple qui servait de base aux robots aspirateurs. Cet algorithme consiste à choisir une direction au hasard, si il n'y a pas d'obstacles, afin de parcourir entièrement une pièce.

Pour l'instant j'ai testé l'algo uniquement de façon informatique. Pour cela j'ai crée un petit simulateur qui simule une pièce, sous forme d'une matrice, qui peut contenir des murs. L'algo de déplacement du robot envoie au simulateur des commandes de déplacement et ce dernier simule la trajectoire du robot sur cette matrice. Il envoie ensuite une simulation des données des capteur IR en fonction de la position du robot dans la matrice et des obstacles qui l'entoure. Un graphique est affiché en temps réel afin d'observer les déplacements du robot.

SchemaTestInformatiqueAlgoDeplacement.png

 

J'observe bien que le robot évite les murs et finit par visiter toutes les cases de la matrice en plus ou moins de temps.

GrapheRandomAlgo.png

 

La prochaine étape sera que le robot est une certaine mémoire des cases afin de pouvoir prioriser les cases qu'il n'a jamais vu aux cases déjà visitées et ainsi améliorer l'algorithme.

 

J'aimerai pouvoir tester l'algorithme en vrai. Pour cela il faut que je décide une dernière chose, est ce que le robot possédera plusieurs capteurs répartis sur son pourtour ou bien un unique capteur fixé sur un servomoteur ou un moteur pas à pas qui tourne... Si vous avez des suggestions n'hésitez pas je suis preneuse.

 

Suite au prochain épisode... :bye:



#5 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 15 mars 2021 - 09:44

Pour cela il faut que je décide une dernière chose, est ce que le robot possédera plusieurs capteurs répartis sur son pourtour ou bien un unique capteur fixé sur un servomoteur ou un moteur pas à pas qui tourne... Si vous avez des suggestions n'hésitez pas je suis preneuse.

 

 

Les deux sont possible. 

Utiliser un servomoteur ( comme le servomoteur 9G ) sera une solution " plus économique " mais plus "lente" prendre le temps de scanner deux ou 3 positions c'est plus long que de juste lire les valeurs des capteurs ...  Scanner en continu pendant que tu avances fait que tu devras rouler doucement ... Mais ce genre de robot a aussi son charme ...
Donc tout dépend donc de si tu préfère privilégier la rapidité / réactivité du robot ou le petit budget =)

 

Après rien ne t'empêchera d'évoluer par la suite =)

 

Par contre utiliser un moteur pas à pas n'a pas forcément d'intérêt au vu de ton besoin =). 

 

à bientôt pour la suite ! =)

 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#6 XB2000

XB2000

    Membre occasionnel

  • Membres
  • Pip
  • 81 messages

Posté 16 mars 2021 - 02:02



Il faut que je décide une dernière chose, est ce que le robot possédera plusieurs capteurs répartis sur son pourtour ou bien un unique capteur fixé sur un servomoteur ou un moteur pas à pas qui tourne... Si vous avez des suggestions n'hésitez pas je suis preneuse.

 

Pour des raisons évidentes je te suggérerais la seconde solution...

photo-thumb-16753.jpg?_r=1588381814tenor.gif

 

Plus sérieusement, plusieurs capteurs répartis sur son pourtour je pense que c'est plus facile à gérer mais plus cher (faut racheter des capteurs…).

Un unique capteur fixé sur un servomoteur ou un moteur pas à pas qui tourne ça doit être plus difficile à gérer mais moins cher (faut pas racheter des capteurs…).

 

Je suppose que ton projet est perso et à visé d'apprentissage, donc je te suggère de ne pas remettre de l'argent dans des capteurs mais plutôt d'apprendre à gérer un capteur qui tourne. 





Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users