parent
99c23b6ac7
commit
e0e3bdd625
|
@ -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
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
Loading…
Reference in New Issue