Update the tuning guide following #598. (#599)

master
Wolfgang Hess 2017-11-16 15:12:53 +01:00 committed by Wally B. Feed
parent d2bb8b3d01
commit f241a679a9
1 changed files with 10 additions and 10 deletions

View File

@ -12,8 +12,8 @@
See the License for the specific language governing permissions and
limitations under the License.
.. cartographer SHA: ea7c39b6f078c693b92fed06d86ca501021147d9
.. cartographer_ros SHA: 44459e18102305745c56f92549b87d8e91f434fe
.. cartographer SHA: 16d62f45f0e77db7c3b49276808725f3a06bcbf4
.. cartographer_ros SHA: d2bb8b3d0166809bde0fffc050222f08aba00e2e
.. TODO(hrapp): mention insert_free_space somewhere
Tuning
@ -31,24 +31,24 @@ The first one is local SLAM (sometimes also called frontend).
Its job is build a locally consistent set of submaps and tie them together, but it will drift over time.
Most of its options can be found in `trajectory_builder_2d.lua`_ for 2D and `trajectory_builder_3d.lua`_ for 3D.
.. _trajectory_builder_2d.lua: https://github.com/googlecartographer/cartographer/blob/ea7c39b6f078c693b92fed06d86ca501021147d9/configuration_files/trajectory_builder_2d.lua
.. _trajectory_builder_3d.lua: https://github.com/googlecartographer/cartographer/blob/ea7c39b6f078c693b92fed06d86ca501021147d9/configuration_files/trajectory_builder_3d.lua
.. _trajectory_builder_2d.lua: https://github.com/googlecartographer/cartographer/blob/16d62f45f0e77db7c3b49276808725f3a06bcbf4/configuration_files/trajectory_builder_2d.lua
.. _trajectory_builder_3d.lua: https://github.com/googlecartographer/cartographer/blob/16d62f45f0e77db7c3b49276808725f3a06bcbf4/configuration_files/trajectory_builder_3d.lua
The other system is global SLAM (sometimes called the backend).
It runs in background threads and its main job is to find loop closure constraints.
It does that by scan-matching scans against submaps.
It also incorporates other sensor data to get a higher level view and identify the most consistent global solution.
In 3D, it also tries to find the direction of gravity.
Most of its options can be found in `sparse_pose_graph.lua`_
Most of its options can be found in `pose_graph.lua`_
.. _sparse_pose_graph.lua: https://github.com/googlecartographer/cartographer/blob/ea7c39b6f078c693b92fed06d86ca501021147d9/configuration_files/sparse_pose_graph.lua
.. _pose_graph.lua: https://github.com/googlecartographer/cartographer/blob/16d62f45f0e77db7c3b49276808725f3a06bcbf4/configuration_files/pose_graph.lua
On a higher abstraction, the job of local SLAM is to generate good submaps and the job of global SLAM is to tie them most consistently together.
Tuning local SLAM
-----------------
For this example we'll start at ``cartographer`` commit `ea7c39b`_ and ``cartographer_ros`` commit `44459e1`_ and look at the bag ``b2-2016-04-27-12-31-41.bag`` from our test data set.
For this example we'll start at ``cartographer`` commit `16d62f4`_ and ``cartographer_ros`` commit `d2bb8b3`_ and look at the bag ``b2-2016-04-27-12-31-41.bag`` from our test data set.
At our starting configuration, we see some slipping pretty early in the bag.
The backpack passed over a ramp in the Deutsches Museum which violates the 2D assumption of a flat floor.
@ -56,8 +56,8 @@ It is visible in the laser scan data that contradicting information is passed to
But the slipping also indicates that we trust the point cloud matching too much and disregard the other sensors quite strongly.
Our aim is to improve the situation through tuning.
.. _ea7c39b: https://github.com/googlecartographer/cartographer/commit/ea7c39b6f078c693b92fed06d86ca501021147d9
.. _44459e1: https://github.com/googlecartographer/cartographer_ros/commit/44459e18102305745c56f92549b87d8e91f434fe
.. _16d62f4: https://github.com/googlecartographer/cartographer/commit/16d62f45f0e77db7c3b49276808725f3a06bcbf4
.. _d2bb8b3: https://github.com/googlecartographer/cartographer_ros/commit/d2bb8b3d0166809bde0fffc050222f08aba00e2e
If we only look at this particular submap, that the error is fully contained in one submap.
We also see that over time, global SLAM figures out that something weird happened and partially corrects for it.
@ -70,7 +70,7 @@ So let's turn off global SLAM to not mess with our tuning.
.. code-block:: lua
SPARSE_POSE_GRAPH.optimize_every_n_scans = 0
POSE_GRAPH.optimize_every_n_scans = 0
Correct size of submaps
^^^^^^^^^^^^^^^^^^^^^^^