Repository for shared configuration files for handing semantic maps, as well as a library for loading these configuration files.
In general, you should load a top-level config file in the config
folder. This file has two paths: classes
and map
which point at the class and map configuration files respectively, relative to the top-level file.
The class config contains a list of classes, with each class having a list of parameters as follows:
name
: Self-explanatorycolor
: An array of the form[R, G, B]
giving the color of the classloc_weight
: The relative weight on this class in the semantic localizerexclusive
: Only one class withTrue
here is allowed to occupy a given celltraversability_diff
: The rank order of traversability difficulty. Higher is harderlocalization_class
: Mapping from classes to localization. Can use to, for instance, treat cars as road for localization purposes. If set to -1, will completely ignore this class for localization purposes.
Even if not all parameters are necessary, they must be provided (even if, for instance, you are only using the crossview localizer but not the global traversability planner).
Similarly, the map config defines the map-related information.
dynamic
: If set toTrue
, will expect dynamic maps to arrive via ROS topics, not loaded from fileresolution
: The map resolution in px/m. Note that all following images should be this same resolution.raster
: Only needed ifdynamic
isFalse
. Should point to a raster image with colors indicating classes as specified by the class config.svg
: Optional. Can either point to a map svg or a folder of class rasters as generated by the localizer. If not provided, will use theraster
image.viz
: Optional. Used for visualization purposes. If not provided, will useraster
image.gps_origin_lat
,gps_origin_long
: Optional. Specify the GPS coordinates of the map origin.
Launch files for the ground and aerial stacks are available in the launch
directory. This is done in order to centralize configuration as much as possible. In general, users should avoid modifying the default configs in the relevant packages, but should instead override them here. We therefore avoid having config fragmentation across a bunch of repos.