Coder Social home page Coder Social logo

lucaarietti / homework3 Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 53.47 MB

Homework 3 per il Laboratorio Cyberfisico

License: GNU General Public License v3.0

CMake 4.52% C++ 47.30% C 3.07% Makefile 43.93% Shell 0.11% Python 0.64% Cuda 0.02% Objective-C 0.07% Objective-C++ 0.34%

homework3's Introduction

Homework 3

Homework 3 per il Laboratorio Cyberfisico

Consegna:

  1. Installare il software ORB_SLAM2
  2. Procedere al processamento della rosbag V1_01_easy.bag contenuta nell’EuRoC MAV Dataset
  3. Modificare opportunamente il codice di ORB_SLAM2 in modo che venga salvata in un file .pcd la point cloud corrispondente alla ricostruzione dei punti 3D generata dall’algoritmo di SLAM. Assicurarsi che il file .pcd creato abbia un formato compatibile con la libreria PCL
  4. Eseguire ORB_SLAM2 modificato sulla rosbag V1_01_easy.bag generando così un file .pcd
  5. Utilizzare la libreria PCL per visualizzare in 3D la point cloud appena generata
  6. Clusterizzare i punti della point cloud in base alla distanza Euclidea utilizzando opportuni valori di soglia

Come compilare ed eseguire

Come compilare

Recarsi nella cartella ORB_SLAM2 e digitare:

  • ./build.sh
  • export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:$(pwd)/Examples/ROS
  • ./build_ros.sh

Recarsi poi nella cartella Cluster Extraction e digitare:

  • cmake
  • make

Come eseguire

  1. Estrarre nella medesima cartella il tar.gz ORBvoc.txt.tar.gz situato nella cartella /ORB_SLAM2/Vocabulary/ ottenendo quindi il file ORBvoc.txt
  2. Aprire un terminale e lanciare roscore
  3. Recarsi in ORB_SLAM2, aprire un altro terminale e lanciare rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true
  4. Recarsi nella cartella dov'è collocata la bag V1_01_easy.bag, aprire un altro terminale e lanciare export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:$(pwd)/Examples/ROS e successivamente rosbag play --pause V1_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw
  5. Per far partire la bag, premere [SPAZIO] nell'ultimo terminale
  6. Ad esecuzione conclusa, verrà creato un file nella cartella ORB_SLAM2 chiamato pointcloud.pcd
  7. Per visualizzare questo file tramite la libreria PCL, posizionarsi nella cartella ORB_SLAM2 e lanciare in un terminale il comando pcl_viewer pointcloud.pcd
  8. Per clusterizzarlo, spostare questo file all'interno della cartella Cluster Extraction (poiché ho messo dentro al file cluster_extraction.cpp il comando di andare a leggere il file pointcloud.pcd direttamente nella cartella dov'è eseguito cluster_extraction) ed eseguire il comando ./cluster_extraction
  9. È possibile specificare il valore di soglia mettendolo come secondo parametro, in questo modo: ./cluster_extraction 0.35
  10. Se non dovesse essere specificato, il software userà il valore di default pari a 0.28
  11. Per visualizzare i punti clustati della point cloud con la libreria PCL, lanciare il comando pcl_viewer cloud_cluster_* (dove l'asterisco serve per mandare al viewer tutti i file creati dal cluster_extraction)

Svolgimento dell'homework

Ho modificato il file /ORB_SLAM2/src/System.cc aggiungendo a riga 475 una funzione che salva in un file i punti ottenuti da GetAllMapPoints(). Ho aggiunto dei commenti a quella porzione di codice fatta da me. Per fare questo ho consultato questa pagina.

Poi ho aggiunto al file /ORB_SLAM2/include/System.h nelle righe 119 e 120 la dichiarazione della funzione costruita in System.cc.

Ho modificato /ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/ros_stereo.cc righe 128 e 129 per invocare la funzione da me creata passandogli come stringa "pointcloud.pcd", così da crearmi l'omonimo file.

Ho creato la cartella Cluster Extraction e all'interno ho scritto il file cluster_extraction.cpp come suggerito dalla documentazione. Ho modificato leggermente questo file nelle righe 77~81 per permettere di passare come secondo parametro il valore di soglia.

Ho creato il file CMakeLists.txt come suggerito dalla documentazione e l'ho eseguito con cmake e quindi poi compilato con make.

Screenshot

Esecuzione della Bag


Point Cloud non clusterizzata


Point Cloud non clusterizzata


Point Cloud clusterizzata con valore di soglia di 0.25


Point Cloud clusterizzata con valore di soglia di 0.35


Point Cloud clusterizzata con valore di soglia di 0.50


Point Cloud clusterizzata

homework3's People

Contributors

lucaarietti avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.