ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
4

Goals and Navigation in dynamic maps using GMapping

asked 2011-05-11 06:51:02 -0600

Pablo Hevia-Koch gravatar image

Hello Everyone,

Lately I've been experimenting on using the navigation stack without the mapserver, and using GMapping for the generation of a map via Online SLAM, with very good results (although sometimes a little CPU intensive).

I was wondering how could I refer to a point the robot has visited in the past, when the map is continually changing. Here is an example of my question:

Suppose I am giving my robot a tour of the office (he doesn't have a prior knowledge of its environment). While we tour, at certain positions I will "mark" some place, for example, "this is Ben's desk". After the tour, I would like to be able to tell the robot to go to Ben's desk.

I am not sure how I could manage to do that if the map is continually changing, in size, orientation, etc. Is there a way that doesn't rely exclusively on odometry?

Thanks in advance. All ideas are welcome :)

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
4

answered 2011-05-11 07:15:30 -0600

dornhege gravatar image

Well, in theory the map should not be changing, just growing in terms of adding information. So, if you mark your current location in the /map frame, then this should later also be the same position to go back to.

If the maps you are producing look OK, this should be sufficient. Otherwise you need a better SLAM solution or remember the environment and use some global matching procedure to find the spot.

edit flag offensive delete link more

Comments

Are you sure about this? I've seen maps change in the sense of "deformation" when closing loops, and similar things.
Pablo Hevia-Koch gravatar image Pablo Hevia-Koch  ( 2011-05-11 07:16:54 -0600 )edit
That what the "in theory" was for. It can happen that the map deforms to correct accumulated errors. The only real solution is: better SLAM algorithm/input quality or to use some kind of place recognition. E.g. with graph-based SLAM you could remember the current node.
dornhege gravatar image dornhege  ( 2011-05-12 05:28:15 -0600 )edit
Thank you very much for your advice =). I'll give it a shot
Pablo Hevia-Koch gravatar image Pablo Hevia-Koch  ( 2011-05-12 06:29:10 -0600 )edit
Have you made any achievements? I need to do the same. Or are there any packages to mark positions?
felix k gravatar image felix k  ( 2011-09-14 02:11:33 -0600 )edit

@dornhege How do yo tag a position in the /map??? Ive looked for this answer but was unable to find it. Thanks

ctguell gravatar image ctguell  ( 2013-09-12 10:10:52 -0600 )edit
2

Just transform your position from its odom frame (or where it is originated from) to the map frame using `tf` and store it in a list of positions as wanted.

felix k gravatar image felix k  ( 2013-09-15 22:59:52 -0600 )edit

@felix_k thanks but could you explain how to store that position so later I can see it in rviz for example?? Should i listen to /map and then publish it with a new topic?? I understand the idea but dont know how to make it work, i would really appreciate your help, thanks

ctguell gravatar image ctguell  ( 2013-09-24 07:34:22 -0600 )edit
1

I've had written a tool that stores positions and can give them to `move_base` later, storing just the geometry_msg/Pose objects used in all messages in a list: [position_memo.py](https://github.com/felix-kolbe/uashh-rvl-ros-pkg/blob/master/position_memo/src/position_memo.py)

felix k gravatar image felix k  ( 2013-09-24 23:04:25 -0600 )edit
1

answered 2011-05-11 08:31:01 -0600

I pretty much agree with dornhedge that /map shouldn't be changing too much.

Another, pretty ad-hoc solution would be to remember the local environment when a position is tagged and then to do some kind of nearest neighbor search in your updated map, with a (possibly gaussian) prior over the odometry estimate for Ben's desk.

But that may be too much hassle and/or computation to implement/run.

edit flag offensive delete link more

Question Tools

4 followers

Stats

Asked: 2011-05-11 06:51:02 -0600

Seen: 2,285 times

Last updated: May 11 '11