# Layered costmaps

Layered costmaps is a method to create and update maps for robot navigation and path planning proposed by David V. Lu in 2014. During robot navigation, layered costmaps can abstract the realistic environment around the robot into maps that can be comprehended by robot navigation methods. The method consists of more than one layer of costmaps, each of which describes obstacles with different properties. Each layered costmap consists of grids and is represented as a matrix, the values of the matrix elements are related to the risks of grids (the higher the value,the greater the risk and the deeper the colour in the grid). In the layered costmap, the colour of a grid indicates the risk of moving through that grid. There is a high probability of robot collision when the robot moves through a grid with deep colour. When updating a layered costmap, only the area covered by the sensors (such as Lidar) in the map is updated, rather than the entire map.

## Standard Layers

Layered costmaps is a flexible method, and special categories of layered costmaps can be designed and added to the method depending on the navigation environment of the mobile robot. In Robot Operating System (ROS), some categories of layered costmaps are provided for mobile robot navigation, and they are also the standard layers that are added in most cases.

### Static Map Layer

The static map layer is at the bottom among all layered costmaps, and it includes the situation of all known static obstacles in the environment before navigation starts. The static map layer can be generated with a SLAM algorithm or can be created from an architectural diagram.
If in the static map matrix $M^{sta}$, the real location $(x^{w},y^{w})$ corresponds to the element index $(x,y)$, then an example of the static map layer defining rules is as follows:
   $M_{x,y}^{sta}={\begin{cases}254&(x^{w},y^{w}){\text{ is occupied}}\\0&{\text{otherwise}}\end{cases}}\;$

### Obstacles Map Layer

The obstacles map layer describes the situation of obstacles detected by sensors during robot navigation. Since the observation distance of the sensor is limited, the obstacles map layer can only be updated in the observation area of the sensor.
Assume that there is only one sensor in the scene and it is equipped on the robot, its observation area is a square with side length $2L$, and the location of the robot is $(x^{r},y^{r})$. If in the obstacles map matrix $M^{obs}$, the real location $(x^{w},y^{w})$ corresponds to the element index $(x,y)$, then an example of the obstacles map layer defining rules is as follows:
   $M_{x,y}^{obs}={\begin{cases}254&(x^{w},y^{w}){\text{ is occupied}}\\0&{\text{otherwise}}\end{cases}}\;$
where $(x^{w},y^{w})$ meets that $x^{r}-L<x^{w}<x^{r}+L$ and $y^{r}-L<y^{w}<y^{r}+L$.

### Inflation Layer

The inflation layer inserts a buffer zone around each obstacle in order to keep the robot from getting too close to obstacles. Note that these obstacles include obstacles described in the static map layer and the obstacles map layer. In the inflation layer, the grids that are further away from the obstacles have the lower cost.
The inflation rule used in the inflation layer is flexible and can be freely designed according to the features of the environment and the robot. For example, a simple inflation rule can be designed with two thresholds and a function. Assume that the maximum radius of the robot is $R$. If in the inflation matrix $M^{inf}$, the real location $(x^{w},y^{w})$ corresponds to the element index $(x,y)$, then an example of the inflation rules is as follows:
   $M_{x,y}^{inf}={\begin{cases}254&dis(x^{w},y^{w})<R\\0&dis(x^{w},y^{w})>3\cdot R\\127\cdot (3-dis(x^{w},y^{w})/R)&{\text{otherwise}}\end{cases}}\;$
where the function $dis(x^{w},y^{w})$ represents the distance between point $(x^{w},y^{w})$ and the nearest obstacle.

## Social Navigation Layers

Although social navigation layers are not as necessary as standard layers, when there are pedestrians in the environment, by adding social navigation layers, more information can be included in the map. In standard layers, the speed of obstacles is not considered, but in social navigation layers, the speed of obstacles (i.e., pedestrians) is considered and reflected in costmap layers combined with the social habits of pedestrians.

### Proxemic Layer

The proxemic layer reflects the social habits to the surroundings of pedestrians in both moving and stationary situations.
* The moving pedestrians do not want obstacles appearing in their moving direction, so in the proxemic layer, the cost in the moving direction of the moving pedestrians becomes larger.
* The stationary pedestrians do not want robots approaching them from behind, which will make them feel uncomfortable, so in the proxemic layer, the cost in the back direction of the stationary pedestrians becomes larger.

### Passing Layer

As in many countries, traffic rules require drivers to drive on the right side of the road, there is the custom of walking on the right side of pathways in many cultures. In order to obey this social habit of pedestrians as much as possible, the pass layer has a higher cost on the right side of pedestrians, guiding the robot to pass by the left side of pedestrians when it is possible.

## After layered costmaps

After the creation, the layered costmaps will be continuously updated based on the information provided by the sensors, and the navigation algorithm will drive the robot to reach the destination without collision based on the information provided by the layered costmaps.

## Applications

Layered costmaps is the default map creation method when ROS, a popular robot control software framework, controls mobile robots for navigation. The robot developers can control the robots (such as TurtleBot) through ROS to navigate in scenes indoors or outdoors, with or without people. During the navigation process, the layered costmaps will be constantly updated to provide information about the surrounding environment to the robot.

## Advantages and disadvantages
### Advantages

* Layered costmaps is very flexible, specific costmap layers can be added, modified and deleted freely according to the requirements, thus flexibly adapting to different navigation environments.
* Layered costmaps can be updated quickly because only the area covered by the sensors needs to be updated, which allows the robot to have a shorter response time in emergency situations.

### disadvantages

* All costmaps in layered costmaps have the same size and resolution, which causes a large space to store the data when the method is in operation.