Table des matières

Conseils photos: http://www.premiumbeat.com/blog/3-tips-for-dealing-with-rolling-shutter/

Biblio

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

Algèbre de Lie SO3,SE3

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 Optim

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.

Autres

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

Camera Ueye Rolling

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]

IMU xsens MTI

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

MOCAP Adream

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