Aller au contenu


Photo
- - - - -

Lidar rotatif


16 réponses à ce sujet

#1 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 20 février 2022 - 10:43

Bonjour

Dans le cadre d'un robot qui doit rouler parallèlement à une référence, j'utilise 2 LIDAR

Le premier est fixe et pointe vers l'avant. Quand la distance devant le robot est inférieure à x, il fait demi-tour et repart dans l'autre sens.

Le second est monté sur un servo et est tourné vers la gauche si la référence à suivre est à gauche et à droite dans le cas contraire.

 

Je n'ai pas d'expérience avec un Lidar rotatif

Avec ce type d'appareil est-il possible de d'extraire les distances de 5 points sans trop surcharger l'Arduino Mega :

1- Devant le robot

2- Gauche 45°

3- Gauche 90°

4- Droite 45°

5- Droite 90°

 

Dans ce cas ce serait plus simple et permettrait de :

n'utiliser qu'un seul lidar et un port série de l'Arduino Mega.

supprimer le servo

 

Merci

 



#2 Mike118

Mike118

    Staff Robot Maker

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

Posté 20 février 2022 - 12:50

Le rplidar te donnera un tableau de mesures.

Tu n'auras pas que 5 mesures tu en auras bien plus. 
Mais une fois que tu as récupérer toutes les mesures que le lidar te donne libre à toi de ne traiter que les 5 mesures qui t'intéressent sur le lot. 


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  

 

 

 


#3 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 20 février 2022 - 04:41

Merci Mike118

 

Justement je me demande si cette quantité d'infos (8000 mesures/sec) est gérable par un Mega en plus de toutes les autres tâches qu'il doit accomplir.

Apparemment il est possible de régler la vitesse de rotation du moteur.

Cela m'aurait intéressé de savoir si quelq'un a déjà utilise ce genre de composant avec un Arduino Mega.

 

Merci



#4 Mike118

Mike118

    Staff Robot Maker

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

Posté 20 février 2022 - 07:43

Utiliser le lidar avec un mega, oui ça se fait. 
En plus de toutes les autre tâches ? Ne sachant pas de quelles tâches on parle, je ne sais pas... 
Mais si tu as beaucoup de chose sur ta mega et que tu penses être limite faudrait voir si ça peut pas s'optimiser ... 


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  

 

 

 


#5 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 20 février 2022 - 08:26

Merci Mike118.

Effectivement le moyen le plus efficace de le savoir c'est de l'acheter et tester.

C'est ce que je vais faire.

Merci



#6 quadmean

quadmean

    Membre

  • Membres
  • 27 messages

Posté 21 février 2022 - 01:06

Bonjour,

pour ma part je possède celui-ci qui coute moins de 15€

https://fr.aliexpres....27426c37SRdg8D

 

Pour peser les pour et les contre de ces bebetes:

 

---:

- beaucoup de modèles donc faire attention d'avoir la librairie adaptée ou de pouvoir la bidouiller car les protocoles / vitesses sont sensiblement différentes d'un modèle à l'autre

- le protocole utilise la transmission UART avec des vitesses non conventionnelles => C'est lent, et il faut être certain que la carte supporte des vitesses non conventionnelles

- Distance minimum en dessous de laquelle il n'y a pas de lecture

- en raison du point ci-dessus un indicateur qualité est donné pour chaque lecture de distance

 

+++:

+ Une fois qu'on a réglé les problèmes listés ci-dessus, c'est plutôt simple d'utilisation, il suffit de lire les valeurs au fil de l'eau. Il y a toutefois un petit calcul pour récupérer les distances

 

En conclusion c'est sur qu'un LIDAR peut être assez simple d'utilisation (si la carte tolère des UART non conventionnelles) mais ca bouffe quand même un peu de CPU car il faut lire toutes les valeurs sur 360 degrés en série, et pour chaque valeur effectuer des opérations (vérifier la qualité de la donnée, calculer la distance en fonction de la donnée lue)

Je n'ai pas trouvé de LIDAR dont le fonctionnement est différent, mais peut être que cela existe.

 

Il y a des exemples d'utilisation sur le net soit en python soit pour des cartes, ainsi qu'un channel discord pour avoir de l'aide. si jamais tu ne trouves pas dis moi et je posterais les liens ici

 

voilà voilà,



#7 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 22 février 2022 - 07:46

Bonjour Quadmean

 

J'espère que Alan va bien (et toi aussi par la même occasion :) ).

Merci pour ton message.

 

Ne sachant pas trop quel modèle choisir j'ai commandé celui-ci.

Il y a un tutoriel assez clair.

 

Encore merci et à bientôt



#8 quadmean

quadmean

    Membre

  • Membres
  • 27 messages

Posté 22 février 2022 - 03:53

Alan va bien merci :)

Ce modèle est d'une famille que je ne connais pas. Donc on a les YDLidar et les RPLidar.... Intéressant. Pour autant il a le même fonctionnement logiciel en série.

 

la librairie est adaptée spécifiquement à ce modèle, c'est un bon point, car ça évite pas mal de galères de paramétrage.

Bon point également, la nappe complémentaire fournie... Moi j'ai du faire quelques soudures car les pins n'étaient pas de même taille que les cables Dupont standard.

 

pour tester cette carte, mais bon ça c'était le petit truc, j'ai acheté une carte 232H qui coûte moins de 5€ et que je branche directement en USB sur mon PC.

L'intérêt de cette carte c'est qu'elle simule le I2C, le port série, et le GPIO via USB. Programmable en python, en C, C++,...

En gros j'ai transformé mon PC en  carte Arduino superpuissante et c'est pas mal pour faire des tests, car on peut utiliser d'autres langages, et même si on reste sur le C ou C++, on évite les transfert sur carte à chaque modification de code...

 

C'est ce qui m'a permis d'afficher un RADAR en python sur l'écran de mon PC avec ce LIDAR sans utiliser de carte Arduino dans un premier temps... Ou par exemple d'afficher un MCU en passant par de l'I2C et non du SERIAL.

 

Bon voila, c'était pour la petite histoire. Donc oui normalement tu pourras extraire les distances sur chaque angle. Amuse toi bien  avec ton nouveau LIDAR !



#9 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 26 mars 2022 - 10:45

Bonjour,

 

J'ai adopté ce lidar rotatif. que j'utilise avec un MEGA et pour mon application il fonctionne très bien. (guidage d'un mobile à 2 roues motrices).

 

Il y a un tuto super bien fait

 

J'extrais les distances 0° 45° 85° 275° 315°

 

Le MEGA renvoie les données à un smartphone Android  et ils ont l'air de bien s'entendre tous les deux. :)

C'est en tout cas plus simple que d'utiliser un lidar monté sur servo.:)

 

Je ne l'ai pas encore testé en plein soleil, cela risque d'être plus délicat.



#10 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 28 octobre 2023 - 09:03

Bonjour,

 

Le RPlidar cité plus haut fonctionne toujours correctement.

J'aurais souhaité un appareil plus petit et qui peut être utilisé via un port série d'un pc Windows. (Au départ du projet je n'avais qu'un Arduino Mega, maintenant il y a un mini pc Win10)

J'ai acheté ceci :

 

https://www.amazon.f...00?ie=UTF8&th=1

 

Il est vendu avec un convertisseur série.

Le soft LdsPointCloudViewer-v3.0.6 permet de tester le fonctionnement sous Windows. Et cela fonctionne.

Cependant s'il est connecté directement au pc et lecture du port série avec Putty : on voit que des données transitent mais c'est illisible.

Test avec différentes vitesses, pareil.

Dans la fiche technique : Communication interface UART@230400  ce qui me semble être tout à fait particulier.

Mais même si on met cette vitesse dans Putty on ne reçoit rien d'exploitable.

J'ai envoyé une requête au support mais sans réponse.

 

Quelqu'un a une idée de comment utiliser cet engin sur un pc ?

Ou la référence d'un autre appareil qui donne satisfaction ?

 

Merci



#11 Mike118

Mike118

    Staff Robot Maker

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

Posté 28 octobre 2023 - 03:09

Je ne l'utilise habituellement pas directement sur un PC, mais je l'utilise avec cette librairie https://github.com/R...-Maker-SAS/LD06

avec microcontrôleur, et le microcontrôleur je le branche en usb sur le PC et je visualise les données avec téléplot. 

Si ton but c'est de faire ta propre appli PC, tu peux regarder la lib pour " copier " la partie décodage des information... 

Sinon un de ces quatre il faudrait que je mette à jour cet outil : https://github.com/Robot-Maker-SAS/Simple-Processing-Robot-Simulator/ 
pour justement fournir le code qui peut permettre d'afficher les points lidars de ce lidar ... Actuellement il faudra combiner l'exemple série avec la lib LD06... 

Sur la boutique on fournit aussi le lidar LD06 



 


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  

 

 

 


#12 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 28 octobre 2023 - 05:22

Merci Mike118.

Il ne suffit pas de le connecter en série et de lire les points. Je ne vais pas m'aventurer dans cette voie.

Et pour l'utiliser avec un Arduino Mega, je ne trouve pas d'exemple de code, librairie, ... ni même de câblage.

D'après ce que je comprends il est plutôt prévu pour être utilisé avec ROS.

Mieux vaut que je le retourne à l'expéditeur.

 

Pour info voici le code que j'utilise avec le RPLIDAR Slamtec A1M8:

// =============== RPLIDAR ========================
#include <RPLidar.h>
RPLidar lidar;
#define  RPLIDAR_MOTOR A0  

void setup() {
  lidar.begin(Serial3);
  pinMode(RPLIDAR_MOTOR, OUTPUT);  
  analogWrite(RPLIDAR_MOTOR, 129); 

void mesli()
  { 
     if (IS_OK(lidar.waitPoint())) {
       float dis = lidar.getCurrentPoint().distance; //distance in mm 
       float angle = lidar.getCurrentPoint().angle; //angle in degrees
       bool  startBit = lidar.getCurrentPoint().startBit; //whether this point is belong to a new scan
       byte  quality  = lidar.getCurrentPoint().quality; //quality of the current measurement
       
       if ((angle > 345) or (angle < 15)){
          if (dis > 0){ 
            dadv = dis / 10;// distance devant
          }
       }
       if ((angle >= 40) && (angle <= 50)){
          if (dis > 0) { 
            daog = dis / 10;// distance gauche 45°
          }
       }
       if ((angle > 75) && (angle < 85)){
          if (dis > 0) { 
            dadg = dis / 10; // distance gauche 90°
          }
       }  
       if ((angle > 275) && (angle < 285)){
          if (dis > 0) { 
            dadd= dis / 10; // distance droite 90°
          }
       }
       if ((angle > 310) && (angle < 320)){
          if (dis > 0) { 
            daod= dis / 10; // distance droite 45°
          }
       }
       
  } else {
    Serial.println("RPlidar not working");
    rplidar_response_device_info_t info;    // try to detect RPLIDAR... 
    if (IS_OK(lidar.getDeviceInfo(info, 100))) {       // detected...
       lidar.startScan();
       analogWrite(RPLIDAR_MOTOR, 129);       // start motor rotating at max allowed speed
       delay(1000);
    }
   }
} // end void

Encore merci pour ton aide.
 



#13 Mike118

Mike118

    Staff Robot Maker

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

Posté 28 octobre 2023 - 06:20

Peux tu me dire exactement ce que tu veux faire avec ton lidar connecté au PC ? 
Quels sont les données que tu aimerais recevoir ? 
Sous quel format ? 


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  

 

 

 


#14 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 29 octobre 2023 - 07:58

Bonjour,

Je souhaite obtenir 5 distances comme je le fais actuellement avec un Arduino Mega.

Gauche à 90°

Gauche à 45°

Devant

Droite à 45°

Droite à 90°

 

Concernant le format, je m'adapte

Mais avec le Lidar actuel connecté à l'Arduino Mega il envoie l'angle, la distance et la qualité. Et on filtre les données utiles.

Merci



#15 Mike118

Mike118

    Staff Robot Maker

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

Posté 29 octobre 2023 - 03:39

Tu peux faire la même chose avec le LD06 que ce que tu fais avec ton rp lidar : 

Tu branches le lidar à ta mega et tu décodes la trame sur ta mega (normalement la librairie lD06 que j'ai donnée plus haut fonctionne avec la mega, hésite pas à faire un retour ;) ) puis tu filtres les données et tu envoies en usb juste les données qui te conviennent ... ( comme ce que tu faisais avant ... ) 


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  

 

 

 


#16 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 29 octobre 2023 - 06:33

Merci Mike118.

A regarder de plus près le LIDAR LD06 semble fort proche de celui que j'ai acheté LD19

La Datasheet est fort similaire.

Peut-être que ta librairie fonctionne sur ce modèle aussi.

Ce qui est dommage c'est qu'il est livré avec un seul câble qui va du Lidar vers le convertisseur USB.

Il faut donc le couper pour le connecter à la Mega.

Je vais quand même essayer...



#17 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 31 octobre 2023 - 09:47

Bonjour

J'ai branché le Lidar LD19 sur une Arduino Mega. UART 3

Installé la librairie LD06.h

Le lidar tourne mais rien ne s'affiche dans le moniteur série

Code :

#include "ld06.h"
LD06 ld06(Serial3);  

void setup() {
  Serial.begin(9600);  // Start the Serial you want to display data
  ld06.init();         // Init Serial Lidar to 230400 Bauds and set lidar pwm pin mode if pwm pin is specified
  Serial.println("setup completed"); 
}

void loop() {
  if (ld06.readScan()) {             // Read lidar packets and return true when a new full 360° scan is available
    ld06.printScanTeleplot(Serial);  // Print full scan using teleplot format (check :https://teleplot.fr/)
    ld06.printScanCSV(Serial);  // Print scan in csv format
    if (ld06.isNewScan()) {     // Even if fullScan is disabled you can know when last data chunk have a loop closure
      Serial.println("This is a new scan! ");
    }
    Serial.println(ld06.getSpeed());        // Show the lidar speed in degrees ° / second
    Serial.println(ld06.getAngleStep());    // Show the angle step resolution in degree
    uint16_t n = ld06.getNbPointsInScan();  // Give the number of points in the scan, can be usefull with filtering to tell if there are abstacles around the lidar
    Serial.println(String() + "There are " + ld06.getNbPointsInScan() + " lidar points in the defined range !");
    for (uint16_t i = 0; i < n; i++) {
      Serial.println(String() + ld06.getPoints(i)->angle + "," + ld06.getPoints(i)->distance + ";");  // example to show how to extract data. ->x, ->y and ->intensity are also available.
    }
  }
}

J'en déduis qu'il n'est probablement compatible avec cette librairie.

 

Par contre si je l'utilise avec le code du RPLIDAR SLAMTEC AM08

Des données sont affichées mais pas cohérentes.

#include <RPLidar.h>
RPLidar lidar;               
                        
void setup() {
  Serial.begin(9600);
  lidar.begin(Serial3);
  pinMode(RPLIDAR_MOTOR, OUTPUT);  // set pin modes
  Serial.println("SETUP completed");
}

void loop() {
  if (IS_OK(lidar.waitPoint())) {
    float dis = lidar.getCurrentPoint().distance; //distance in mm 
    float angle = lidar.getCurrentPoint().angle; //angle in degree
    bool  startBit = lidar.getCurrentPoint().startBit; //whether this point is belong to a new scan
    byte  quality  = lidar.getCurrentPoint().quality; //quality of the current measurement

    if (angle > 0 && angle < 10 && dis > 0){
    dis = dis / 10;
    Serial.print(angle);
    Serial.print(" --- ");
    Serial.println(dis);
    }
    
  } else {
    Serial.println("RPlidar not working");
    rplidar_response_device_info_t info;    // try to detect RPLIDAR... 
    if (IS_OK(lidar.getDeviceInfo(info, 100))) {       // detected...
       lidar.startScan();
       delay(1000);
    }
  }
}

Le Lidar est immobile devant une paroi à une distance de 40cm
 

1.64 --- 1241.40
7.80 --- 1025.15
1.81 --- 1094.53
2.58 --- 1280.85
4.00 --- 896.25
8.78 --- 1384.95
1.59 --- 1235.15
1.34 --- 1368.28
8.78 --- 619.20
5.11 --- 288.38
2.20 --- 819.53
4.36 --- 821.90
9.28 --- 632.08
3.25 --- 16.00
3.83 --- 1521.90
9.03 --- 773.08
0.77 --- 825.90
0.11 --- 1025.95
1.00 --- 513.10
8.50 --- 294.60
4.56 --- 917.35
7.00 --- 1230.75
8.00 --- 823.75
6.00 --- 1229.95
0.17 --- 5.10
2.08 --- 1025.15
5.50 --- 1434.55
5.55 --- 896.25
2.75 --- 1491.30
4.58 --- 1241.50
1.50 --- 1030.70
7.05 --- 1025.10
2.56 --- 1587.80
0.06 --- 1104.07
2.58 --- 1026.70
0.56 --- 1440.30
6.78 --- 1027.50
6.05 --- 1024.30
1.02 --- 1299.75
1.00 --- 1024.35
2.00 --- 615.35
5.00 --- 629.10

 

 

 

 

 

 





Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users