2016-07-25 18:30:48 -07:00
|
|
|
Pose Graph 2D
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
The Simultaneous Localization and Mapping (SLAM) problem consists of building a
|
|
|
|
|
map of an unknown environment while simultaneously localizing against this
|
|
|
|
|
map. The main difficulty of this problem stems from not having any additional
|
|
|
|
|
external aiding information such as GPS. SLAM has been considered one of the
|
|
|
|
|
fundamental challenges of robotics. A pose graph optimization problem is one
|
|
|
|
|
example of a SLAM problem.
|
|
|
|
|
|
|
|
|
|
This package defines the necessary Ceres cost functions needed to model the
|
|
|
|
|
2-dimensional pose graph optimization problem as well as a binary to build and
|
|
|
|
|
solve the problem. The cost functions are shown for instruction purposes and can
|
|
|
|
|
be speed up by using analytical derivatives which take longer to implement.
|
|
|
|
|
|
|
|
|
|
Running
|
|
|
|
|
-----------
|
|
|
|
|
This package includes an executable `pose_graph_2d` that will read a problem
|
|
|
|
|
definition file. This executable can work with any 2D problem definition that
|
|
|
|
|
uses the g2o format. It would be relatively straightforward to implement a new
|
2016-08-10 09:29:12 -07:00
|
|
|
reader for a different format such as TORO or others. `pose_graph_2d` will print
|
2016-07-25 18:30:48 -07:00
|
|
|
the Ceres solver full summary and then output to disk the original and optimized
|
|
|
|
|
poses (`poses_original.txt` and `poses_optimized.txt`, respectively) of the
|
|
|
|
|
robot in the following format:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
pose_id x y yaw_radians
|
|
|
|
|
pose_id x y yaw_radians
|
|
|
|
|
pose_id x y yaw_radians
|
|
|
|
|
...
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
where `pose_id` is the corresponding integer ID from the file definition. Note,
|
|
|
|
|
the file will be sorted in ascending order for the `pose_id`.
|
|
|
|
|
|
2018-01-19 16:06:00 -08:00
|
|
|
The executable `pose_graph_2d` has one flag `--input` which is the path to the
|
2016-08-10 09:29:12 -07:00
|
|
|
problem definition. To run the executable,
|
2016-07-25 18:30:48 -07:00
|
|
|
|
|
|
|
|
```
|
2018-01-19 16:06:00 -08:00
|
|
|
/path/to/bin/pose_graph_2d --input /path/to/dataset/dataset.g2o
|
2016-07-25 18:30:48 -07:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
A python script is provided to visualize the resulting output files.
|
|
|
|
|
```
|
2016-08-10 09:29:12 -07:00
|
|
|
/path/to/repo/examples/slam/pose_graph_2d/plot_results.py --optimized_poses ./poses_optimized.txt --initial_poses ./poses_original.txt
|
2016-07-25 18:30:48 -07:00
|
|
|
```
|