Aller au contenu


Photo
- - - - -

Problème d’acquisition de données LIDAR pour robot

rplidar A2 Arduino due données llidar

11 réponses à ce sujet

#1 Aldrha

Aldrha

    Nouveau membre

  • Membres
  • 6 messages
  • Gender:Male

Posté 04 avril 2019 - 09:12

Bonjour,

 

J’ai un petit problème dans l’acquisition de données du RPLIDAR A2 que j’utilise avec une Arduino due.

 

J’ai récupéré une bibliothèque fournie par robopeak pour utiliser le lidar: https://github.com/r...rplidar_arduino

 

Afin de tester le lidar j’ai juste modifié le fichier exemple simple_connect.ino pour afficher les valeurs dans le moniteur série, puis les copier et les tracer dans Excel.

 

J’obtiens ces résultats : aqusition données LIDAR - parasites.png

 

Alors en zoomant ok j’obtiens bien la forme des obstacles que j’avais mit devant : aqusition données LIDAR - close.png

 

Certes je pourrais trier les points en fonction de leurs distances et s’ils sont isolés ou non, cependant j’aimerais comprendre d’où peuvent venir ces parasites ( j’ai essayé en changeant la vitesse de rotation du LIDAR ça ne change rien). J’ai aussi essayé de récupérer les points ayant une qualité ça ne change pas non plus mon résultat. 

 

Surtout que sur toutes mes acquisition j'ai ce cercle qui apparaît a 4m50 de distance et ces deux droites.

 

Merci d’avance de votre aide!

 

Le code utilisé:

 



#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 179 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 05 avril 2019 - 03:02

/* USAGE:
 * ---------------------------------
 * 1. Download this sketch code to your Arduino board
 * 2. Connect the RPLIDAR's serial port (RX/TX/GND) to your Arduino board (Pin 0 and Pin1)
 * 3. Connect the RPLIDAR's motor ctrl pin to the Arduino board pin 3
 */

// This sketch code is based on the RPLIDAR driver library provided by RoboPeak
#include "RPLidar.h"

// You need to create an driver instance
RPLidar lidar;

#define RPLIDAR_MOTOR 3 // The PWM pin for control the speed of RPLIDAR's motor.
                        // This pin should connected with the RPLIDAR's MOTOCTRL signal

bool transmit = false;
byte incomingByte;
int x = 0;
int y = 0;

void setup() {
  // bind the RPLIDAR driver to the arduino hardware serial
  Serial1.begin(115200);
  lidar.begin(Serial1);

  // initialize both serial ports:
  Serial.begin(115200);    // Initialize Native USB port

  //Serial.print("Setup");
  // set pin modes
  pinMode(RPLIDAR_MOTOR, OUTPUT);
  analogWrite(RPLIDAR_MOTOR, 200);
}

void loop() {
  //Serial.print("Loop start");

  readLidar();
}

void readLidar() {
 uint8_t current;
 static uint8_t n = 0;
 static uint8_t quality;
 static bool start;
 static uint16_t angleq6;
 static uint16_t distanceq2;
 
 float angle;
 float distance;

 while(Serial1.available()) {
  current = Serial1.read();

  switch(n) {

   case 0:
    if((current & 1) != (current >> 1 & 1)) {
     quality = current >> 2;
     start = current & 1;
     n = 1;
    }
   break;

   case 1:
    if(current & 1) {
     angleq6 = current >> 1;
     n = 2;
    } else
     n = 0;
   break;

   case 2:
    angleq6 |= current << 7;
    n = 3;
   break;

   case 3:
    distanceq2 = current;
    n = 4;
   break;

   case 4:
    distanceq2 |= current << 8;
    n = 0;
    if(distanceq2) { // Si la lecture est valide
     angle = float(angleq6) / 64.0 * PI / 180.0;
     distance = float(distanceq2) / 4.0;

     Serial.print(distance);
     Serial.print(";");
     Serial.print(angle);
     Serial.print(";");
     Serial.print(quality);
     Serial.print("\n");

    }
   break;
  }
 }
}

Si tu essayes ça ça te donne quoi comme résultat ? 


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 ! 

 

Les réalisations de Mike118  

 

 

 


#3 Aldrha

Aldrha

    Nouveau membre

  • Membres
  • 6 messages
  • Gender:Male

Posté 05 avril 2019 - 09:46

Pas d’amélioration....

aqusition données LIDAR code jo - parasites.png

 

Toujours ces parasites cercle et droites 

 

De la même manière qu'avant en zoomant on voit bien les obstacles

aqusition données LIDAR code jo - close.png

 

Ça ne viens peut-être pas du code du coup 



#4 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 179 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 05 avril 2019 - 10:21

hum ... C'est l'initialisation qui ne doit pas être bonne alors ...  

Mais pour s'en convaince, télécharge l'outil fournit par slamtec qui permet de voir directement les acquisitions en temps via l'interface graphique ! 
 

Lien pour le téléchargement : https://download.sla..._1?lang=netural

 

C'est un zip, en creusant un peu dedans tu trouveras un dossier tool, win32 , avec des exe , frame grabber, ultra simple , et simple grabber. 

 

L'un des trois te permettra de visualiser les données sur ton PC. 
Si tu les visualise bien sans bug c'est bien que le problème est dans le code =). 

 

 


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 ! 

 

Les réalisations de Mike118  

 

 

 


#5 Aldrha

Aldrha

    Nouveau membre

  • Membres
  • 6 messages
  • Gender:Male

Posté 05 avril 2019 - 10:38

Le problème vient du code du coup 

Sur le logiciel pas de problème ( on voit bien l'obstacle,  moi et le coin de la pièce )

aqusition données LIDAR - logiciel robopeak.png

 

Je vais me pencher un peu sur la bibliothèque voir si il n'y a pas un problème de fréquence d'envoi des données ( qui est plus rapide sur le A2 que sur le A1 pour lequel la bibli a été codée )



#6 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 179 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 05 avril 2019 - 10:55

Et si tu changes l'initialisation du Lidar par l'appel à cette fonction : 

 

 

void initTheLidar() {
  pinMode(RPLIDAR_MOTOR, OUTPUT);
  analogWrite(RPLIDAR_MOTOR, 200);

 Serial1.begin(115200); Serial1.write(0xA5); Serial1.write(0x20);

}

 
 

 

ça te donne quoi ? 


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 ! 

 

Les réalisations de Mike118  

 

 

 


#7 Aldrha

Aldrha

    Nouveau membre

  • Membres
  • 6 messages
  • Gender:Male

Posté 05 avril 2019 - 12:29

Nope toujours pas .... :(



#8 Aldrha

Aldrha

    Nouveau membre

  • Membres
  • 6 messages
  • Gender:Male

Posté 08 avril 2019 - 03:09

Du coup après quelques test je crois avoir identifié un problème au niveau du PWM. J'ai branché la commande directement sur le PIN 3.3V et cela me donne ça : 

3 3V pin.PNG

 

Une idée sur la cause du problème ? La vitesse de rotation doit-elle être sur une valeur particulière ?  

 

Il reste encore quelque parasites, notamment un sur un angle en particulier dont je n'arrive pas a trouver la cause. Au pire je pourrais filtrer cet angle en l’évitant et en le faisant correspondre a un angle mort ( pilier support du robot ). Des idées pour filtrer la "mini-spirale" ? ( Les points isolées ne devraient pas poser trop de problème a être filtrés ).



#9 Path

Path

    Made By Humans

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

Posté 08 avril 2019 - 06:57

Salut,
Te décourage pas, tu vas trouver.
Si ça te dit de fouiller, jai fait ce code sur le due. https://github.com/P...ster/Hector-Due J'ai completement écrit le driver. Il est perfectible parceque je devais mettre le parsing du scan en pause pour envoyer les données. Pas assez de cpu. La version poussée ici est celle qui affiche sur un petit lcd en i2c super lent. Mais il fonctionne très bien. Pas un seul pixel dehors ;)
J'ai partagé mes aventures ici https://www.robot-ma...3-hector/page-6 Tu vas tomber sur une video du petit lcd.

Podcast Made By Humans

Je cherche des volontaires de tous niveaux pour nos petites conversations entre hobbyistes.

Accès aux salles secrètes

 


#10 Aldrha

Aldrha

    Nouveau membre

  • Membres
  • 6 messages
  • Gender:Male

Posté 12 avril 2019 - 09:08

Re 

Merci beaucoup path ! J'ai eu le temps de regarder ton code et de le modifier pour récupérer juste les données ( sans les afficher sur le LCD quoi ) et ça marche niquel. Le fait qu'il envoie les données par paquet ne pose pas de problèmes étant donné que l'arduino va devoir calculer pour repérer le robot dans mon cas aussi.

 

Enfin il y a quand même vu un petit problème qu'on est en train d'essayer de corriger : 

On un angle sur un scan qui est parti en cacahuète il s'est fait a l'envers :

aqusition données LIDAR - angle problème.png

 

En regardant plus près dans les données reçu on voit qu'on capte une partie des angles  dans le mauvais sens. Je m'explique : plutôt que d'afficher les angles de 0 a 30° , il envoie de 360 a 330 ( en redescendant ) avant de repartir de 30 a 360. Peut-être pas clair ^^'. 

 

LIDAR distance-angle.PNG

 

On penche sur l'initialisation au niveau des cabin qui déterminent le début d'un tour. 

 

On te tiendra au courant si on arrive a le corriger ! 

 

 



#11 Path

Path

    Made By Humans

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

Posté 12 avril 2019 - 09:34

ça fait plaisir si ça t'a aidé. Oui lâche rien, tu y es presque et tiens nous au courant.  :ok:


Podcast Made By Humans

Je cherche des volontaires de tous niveaux pour nos petites conversations entre hobbyistes.

Accès aux salles secrètes

 


#12 Savoyard

Savoyard

    Nouveau membre

  • Membres
  • 18 messages
  • Gender:Not Telling
  • Interests:Coupe de France de Robotique
    Électronique
    Informatique
    SLAM

Posté 05 juillet 2019 - 07:57

Merci pour le soutien! Voici les dernières nouvelles du projet :-)

 

L'article : http://estiasystem.estia.fr/archives/2498

Le topic sur notre participation : https://www.robot-ma...r-estia-system/


Adrien, adhérent ESTIA SYSTEM, association de robotique et mécatronique de l’École supérieure des technologies industrielles avancées
 
Site Web : http://estiasystem.estia.fr
GitHub associatif: https://github.com/ESTIASYSTEM



Répondre à ce sujet



  



Aussi étiqueté avec au moins un de ces mots-clés : rplidar A2, Arduino due, données llidar

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

0 members, 0 guests, 0 anonymous users