Update the tuning guide following #604. (#606)

master
Wolfgang Hess 2017-11-17 15:46:54 +01:00 committed by Wally B. Feed
parent 99c23b6ac7
commit e0e3bdd625
1 changed files with 9 additions and 9 deletions

View File

@ -12,8 +12,8 @@
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
.. cartographer SHA: 16d62f45f0e77db7c3b49276808725f3a06bcbf4 .. cartographer SHA: aba4575d937df4c9697f61529200c084f2562584
.. cartographer_ros SHA: d2bb8b3d0166809bde0fffc050222f08aba00e2e .. cartographer_ros SHA: 99c23b6ac7874f7974e9ed808ace841da6f2c8b0
.. TODO(hrapp): mention insert_free_space somewhere .. TODO(hrapp): mention insert_free_space somewhere
Tuning Tuning
@ -31,8 +31,8 @@ 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. 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. 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/16d62f45f0e77db7c3b49276808725f3a06bcbf4/configuration_files/trajectory_builder_2d.lua .. _trajectory_builder_2d.lua: https://github.com/googlecartographer/cartographer/blob/aba4575d937df4c9697f61529200c084f2562584/configuration_files/trajectory_builder_2d.lua
.. _trajectory_builder_3d.lua: https://github.com/googlecartographer/cartographer/blob/16d62f45f0e77db7c3b49276808725f3a06bcbf4/configuration_files/trajectory_builder_3d.lua .. _trajectory_builder_3d.lua: https://github.com/googlecartographer/cartographer/blob/aba4575d937df4c9697f61529200c084f2562584/configuration_files/trajectory_builder_3d.lua
The other system is global SLAM (sometimes called the backend). 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 runs in background threads and its main job is to find loop closure constraints.
@ -41,14 +41,14 @@ It also incorporates other sensor data to get a higher level view and identify t
In 3D, it also tries to find the direction of gravity. In 3D, it also tries to find the direction of gravity.
Most of its options can be found in `pose_graph.lua`_ Most of its options can be found in `pose_graph.lua`_
.. _pose_graph.lua: https://github.com/googlecartographer/cartographer/blob/16d62f45f0e77db7c3b49276808725f3a06bcbf4/configuration_files/pose_graph.lua .. _pose_graph.lua: https://github.com/googlecartographer/cartographer/blob/aba4575d937df4c9697f61529200c084f2562584/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. 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 Tuning local SLAM
----------------- -----------------
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. For this example we'll start at ``cartographer`` commit `aba4575`_ and ``cartographer_ros`` commit `99c23b6`_ 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. 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. 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. 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. Our aim is to improve the situation through tuning.
.. _16d62f4: https://github.com/googlecartographer/cartographer/commit/16d62f45f0e77db7c3b49276808725f3a06bcbf4 .. _aba4575: https://github.com/googlecartographer/cartographer/commit/aba4575d937df4c9697f61529200c084f2562584
.. _d2bb8b3: https://github.com/googlecartographer/cartographer_ros/commit/d2bb8b3d0166809bde0fffc050222f08aba00e2e .. _99c23b6: https://github.com/googlecartographer/cartographer_ros/commit/99c23b6ac7874f7974e9ed808ace841da6f2c8b0
If we only look at this particular submap, that the error is fully contained in one submap. 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. 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 .. code-block:: lua
POSE_GRAPH.optimize_every_n_scans = 0 POSE_GRAPH.optimize_every_n_nodes = 0
Correct size of submaps Correct size of submaps
^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^