Query about SLAM

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Query about SLAM

Masoumeh
Hi,

one question:
when we say SLAM, it means simultaneous localization and mapping, so why in RTABmap, and other slam techniques, first we do mapping and then localization??  how can we have a autonomous simultaneous localization and navigation (for instance with rtabamp?)?
I have a real robot, should i do first mapping and then localization? what is the scenario for the real robot?
Thanks
Reply | Threaded
Open this post in threaded view
|

Re: Query about SLAM

matlabbe
Administrator
Hi,

Actually, when they refer to mapping, they are doing SLAM (if they do loop closure detection online). When they refer to localization, it means the map created by SLAM is fixed and not updated anymore, we just localize on the prebuilt map. Doing SLAM is more computationally expensive as the map has to be updated and optimized, and memory is not bounded.  In localization mode, memory size and computation time would be always constant, while in SLAM mode, computation time and memory would increase indefinitely (if we keep all data).

In many practical scenarios where the environment is relatively static, we do often navigation in two phases: 1) SLAM, then 2) localization-only. Example:
 - SLAM phase: the robot is teleoperated to map the office, house, warehouse, in a way that loop closures can be detected to correct odometry drift.
- Localization phase: Once the map is completed, we switch in localization mode and do autonomous navigation.

Doing navigation while doing SLAM can be tricky, in particular when a loop is closed. This paper discusses how this can be handled with rtabmap in SLAM mode.

cheers,
Mathieu

Reply | Threaded
Open this post in threaded view
|

Re: Query about SLAM

Masoumeh
Dear Mattieu,

did you publish the coeds related to this paper? or is there any example (code) that has been implemented both slam and localization at the same time?

thanks
Reply | Threaded
Open this post in threaded view
|

Re: Query about SLAM

matlabbe
Administrator
The navigation launch file used in that paper was this one: https://github.com/introlab/rtabmap_ros/blob/master/launch/azimut3/az3_nav.launch
Reply | Threaded
Open this post in threaded view
|

Re: Query about SLAM

Masoumeh

Dear Mattieu,

I have checked this launch file and it seems we just need to set the localization mode. So what would happen when it is false? and also when it is in True mode?!

it seems in this launch we donot have the database any more:  
  <arg name="database_path"           default="~/.ros/rtabmap.db"/>

So do we need to put the localization module on true mode and start navigation? So in this way we would have SPLAM???
Thanks
Reply | Threaded
Open this post in threaded view
|

Re: Query about SLAM

Masoumeh
In reply to this post by matlabbe
Dear Mattieu,

Would you please also tell us the tricks we should consider for doing navigation and SLAM at the same time?!

1) how is it possible to send a goal to the navigation stack, then the vehicle starts mapping and localizing itself while moving toward the goal?!  

2) if this goal has a gps coordinate, and we apply two instances of robot_localization package, then how is it possible to launch rtabmap in slam mode with the navigation stack?

Thanks
Reply | Threaded
Open this post in threaded view
|

Re: Query about SLAM

matlabbe
Administrator
Hi,

The default mode for that launch file is SPLAM. It starts doing slam, then you can send goals to /rtabmap/goal. rtabmap is linked to move_base actionlib topics to provide the goal for move_base accordingly to where the goal has been set in rtabmap's map. Read the following paper for more details: https://introlab.3it.usherbrooke.ca/mediawiki-introlab/images/8/87/LabbeAURO2017.pdf

If rtabmap is subscribed to gps, it will contain gps values for each pose in its graph. There is currently no way to send a goal as GPS coodinate to rtabmap node. That GPS coordinate should have to be converted in map coordinate frame by rtabmap, this is not implemented.

cheers,
Mathieu