ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question


asked 2021-08-04 00:28:13 -0500

Delbina gravatar image

hi everyone,

up to now, I have found that we should use the Robot-Localization package for implementing autonomous navigation based on GPS. Actually, two instances of this pkg, one for fusing imu and odometer for creating TF between odom>baselink. The other instance is used to merge GPS with imu and odometer for creating TF map>odom. here, I also want to use SLAM as well, I mean My hope is for my robot to navigate autonomously based on GPS RTK whenever possible, but switch to SLAM in a GPs-denied environment. I have searched a lot but could not find paper or document that covers this part. If anyone can guide me that how this switch between GPS and SLAM is possible, I would be grateful.


edit retag flag offensive close merge delete


This question #q383764 by the same user seems to give some background. @Masoum I suggest you merge the two questions and close one as a duplicate...

mgruhler gravatar image mgruhler  ( 2021-08-04 01:45:58 -0500 )edit

@mgruhler, they are not duplicate, two separate questions! I edited that post to not make confusion

Delbina gravatar image Delbina  ( 2021-08-04 03:27:17 -0500 )edit

@Masoum great and thanks for the update.

mgruhler gravatar image mgruhler  ( 2021-08-04 08:16:36 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2021-08-30 06:44:37 -0500

Tom Moore gravatar image

but switch to SLAM in a GPs-denied environment

Can you clarify what you mean here? Will the map already exist, or are you hoping to actually perform SLAM online while you are navigating in a GPS-denied area? Will your robot potentially be re-visiting the same location, such that loop closures are needed? If not, you could get away with just doing laser scan matching to slow the rate of growth in your pose error (that's all a SLAM package will do without loop closures anyway).

If the map already exists, then this problem is relatively straightforward. You'd want the robot to localize against the map before navsat_transform_node starts, which is a bit tricky with ROS 1.

If you really do want to run a full SLAM package, you'll need the SLAM package to set its origin pose at the robot's pose at the time it lost GPS signal.

In any case, you'd want the robot's pose as derived from SLAM or scan-to-map matching to be suppressed when good GPS signal was available.

I'd have some concerns about your GPS position diverging from the SLAM state estimate, too.

edit flag offensive delete link more


Dear @Tom Moore, thanks a lot for answering to my question, I am using RTABMAP as the map provider and object detection, and I also want to do navigation based on GPS. RTABMAP also perform loop closure detection as well, I have already disabled publish-tf-map form RTABMAP side, because it will be provided by EKF-global. I have set, map-frame=map, now the problem is that my rtk-gps would not be available in some part of the environment, so in that case navigation should be based on SLAM, and if the rtk-gps is available, navigation would be based on GPS. I do not know how to define or set rtabmap odometry information into robot-localization pkg, that while improving my global-localization, to be used in non-gps environment as well.

Delbina gravatar image Delbina  ( 2021-08-30 08:04:22 -0500 )edit

I think what I am trying to tell you above is that there isn't a way for this to work without changing code in the packages involved. There is no configuration for r_l that will make this work the way you want it to out-of-the-box.

Tom Moore gravatar image Tom Moore  ( 2021-09-06 07:04:09 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2021-08-04 00:28:13 -0500

Seen: 160 times

Last updated: Aug 30 '21