Skip to main content
added 19 characters in body
Source Link

Your question addresses three very different problems, all of which are hard with complicated research-type algorithms.

  1. Localization: When you have a known map of the environment and an unknown robot position. The most common algorithm for this is Monte Carlo Localizataion. This is a particle filter exactly like what you're describing.
  2. Mapping: When the robot wakes up in an unknown environment and has to build a map. Usually mapping algorithms assume that you know the location of the robot, ie from GPS or similar. I've never done pure mapping so I don't know any algorithms, but a quick google should find them.
  3. SLAM: When you combine the two problems, an unknown environment and an unknown location the problem is called simultaneous localization and mapping (SLAM). This is very hard. There are good algorithms and good software packages to do it, but they are all still experimental and only work for certain types of environments / sensors. I highly highly recommend that you use an existing package rather than implementing SLAM yourself because it can take months of research work to tune all the parameters. I have no idea if there are SLAM packages for Java, but openslam.org has a great list of state-of-the-art SLAM algorithms. Personally I've used GMapping quite a bit and I trust it not to crash my $25k robot. Be aware that you are treading in research waters.

Sorry for giving you such a long answer to a short question. My suggestion would be to assume that you know the locations of the obstacles and do a simple Monte Carlo Particle Filter.

Your question addresses three very different problems, all of which are hard with complicated research-type algorithms.

  1. Localization: When you have a known map of the environment and an unknown robot position. The most common algorithm for this is Monte Carlo Localizataion. This is a particle filter exactly like what you're describing.
  2. Mapping: When the robot wakes up in an unknown environment and has to build a map. Usually mapping algorithms assume that you know the location of the robot, ie from GPS or similar. I've never done pure mapping so I don't know any algorithms, but a quick google should find them.
  3. SLAM: When you combine the two problems, an unknown environment and an unknown location the problem is called simultaneous localization and mapping (SLAM). This is very hard. There are algorithms good software packages to do it, but they are all still experimental and only work for certain types of environments. I highly highly recommend that you use an existing package rather than implementing SLAM yourself because it can take months of research work to tune all the parameters. I have no idea if there are SLAM packages for Java, but openslam.org has a great list of state-of-the-art SLAM algorithms. Personally I've used GMapping quite a bit and I trust it not to crash my $25k robot. Be aware that you are treading in research waters.

Sorry for giving you such a long answer to a short question. My suggestion would be to assume that you know the locations of the obstacles and do a simple Monte Carlo Particle Filter.

Your question addresses three very different problems, all of which are hard with complicated research-type algorithms.

  1. Localization: When you have a known map of the environment and an unknown robot position. The most common algorithm for this is Monte Carlo Localizataion. This is a particle filter exactly like what you're describing.
  2. Mapping: When the robot wakes up in an unknown environment and has to build a map. Usually mapping algorithms assume that you know the location of the robot, ie from GPS or similar. I've never done pure mapping so I don't know any algorithms, but a quick google should find them.
  3. SLAM: When you combine the two problems, an unknown environment and an unknown location the problem is called simultaneous localization and mapping (SLAM). This is very hard. There are good algorithms and good software packages to do it, but they are all still experimental and only work for certain types of environments / sensors. I highly highly recommend that you use an existing package rather than implementing SLAM yourself because it can take months of research work to tune all the parameters. I have no idea if there are SLAM packages for Java, but openslam.org has a great list of state-of-the-art SLAM algorithms. Personally I've used GMapping quite a bit and I trust it not to crash my $25k robot. Be aware that you are treading in research waters.

Sorry for giving you such a long answer to a short question. My suggestion would be to assume that you know the locations of the obstacles and do a simple Monte Carlo Particle Filter.

Source Link

Your question addresses three very different problems, all of which are hard with complicated research-type algorithms.

  1. Localization: When you have a known map of the environment and an unknown robot position. The most common algorithm for this is Monte Carlo Localizataion. This is a particle filter exactly like what you're describing.
  2. Mapping: When the robot wakes up in an unknown environment and has to build a map. Usually mapping algorithms assume that you know the location of the robot, ie from GPS or similar. I've never done pure mapping so I don't know any algorithms, but a quick google should find them.
  3. SLAM: When you combine the two problems, an unknown environment and an unknown location the problem is called simultaneous localization and mapping (SLAM). This is very hard. There are algorithms good software packages to do it, but they are all still experimental and only work for certain types of environments. I highly highly recommend that you use an existing package rather than implementing SLAM yourself because it can take months of research work to tune all the parameters. I have no idea if there are SLAM packages for Java, but openslam.org has a great list of state-of-the-art SLAM algorithms. Personally I've used GMapping quite a bit and I trust it not to crash my $25k robot. Be aware that you are treading in research waters.

Sorry for giving you such a long answer to a short question. My suggestion would be to assume that you know the locations of the obstacles and do a simple Monte Carlo Particle Filter.