===== OrbSlam ===== === Installation sur Ubuntu 14.04: === Suivre pas à pas les recommendations du lien suivant : [[https://github.com/raulmur/ORB_SLAM]] En résumé, installer les librairies nécessaires, libBoost en premier : sudo apt-get install libboost-all-dev Puis installer ROS indigo (pour ubuntu 14.04), suivre les instructions sur : [[http://wiki.ros.org/indigo/Installation/Ubuntu]] (Facultatif ) Installer g2o, DBoW2, qui sont en théorie installées avec ROS. Ensuite cloner le dépôt: git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM Ajouter ROS_PACKAGE_PATH dans votre .bashrc Compiler g2o dans le dossier: cd ORB_SLAM/Thirdparty/g2o/ mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release make Compiler DBoW2 cd ORB_SLAM/Thirdparty/g2o/ mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release make IMPORTANT, pour ROS INDIGO, Enlever dans le manifest.xml la dépendance à opencv2 Compiler ORB_SLAM dans le répertoire racine mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release make === Utilisation === Pour lancer ORB_SLAM, lancer tout d'abord ROS roscore Lancer pour INDIGO roslaunch ExampleGroovyOrNewer.launch Cette exemple lance ORB_SLAM, image_view et Rviz. Télécharger ensuite un rosbag d'exemple à l'adresse suivante : [[http://webdiis.unizar.es/~raulmur/orbslam/downloads/Example.bag.tar.gz.]] Décompressez et éxecuter ensuite la commande suivante afin de charger le vocabulaire et les param caméra: rosrun ORB_SLAM ORB_SLAM /Data/ORBvoc.txt /Data/Settings.yaml Exécuter enfin l'exemple (appuyer ensuite sur espace pour démarrer): rosbag play --pause Example.bag ===== ORBSLAM2 ===== Cette version d'OrbSlam n'utilise pas ROS et permet également d'être utilisée avec une paire stéréo Caméra ou une Kinect. La version monoculaire à été légérement amélioré. Pour l'installation, suivre les instructions ici : [[https://github.com/raulmur/ORB_SLAM2]] Pour l'utilisation, il faut lancer un executable, soit créer de toute pièce, soit un des exemples : ./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER Vocabulary/ORBvoc.txt est le chemin vers le vocabulaire ( fourni à l'avance) Examples/Monocular/KITTIX.yaml est le fichier de config lié à votre éxécutable ( Param caméra et param Slam) PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER est le chemin vers votre séquence ==== Avec Qtcreator ==== Afin de l'utiliser dans qtcreator, vous pouvez ouvrir directement le CMakelist.txt, et si vous voulez voir les sources dans l'éditeur, modifiez le Cmakelist.txt en y ajoutant : FILE(GLOB_RECURSE LibFiles "include/*.h") add_custom_target(headers SOURCES ${LibFiles}) Vous pouvez également ajouter de nouveaux exécutables adaptés à chaque situation. add_executable(mono_live Examples/Monocular/mono_live.cc) target_link_libraries(mono_live ${PROJECT_NAME}) add_executable(mono_calib Examples/Monocular/mono_calib.cc) target_link_libraries(mono_calib ${PROJECT_NAME}) Ici on rajoute dans le Cmakelist un exécutable pour le calibrage et un pour le fonctionnement en live ===== LSD-SLAM ===== Pour ROS INDIGO et Ubuntu 14.04 sudo apt-get install python-rosinstall mkdir ~/rosbuild_ws cd ~/rosbuild_ws rosws init . /opt/ros/indigo mkdir package_dir rosws set ~/rosbuild_ws/package_dir -t . echo "source ~/rosbuild_ws/setup.bash" >> ~/.bashrc bash cd package_dir Pour éxécuter l'exemple fourni à l'adresse suivante: [[http://vision.in.tum.de/research/vslam/lsdslam]] Lancer les commandes suivantes après avoir décompresser l'archive: roscore rosrun lsd_slam_viewer viewer rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info rosbag play LSD_room.bag Pour lancer une séquence rosrun lsd_slam_core dataset_slam _files:=images/ _hz:=0 _calib:=pinhole_example_calibWS.cfg Avec _files le chemin vers un dossier contenant les images, ou un fichier contenant le chemin/nom des images, _hz la fréquence des images, et _calib un fichier de calibration ( Voir LSD_SLAM github pour la forme du fichier) === Exemple === Sur la séquence roomBag.bag de test: Sur la séquence fr1desk2, fail du tracking entre 25 et 100 frames suivant la fréquence renseignée: Sur une séquence crée avec tablette Samsung : = NB = Les auteurs ont réussi à exécuter ce slam sur smartphone (sony Xperia Z1). Voir le papier Semi-Dense Visual Odometry for AR on a Smartphone (T. Schöps, J. Engel, D. Cremers), In International Symposium on Mixed and Augmented Reality, 2014. Et la vidéo de démonstration : [[https://www.youtube.com/watch?feature=player_embedded&v=X0hx2vxxTMg]] ==== BagFromImages ==== Cet outils sert à créer un ros bag à partir d'un ensemble d'images git clone https://github.com/raulmur/BagFromImages.git BagFromImages cd BagFromImages mkdir build cd build cmake .. make Créer un ros bag à partir de l'ensemble d'image en utilisant : rosrun BagFromImages BagFromImages PATH_TO_IMAGES IMAGE_EXTENSION FREQUENCY PATH_TO_OUPUT_BAG ===== NOTES ===== Il y a de nombreux problèmes à gérer pour l'installation concurrente de ORB_SLAM et LSD_SLAM Pour un éventuel soucis avec g2o ( Orbslam ne parvient pas à initialiser et erreur undefined symbol: _ZN3g2o17EdgeSE3ProjectXYZC1Ev) voir : [[https://github.com/raulmur/ORB_SLAM/issues/17]] Il est également nécessaire de gérer les ROS_PATH qui change en fonction du soft à utiliser. ===== DPPTAM ===== Suivre l'installation depuis : [[https://github.com/alejocb/dpptam]] Il est nécessaire d'installer ROS, PCL et BOOST. === Installation === Aller dans votre répertoire source catkin : cd ~/catkin_ws/src Puis cloner le dépôt depuis github : git clone https://github.com/alejocb/dpptam.git === Compilation === Retourner dans le dossier racine de catkin cd ~/catkin_ws catkin_make --pkg dpptam DPPSLAM utilise un soft tiers pour les superpixels, basée sur le papier Efficient Graph-Based Image Segmentation. P. Felzenszwalb, D. Huttenlocher. International Journal of Computer Vision, Vol. 59, No. 2, September 2004 Il faut donc le compiler : cd ~/catkin_ws/src/dpptam/ThirdParty/segment make NB: thirdparty semblait déjà compilé dans mon cas, éventuellement faire make clean puis make. === Utilisation === Pour utiliser dpptam, il faut se mettre dans le répertoire racine catkin: cd ~/catkin_ws Lancer dpptam rosrun dpptam dpptam Si le package dpptam n'existe pas ou n'est pas trouvé par ros, lancer la commande source devel/setup.bash Lancer le visualisateur d'image ( ne fonctionne pas chez moi pour le moment) rosrun image_view image_view image:=/dpptam/camera/image Lancer rviz: rosrun rviz rviz Voir le lien suivant pour la configuration de rviz: [[https://www.dropbox.com/s/pymufqi2i2aixys/visualization_rviz.png?oref=e&n=314995776]] Le global Status ne sera pas Ok tant que le rosbag ne sera pas lancer: rosbag play yourRosBag.bag == Fichier de config Yaml == Il est nécessaire également de configurer le fichier dpptam/src/data.yml. Par exemple pour le rosbag lab_unizar.bag fourni par les auteurs: camera_path:"/camera/rgb/image_color" cameraMatrix: !!opencv-matrix rows: 3 cols: 3 dt: d data: [ 520.908620, 0., 325.141442, 0., 521.007327 , 249.701764, 0., 0., 1. ] distCoeffs: !!opencv-matrix rows: 5 cols: 1 dt: d data: [ 0.231222, -0.784899, -0.003257, -0.000105, 0.917205 ] Il faut mettre à jour le camera_path avec celui ou se trouve les images brutes, et également les coefficients caméra. Fermer et relancer dpptam pour prendre en compte les modifications. =====Ajout du profiling===== Modification de CMakeLists.txt pour ajout de infos de profiling #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3 -march=native ") #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 -march=native") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -march=native -pipe -p -pg -g3 -Wall -W -D_REENTRANT -coverage -fprofile-arcs -ftest-coverage -Wextra -g") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -O0 -march=native -pipe -p -pg -g3 -Wall -W -D_REENTRANT -coverage -fprofile-arcs -ftest-coverage -Wextra -g") ===lancement orbslam2=== bvandepo@rapid:~/orbslam/ORB_SLAM2/Examples/Monocular$ ./mono_kitti ../../Vocabulary/ORBvoc.txt ./KITTI00-02.yaml ../../../dataset/sequences/17/ Cette tentative de profiling ne fait apparaitre que le main mais pas les threads: gprof -zc mono_kitti gmon.out > analysis.txt gprof mono_kitti | ~/tmp/gprof2dot/gprof2dot/gprof2dot.py > gmon.dot dot gmon.dot -Tpng -o gmon.png dot -Tps gmon.dot -o gmon.pdf evince gmon.pdf projet qt dans: ~/orbslam/ORB_SLAM2/qt$ gprof ne supporte pas le multithread ni les appels aux fonctions situées dans des librairies dynamiques: http://gernotklingler.com/blog/gprof-valgrind-gperftools-evaluation-tools-application-level-cpu-profiling-linux/ ====oprofile==== ===installation=== Pour profiler une application multithreadée: http://oprofile.sourceforge.net/download/ cd ~/orbslam mkdir oprofile cd oprofile git clone git://git.code.sf.net/p/oprofile/oprofile sudo apt-get install autoconf automake libpopt-dev l binutils-dev libiberty-dev ./autogen.sh ./configure Warning: The user account 'oprofile:oprofile' does not exist on the system. To profile JITed code, this special user account must exist. Please ask your system administrator to add the following user and group: user name : 'oprofile' group name: 'oprofile' The 'oprofile' group must be the default group for the 'oprofile' user. sudo adduser oprofile make -j4 sudo make install ===utilisation=== cd ~/orbslam/ORB_SLAM2/Examples/Monocular opgprof ./mono_kitti # Generate the gmon.out file gprof -p ./mono_kitti > gmon.txt opreport -cl --demangle=smart `./mono_kitti ../../Vocabulary/ORBvoc.txt ./KITTI00-02.yaml ../../../dataset/sequences/17/` gprof -zc mono_kitti gmon.out > analysis.txt gprof mono_kitti | ~/tmp/gprof2dot/gprof2dot/gprof2dot.py > gmon.dot dot gmon.dot -Tpng -o gmon.png dot -Tps gmon.dot -o gmon.pdf evince gmon.pdf ====valgrind==== sudo apt-get install kcachegrind valgrind valgrind --tool=callgrind ./mono_kitti ../../Vocabulary/ORBvoc.txt ./KITTI00-02.yaml ../../../dataset/sequences/04/ http://valgrind.org/docs/manual/quick-start.html#quick-start.prepare cd ~/orbslam/testvalgrind nano myprog.c gcc -g myprog.c ./a.out valgrind --leak-check=yes ./a.out valgrind --tool=callgrind ./a.out #ATTENTION LE NOM DU FICHIER callgrind.out change à l'execution kcachegrind callgrind.out.4904 ===test avec orbslam2=== cd ~/orbslam/ORB_SLAM2/Examples/Monocular valgrind --tool=callgrind `./mono_kitti ../../Vocabulary/ORBvoc.txt ./KITTI00-02.yaml ../../../dataset/sequences/04/` kcachegrind callgrind.out.3819 =====Problèmes===== https://github.com/raulmur/ORB_SLAM2/issues/117 https://eigen.tuxfamily.org/dox-devel/group__TopicStructHavingEigenMembers.html =====Vrai rosification===== https://www.youtube.com/watch?v=PFgZKqeSh3c ====Par Jonathan==== cd ~/catkin_ws/src ln -s /home/bvandepo/orbslam/ORB_SLAM2/Examples/ROS/ORB_SLAM2 orbslam2 catkin_make --pkg orb_slam2 catkin_make install --pkg orb_slam2 cd ~/catkin_ws/devel source setup.sh ne pas éditer les fichiers dans ~/catkin_ws/install/ car ils sont écrasé lorsqu'on fait le catkin_make install mettre a jour dans /home/bvandepo/catkin_ws/src/orbslam2/launch/launch_kitti.launch sauver dans launch_kitti_bvdp.launch récupérer un bag pour tester: cd /home/bvandepo/orbslam/ wget https://bvdp.inetdoc.net/files/kitti_05.bag Executer cd ~/catkin_ws/ roslaunch orb_slam2 launch_kitti_bvdp.launch bag_path:=/home/bvandepo/orbslam/kitti_05.bag