=====Installation ROS===== d'après: http://wiki.ros.org/indigo/Installation/Ubuntu ROS Indigo ONLY supports Saucy (13.10) and Trusty (14.04) for debian packages. mais d'apres: http://answers.ros.org/question/189033/can-you-run-indigo-on-ubuntu-1204/ on peut installer indigo sur 12.04 ====Prérequis OPENCV==== sudo add-apt-repository ppa:gezakovacs/lz4 sudo apt-get update sudo apt-get install liblz4-dev liblz4-tool liblz4-0.0 wget http://skylink.dl.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.9/opencv-2.4.9.zip unzip opencv-2.4.9.zip cd opencv-2.4.9/ mkdir build cd build/ cmake .. ou pour des machines du LAAS pour specifier un dossier d installation sur lequel sudo a les droits, A TESTER!!!! cmake -D CMAKE_INSTALL_PREFIX=/local/opencv ../ puis make -j8 sudo make install sudo ldconfig bug compile opencv [ 82%] Building CXX object modules/contrib/CMakeFiles/opencv_contrib.dir/src/rgbdodometry.cpp.o /home/bvandepo/installros/opencv-2.4.9/modules/contrib/src/rgbdodometry.cpp:65:47: erreur fatale: unsupported/Eigen/MatrixFunctions : Aucun fichier ou dossier de ce type modification de /home/bvandepo/installros/opencv-2.4.9/modules/contrib/src/rgbdodometry.cpp , ajouter à la ligne 59 #define EIGEN_WORLD_VERSION 1 le sudo make install foire car il veut ecrire en tant que sudo sur des fichiers qui sont stockés sur le réseau... je déplace en locale sur la machine et crée un lien symbolique cd /local/users/bvandepo mv ~/installros/ ./ ln -s /local/users/bvandepo/installros ~/installros ====ROS Hydro==== http://wiki.ros.org/indigo/Installation/Ubuntu sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-get update sudo apt-get install ros-hydro-desktop-full ca vire la version fuerte et installe hydro apt-cache search ros-hydro rosdep update sudo rosdep init bash echo "source /opt/ros/hydro/setup.bash" >> ~/.bashrc source ~/.bashrc ####IL FAUT LE METTRE A LA FIN DU .bashrc!!!!! sudo apt-get install python-rosinstall liste des paquets ROS dispo sur: http://www.ros.org/debbuild/hydro.html http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment printenv | grep ROS mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace cd ~/catkin_ws/ catkin_make source devel/setup.bash echo $ROS_PACKAGE_PATH http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem sudo apt-get install ros-hydro-ros-tutorials pour avoir la version rosversion -d apt-cache search ros-hydro | grep -i ueye sudo apt-get install ros-hydro-ueye ros-hydro-ueye-cam roscore ====Ueye==== Installation pilote ueye: wget https://fr.ids-imaging.com/download-ueye-lin32.html?file=tl_files/downloads/uEye_SDK/driver/uEye_Linux_4.61_32_Bit.tgz desinstall ancienne version: sudo /usr/local/share/ueye/bin/ueyed_install-usb uninstall install nouvelle: sudo sh ./ueyesdk-setup-4.61-usb-i686.gz.run noeud ueye: http://wiki.ros.org/ueye_cam# This package has been tested with the Software Package for USB and GigE uEye Cameras Version 4.20 64 Bit for Linux, on Ubuntu 12.04 x64 & Ubuntu 13.04 x64, operating with UEye UI122xLE-C USB 2.0 cameras. sur borderouge j'ai la version 3.9 du driver et en 32bits -> je suis passé à la 4.61 pour que ca marche... créer le catkin workspace mkdir -p ~/ueye_catkin/src initialize and download source code cd ~/ueye_catkin/src && wstool init && wstool set ueye_cam --git https://github.com/anqixu/ueye_cam && wstool update && cd .. Run catkin_make catkin_make explication de ce qu'est un catkin: http://wiki.ros.org/catkin/conceptual_overview exécution ueye sur arm: https://www.youtube.com/watch?v=nU1u6vHoZ-I&feature=youtu.be rostopic list lancement d'un script demo: bash cd ~/ueye_catkin/src/ueye_cam/launch roslaunch rgb8.launch (il faut avoir lancé le démon ueye) j'ai cette erreur: /opt/ros/hydro/lib/rosout/rosout: error while loading shared libraries: libroscpp.so: cannot open shared object file: No such file or directory sudo apt-get install ros-hydro-ros-comm ros-hydro-roscpp ros-hydro-roscpp-core ros-hydro-rostime ros-hydro-rqt-gui-cpp en cas de probleme il faut refaire: source /opt/ros/hydro/setup.bash liste des topics du noeud ueye: rostopic list rostopic echo /camera/camera_info rostopic echo /ueye_cam_nodelet/parameter_descriptions rostopic echo /camera/image_raw camera:=/camera REMARQUE: le code du noeud ROS fait une copie du buffer d'image (voir http://docs.ros.org/jade/api/ueye_cam/html/ueye__cam__nodelet_8cpp_source.html ) mais il n'y a pas de lock de la zone mémoire donc le driver de la ueye peut écraser les données! Vu que le pilote ros ueye est bancal, peut être que certaines images sont verrollées (surtout quand je les acquière à 87 fps). Du coup, ca pourrait expliquer certains décrochement de SVO.... il faudra que j'enregistre des séquences vers du ramdisk en utilisant le drivers ros et vérifier quaucune image n'est sectionnée. ====étalonnage géométrique==== http://wiki.ros.org/camera_calibration et http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration rosdep install camera_calibration rosmake camera_calibration rectification et debayerisation de l'image: http://wiki.ros.org/image_proc pour lancer l'étalonnage avec une mire contenant 8x6 intersections de coins espacées de 23mm: rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.023 image:=/camera/image_raw Bouger la camera jusqu'à ce que le bouton calibrate soit dégrisé et cliquer dessus: # oST version 5.0 parameters [image] width 640 height 480 [narrow_stereo] camera matrix 666.954335 0.000000 356.801725 0.000000 664.691658 215.604874 0.000000 0.000000 1.000000 distortion -0.377974 0.145009 -0.000818 -0.001899 0.000000 rectification 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 projection 599.969482 0.000000 363.101026 0.000000 0.000000 626.852661 212.125282 0.000000 0.000000 0.000000 1.000000 0.000000 bouton Save sauve en /tmp/calibrationdata.tar.gz , ce fichier contient les images en png et un fichier ost.txt bouton Commit génère une erreur: Failed to write camera info to file... :( TODO: regarder http://wiki.ros.org/ROS/EnvironmentVariables#ROS_PACKAGE_PATH et régler toutes les variables, notamment le ROS_HOME utiliser: http://wiki.ros.org/camera_calibration_parsers pour convertir le ost.txt en .yml nécessaire à SVO cd /tmp tar -zxvf calibrationdata.tar.gz ost.txt mv ost.txt ost.ini rosrun camera_calibration_parsers convert ost.ini cal.yml ====Tutorial simpliste pour hydro==== http://jbohren.com/articles/roscpp-hello-world/ Ouvrir 3 consoles: roscore cd ~/hello_world_tutorial && ./hello_world_node rosnode info /hello_world_node dans une autre fenêtre, on peut afficher le topic /rosout émis par hello_world_node rostopic echo /rosout ====SVO=== https://github.com/uzh-rpg/rpg_svo papier: https://github.com/uzh-rpg/rpg_svo/blob/master/Forster2014ICRA.pdf http://rpg.ifi.uzh.ch/software_datasets.html installation: https://github.com/uzh-rpg/rpg_svo/wiki https://github.com/uzh-rpg/rpg_svo/wiki/Installation:-Plain-CMake-%28No-ROS%29 ===Installation sans ROS=== DIR=~/Téléchargements/svo sudo apt-get install libboost-all-dev libeigen3-dev cmake libsuitesparse-dev libqt4-dev qt4-qmake libqglviewer-qt4-dev cd $DIR git clone https://github.com/strasdat/Sophus.git cd Sophus git checkout a621ff mkdir build cd build cmake .. make cd $DIR git clone https://github.com/uzh-rpg/fast.git cd fast mkdir build cd build cmake .. make cd $DIR git clone https://github.com/RainerKuemmerle/g2o.git cd g2o mkdir build cd build cmake .. make sudo make install cd $DIR git clone https://github.com/uzh-rpg/rpg_vikit.git in rpg_vikit/vikit_common/CMakeLists.txt set the flag USE_ROS to FALSE. cd rpg_vikit/vikit_common mkdir build cd build cmake .. make cd $DIR git clone https://github.com/uzh-rpg/rpg_svo.git cd rpg_svo/svo In svo/CMakeLists.txt set the flag USE_ROS to FALSE. mkdir build cd build cmake .. make /home/bvandepo/Téléchargements/svo/rpg_svo/svo/src/map.cpp:135:12: erreur: could not convert ‘nullptr’ from ‘std::nullptr_t’ to ‘svo::FramePtr {aka boost::shared_ptr}’ voir: http://stackoverflow.com/questions/29125396/building-svo-package-on-raspberry-pi mais c'est une mauvaise solution, il vaudrait mieux gérer le C++ 11 : http://stackoverflow.com/questions/16886591/how-do-i-enable-c11-in-gcc dans ./src/rpg_svo/svo/CMakeLists.txt changer SET(CMAKE_CXX_FLAGS "-Wall -D_LINUX -D_REENTRANT -march=native -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unknown-pragmas") en SET(CMAKE_CXX_FLAGS "-std=c++11 -Wall -D_LINUX -D_REENTRANT -march=native -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unknown-pragmas") MAIS J OBTIENS: [ 51%] Built target vikit_ros [ 55%] [ 55%] Building CXX object rpg_svo/svo/CMakeFiles/svo.dir/src/frame_handler_base.cpp.o Building CXX object rpg_svo/svo/CMakeFiles/svo.dir/src/frame_handler_mono.cpp.o cc1plus: erreur: unrecognized command line option ‘-std=c++11’ cc1plus: erreur: unrecognized command line option ‘-std=c++11’ make[2]: *** [rpg_svo/svo/CMakeFiles/svo.dir/src/frame_handler_base.cpp.o] Erreur 1 make[2]: *** Attente des tâches non terminées.... cc1plus: erreur: unrecognized command line option ‘-std=c++11’ cc1plus: erreur: unrecognized command line option ‘-std=c++11’ make[2]: *** [rpg_svo/svo/CMakeFiles/svo.dir/src/frame_handler_mono.cpp.o] Erreur 1 make[1]: *** [rpg_svo/svo/CMakeFiles/svo.dir/all] Erreur 2 make: *** [all] Erreur 2 Invoking "make" failed D'APRES: https://www.bountysource.com/issues/8218373-ubuntu-12-04-make-fails-cc1plus-error-unrecognized-command-line-option-std-gnu-11 Hi @Bloodyaugust. I've see this issue and as the C++11 support in 4.6 is not as complete as gcc 4.8, you should use gcc 4.8. You can install gcc-4.8 package: sudo apt-get install g++-4.8 And then, before you run cmake: export CXX="g++-4.8" mais g++-4.8 n'est pas dans les paquets ubuntu 12.04 voir: https://gcc.gnu.org/projects/cxx0x.html exécutables dans : cd ~/Téléchargements/svo/rpg_svo/svo/bin ./test_depth_filter terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid Abandon (core dumped) ===dataset=== https://github.com/uzh-rpg/rpg_svo/wiki/Run-SVO-without-ROS cd $DIR mkdir Datasets export SVO_DATASET_DIR=${DIR}/Datasets wget http://rpg.ifi.uzh.ch/datasets/sin2_tex2_h1_v8_d.tar.gz -O - | tar -xz cd $DIR/rpg_svo/svo/bin ./test_pipeline cd $DIR/Datasets ===Installation avec ROS sur machine Borderouge=== Probleme avec le nfs, il faut mettre les fichiers d'install en local :( cd /local/users/bvandepo mv ~/svo ./ ln -s /local/users/bvandepo/svo ~/svo echo $ROS_PACKAGE_PATH /opt/ros/hydro/share:/opt/ros/hydro/stacks Il faut créer ~/catkin_ws et bien mettre rpg_svo et rpg_vikit dans ~/catkin_ws/src/ puis faire cd ~/catkin_ws catkin_make corriger l'erreur de nullptr ===dataset pour ROS=== https://github.com/uzh-rpg/rpg_svo/wiki/Run-SVO-with-ROS cd ~/catkin_ws && wget rpg.ifi.uzh.ch/datasets/airground_rig_s3_2013-03-18_21-38-48.bag pour utiliser rviz, je dois ajouter à .bashrc car ma carte ne supporte pas opengl2.1 export LIBGL_ALWAYS_SOFTWARE=1 Il faut executer en local sur la machine borderouge car le problème vient de l'export display... =====Tentative en Live===== bvandepo@borderouge:~/catkin_ws/src/rpg_svo/svo_ros/launch$ roslaunch svo_ros ./live.launch [./live.launch] is neither a launch file in package [svo_ros] nor is [svo_ros] a launch file name bvandepo@borderouge:~/catkin_ws/src/rpg_svo/svo_ros/launch$ rosrun rqt_svo rqt_svo [rospack] Error: stack/package rqt_svo not found bvandepo@borderouge:~/catkin_ws/src/rpg_svo/svo_ros/launch$ rosls rqt_svo live.launch live.launch~ test_rig3.launch bvandepo@borderouge:~/catkin_ws/src/rpg_svo/svo_ros/launch$ roscd rqt_svo roscd: No such package/stack 'rqt_svo' D'apres http://answers.ros.org/question/44270/error-stackpackage-nxt_python-not-found/ , c'est un problème de ROS_PACKAGE_PATH environment variable export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/bvandepo/catkin_ws/ echo $ROS_PACKAGE_PATH tentative: rosrun rviz rviz -d /home/bvandepo/catkin_ws/src/rpg_svo/svo_ros/rviz_config.rviz Si en lançant les scrits de launch, on obtient: ERROR: cannot launch node of type [svo_ros/vo]: can't locate node [vo] in package [svo_ros] alors charger: source ~/catkin_ws/devel/setup.bash même problème de gui svo qui affiche not connected: https://github.com/uzh-rpg/rpg_svo/issues/65 Inspection du fichier .bag: rqt_bag ~/catkin_ws/airground_rig_s3_2013-03-18_21-38-48.bag puis cliquer sur l'image toogle thumbnail (voir http://wiki.ros.org/rxbag ) vrac: rostopic list rostopic bw /camera/image_raw rostopic echo /camera/image_raw rostopic hz /camera/image_raw rostopic type /camera/image_raw analyse des paramètres rosparam list rosparam get /svo/cam_cx pour récupérer tous les paramètres du namespace /svo rosparam get /svo les enregistrer vers un fichier dump rosparam dump test.yaml /svo/ Visualisation des échanges de données entre les noeuds ROS, selectionner Nodes/Topics All et cliquer sur raffraichir dans rqt_graph Affichage et tracé d'un topic rostopic echo /imu/data rqt_plot /imu/data/linear_acceleration/x affichage des messages publiés sur /rosout rqt_console ===probleme=== en lancant d'abord roslaunch svo_ros test_rig3.launch puis rosbag play catkin_ws/airground_rig_s3_2013-03-18_21-38-48.bag le noeud svo plante: [ INFO] [1443100635.238342952]: SVO initialized [ INFO] [1443100635.240118679]: Found parameter: svo/cam_topic, value: /camera/image_raw [ INFO] [1443100658.812386743]: RESET [svo-2] process has died [pid 8200, exit code -4, cmd /home/bvandepo/catkin_ws/devel/lib/svo_ros/vo __name:=svo __log:=/home/bvandepo/log/9176bd96-62be-11e5-8a0c-00137297c9b4/svo-2.log]. log file: /home/bvandepo/log/9176bd96-62be-11e5-8a0c-00137297c9b4/svo-2*.log gedit /home/bvandepo/log/9176bd96-62be-11e5-8a0c-00137297c9b4/master.log & gedit /home/bvandepo/log/9176bd96-62be-11e5-8a0c-00137297c9b4/roslaunch-borderouge-8160.log & même problème sans réponse: http://answers.ros.org/question/197452/roslaunch-crash-when-launch-rosbag-play-svo/ Tentative d'executer les programmes de test via ros (ils marchent sans): https://github.com/uzh-rpg/rpg_svo/tree/master/svo/test cd ~/catkin_ws/src/rpg_svo/svo/test mkdir ~/Datasets dans ~/.bashrc export SVO_DATASET_DIR=${HOME}/Datasets cd ${SVO_DATASET_DIR} wget http://rpg.ifi.uzh.ch/datasets/sin2_tex2_h1_v8_d.tar.gz -O - | tar -xz rosrun svo test_pipeline [ INFO] [1443102370.121357754]: SVO initialized reading image /home/bvandepo/Datasets/sin2_tex2_h1_v8_d/img/frame_000002_0.png [ INFO] [1443102370.195465713]: RESET Instruction non permise (core dumped) bvandepo@borderouge:~/Datasets/sin2_tex2_h1_v8_d$ display /home/bvandepo/Datasets/sin2_tex2_h1_v8_d/img/frame_000002_0.png c'est peut être la modif liée au nullptr gedit ~/catkin_ws/src/rpg_svo/svo/src/map.cpp & =====Install sur brute===== ====installation ros et ueye==== Installation de ros jade au lieu de hydro il faut télécharger la version 64bits du driver de la ueye: wget https://fr.ids-imaging.com/download-ueye-lin64.html?file=tl_files/downloads/uEye_SDK/driver/uEye_Linux_4.61_64_Bit.tgz je met ueye dans le catkin avec svo: cd ~/catkin_ws/src && wstool init && wstool set ueye_cam --git https://github.com/anqixu/ueye_cam && wstool update && cd .. sudo apt-get install ros-jade-ros-comm ros-jade-roscpp ros-jade-roscpp-core ros-jade-rostime ros-jade-rqt-gui-cpp Le paquet libqglviewer-qt4-dev est remplacé par: sudo apt-get install libqglviewer-dev ====drivers propriétaires carte nvidia==== http://doc.ubuntu-fr.org/nvidia sudo add-apt-repository ppa:xorg-edgers/ppa sudo apt-get update ubuntu-drivers devices sudo apt-get install nvidia-340 sudo reboot 0 sudo apt-get install nvidia-settings sudo nvidia-settings http://doc.ubuntu-fr.org/gestionnaire_de_pilotes_proprietaires ====exécution==== ====script pour avoir l'image en 752*480 avec la ueye==== cp ~/catkin_ws/src/ueye_cam/launch/rgb8.launch ~/catkin_ws/src/ueye_cam/launch/rgb8752.launch changer 640 en 752 gedit ~/catkin_ws/src/ueye_cam/launch/rgb8752.launch ====étalonnage==== cd ~/catkin_ws/src/ueye_cam/launch roslaunch rgb8752.launch et dans une autre console: rosrun camera_calibration cameracalibrator.py --size 8x8 --square 0.022 image:=/camera/image_raw calibrate, save et commit cd /tmp tar -zxvf calibrationdata.tar.gz ost.txt mv ost.txt ost.ini rosrun camera_calibration_parsers convert ost.ini cal.yml cp cal.yml ~/catkin_ws/ Ce n'est pas le même format yaml que celui attendu par svo!!!! voir: https://github.com/uzh-rpg/rpg_svo/wiki/Camera-Calibration cd ~/catkin_ws/src find .| grep param ./rpg_vikit/vikit_ros/include/vikit/params_helper.h ./rpg_svo/svo_ros/param ./rpg_svo/svo_ros/param/camera_pinhole.yaml ./rpg_svo/svo_ros/param/vo_fast.yaml ./rpg_svo/svo_ros/param/camera_atan.yaml ./rpg_svo/svo_ros/param/vo_accurate.yaml cd /home/bvdp/catkin_ws/src/rpg_svo/svo_ros/param cp camera_pinhole.yaml camera_pinhole_ueye.yaml gedit camera_pinhole_ueye.yaml ~/catkin_ws/cal.yml & copier les valeurs de camera_matrix->data et distorsion_coefficients->data ====live==== cp ~/catkin_ws/src/rpg_svo/svo_ros/launch/live.launch ~/catkin_ws/src/rpg_svo/svo_ros/launch/liveueye.launch gedit ~/catkin_ws/src/rpg_svo/svo_ros/launch/liveueye.launch & changer en ===script launch qui intègre lancement camera + svo=== merger ~/catkin_ws/src/rpg_svo/svo_ros/launch/ liveueye.launch et ~/catkin_ws/src/ueye_cam/launch/rgb8752.launch en ~/catkin_ws/src/rpg_svo/svo_ros/launch/ liveueye2.launch ===optimisation=== script liveueye3.launch qui règle la caméra ueye pour avoir 70fps et des paramètres d'exposition et de gain fixes (déterminés avec ueyedemo) ===exécution=== NB: il ne faut surtout pas donner le chemin devant le nom du fichier launch!!!! cd ~/catkin_ws/src/rpg_svo/svo_ros/launch roslaunch svo_ros liveueye3.launch dans la console texte, on peut presser R (reset) S (start) Q (quitter) normalement, une gui doit s'ouvrir, sinon: rosrun rqt_svo rqt_svo Pour afficher la visu en 3D: rosrun rviz rviz et load du fichier de configuration Pour adapter aux conditions d'éclairage, changer la valeur de . Si l'éclairage est de type néon, il faut régler une valeur multiple de 10ms pour intégrer des périodes complètes du 100hz. cam_model: Pinhole cam_width: 752 cam_height: 480 cam_fx: 653.851271 cam_fy: 653.296902 cam_cx: 365.892823 cam_cy: 219.379481 cam_d0: -0.438732 cam_d1: 0.204663 cam_d2: -0.000598 cam_d3: 0.000145 =====Traitement Séquence aircobot===== ===Extraction d'une séquence de pgm par décimation=== #!/bin/bash rm select/image_*.pgm rm select/image_*.png rm select/image_*.jpg rm select/image_*.tif IMG_DIR="selecttif/" mkdir -p $IMG_DIR LIST_FILE=$IMG_DIR"list.txt" rm $LIST_FILE j=0 for i in $(seq -w 1 60 3769); do echo $j #formate sur 4 digits jf=`printf "%04.f\n" $j` echo $jf #cp image_$i.pgm $IMG_DIR/image_$jf.pgm convert image_$i.pgm $IMG_DIR/image_$jf.tif j=`expr $j + 1` done for k in $(seq -w 1 59); do #genere des paires for inc in $(seq 1 3); do l=`expr $k + $inc` #formate sur 4 digits kf=`printf "%04.f\n" $k` lf=`printf "%04.f\n" $l` echo image_$kf.pgm image_$lf.pgm >>$LIST_FILE done done ===Génération d'un bag à partir de séquence d'image pgm=== http://answers.ros.org/question/11537/creating-a-bag-file-out-of-a-image-sequence/ #adaptation par bvandepo de http://answers.ros.org/question/11537/creating-a-bag-file-out-of-a-image-sequence/ #pour traiter des séquences d'images en niveaux de gris (pgm ou png) et les trier import time, sys, os from ros import rosbag import roslib import rospy roslib.load_manifest('sensor_msgs') from sensor_msgs.msg import Image import ImageFile def GetFilesFromDir(dir): '''Generates a list of files from the directory''' print( "Searching directory %s" % dir ) all = [] if os.path.exists(dir): for path, names, files in os.walk(dir): for f in files: if os.path.splitext(f)[1] in ['.png','.pgm']: all.append( os.path.join( path, f ) ) return all def CreateMonoBag(imgs,bagname): '''Creates a bag file with camera images''' bag =rosbag.Bag(bagname, 'w') #tri des images par nom croissant imgs=sorted(imgs) try: for i in range(len(imgs)): print("Adding %s" % imgs[i]) fp = open( imgs[i], "r" ) p = ImageFile.Parser() while 1: s = fp.read(1024) if not s: break p.feed(s) im = p.close() Stamp = rospy.rostime.Time.from_sec(time.time()) Img = Image() Img.header.stamp = Stamp Img.width = im.size[0] Img.height = im.size[1] Img.encoding = "mono8" Img.header.frame_id = "camera" #Img_data = [pix for pixdata in im.getdata() for pix in pixdata] Img_data = [pix for pix in im.getdata()] Img.data = Img_data bag.write('camera/image_raw', Img, Stamp) finally: bag.close() def CreateBag(args): '''Creates the actual bag file by successively adding images''' all_imgs= GetFilesFromDir(args[0]) if len(all_imgs) <= 0: print("No images found in %s" % args[0]) exit() # create bagfile with mono camera image stream CreateMonoBag(all_imgs, args[1]) if __name__ == "__main__": if len( sys.argv ) == 3: CreateBag( sys.argv[1:]) else: print( "Usage: img2bag_gray_mono imagedir bagfilename") ===Extraction d'images contenues dans un bag=== http://wiki.ros.org/rosbag/Tutorials/Exporting%20image%20and%20video%20data ===Paramètres caméra=== CAMERA_TYPE: 0 CAMERA_DEVICE: 0x00b09d010063565b IMG_WIDTH: 640 IMG_HEIGHT: 480 INTRINSIC: [4](327.3508, 249.9982, 622.0489, 621.6159) DISTORTION: [3](-0.3270245, 0.1944629, -0.09558001) mais les images fournies sont déjà rectifiées, faire un fichier: cam_model: Pinhole cam_width: 640 cam_height: 480 cam_fx: 622.0489 cam_fy: 621.6159 cam_cx: 327.3508 cam_cy: 249.9982 cam_d0: 0 cam_d1: 0 cam_d2: 0 cam_d3: 0 Pour connaître les paramètres des images publiées sur le topic /camera/image_raw rostopic echo /camera/image_raw | grep width -A 3 -B 2 http://wiki.ros.org/rosbag/Tutorials/Recording%20and%20playing%20back%20data rosbag info aircobot1.bag path: aircobot1.bag version: 2.0 duration: 17.9s start: Sep 30 2015 14:30:48.06 (1443616248.06) end: Sep 30 2015 14:31:05.99 (1443616265.99) size: 88.0 MB messages: 300 compression: none [100/100 chunks] types: sensor_msgs/Image [060021388200f6f0f447d0fcd9c64743] topics: camera/image_raw 300 msgs : sensor_msgs/Image =====A faire===== tenter des réglages: https://github.com/uzh-rpg/rpg_svo/wiki/Parameter-Settings étalonner la camera avec le modèle ATAN: https://github.com/uzh-rpg/rpg_svo/wiki/Camera-Calibration intégrer les données inertielles: http://rpg.ifi.uzh.ch/software_datasets.html voir l'execution sur raspberry ou autre ARM: https://pixhawk.org/dev/ros/visual_estimation https://pixhawk.org/dev/ros/getting_started_tutorial http://frc.ri.cmu.edu/~kaess/vslam_cvpr14/ http://frc.ri.cmu.edu/~kaess/vslam_cvpr14/media/VSLAM-Tutorial-CVPR14-P22-SLAM%2B%2B.pdf