cartographer
cartographer copied to clipboard
Questions regarding hits, misses, lookup tables, value conversion tables
First of all, thank you very much for providing such a great piece of software!
Background
As part of a research project, I am extending the 2d probability grid and submap with additional information. Therefore, I must change, among others, the ProbabilityGridRangeDataInserter2d
and the ProbabilityGrid
. So far I have mapped the whole scan matching and data insertion into the grid as sequence diagrams. Currently, I get the new data as far as the ProbabilityGridRangeDataInserter
, where I now want to adapt Insert()
and everything related. I would say I have a good overview over the inner workings of cartographer. Thanks to my diagrams, I see where the members in question (see below) are used, but I do not quite understand the meaning of some of them.
Questions
What I do not understand is:
1.) What is the conceptual purpose of the ValueConversionTables
in Submap2d and the ProbabilityGrid? I see in the code comment that they map from int to float, but I do not understand the layout of ValueConversionTables.bounds_to_lookup_table_
and its purpose.
2.) Could you shed some light on the higher-level meaning of those conversion tables? Why do we need such a mapping from int to float? I think I will not need the conversion tables for storing new and different data, but still want to understand their meaning.
Related to that, I am not completely sure what the purpose of the hit_table_ and miss_table_ combined with ApplyLookupTable()
in the ProbabilityGridRangeDataInserter
is. As I currently understand it, the lookup tables store odds for points (hits and misses) and can be accessed with the same indexes as the correspondence_cost_cells
of the Grid2d
. The correspondence cost cells are combined with hit and miss tables by calling ApplyLookupTable()
.
3.) Is this simply the probability update that is described in the paper (section IV. B)?
3.1) If not, what exactly do the the correspondence_cost_cells
store?