Aller au contenu


Photo
- - - - -

LIDAR TFmini et IMU + déplacement


7 réponses à ce sujet

#1 Charlo

Charlo

    Nouveau membre

  • Membres
  • 4 messages

Posté 30 octobre 2019 - 05:50

Bonjour, je me permets de venir demander votre aide.
j'ai récupéré un châssis d'aspirateur autonome qui était en panne.
j'ai simplement récupéré la carrosserie et les moteurs ( roues)
j'y ai ajouté des hc-sr04 pour détecter des obstacles proche et à ras le sol.
et puis un imu et un lidar tfmini.
Tout ça contrôlé par un raspberry pi zero.

Je souhaite tracker la position du robot et cartographier la où il passe.

J'ai trouvé de nombreuses librairies, mais souvent pour des lidar comme le rplidar.
Le plus simple serait d'en acheter un mais..
J'ai déjà le tfmini.. Et c'est que c'est pas donné un rplidar !
Sa parle de SLAM ou FastSLAM. Mais apparemment le pi zero ne serait pas assez puissant...


Alors ma question, est-ce que vous connaissez une librairie ou des exemples de codes pour cartographier ?
en gros je ne souhaite pas avoir un déplacement aléatoire...

J'ai aussi vue ROS mais j'ai vraiment du mal à trouver des pistes pour un tfmini...

Merci d'avance et bonne journée

#2 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 30 octobre 2019 - 06:00

Salut, je connais pas le tfmini. Tu dois pouvoir trouver la doc de ce matériel, un pdf qui décrit les trames qui sortent et faire le pilote toi même, si tu trouve pas. Et si personne ne peux taider bien entendu.

#3 Mike118

Mike118

    Staff Robot Maker

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

Posté 30 octobre 2019 - 07:13

Salut, 

Du coup il faut commencer par savoir exploiter ton tfmini = récupérer les valeurs de distances mesurées 

Ensuilte il faut mécaniser l'ensemble pour le faire tourner en connaissant précisément l'angle de rotation ... 
( du coup pour ça sur la boutique on a un ensemble moteur pas à pas avec arbre creux + slip ring qui peuvent t'aider ) mais ça peut aussi éventuellement se faire avec un servomoteur et un balayage ( mais plus lent et moins précis ... ) 

Une fois que tu as l'ensemble mécanique fonctionnel, il faut savoir récupérer les valeur d'angle et de distance pour en récupérer un point 2D et savoir les stocker dans un tableau ... 

Après seulement tu pourras chercher à faire un algorithme de localisation avec ... Car si tu veux utiliser ROS tu pourrais faire un " node " qui simulera un lidar en utilisant ton setup avec le TFmini


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  

 

 

 


#4 Charlo

Charlo

    Nouveau membre

  • Membres
  • 4 messages

Posté 31 octobre 2019 - 08:33

Merci pour vos réponses.
La base roulante fonctionne pas encore. Je l'avais déjà préparé sur un arduino mega. Tout fonctionnait bien mais j'ai décidé de changer pour un raspberry pi zero.
je l'ai reçu hier alors je vais remonter tout ça. Et faire le script pour gérer les moteurs ( le tfmini fonctionne, les hc-sr04 aussi et le BNO055 aussi.)

Je pense changer de méthode.
Au départ je voulais faire une sorte de scan en faisant tourner le robot sur lui même pour connaître l'environnement.
Mais d'après mes recherches il faut un capteur type RPLidar. Et sur un raspberry ( encore plus un zero) la vitesse de traitement des infos est trop lente pour faire du slam.


Du coup le tfmino sort une trame = distance + force signal
Le BNO055 sort un angle absolu ( c'est un 9-dof, accéléromètre 3 axes, gyroscope et magnétomètre) il utilise toutes les infos pour faire une valeur absolu précise.

Donc au départ je me disais en utilisant l'angle + distance de l'obstacle je pourrais faire une cartographie des obstacles.

Alors que je vais plutôt calculer le déplacement du robot.
j'ai prévu de le faire avancer qu'en ligne droite. Pour tourner il s'arrête et rotate que sur lui même. Sa simplifiera les calculs de position

Mais d'après vous avec ces deux informations angle+distance je peux faire une trace sur une carte vierge par exemple.
où le point de départ serait le centre par exemple?

Quel librairie python je pourrais utiliser pour cartographier le déplacement ?
il existe pas mal de solutions. Dont matplotlib. Ou alors je pourrais éventuellement créer un jeu fictif sur Arcade.
Une fois que tout cela fonctionne mon but ultime (pardonnez ma prétention lol) c'est d'y intégré un IA TensorFlow.
J'ai suivi un cours pour la créer je pense y arriver.
Le plus dur pour moi aujourd'hui c'est de créer cette carte pour au final en gros tracer chaque endroit où le robot est passé. Pour par exemple dire à l'IA = passer sur un point existant = récompense négative
endroit non cartographié = très petite récompense positive.
et pour les obstacles, seulement arrêter le robot et le faire changer de direction, vraiment quand l'obstacle se présente devant lui à quelques centimètres.
La solution arcade serait peut être plus adaptée car je pourrais préparer tout l'environnement, dont les commandes et ensuite dire simplement à l'IA de prendre les décisions. Avance tourne etc..
Merci !

PS: si quelqu'un connaît GreezySLAM.
j'ai voulu adapter le script pour le RPlidar pour mes valeurs mais la carte reste vierge.
Si quelqu'un connaît bien cette lib je peu poster mon code voir si vous trouvez ce qui cloche (en dehors du fait que je pense qu'un pi zero est trop peu puissant pour avoir une application fluide)

D'ailleurs j'y pense, mon post ne devrait pas se trouver dans la section programmation finalement ?
car le reste du robot fonctionne.

Merci encore !

#5 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 31 octobre 2019 - 10:42

Hello,

Pour le problème du SLAM, voir ces slides: http://homepages.laas.fr/raja/Cours/Partie2_Navigation.pdfet ce cours: https://perso.ensta-..._ENSTAParis.pdf
En gros, la méthode classique pour résoudre le problème du SLAM, c'est d'utiliser l'odométrie du robot combinée à des mesures externes pour corriger la déviation. Lorsque le robot se déplace à une nouvelle position, il ajoute la nouvelle "vue" (e.g. profil laser des obstacles) à la carte. Il y a différentes méthodes pour se localiser correctement et construire une carte qui soit géométriquement correcte.
Matplotlib est une librairie graphique, elle peut afficher ce que tu calcules mais pour construire la carte et la localisation du robot, tu devras implémenter toi-même l'algorithme (conseillé pour apprendre) ou utiliser une autre libraire (e.g. Gmapping est dispo en C++ : https://openslam-org...gmapping.html).
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#6 Charlo

Charlo

    Nouveau membre

  • Membres
  • 4 messages

Posté 31 octobre 2019 - 11:50

Merci pour ces cours je vais étudier ça correctement. L'odométrie est vraiment indispensable pour avoir une bonne précision ? J'ai récupéré les moteurs du robot qui sont en dc et il y avait bien une roue codeuse dessus mais pour essayer de comprendre le fonctionnement j'ai malheureusement abîmé l'un d'eux. Je vais voir pour le réparer... Mais sa me semble compromis.
Pour par exemple avoir une meilleure précision de mes déplacements, je peux éventuellement faire par exemple 10 mesures ( ou plus à chaques départs et fin de déplacements) télémètre+magnétomètre et faire une moyenne. ( le tfmini a une bonne précision.
Je pense faire l'algo moi même pour apprendre et rester en python. Je pense trouver mon bonheur dans les cours.
Merci encore. Je reviendrai vers vous pour avoir un peu d'aide si je galère trop pour créer un algorithmes fonctionnel.
En gros imaginons que le robot est au Milieu de la carte et il se déplace dans une direction et dès qu'il doit changer de direction je trace une ligne avec donnée de départ et d'arrivée ? Ou j'actualise au fur et à mesure de l'avancement ? Comme c'est un lidar fixe je pense faire : à chaque départ du robot faire une mesure de la distance devant le robot et placer un point. Car si je place un point à chaque mesure du lidar le nombre de données va être vite énorme. Et je pense que ça peut être pénalisant ?
Pour placer placer un point au départ de je peux faire
X = sinus ( angle ) x distance lidar
Y = cosinus ( angle ) x distance lidar
Et pour l'arrêt ( je compte arrêter le robot à 5cm d'ub obstacles grâce au hc-sr04) et faire une nouvelle mesure et nouveau point
X = sinus ( angle ) x ( anciene distance lidar - nouvelle distance)
Y = cosinus ( angle ) x (ancienne distance lidar- nouvelle distance)

Pour la théorie sa vous semble correct ?
J'essaie de réfléchir à ça je peux pas bricoler au robot pendant quelques jours ! :)
Merci encore bonne journée

#7 Mike118

Mike118

    Staff Robot Maker

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

Posté 01 novembre 2019 - 08:24

Quelques réponses comme ça : 

Un RP Lidar, c'est top pour faire de la cartographie =) 
=> Un pi avec un bon code c'est largement suffisant pour réussir à faire du SLAM car une arduino DUE c'est déjà suffisant... 

Vidéo d'exemple de SLAM qui tourne sur un pic32 ( puissance de calcul équivalente à l'arduino due )

https://www.youtube....UH8g8E&vl=fr-FR

 

 

Ensuite c'est bien d'avoir une PI + arduino ... un microcontrôleur c'est bien pour tout ce qui est asservissement / contrôle temps réel ... 

 

En tout cas avant de faire un robot qui se déplace une première étape pourrait d'être capable de faire une carte en faisant juste tourner ton capteur ... 

=> Mapping 

 

Quand tu auras une map tu pourras chercher à te localiser dedans.


 


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  

 

 

 


#8 Charlo

Charlo

    Nouveau membre

  • Membres
  • 4 messages

Posté 02 novembre 2019 - 09:12

D'accord, je vais tracer une carte avec des données simulé et puis ensuite je vais m'occuper du déplacement. Y'en a pas pour longtemps j'avais tout fait en sur arduino. Les scripts pour les capteurs sont tous effectif.
Il me reste plus que pour commander les moteurs. Je vous tiendrais au courant si j'y arrive.
Merci pour vos réponses



Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users