I have a robot equipped with some sensors for estimating the movement in a 2D environment (IMU, odometer). The robot is free to move within an area delimited by some walls. The map of the environment (i.e. the polygon given by the walls position) is known. The environment is represented by a 2D grid and a reference mask $M_{ref}$ is computed such that the mask is equal to 1 inside the polygon and 0 outside. The starting position of the robot is not known.
I am implementing a (kind of) particle filter to estimate the robot position given the reference mask. First, a mask $M$ is initialized equal to $M_{ref}$. This mask represents the probability for the mower to be in a certain cell. When the robot moves, the sensors estimate the translation, $dx$ and $dy$, and the intersection between $M_{ref}$ and the translated version of $M$ is computed. The intersection is then assigned to $M$ and the rest of the mask is set to 0. After some movements, the intersection shrinks around the real position.
Now, suppose that other elements of the environment are known, such as slopes, landmarks and so on, and the robot is able to detect them. This could greatly help but I don't know how to integrate this information in my method. Are there similar solution in the literature?