I have known map of the environment (2d occupancy grid map). I am trying to find if anything changed in environment using 2d laser while navigating by using maximum likelihood of laser with known map.

My question is how to know which measurements are corresponding to changes. My environment is not static and has some changes which is differs from known map. Now i am trying to find which objects newly came into the environment or moved out of the environment using laser.

  • $\begingroup$ Does your laser scan a range (horizontal and/or vertical) or just a point? Maybe you're better off with an ultrasonic? $\endgroup$
    – ott--
    Commented Feb 8, 2015 at 18:06

1 Answer 1


Let's asume that our 2D occupancy grid map is called G.
Programmatically, G is a 2D array of float numbers between -1 and 1 called evidences.

Now, to update the map, we need to :

  1. read the new laser mesurements
  2. calculate the distances of obstacles from the robot
  3. re-calculate the evidence values of G, and then
  4. replace the old values by the new evidence values.

If we want to find the changes in the environment, we can simply store the old values of G in a temporary array before re-calculating the new evidence values (step 3).

Therefore, the changes can be found by substracting the two arrays : C = G - old_G.
In this case: C is a 2D array representing the differences between the two grid maps, so 0 values of C represent no changes in the environement, while other values represent either new or moved objects.

  • $\begingroup$ thanks for answer, but robot position from is not certain, i.e with some variance. $\endgroup$
    – nayab
    Commented Sep 10, 2014 at 14:49
  • $\begingroup$ In this case, you need first to localize your robot. You can use particles filter for this, it's quite simple to implement. $\endgroup$ Commented Sep 10, 2014 at 16:18
  • $\begingroup$ Yes i am doing locazisation and using initial map and moving the robot in modified environment. But the localisation will have some variance. $\endgroup$
    – nayab
    Commented Sep 10, 2014 at 20:00
  • $\begingroup$ Yes, I've meet the same problem once, the reason is that the motion model can't be so precise to handle a 0% error. But there's another localization algorithms known to have a good precision, like SLAM methods per example, which use a Kalman Filter to predict and correct the localization errors. $\endgroup$ Commented Sep 10, 2014 at 21:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.