Conseils photos: http://www.premiumbeat.com/blog/3-tips-for-dealing-with-rolling-shutter/
Thèse Strasdat: https://www.doc.ic.ac.uk/~ajd/Publications/strasdat_phd2012.pdf
Adding Synchronization and Rolling Shutter in Multi-Camera Bundle Adjustment, GUYEN, LHUILLIER: SYNC. AND ROLLING SHUTTER IN MULTI-CAMERA B.A: http://maxime.lhuillier.free.fr/pBmvc16.pdf
Exemples et vidéos sur: http://maxime.lhuillier.free.fr/
Dense Continuous-Time Tracking and Mapping with Rolling Shutter RGB-D Cameras, Christian Kerl, Jörg Stückler and Daniel Cremers: http://wp.doc.ic.ac.uk/thefutureofslam/wp-content/uploads/sites/93/2015/12/kerl_etal_iccv2015_futureofslam_talk.pdf
Rolling Shutter Stereo, Olivier Saurer, Kevin Koser, Jean-Yves Bouguet, Marc Pollefeys: https://www.inf.ethz.ch/personal/marc.pollefeys/pubs/SaurerICCV13.pdf
https://www.inf.ethz.ch/personal/marc.pollefeys/publications.html
Semi-Dense Visual Odometry for AR on a Smartphone, Thomas Schöps, Jakob Engel, Daniel Cremers: https://vision.in.tum.de/_media/spezial/bib/schoeps14ismar.pdf néglige la géométrie rolling shutter et traite plutôt des aspects optimisation du code sur l'approche LSDSLAM (à confirmer)
Geometric Models of Rolling-Shutter Cameras, Meingast, Geyer, Sastry: http://www.frc.ri.cmu.edu/users/cgeyer/papers/roll-shutter.pdf Décrit un modèle de caméra rolling shutter ainsi qu'une méthode d'étalonnage associé à l'aide d'une LED à fréquence connue.
Rolling Shutter Camera Calibration, Luc Oth, Paul Furgale, Laurent Kneip, Roland Siegwart: http://www.cv-foundation.org/openaccess/content_cvpr_2013/papers/Oth_Rolling_Shutter_Camera_2013_CVPR_paper.pdf Propose une méthode d'étalonnage à partir d'une séquence vidéo RS observant une mire.
Real-time Motion Tracking on a Cellphone using Inertial Sensing and a Rolling-Shutter Camera, Mingyang Li, Byung Hyung Kim and Anastasios I. Mourikis: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.441.7962&rep=rep1&type=pdf Vidéo: https://www.youtube.com/watch?v=ioP2LEDKXXI
High-fidelity Sensor Modeling and Self-Calibration in Vision-aided Inertial Navigation, Mingyang Li, Hongsheng Yu, Xing Zheng, and Anastasios I. Mourikis: https://pdfs.semanticscholar.org/2fc8/94bdfbe36c502df8d9efb3ca6eb2d4a3c56d.pdf et http://www.ee.ucr.edu/~mourikis/papers/Li2013IJRR.pdf Odométrie inertielle-visuelle avec un modèle de caméra RS et proposant un auto étalonnage des paramètres (paramètres intrinsèques, transformation IMU-camera, biais gyro et accelero, RS readout time, …). L'algorithme est basée sur un EKF ( MSCKF 2.0 )
Spline Fusion, Steven Lovegrove, Alton-Perez , Gabe Sibley: http://vrerse.com/wp-content/uploads/2015/05/Spline-fusion1.pdf
Rolling Shutter Bundle Adjustment Johan Hedborg, Per-Erik Forssen, Michael Felsberg, Erik Ringaby: http://users.isy.liu.se/cvl/perfo/papers/hedborg_cvpr12.pdf Interpole les poses à l'intérieur d'une image à partir de Rotations et translations clés. L'interpolation est découplée pour la rotation (SLERP) et la translation (Linéaire)
R6P - Rolling Shutter Absolute Pose Problem, Cenek Albl, Zuzana Kukelova, Tomas Pajdla: http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Albl_R6P_-_Rolling_2015_CVPR_paper.pdf
Rolling shutter absolute pose problem with known vertical direction, Cenek Albl, Zuzana Kukelova, Tomas Pajdla: http://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Albl_Rolling_Shutter_Absolute_CVPR_2016_paper.pdf
Un très bon résumé sur les paramétrisations SE3, par Jose-Luis Blanco: https://pixhawk.org/_media/dev/know-how/jlblanco2010geometry3d_techrep.pdf
Un autre rapport sur les groupes de Lie, par Ethan Eade: http://www.ethaneade.org/lie.pdf
IMU preintegration on Manifold for efficient Visual-Inertial Maximum-a-posterioeri Estimation, Forster,Carline,Dellaert, Scaramuzza: http://www.roboticsproceedings.org/rss11/p06.pdf Ici les auteurs propose une méthode de pré-intégration des données inertielles dans un repère locale (pour les rotations S03) qui peut être facilement intégré ensuite dans un graphe sous la forme d'une seule contrainte sur le mouvement.
Visual-Inertial Monocular SLAM with Map Reuse, Mur-Artal, Tardos: https://arxiv.org/abs/1610.05949 Dans cet article, les auteurs d'OrbSlam propose d'intégrer les données inertielles dans le SLAM en utilisant la méthode décrite par Forster(voir ci dessus), et propose également une méthode d'initialisation afin d'étalonner les IMU et d'obtenir l'échelle absolue.
Visual-Inertial Direct SLAM, Alejo Concha, Giuseppe Loianno, Vijay Kumar, Javier Civera: http://webdiis.unizar.es/~jcivera/papers/concha_etal_icra16.pdf Une version de DPPTAM (LSDSLAM+superpixel-dense-reconst) avec les IMU.
Bonus, Qualcom Vuforia tracking video: https://www.youtube.com/watch?v=JshfLAxQAoI
Survey sur le bundle adjustment, “Bundle Adjustment, a modern Synthesis”,Bill Triggs, Philip McLauchlan, Richard Hartley and Andrew Fitzgibbon: https://lear.inrialpes.fr/pubs/2000/TMHF00/Triggs-va99.pdf
DPPTAM: http://webdiis.unizar.es/~jcivera/papers/concha_civera_iros15.pdf SLAM semi dense (basé LSDSLAM) avec reconstruction superpixel plan.
“Relative Bundle Adjustment”, Gabe Sibley: http://www.robots.ox.ac.uk/~gsibley/Personal/Papers/rba.pdf
Les cameras Ueye rolling shutter, à l'inverse des caméras standard GS, utilisent les drivers standards de camera usb, et ne nécessite donc aucun driver spécifique ueye. L'utilisation du noeud ROS usb_cam est donc tout indiqué.
Pour installer le noeud usb-cam
cd ~/catkin-ws/src git clone https://github.com/bosch-ros-pkg/usb_cam.git cd .. && catkin_make source ~/catkin-ws/devel/setup.bash
Pour tester la camera
roslaunch usb_cam usb_cam-test.launch
Différents paramètres peuvent être définis dans le fichier launch, voir: http://wiki.ros.org/usb_cam
Le framerate de la camera peut être réglé dans les paramètres, cependant, il semble que la fréquence ne suive celle demandée. Vérification du framerate de la camera:
rostopic hz --window=1000 /usb_cam/image_raw
Résultats pour 50hz fps demandé:
subscribed to [/usb_cam/image_raw] average rate: 14.392 min: 0.063s max: 0.075s std dev: 0.00315s window: 14 average rate: 14.367 min: 0.058s max: 0.086s std dev: 0.00536s window: 28
Pour 25 ou 15 fps demandé, le fps moyen trouvé est de l'ordre de 12.5hz .
L'autoexposure y est probablement pour quelque chose, est le paramètre semble être accesible est désactivable même si il n'est pas cité dans le wiki ROS. (visible ici : http://docs.ros.org/indigo/api/usb_cam/html/usb__cam__node_8cpp_source.html)
Pour enregistrer une toutes les images d'un topic, on peut utiliser image_saver:
rosrun image_view image_saver image:=[your topic]
Utilisation de la centrale inertielle MTI-1.
Télécharger les drivers xsens ros:
http://wiki.ros.org/xsens_driver
Brancher la centrale, et vérifier qu'elle est bien reconnue:
lsusb
Pour configurer la centrale voir:
http://answers.ros.org/question/56635/xsens-error-comunicating-with-ubuntu-1204/#56959
Penser à activer les droits sur /dev/ttyUSB0:,,
sudo chmod 777 /dev/ttyUSB0
Maintenant avec ros il est possible d'écouter la centrale:
roslaunch xsens_driver xsens_driver.launch
utilisation du fichier python pour “écouter” la centrale:
sudo nodes/mtdevice.py --echo --device=/dev/ttyUSB0 --output-mode=o --output-settings=q
Attention cette commande fait tout foirer: rosrun xsens_driver mtdevice.py -l –output-mode=coapvs –output-settings=tqMAG
Pour réinitialiser en mode factory au cas ou:
rosrun xsens_driver mtdevice.py -r
Une version simple de configuration donné en exemple :
rosrun xsens_driver mtdevice.py --configure=wd,ad,mf,ip,if,sw
Une autre configuration utile pour nous:
rosrun xsens_driver mtdevice.py --configure=if,oq,aa,wr
(if: timestamp, oq: orientation quat, aa: acceleration, wr: vitesse angulaire)
Version avec les raws data (A tester):
rosrun xsens_driver mtdevice.py --configure=if,rr
Pour toute utilisation de MOCAP exclusive, réserver à l'avance ici:
https://sysadmin.laas.fr/public/grr
Installation robotpkg dans votre répertoire home:
git clone git://git.openrobots.org/robots/robotpkg
Aller dans le repertoire robotpkg/bootstrap:
cd robotpkg/bootstrap/
Bootstrap
./bootstrap --prefix=${HOME}/openrobots
Ajouter les chemins suivant à votre variable d'env PATH dans le .bashrc:
export ROBOTPKG_BASE=$HOME/openrobots export PATH=$ROBOTPKG_BASE/bin:$ROBOTPKG_BASE/sbin:$PATH export PKG_CONFIG_PATH=$ROBOTPKG_BASE/lib/pkgconfig:$PKG_CONFIG_PATH export ROS_PACKAGE_PATH=$ROBOTPKG_BASE/share:$ROS_PACKAGE_PATH export PYTHONPATH=$ROBOTPKG_BASE/lib/python2.7/site-packages:$PYTHONPATH
Aller dans openrobots/etc:
cd openrobots/etc/
Editer le fichier de configuration :
gedit robotpkg.conf
Ajouter les lignes suivantes dans package configuration:
PKG_OPTIONS.demo-genom3+= codels ros-server ros-client-ros ros-client-c PKG_OPTIONS.optitrack-genom3+= codels ros-server ros-client-ros ros-client-c
Puis ensuite, faire make update dans les package désirés.
Pour utiliser la MOCAP, voir:
https://wiki.laas.fr/icu/MocapOptitrackAdream