docs: Sphinx — 9 pages rst, conf.py rtd-theme, sources.bib, navigator_imu
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
134
docs/source/slam_stack.rst
Normal file
134
docs/source/slam_stack.rst
Normal file
@@ -0,0 +1,134 @@
|
||||
Stack SLAM
|
||||
==========
|
||||
|
||||
Choix : ORB-SLAM3
|
||||
-----------------
|
||||
|
||||
ORB-SLAM3 :cite:`campos2021orbslam3` est retenu comme backend SLAM.
|
||||
|
||||
Justification :
|
||||
|
||||
- **Modes** : Monoculaire, Stéréo, RGB-D, IMU (Stéréo-Inertiel)
|
||||
- **Précision** : RMSE trajectoire < 2 cm en stéréo indoor (EuRoC dataset)
|
||||
- **Open-source** : GPLv3, actif sur GitHub
|
||||
- **ROS2** : wrappers disponibles (ros2-orbslam3)
|
||||
- **Robustesse** : réinitialisation automatique, loop closure, multi-map
|
||||
|
||||
Comparatif
|
||||
----------
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 20 20 20 20 20
|
||||
|
||||
* - Stack
|
||||
- Mode stéréo
|
||||
- IMU
|
||||
- ROS2
|
||||
- Licence
|
||||
* - **ORB-SLAM3**
|
||||
- Oui
|
||||
- Oui
|
||||
- Via wrapper
|
||||
- GPLv3
|
||||
* - VINS-Fusion
|
||||
- Oui
|
||||
- Oui
|
||||
- ROS1 natif
|
||||
- GPLv3
|
||||
* - OpenVSLAM
|
||||
- Oui
|
||||
- Non
|
||||
- Oui
|
||||
- BSD
|
||||
* - Kimera
|
||||
- Oui
|
||||
- Oui
|
||||
- ROS1
|
||||
- BSD
|
||||
* - ElasticFusion
|
||||
- RGB-D only
|
||||
- Non
|
||||
- Non
|
||||
- Non-commercial
|
||||
|
||||
VINS-Fusion :cite:`qin2019fusion` — candidat secondaire.
|
||||
Avantage : robustesse outdoor. Inconvénient : ROS1, moins maintenu.
|
||||
|
||||
Architecture ORB-SLAM3
|
||||
----------------------
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
┌─────────────────────────────────────────────────┐
|
||||
│ ORB-SLAM3 │
|
||||
│ │
|
||||
│ Tracking Thread ──► Local Mapping Thread │
|
||||
│ │ │ │
|
||||
│ Feature ORB Map Points │
|
||||
│ Matching KeyFrames │
|
||||
│ │ │ │
|
||||
│ Pose Estimation Loop Closing Thread │
|
||||
│ (PnP + IMU) (DBoW2 + g2o) │
|
||||
│ │ │
|
||||
│ Atlas (Multi-Map) │
|
||||
└─────────────────────────────────────────────────┘
|
||||
|
||||
Dépendances compilation
|
||||
-----------------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# Eigen3
|
||||
sudo apt install libeigen3-dev
|
||||
|
||||
# OpenCV 4.x
|
||||
sudo apt install libopencv-dev
|
||||
|
||||
# Pangolin (viewer 3D)
|
||||
git clone https://github.com/stevenlovegrove/Pangolin
|
||||
cd Pangolin && cmake -B build && cmake --build build
|
||||
|
||||
# g2o (inclus dans ORB-SLAM3)
|
||||
# DBoW2 (inclus dans ORB-SLAM3)
|
||||
|
||||
# ORB-SLAM3
|
||||
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3
|
||||
cd ORB_SLAM3 && chmod +x build.sh && ./build.sh
|
||||
|
||||
Paramètres SLAM — fichier YAML
|
||||
--------------------------------
|
||||
|
||||
Voir ``config/orbslam3_stereo.yaml`` (à créer après calibration) :
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
Camera.type: "KannalaBrandt8" # ou "Pinhole"
|
||||
Camera.fx: 525.0
|
||||
Camera.fy: 525.0
|
||||
Camera.cx: 640.0
|
||||
Camera.cy: 360.0
|
||||
|
||||
Stereo.b: 0.11 # baseline en mètres
|
||||
Stereo.ThDepth: 35.0 # profondeur max (b * ThDepth pixels)
|
||||
|
||||
ORBextractor.nFeatures: 1000
|
||||
ORBextractor.scaleFactor: 1.2
|
||||
ORBextractor.nLevels: 8
|
||||
|
||||
Contraintes sous-marines
|
||||
-------------------------
|
||||
|
||||
- **Texture** : eau lisse = peu de features. Pointer vers fond ou structure.
|
||||
- **Absorption** : rouge absorbé > 3 m. Filtre passe-haut sur illumination.
|
||||
- **Turbidité** : features instables. Réduire ``ThDepth``, augmenter ``nFeatures``.
|
||||
- **Réfraction** : calibration en air ≠ en eau. Recalibrer si possible en eau.
|
||||
|
||||
Références
|
||||
----------
|
||||
|
||||
:cite:`campos2021orbslam3`
|
||||
|
||||
:cite:`qin2019fusion`
|
||||
|
||||
:cite:`joshi2019survey`
|
||||
Reference in New Issue
Block a user