{"id":19542,"date":"2019-09-27T11:12:06","date_gmt":"2019-09-27T09:12:06","guid":{"rendered":"https:\/\/www.generationrobots.com\/blog\/?p=19542"},"modified":"2025-03-26T16:12:46","modified_gmt":"2025-03-26T15:12:46","slug":"integrazione-di-un-lidar-con-ros-esempi-di-progetti","status":"publish","type":"post","link":"https:\/\/www.generationrobots.com\/blog\/it\/integrazione-di-un-lidar-con-ros-esempi-di-progetti\/","title":{"rendered":"Integrazione di un LiDAR con ROS: esempi di progetti"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"19542\" class=\"elementor elementor-19542\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-29caad9f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"29caad9f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6ce5bca3\" data-id=\"6ce5bca3\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1be0528c elementor-widget elementor-widget-text-editor\" data-id=\"1be0528c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><\/p><p class=\"has-text-align-center\"><span style=\"color: #000000;\"> <strong> Scopri anche gli altri articoli della nostra serie \u00ab\u00a0Tecnologia LiDAR\u00a0\u00bb <\/strong> <\/span><\/p><p><\/p><figure class=\"wp-block-table\"><table><tbody><tr><td><a title=\"Quelles applications pour les LiDAR ?\" href=\"\/blog\/fr\/quelles-applications-pour-les-lidar\/\"> <img decoding=\"async\" src=\"https:\/\/static.generation-robots.com\/img\/cms\/bouton-CTA-articles-blog-lidar-3.jpg\" alt=\"Quelles applications pour les LiDAR ?\" width=\"270\" height=\"110\" \/> <\/a><\/td><td>\u00a0<\/td><td>\u00a0<\/td><\/tr><\/tbody><\/table><\/figure><p><\/p><h2 class=\"wp-block-heading\">Integrazione di un LiDAR con ROS: esempi di progetti<\/h2><p><\/p><p>Questo articolo vi mostrer\u00e0 come collegare e integrare il vostro <strong> <a class=\"catalogue\" title=\"Cos'\u00e8 la tecnologia LiDAR?\" href=\"\/blog\/en\/what-is-lidar-technology\/\"> LiDAR<\/a> <\/strong> al PC o a una scheda embedded utilizzando il middleware ROS su Ubuntu. Alla fine della pubblicazione verr\u00e0 anche trattata la fusione dei dati, una tecnica molto utilizzata nella robotica mobile.<\/p><p><\/p><h2 class=\"wp-block-heading\">ROS \u00e8 una novit\u00e0 per voi?<\/h2><p><\/p><p>Il <strong> <a class=\"catalogue\" title=\"ROS \u2013 Robot Operating System\" href=\"\/blog\/en\/ros-robot-operating-system-2\/\"> Robot Operating System (ROS) <\/a> <\/strong> \u00e8 un insieme di librerie software e strumenti open source che <strong> aiutano a sviluppare applicazioni robotiche <\/strong>. Dai driver agli algoritmi avanzati, fino a potenti strumenti di sviluppo, probabilmente ROS sar\u00e0 essenziale per il vostro prossimo progetto di robotica.<\/p><p><\/p><p>Qualora dobbiate scaricare <strong> Ubuntu <\/strong>, installate l&rsquo;<a class=\"catalogue\" title=\"Installer Ubuntu 18.04\" href=\"https:\/\/howtoubuntu.org\/how-to-install-ubuntu-18-04-bionic-beaver\" target=\"_blank\" rel=\"noopener noreferrer\">ultima versione consigliata (Ubuntu 18.04) <\/a>. Successivamente, scaricate la distribuzione ROS corrispondente alla vostra versione di Ubuntu. Per Ubuntu 18.04, \u00e8 necessario installare ROS Melodic.<\/p><p><\/p><p>Una volta che il vostro computer \u00e8 configurato con Ubuntu e ROS \u00e8 installato, vi consigliamo di dedicare del tempo ai <strong><a class=\"catalogue\" title=\"Tutoriels ROS\" href=\"http:\/\/wiki.ros.org\/ROS\/Tutorials\" target=\"_blank\" rel=\"noopener noreferrer\">tutorial ROS <\/a> <\/strong> per familiarizzare con questo middleware (livello principiante e intermedio disponibile).<\/p><p><\/p><h2>Ricevere i dati dal vostro LiDAR<\/h2><p><\/p><p>Per collegare il LiDAR al PC, \u00e8 necessario alimentarlo. A seconda del dispositivo, si tratter\u00e0 ad esempio di 5VDC o 12\/24VDC.<\/p><p><\/p><p>Un&rsquo;alimentazione a 5VDC \u00e8 generalmente supportata da un connettore USB collegato direttamente al PC. Basta collegarlo e il LiDAR sar\u00e0 pronto all\u2019uso.<\/p><p><\/p><p>Per tensioni di alimentazione pi\u00f9 elevate, \u00e8 necessario utilizzare un\u2019alimentazione esterna (generatore a bassa frequenza) o un trasformatore\/convertitore collegato alla rete elettrica o a una batteria.<\/p><p><\/p><p>Dopo aver collegato il LiDAR alla sua alimentazione, \u00e8 necessario connettere il trasmettitore di dati.<\/p><p>Pu\u00f2 trattarsi dello stesso cavo USB dell&rsquo;alimentatore, di un altro cavo USB, di un cavo Rx\/Tx, di un cavo UART o di un cavo Ethernet.<\/p><p>I cavi e gli adattatori necessari sono solitamente venduti insieme ai LiDAR.<\/p><p><\/p><h2 class=\"wp-block-heading\">Leggere i dati dal vostro LiDAR<\/h2><p><\/p><p>Una volta che il vostro LiDAR \u00e8 pronto all\u2019uso, dovete verificare di avere i permessi sulla porta di ingresso dei dati.<\/p><p><\/p><p>Dopo aver collegato il trasmettitore di dati a una porta USB (o Ethernet), digitate il seguente comando per controllare i permessi:<\/p><p><\/p><p><em>$ ls -l \/dev\/tty<\/em><\/p><p><\/p><p>Dovrebbe apparire una nuova voce : <em> ACMX <\/em> , <em> USBX <\/em> o <em> ETHX <\/em> , dove <em>X <\/em> \u00e8 un numero maggiore o uguale a zero (a seconda del numero di porte gi\u00e0 in uso).<\/p><p><\/p><p>L&rsquo;output dovrebbe essere simile a questo :<\/p><p><\/p><p><em>$ crw-rw-XX- 1 root dialout 166, 0 2016-09-12 14:18 \/dev\/ttyACM0<\/em><\/p><p><\/p><p>o<\/p><p><\/p><p><em>$ crw-rw-XX- 1 root dialout 166, 0 2016-09-12 14:18 \/dev\/ttyUSB0<\/em><\/p><p><\/p><ul class=\"wp-block-list\"><li style=\"list-style-type: none;\"><ul><li>Se XX \u00e8 rw, il laser \u00e8 configurato correttamente.<\/li><\/ul><\/li><\/ul><p><\/p><ul><li style=\"list-style-type: none;\"><ul><li>Se XX \u00e8 &#8211;, il laser non \u00e8 configurato correttamente e sar\u00e0 necessario modificare le autorizzazioni nel seguente modo :<\/li><\/ul><\/li><\/ul><p><\/p><p><\/p><p><em>$ sudo chmod a+rw \/dev\/ttyACM0<\/em><\/p><p><\/p><p>oppure<\/p><p><\/p><p><em>$ sudo chmod a+rw \/dev\/ttyUSB0<\/em><\/p><p><\/p><p>Una volta configurati i permessi, dovrete scaricare il package ROS specifico per il vostro modello di LiDAR:<\/p><p><\/p><ul class=\"wp-block-list\"><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"GitHub Slamtec\" href=\"https:\/\/github.com\/Slamtec\/rplidar_ros\" target=\"_blank\" rel=\"noopener noreferrer\"> GitHub Slamtec <\/a><\/li><\/ul><\/li><\/ul><p><\/p><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"Tutoriel Slamtec\" href=\"http:\/\/wiki.ros.org\/rplidar\" target=\"_blank\" rel=\"noopener noreferrer\"> Tutoriel Slamtec <\/a><\/li><\/ul><\/li><\/ul><p><\/p><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"GitHub YDLiDAR\" href=\"https:\/\/github.com\/EAIBOT\/ydlidar\" target=\"_blank\" rel=\"noopener noreferrer\"> GitHub YDLiDAR <\/a><\/li><\/ul><\/li><\/ul><p><\/p><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"GitHub Hokuyo\" href=\"https:\/\/github.com\/ros-drivers\/urg_node\" target=\"_blank\" rel=\"noopener noreferrer\"> GitHub Hokuyo <\/a><\/li><\/ul><\/li><\/ul><p><\/p><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"Tutoriel Hokuyo\" href=\"http:\/\/wiki.ros.org\/urg_node\" target=\"_blank\" rel=\"noopener noreferrer\"> Tutoriel Hokuyo <\/a><\/li><\/ul><\/li><\/ul><p><\/p><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"GitHub ROS SICK\" href=\"https:\/\/github.com\/SICKAG\/sick_scan\" target=\"_blank\" rel=\"noopener noreferrer\"> GitHub ROS SICK <\/a><\/li><\/ul><\/li><\/ul><p><\/p><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"GitHub ROS2 SICK\" href=\"https:\/\/github.com\/SICKAG\/sick_scan2\" target=\"_blank\" rel=\"noopener noreferrer\"> GitHub ROS2 SICK <\/a><\/li><\/ul><\/li><\/ul><p><\/p><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"Tutoriel SICK\" href=\"http:\/\/wiki.ros.org\/sick_scan\" target=\"_blank\" rel=\"noopener noreferrer\"> Tutoriel SICK <\/a><\/li><\/ul><\/li><\/ul><p><\/p><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"GitHub RoboSense \" href=\"https:\/\/github.com\/RoboSense-LiDAR\/ros_rslidar\" target=\"_blank\" rel=\"noopener noreferrer\"> GitHub RoboSense <\/a><\/li><\/ul><\/li><\/ul><p><\/p><p><\/p><p>Per scaricare il pacchetto LiDAR da GitHub nella cartella src del vostro <a class=\"catalogue\" title=\"Environnement de travail ROS\" href=\"http:\/\/wiki.ros.org\/ROS\/Tutorials\/InstallingandConfiguringROSEnvironment\" target=\"_blank\" rel=\"noopener noreferrer\"> ambiente di lavoro ROS <\/a>, i comandi sono :<\/p><p><\/p><p><em>$ cd ~\/your_workspace\/src<\/em><\/p><p><\/p><p><em>$ git clone<\/em><\/p><p><\/p><p>(vedere l&rsquo;elenco dei GitHub dei produttori riportato sopra).<\/p><p><\/p><p>Prendete nota del nome del pacchetto appena scaricato.<\/p><p><\/p><p><em>$ cd ..<\/em><\/p><p><\/p><p><em>$ catkin_make<\/em><\/p><p><\/p><p><em>$ source devel\/setup.bash<\/em><\/p><p><\/p><p>Entrate nella cartella <i> launch <\/i>, trovate il file <i> launch <\/i> corrispondente alla vostra versione di LiDAR e avviatelo con:<\/p><p><\/p><p><em>$ roslaunch votre_package votre_launch.launch<\/em><\/p><p><\/p><p>Per verificare che il LiDAR stia pubblicando dati sul topic <em>\/scan<\/em> (il nome del topic \u00e8 indicato nel file <em> launch <\/em>), usate:<\/p><p><\/p><p><em>$ rostopic list<\/em><\/p><p><\/p><p>Verranno elencati tutti i topic attivi. Assicuratevi che <em>\/scan<\/em> sia presente. In seguito, controllate i messaggi pubblicati in <em>\/scan<\/em> usando:<\/p><p><\/p><p><em>$ rostopic echo \/scan<\/em><\/p><p><\/p><p>Se tutto funziona correttamente, il LiDAR sta trasmettendo con successo i dati.<\/p><p><\/p><p>Potete visualizzare i dati su Rviz utilizzando il comando sotto indicato. Maggiori dettagli in questo tutorial: <a class=\"catalogue\" title=\"Apprenez \u00e0 lire les donn\u00e9es de votre LiDAR avec ROS\" href=\"http:\/\/www.daslhub.org\/unlv\/wiki\/doku.php?id=using_ros_to_read_data_from_a_hokuyo_scanning_laser_rangefinder\" target=\"_blank\" rel=\"noopener noreferrer\"> imparate a leggere i dati LiDAR con ROS. <\/a> Se volete saperne di pi\u00f9 su RViz, vi consigliamo questo <a class=\"catalogue\" title=\"RViz : outil de visualisation 3D pour ROS\" href=\"http:\/\/wiki.ros.org\/rviz\" target=\"_blank\" rel=\"noopener noreferrer\"> tutorial <\/a>.<\/p><p><\/p><p><em>$ rosrun rviz rviz<\/em><\/p><p><\/p><p>Fate clic su <em>Aggiungi<\/em>, quindi selezionate il topic <em>\/scan<\/em>. Se si verifica un errore <em>tf<\/em>, inserite manualmente il <em>fix frame<\/em> come \u00ab\u00a0<em>\/votre_LiDAR_frame_id<\/em>\u00a0\u00bb nella casella di testo accanto al <em>fix frame<\/em> sul lato sinistro dell&rsquo;interfaccia grafica.<\/p><p><\/p><p>Il risultato finale dovrebbe essere una mappatura orizzontale delle distanze dal LiDAR in un sistema di coordinate rettangolari.<\/p><p><\/p><figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2019\/09\/lidar-ros-rviz-data.png\"> <img fetchpriority=\"high\" decoding=\"async\" width=\"602\" height=\"439\" class=\"wp-image-6085\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2019\/09\/lidar-ros-rviz-data.png\" alt=\"Int\u00e9gration d\u2019un LiDAR avec ROS : exemples de projets\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2019\/09\/lidar-ros-rviz-data.png 602w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2019\/09\/lidar-ros-rviz-data-300x219.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/> <\/a><\/figure><p><\/p><p>Per integrare il LiDAR con un altro package, basta richiamare questo <em> launch <\/em> all&rsquo;interno del vostro <em> launch <\/em> principale.<\/p><p><\/p><p>Alcuni LiDAR richiedono ulteriori passaggi di configurazione. Vi consigliamo di consultare il file <em> readme <\/em> del package del produttore per seguire le istruzioni specifiche.<\/p><p><\/p><p>Su ROS, tutti i LiDAR 2D pubblicano i dati su un topic di tipo <a class=\"catalogue\" title=\"ROS LaserScan\" href=\"http:\/\/docs.ros.org\/melodic\/api\/sensor_msgs\/html\/msg\/LaserScan.html\" target=\"_blank\" rel=\"noopener noreferrer\"> LaserScan <\/a>. I LiDAR 2D\/3D li pubblicano su un topic di tipo <a class=\"catalogue\" title=\"ROS PointCloud\" href=\"http:\/\/docs.ros.org\/melodic\/api\/sensor_msgs\/html\/msg\/PointCloud.html\" target=\"_blank\" rel=\"noopener noreferrer\"> PointCloud <\/a>. Esistono numerosi esempi di codice che possono aiutarvi a elaborare questi dati.<\/p><p><\/p><h2 class=\"wp-block-heading\">Come pu\u00f2 essere implementata l&rsquo;elaborazione dei dati LiDAR?<\/h2><p><\/p><h3 class=\"wp-block-heading\">1) Mappatura<\/h3><p><\/p><h4 class=\"wp-block-heading\">LeGO-LOAM<\/h4><p><\/p><p>LeGO-LOAM \u00e8 un sistema ottimizzato per il Velodyne VLP-16 o un <a class=\"catalogue\" title=\"Telerilevatori laser 3D Robosense\" href=\"\/it\/455-robosense-3d-lidar\"> <strong> LiDAR Robosense <\/strong> <\/a>, montato orizzontalmente su un veicolo terrestre. Il dispositivo suppone sempre la presenza di un piano terrestre all&rsquo;interno dello scan.<\/p><p>L&rsquo;UGV (Unmanned Ground Vehicle) che utilizziamo in molti dei nostri esperimenti \u00e8 il <a class=\"catalogue\" title=\"Jackal drone terrestre (UGV)\" href=\"\/it\/402144-drone-terrestre-jackal-ugv.html\"> <strong> Jackal di Clearpath Robotics <\/strong> <\/a>. che dispone anche di una IMU integrata.<\/p><p><\/p><p>Questo <a class=\"catalogue\" title=\"Cartographie avec ROS : LeGO-LOAM\" href=\"https:\/\/github.com\/RobustFieldAutonomyLab\/LeGO-LOAM\" target=\"_blank\" rel=\"noopener noreferrer\"> repository <\/a> contiene il codice di un sistema leggero di odometria e mappatura LiDAR ottimizzato per l\u2019uso su superfici terrestri (LeGO-LOAM) su UGV compatibili con ROS.<\/p><p><\/p><p>Il sistema utilizza come input: nuvole di punti generate da un LiDAR Velodyne VLP-16 (montato orizzontalmente) e i dati IMU (opzionali). Se si desidera utilizzare un altro LiDAR 3D, come il <strong> RS-LIDAR-16 <\/strong> di Robosense, \u00e8 necessario modificare i parametri di configurazione.<\/p><p><\/p><p>Fornisce in tempo reale una stima della posa 6D.<\/p><p><\/p><p>Una dimostrazione del sistema la si trova\u00a0<a class=\"catalogue\" title=\"LeGO-LOAM : SLAM et odom\u00e9trie de LiDAR avec UVG Jackal sur terrains vari\u00e9s\" href=\"https:\/\/www.youtube.com\/watch?v=O3tz_ftHV48\" target=\"_blank\" rel=\"noopener noreferrer\"> qui <\/a>.<\/p><p><\/p><p>\u00c8 necessaria l&rsquo;installazione di:<\/p><p><\/p><ul class=\"wp-block-list\"><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"Versions de ROS: Kinetic et Melody\" href=\"http:\/\/wiki.ros.org\/ROS\/Installation\" target=\"_blank\" rel=\"noopener noreferrer\"> ROS <\/a> (testato con Indigo e Kinetic)<\/li><\/ul><\/li><\/ul><p><\/p><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"GTSAM ROS\" href=\"https:\/\/github.com\/borglab\/gtsam\/releases\" target=\"_blank\" rel=\"noopener noreferrer\"> GTSAM <\/a> (libreria Georgia Tech Smoothing and Mapping, 4.0.0.0-alpha2)<\/li><\/ul><\/li><\/ul><h4>A-LOAM<\/h4><p><\/p><p><a class=\"catalogue\" title=\"ROS A-LOAM\" href=\"https:\/\/github.com\/HKUST-Aerial-Robotics\/A-LOAM\" target=\"_blank\" rel=\"noopener noreferrer\"> A-LOAM <\/a> \u00e8 un&rsquo;implementazione avanzata di LOAM (J. Zhang e S. Singh. LOAM: LiDAR Odometry and Mapping in Real-time), che utilizza Eigen e Ceres Solver per semplificare la struttura del codice.<\/p><p>Questo codice \u00e8 una modifica di LOAM e <a class=\"catalogue\" title=\"LOAM_NOTED\" href=\"https:\/\/github.com\/cuitaixiang\/LOAM_NOTED\" target=\"_blank\" rel=\"noopener noreferrer\"> LOAM_NOTED <\/a>. Il codice \u00e8 pulito e semplice, senza derivate matematiche complesse n\u00e9 operazioni ridondanti.<\/p><p>\u00c8 un ottimo materiale di apprendimento per i principianti nello SLAM.<\/p><p>\u00c8 necessario aver installato:<\/p><ul><li><a class=\"catalogue\" title=\"Versions de ROS: Kinetic et Melody\" href=\"http:\/\/wiki.ros.org\/ROS\/Installation\" target=\"_blank\" rel=\"noopener noreferrer\"> ROS <\/a> (Kinetic or Melodic)<\/li><li><a class=\"catalogue\" title=\"Ceres Solver\" href=\"http:\/\/ceres-solver.org\/installation.html\" target=\"_blank\" rel=\"noopener noreferrer\"> Ceres Solver <\/a><\/li><li><a class=\"catalogue\" title=\"Prebuilt binaries for Linux\" href=\"http:\/\/www.pointclouds.org\/downloads\/linux.html\" target=\"_blank\" rel=\"noopener noreferrer\"> PCL <\/a><\/li><\/ul><h4>3D LIDAR-based Graph SLAM<\/h4><p><i> <a class=\"catalogue\" title=\"3D LIDAR-based Graph SLAM \" href=\"https:\/\/github.com\/koide3\/hdl_graph_slam\" target=\"_blank\" rel=\"noopener noreferrer\"> hdl_graph_slam <\/a> <\/i> \u00e8 un package ROS open source per SLAM 6DOF in tempo reale che utilizza un LiDAR 3D. Si basa su 3D Graph SLAM con stima dell&rsquo;odometria basata sulla corrispondenza delle scansioni CND e il rilevamento delle chiusure di loop.<\/p><p><\/p><p>Supporta anche diverse restrizioni grafiche, tra cui: GPS, accelerazione IMU (vettore gravit\u00e0), orientamento IMU (sensore magnetico) e piano del suolo (rilevato nel cloud di punti).<\/p><p>Abbiamo testato questo package con i sensori Velodyne (HDL32e, VLP16) e <a class=\"catalogue\" title=\"T\u00e9l\u00e9m\u00e8tres laser 3D Robosense\" href=\"\/it\/455-robosense-3d-lidar\"> Robosense <\/a> (16 canali) in ambienti sia interni che esterni.<\/p><h4>Spin Hokuyo<\/h4><p>Questo <a class=\"catalogue\" title=\"Repository spin_hokuyo\" href=\"https:\/\/github.com\/RobustFieldAutonomyLab\/spin_hokuyo\" target=\"_blank\" rel=\"noopener noreferrer\"> repository <\/a> contiene i codici per controllare un <a class=\"catalogue\" title=\"Servomoteur Dynamixel\" href=\"\/it\/169-servomotori-dynamixel\"> attuatore Dynamixel <\/a> e un <a class=\"catalogue\" title=\"T\u00e9l\u00e9m\u00e8tre laser Hokuyo chez G\u00e9n\u00e9ration Robots\" href=\"\/it\/262-lidar-hokuyo\"> LiDAR Hokuyo <\/a> 2D, permettendo di creare un cloud di punti 3D visualizzabile in RViz.<\/p><p>Questo cloud di punti pu\u00f2 poi essere utilizzato per generare una octomap.<\/p><p>Pagina Wiki: <a class=\"catalogue\" title=\"Page Wiki spin_hokuyo\" href=\"http:\/\/wiki.ros.org\/spin_hokuyo\" target=\"_blank\" rel=\"noopener noreferrer\"> http:\/\/wiki.ros.org\/spin_hokuyo <\/a><\/p><p>Un altro progetto simile utilizza il <a class=\"catalogue\" title=\"T\u00e9l\u00e9m\u00e8tre laser Hokuyo UTM-30LX\" href=\"\/it\/401433-telemetro-laser-hokuyo-utm-30lx.html\"> LiDAR Hokuyo UTM-30LX <\/a>: <a class=\"catalogue\" title=\"Cabine photo 3D avec un LiDAR Hokuyo\" href=\"https:\/\/github.com\/gcc-robotics\/3d_photobooth\/blob\/master\/CapstoneFinalReport_VisionTeam.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"> cabine photo 3D <\/a>.<\/p><h3>2) Calibrazione<\/h3><h4>Pacchetto ROS per calibrare un LiDAR e una fotocamera<\/h4><p>Questo <a class=\"catalogue\" title=\"Calibrer un LiDAR avec une cam\u00e9ra\" href=\"https:\/\/github.com\/ankitdhall\/lidar_camera_calibration\" target=\"_blank\" rel=\"noopener noreferrer\"> package ROS <\/a> permette di calibrare un LiDAR Velodyne con una fotocamera (funziona sia in modalit\u00e0 monoculare che stereo). In particolare, la fotocamera Point Gray Blackfly e la fotocamera ZED sono state calibrate con successo rispetto al Velodyne VLP-16, utilizzando la calibrazione LiDAR_camera_calibration.<\/p><p><\/p><p>Poich\u00e9 il VLP-16 dispone di soli 16 raggi, riteniamo che i modelli superiori di Velodyne possano funzionare altrettanto bene con questo sistema. Dimostriamo la precisione del pipeline proposto fondendo cloud di punti acquisiti da pi\u00f9 fotocamere, provenienti da diverse telecamere tenute in posizioni diverse, con una precisione quasi perfetta.<\/p><p><\/p><div align=\"center\"><iframe src=\"https:\/\/www.youtube.com\/embed\/Om1SFPAZ5Lc\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><br \/><\/iframe><\/div><p><\/p><p>Il package implementa una rotazione e una traslazione che trasformano tutti i punti del fotogramma LiDAR al fotogramma (monoculare) della fotocamera.<\/p><p><\/p><p>Il package utilizza <i> aruco_ros <\/i> e un <i> aruco_mapping <\/i> (leggermente modificato) come dipendenze, entrambe disponibili nella cartella \u00ab\u00a0dependencies\u00a0\u00bb di questo tutorial.<\/p><p><\/p><p>La funzione <i> LiDAR_camera_calibration\/pointcloud_fusion <\/i> fornisce uno script per fondere le nuvole di punti ottenute da due fotocamere stereo. Entrambe sono state calibrate utilizzando la calibrazione <i> LiDAR <\/i> e <i> iDAR_camera_calibration <\/i>.<\/p><p><\/p><p>\u00c8 possibile leggere la pubblicazione relativa a questo progetto <a class=\"catalogue\" title=\"Calibration de LiDAR et de cam\u00e9ra en utilisant des points de correspondances 3D-3D\" href=\"https:\/\/arxiv.org\/pdf\/1705.09785.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"> qui <\/a>.<\/p><h3>3) Tracking<\/h3><p>Tracciamento di oggetti multipli con LiDAR<\/p><p>Il <a class=\"catalogue\" title=\"Suivi de plusieurs objets avec un LiDAR\" href=\"https:\/\/github.com\/praveen-palanisamy\/multiple-object-tracking-lidar\" target=\"_blank\" rel=\"noopener noreferrer\"> package ROS PCL <\/a> per Rilevare\/Categorizzare \u2192 Tracciare \u2192 Classificare oggetti statici e dinamici in tempo reale utilizzando scansioni LiDAR implementate in C++.<\/p><p>Caratteristiche:<\/p><ul><li>Elaborazione dei cloud di punti basata su un&rsquo;arborescenza K-D, per la rilevazione delle caratteristiche degli oggetti a partire dai cloud di punti;<\/li><li>Raggruppamento k-means non supervisionato, basato sulle caratteristiche rilevate e affinato tramite RANSAC;<\/li><li>Tracciamento stabile (identificazione degli oggetti e associazione dei dati) grazie a un insieme di filtri di Kalman;<\/li><li>Robusto rispetto al clustering k-means con monitoraggio del flusso medio.<\/li><\/ul><h3>4) Fusione<\/h3><p>Extended Kalman Filter Project Starter Code<\/p><p>In questo progetto utilizzerete un filtro di Kalman per stimare lo stato di un oggetto in movimento utilizzando misure radar e LiDAR rumorosi.<\/p><p>Per completare con successo il progetto, \u00e8 necessario ottenere valori di RMSE inferiori alla tolleranza indicata nella sezione del progetto.<\/p><p>Questo progetto richiede l&rsquo;installazione del <a class=\"catalogue\" title=\"Simulateur Term 2\" href=\"https:\/\/github.com\/udacity\/self-driving-car-sim\/releases\" target=\"_blank\" rel=\"noopener noreferrer\"> simulatore Term 2 <\/a>.<\/p><p>Questo repository include due file che possono essere utilizzati per configurare e installare uWebSocketIO per sistemi Linux o Mac. Per Windows, \u00e8 possibile utilizzare Docker, VMware o anche <a class=\"catalogue\" title=\"How to Install and Use the Linux Bash Shell on Windows 10\" href=\"https:\/\/www.howtogeek.com\/249966\/how-to-install-and-use-the-linux-bash-shell-on-windows-10\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Windows 10 Bash su Ubuntu <\/a> per installare uWebSocketIO.<\/p><h4>Fusion EKF<\/h4><ul><li><a class=\"catalogue\" title=\"Librairies Python\" href=\"https:\/\/github.com\/mithi\/fusion-ekf-python\" target=\"_blank\" rel=\"noopener noreferrer\"> Librairies Python <\/a><\/li><li><a class=\"catalogue\" title=\"Librairies C++\" href=\"https:\/\/github.com\/mithi\/fusion-ekf\" target=\"_blank\" rel=\"noopener noreferrer\"> Librairies C++ <\/a><\/li><\/ul><p>Si tratta di un&rsquo;implementazione estesa del filtro di Kalman per la fusione delle misurazioni provenienti da LiDAR e sensori radar. Un filtro di Kalman pu\u00f2 essere utilizzato in qualsiasi situazione in cui si abbiano informazioni incerte su un sistema dinamico e si voglia effettuare una stima accurata del suo comportamento futuro.<\/p><p><b> In questo caso, abbiamo due sensori \u00ab\u00a0rumorosi\u00a0\u00bb: <\/b><\/p><ul><li style=\"list-style-type: none;\"><ul><li>Un sensore LiDAR, che misura la posizione in coordinate cartesiane (x, y).<\/li><\/ul><\/li><\/ul><ul><li style=\"list-style-type: none;\"><ul><li>Un sensore radar, che misura la posizione e la velocit\u00e0 in coordinate polari (rho, phi, drho). <strong>L&rsquo;obiettivo \u00e8 prevedere la posizione e la velocit\u00e0 in qualsiasi momento:<\/strong><\/li><\/ul><\/li><\/ul><ul><li style=\"list-style-type: none;\"><ul><li>Principalmente: posizione e velocit\u00e0 del sistema in coordinate cartesiane \u2192 (x, y, vx, vy)<\/li><\/ul><\/li><\/ul><ul><li style=\"list-style-type: none;\"><ul><li>Nota: Supponiamo un modello a velocit\u00e0 costante (CV ) per questo specifico sistema. <strong>Il filtro di Kalman esteso esegue esattamente questa operazione<\/strong>.<\/li><\/ul><\/li><\/ul><h4>Fusion UKF<\/h4><p>Rispetto al <a class=\"catalogue\" title=\"Fusion EKF\" href=\"https:\/\/github.com\/mithi\/Fusion-EKF-CPP\" target=\"_blank\" rel=\"noopener noreferrer\"> filtro di Kalman esteso <\/a> con modello a velocit\u00e0 costante, la RMSE dovrebbe essere inferiore con il <a class=\"catalogue\" title=\"Impl\u00e9mentation du filtre Unscented Kalman Filter en C++ pour mesures avec LiDAR et radars\" href=\"https:\/\/github.com\/mithi\/fusion-ukf\" target=\"_blank\" rel=\"noopener noreferrer\"> filtro di Kalman unscented <\/a>, specialmente per la velocit\u00e0.<\/p><p>Il modello CTRV \u00e8 pi\u00f9 preciso rispetto al modello a velocit\u00e0 costante. L&rsquo;UKF \u00e8 noto per gestire meglio le equazioni non lineari rispetto all&rsquo;EKF.<\/p><h3>Robotica mobile<\/h3><p>L\u2019utilizzo di un LiDAR non \u00e8 sempre sufficiente per alcune applicazioni. Infatti, \u00e8 necessario raccogliere ulteriori dati per un&rsquo;elevata accuratezza. Man mano che il sensore si sposta (essendo integrato su un robot mobile), \u00e8 fondamentale considerare anche la sua posizione e orientazione per determinare la posizione dell&rsquo;impulso laser al momento dell\u2019emissione e al momento del ritorno.<\/p><p>Queste informazioni aggiuntive sono essenziali per garantire l&rsquo;integrit\u00e0 dei dati. Spesso, vengono integrati i seguenti sensori:<\/p><ul><li>Fotocamera<\/li><li>Chip GPS<\/li><li>IMU (Unit\u00e0 di Misura Inerziale)<\/li><li>Sensori ToF (Time of Flight)<\/li><\/ul><p>Per ottenere misurazioni precise, \u00e8 necessario fondere i dati e selezionare quelli pi\u00f9 affidabili, in base all\u2019ambiente e alla situazione. <strong>Questa fase \u00e8 nota come fusione dei dati (data fusion)<\/strong>. Attenzione: in alcuni casi, pi\u00f9 sensori possono fornire lo stesso tipo di dati, ma con valori diversi a causa delle differenze di precisione ed errore. \u00c8 quindi necessario determinare il valore reale, in base ai diversi valori dei sensori.<\/p><p><strong>La fusione dei dati \u00e8 una fase fondamentale<\/strong>: unendo tutte queste informazioni, il robot pu\u00f2 localizzarsi con maggiore precisione all&rsquo;interno del suo ambiente. Maggiore \u00e8 la precisione dei sensori e del software di navigazione, pi\u00f9 accurata sar\u00e0 la stima della posizione del robot.<\/p><h4>Implementare SLAM nella robotica mobile<\/h4><p>Gli algoritmi SLAM pi\u00f9 conosciuti sono:<\/p><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"SLAM EFK\" href=\"https:\/\/en.wikipedia.org\/wiki\/EKF_SLAM\" target=\"_blank\" rel=\"noopener noreferrer\"> EKF SLAM <\/a><\/li><\/ul><\/li><\/ul><ul><li style=\"list-style-type: none;\"><ul><li><a class=\"catalogue\" title=\"FastSLAM\" href=\"https:\/\/en.wikipedia.org\/wiki\/FastSLAM\" target=\"_blank\" rel=\"noopener noreferrer\"> FastSLAM 2.0 <\/a><\/li><\/ul><\/li><\/ul><p>L&rsquo;immagine qui sotto mostra l&rsquo;architettura della navigation stack di ROS, che \u00e8 un&rsquo;implementazione dello SLAM.<\/p><p><\/p><figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2019\/09\/ros-slam-navigation-stack-setup.jpg\"> <img decoding=\"async\" width=\"602\" height=\"247\" class=\"wp-image-6073\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2019\/09\/ros-slam-navigation-stack-setup.jpg\" alt=\"Architecture de la navigation stack de ROS\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2019\/09\/ros-slam-navigation-stack-setup.jpg 602w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2019\/09\/ros-slam-navigation-stack-setup-300x123.jpg 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/> <\/a><\/figure><p><\/p><p>I sensori forniscono i dati di ingresso: le informazioni provenienti dai sensori stessi e dall&rsquo;odometria. Sulla base di queste due fonti di dati, l&rsquo;algoritmo calcola: la trasformazione del sensore, la stima della posa (<em> amcl <\/em>) e la mappatura dell\u2019ambiente (<em> map_server <\/em>). Grazie a queste informazioni, il pianificatore di traiettoria pu\u00f2 prendere decisioni.<\/p><p><\/p><p>I sensori sono quindi essenziali, e il LiDAR \u00e8 il migliore per ottenere dati in formato <em> LaserScan <\/em> o <em> PointCloud <\/em>.<\/p><p><\/p><p>Per maggiori dettagli, puoi consultare questa <a class=\"catalogue\" title=\"Introduction \u00e0 la navigation d'un robot avec ROS\" href=\"https:\/\/www.dis.uniroma1.it\/~nardi\/Didattica\/CAI\/matdid\/robot-programming-ROS-introduction-to-navigation.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"> introduzione alla navigazione con ROS <\/a>.<\/p><p><\/p><p class=\"has-text-align-center\"><span style=\"color: #000000;\"> <strong> Scopri anche gli altri articoli della nostra serie \u201cTecnologia LiDAR\u201d <\/strong> <\/span><\/p><p><\/p><figure class=\"wp-block-table\"><table><tbody><tr><td><a title=\"Quelles applications pour les LiDAR ?\" href=\"\/blog\/fr\/quelles-applications-pour-les-lidar\/\"> <img decoding=\"async\" src=\"https:\/\/static.generation-robots.com\/img\/cms\/bouton-CTA-articles-blog-lidar-3.jpg\" alt=\"Quelles applications pour les LiDAR ?\" width=\"270\" height=\"110\" \/> <\/a><\/td><td>\u00a0<\/td><td>\u00a0<\/td><\/tr><\/tbody><\/table><\/figure><p><\/p><p>Consulta la sezione <a class=\"catalogue\" title=\"T\u00e9l\u00e9m\u00e8tres laser chez G\u00e9n\u00e9ration Robots\" href=\"\/it\/206-sensori-lidar-per-la-robotica\"> LiDAR per la ricerca e l&rsquo;istruzione superiore<\/a> oppure <a class=\"catalogue\" title=\"Contactez G\u00e9n\u00e9ration Robots\" href=\"\/it\/contattateci\"> contattaci<\/a> per maggiori informazioni o per richiedere un preventivo.<\/p><p><\/p><p class=\"has-text-align-center\"><strong> Marchi di LiDAR distribuiti da G\u00e9n\u00e9ration Robots <\/strong><\/p><p><\/p><figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><a class=\"catalogue\" title=\"LiDAR Ouster pour la robotique\" href=\"\/fr\/536-lidar-ouster\"> <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/static.generation-robots.com\/img\/ouster-lidar-robots-mobiles.jpg\" alt=\"LiDARs Ouster pour robots mobiles\" width=\"170\" height=\"96\" \/> <\/a><\/td><td class=\"has-text-align-center\" data-align=\"center\"><a class=\"catalogue\" title=\"LiDAR Slamtec chez G\u00e9n\u00e9ration Robots\" href=\"\/fr\/198_slamtec\"> <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/static.generation-robots.com\/img\/cms\/slamtec-lidar-logo.jpg\" alt=\"LiDARs Slamtec\" width=\"170\" height=\"96\" \/> <\/a><\/td><td class=\"has-text-align-center\" data-align=\"center\"><a class=\"catalogue\" title=\"LiDAR YDlidar chez G\u00e9n\u00e9ration Robots\" href=\"\/fr\/222_ydlidar\"> <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/static.generation-robots.com\/img\/cms\/YDlidar-lidar-logo.jpg\" alt=\"LiDARs YDLidar\" width=\"170\" height=\"96\" \/> <\/a><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><a class=\"catalogue\" title=\"T\u00e9l\u00e9m\u00e8tres laser 3D Robosense\" href=\"\/fr\/455-telemetres-laser-3d-robosense\"> <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/static.generation-robots.com\/img\/cms\/robosense-lidar-logo.jpg\" alt=\"LiDARs Robosense\" width=\"170\" height=\"96\" \/> <\/a><\/td><td class=\"has-text-align-center\" data-align=\"center\"><a class=\"catalogue\" title=\"T\u00e9l\u00e9m\u00e8tre laser Hokuyo chez G\u00e9n\u00e9ration Robots\" href=\"\/fr\/262-lidar-hokuyo\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/static.generation-robots.com\/img\/cms\/hokuyo-lidar-logo.jpg\" alt=\"LiDARs Hokuyo\" width=\"170\" height=\"96\" \/> <\/a><\/td><td class=\"has-text-align-center\" data-align=\"center\"><a class=\"catalogue\" title=\"T\u00e9l\u00e9m\u00e8tre laser Sick chez G\u00e9n\u00e9ration Robots\" href=\"\/fr\/263-telemetre-laser-sick\"> <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/static.generation-robots.com\/img\/cms\/sick-lidar-logo.jpg\" alt=\"LiDARs SICK\" width=\"170\" height=\"96\" \/> <\/a><\/td><\/tr><\/tbody><\/table><\/figure><p><\/p><div class=\"wp-block-leadin-hubspot-form-block\">\u00a0<\/div><p><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-27616478 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"27616478\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2e889a7b\" data-id=\"2e889a7b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2cecc779 elementor-widget elementor-widget-spacer\" data-id=\"2cecc779\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3919dc9c elementor-widget elementor-widget-image\" data-id=\"3919dc9c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/content.generationrobots.com\/ouster-lidar-libro-bianco\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/static.generation-robots.com\/img\/banner-white-paper-lidar-ouster-it.jpg\" title=\"\" alt=\"White Paper \u2013 Scegli il LiDAR giusto per il tuo progetto di robotica\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Scopri anche gli altri articoli della nostra serie \u00ab\u00a0Tecnologia LiDAR\u00a0\u00bb \u00a0 \u00a0 Integrazione di un LiDAR con ROS: esempi di progetti Questo articolo vi mostrer\u00e0 come collegare e integrare il vostro LiDAR al PC o a una scheda embedded utilizzando il middleware ROS su Ubuntu. Alla fine della pubblicazione verr\u00e0 anche trattata la fusione dei[&#8230;]<br \/> <a class=\"button\" href=\"https:\/\/www.generationrobots.com\/blog\/it\/integrazione-di-un-lidar-con-ros-esempi-di-progetti\/\" style=\"float:right;\">Read this article &gt;&gt;<\/a><\/p>\n","protected":false},"author":188,"featured_media":6079,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10581,10702],"tags":[],"class_list":["post-19542","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-confronti-test-e-presentazione-dei-prodotti","category-guide-e-tutorial"],"_links":{"self":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/19542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/comments?post=19542"}],"version-history":[{"count":17,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/19542\/revisions"}],"predecessor-version":[{"id":20067,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/19542\/revisions\/20067"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media\/6079"}],"wp:attachment":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media?parent=19542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/categories?post=19542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/tags?post=19542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}