0
$\begingroup$

Rosanswers logo

Hello~ all I'm a starter to learn ROS. Now I focus on Navigation and map generation.

We know that autonomous navigation procedure is : Load map files(yaml & PGM files) => Localization(amcl) => User assigns the goal => Plan an ideal route (global planner+costmap) => obstacle avoidance (Local Planner+costmap) => Reached!!

It means we have to build a map beforehand, then we can do autonomous navigation. I'd like to know... (1) Is it possible to immediately update map if robot found a new obstacle not showed on the static map?

(2)is it possible to do autonomous navigation and build map at the same time. I mean...generate a small part of map and keep updating it to RObot for navigation?

I searched the forum and found the related article as follows, seems not available my request. http://answers.ros.org/question/37486/modifying-a-known-map-gmapping/

Does anyone know about it? It would be better to give me some idea or suggestion.

Thanks


Originally posted by Eric_ROS on ROS Answers with karma: 51 on 2016-01-05

Post score: 4

$\endgroup$

4 Answers 4

0
$\begingroup$

Rosanswers logo

You can use gmapping and move_base together to build a map and navigate autonomously in an unknown environment, but because you can't start gmapping with a partial map, this means that your map will always start empty (probably not what you want). gmapping also requires constantly increasing memory over the life of the map, so it isn't well suited for long-term use.

I don't have any direct experience with it, but the hector_slam package provides another SLAM implementation that may do what you're looking for.


Originally posted by ahendrix with karma: 47576 on 2016-01-05

This answer was ACCEPTED on the original site

Post score: 5


Original comments

Comment by Eric_ROS on 2016-01-06:
Thanks for your sharing!! hector_slam is interesting!!

$\endgroup$
0
$\begingroup$

Rosanswers logo

This is what we call Simultaneous Localization and Mapping (SLAM).

Most widely used package for SLAM applications in ROS is gmapping.


Originally posted by Akif with karma: 3561 on 2016-01-05

This answer was NOT ACCEPTED on the original site

Post score: 1

$\endgroup$
0
$\begingroup$

Rosanswers logo

Every mapping algorithm should be able to publish the so far generated map, either via topic or service, so this map can be used for navigation. In a case where you want to do autonomous exploration of your environment, you actually have to use the unfinished map for navigation. In package nav2d is a graph-based SLAM together with the navigation nodes for autonomous exploration.


Originally posted by Sebastian Kasperski with karma: 1658 on 2016-01-06

This answer was NOT ACCEPTED on the original site

Post score: 1


Original comments

Comment by Eric_ROS on 2016-01-06:
Thanks for your sharing!!

$\endgroup$
0
$\begingroup$

Rosanswers logo

I am also trying to do the same thing: autonomous navigation with a partially known map. I am currently trying two alternatives for my quadrotor:

Solution 1

Use AMCL to localize on my partially known map. move_base navigation node uses this map as the global map to compute global paths. In the meantime, I run hector_mapping only for the map creation. At the end of the process, I can compare the map created by hector_mapping with the initial static map and therefore identify the new elements.

Challenges: if the obstacles (ie. elements not included in the static map used by AMCL) are too numerous, the AMCL localization is struggling and has to rely only on odometry. Sometimes the localization system crashes...

Solution 2

Don't use AMCL but only hector_mapping to localize and create the map. In order to make use of the already partially known map in the path planning, I use it as the global map for move_base.

Challenges: In order for the system to remain consistent along the navigation, the map created by hector_mapping (and therefore the local map frame) and the global static map have to remain aligned. So far, I haven't find a way to efficiently compare the 2 maps and publish a transform between the two. Two issues have to be taken into account: possible deformations of the hector_mapping's map and the small size of hector map at the beginning of the process

Any advise or feedback on that will be warmly welcomed! Hope it will help somebody!


Originally posted by quentin with karma: 123 on 2016-01-14

This answer was NOT ACCEPTED on the original site

Post score: 1


Original comments

Comment by quentin on 2016-01-26:
Anybody has face these problems before?

Comment by adityakamath on 2016-10-31:
Hi Quentin, were you able to implement both these methods in your project? I have just started with a ROS project and this is exactly what I'm trying to do.

$\endgroup$

Your Answer

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