-
Notifications
You must be signed in to change notification settings - Fork 92
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add docs on geo-ref and localization
- Loading branch information
Showing
6 changed files
with
239 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
.. _geo-referencing: | ||
|
||
====================== | ||
Georeferencing | ||
====================== | ||
Georeferencing trajectories and metric maps is implemented in the :ref:`mola_sm_loop_closure <mola_licenses>` package. | ||
|
||
The concept of using simple-maps as intermediary map format together with the layered metric map format (see :cite:`blanco2024mola_lo`) | ||
enables embedding georeferenced coordinates to any kind of map typically used in robotics: grid maps, voxel maps, point clouds, etc. | ||
|
||
.. image:: https://mrpt.github.io/imgs/kaist01_georef_sample.png | ||
|
||
| | ||
.. contents:: Table of Contents | ||
:depth: 1 | ||
:local: | ||
:backlinks: none | ||
|
||
| | ||
1. How to build a georeferenced map | ||
-------------------------------------------- | ||
First, build a simple-map from a dataset or a live robot as described in :ref:`building-maps`. | ||
Make sure of having a GPS (GNSS) sensor source emitting observations, and that they were captured | ||
by MOLA-LO (see :ref:`the corresponding variable <mola_lo_pipeline_sensor_inputs>` in the LO pipeline). | ||
|
||
Then, build the corresponding metric map by applying a metric map generation pipeline (see :cite:`blanco2024mola_lo` | ||
or :ref:`this step <building-maps_step_mm>` in the tutorial: | ||
|
||
.. code-block:: bash | ||
# Build metric map (mm) from simplemap (sm): | ||
sm2mm -i datasetWithGPS.simplemap -o myMap.mm -p sm2mm_pipeline.yaml | ||
Now, to find out the optimized map-to-ENU transformation and write it into the | ||
map file, use: | ||
|
||
.. code-block:: bash | ||
# georeference it: | ||
mola-sm-georeferencing -i datasetWithGPS.simplemap --write-into myMap.mm | ||
.. dropdown:: Full CLI reference | ||
:icon: code-review | ||
|
||
.. code-block:: bash | ||
USAGE: | ||
mola-sm-georeferencing [-v <INFO>] [-l <foobar.so>] [--write-into | ||
<map.mm>] -i <map.simplemap> [--] | ||
[--version] [-h] | ||
Where: | ||
-v <INFO>, --verbosity <INFO> | ||
Verbosity level: ERROR|WARN|INFO|DEBUG (Default: INFO) | ||
-l <foobar.so>, --load-plugins <foobar.so> | ||
One or more (comma separated) *.so files to load as plugins, e.g. | ||
defining new CMetricMap classes | ||
--write-into <map.mm> | ||
An existing .mm file in which to write the georeferencing metadata | ||
-i <map.simplemap>, --input <map.simplemap> | ||
(required) Input .simplemap file | ||
--, --ignore_rest | ||
Ignores the rest of the labeled arguments following this flag. | ||
--version | ||
Displays version information and exits. | ||
-h, --help | ||
Displays usage information and exits. | ||
| | ||
2. Georeferenced trajectories | ||
-------------------------------------- | ||
Once you already have a **trajectory** file in the **local map frame of reference**, | ||
for example, as generated by MOLA-LO in TUM format, | ||
and after georeferencing the generated map as shown above, | ||
you can use the CLI tool ``mola-trajectory-georef`` to convert it into geodetic coordinates, | ||
for example in KML format suitable for visualization in Google Earth. | ||
|
||
.. dropdown:: Full CLI reference | ||
:icon: code-review | ||
|
||
.. code-block:: bash | ||
USAGE: | ||
mola-trajectory-georef -o <path.kml> -t <traj.tum> -m <map.mm> [--] | ||
[--version] [-h] | ||
Where: | ||
-o <path.kml>, --output <path.kml> | ||
(required) The name of the google earth kml file to write to | ||
-t <traj.tum>, --trajectory <traj.tum> | ||
(required) Input .tum trajectory, in map local coordinates | ||
-m <map.mm>, --map <map.mm> | ||
(required) Input .mm map with georef info | ||
--, --ignore_rest | ||
Ignores the rest of the labeled arguments following this flag. | ||
--version | ||
Displays version information and exits. | ||
-h, --help | ||
Displays usage information and exits. | ||
| | ||
3. Georeferenced maps in mm-viewer | ||
---------------------------------------- | ||
Write me! | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
.. _localization-only: | ||
|
||
====================== | ||
Localization | ||
====================== | ||
Localization differs from SLAM in that the map or world model is **not updated** while | ||
it is being used to keep a robot or vehicle accurately localized within a pre-mapped environment :cite:`blanco2024mola_lo`. | ||
|
||
Once :ref:`a map is built <building-maps>`, the result is a simple-map and/or a metric map (``*.mm``), optionally :ref:`georeferenced <geo-referencing>`. | ||
This map can then be used to enable autonomous navigation ("Go from A to B"), for which localization is a fundamental | ||
requirement ("Where is B?"). | ||
|
||
At present, this framework provides two fundamentally different algorithms for **localization**: | ||
|
||
* **Based on optimization**, by using the :ref:`LiDAR odometry module <mola_lidar_odometry>`, without map updates. | ||
* **Based on particle filtering**, by using any combination of metric maps (grid maps, point clouds, etc.) and wheels odometry. | ||
|
||
____________________________________________ | ||
|
||
.. contents:: Table of Contents | ||
:depth: 1 | ||
:local: | ||
:backlinks: none | ||
|
||
____________________________________________ | ||
|
||
| | ||
1. Common aspects | ||
-------------------------------------- | ||
Independently of the localization algorithm, the problem of finding the *rough* localization | ||
of the vehicle at start up is quite special due to the large **initial uncertainty**. | ||
|
||
MOLA provides a specific module for this task (:ref:`doxid-group__mola__relocalization__grp`) | ||
which can be used by all position tracking algorithms to solve the initial relocalization problem. | ||
|
||
Also, implementations below offer two ways to specify the **initial guess** about the robot | ||
pose in the environment: | ||
|
||
* From **a pose with a covariance**, which needs to be given manually either from a ROS topic, RViz/FoxGlove, or a parameter; and | ||
* From **GNSS readings** ("Automatic re-localization via GPS"). This version requires :ref:`georeferenced metric maps <geo-referencing>`, naturally. | ||
|
||
| | ||
|
||
2. Localization with LiDAR odometry | ||
-------------------------------------- | ||
Write me! | ||
|
||
|
||
| | ||
|
||
3. Localization with particle filtering | ||
---------------------------------------- | ||
Write me! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters