GPS and SLAM
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.
Thanks
Asked by Delbina on 2021-08-04 00:28:13 UTC
Answers
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.
Asked by Tom Moore on 2021-08-30 06:44:37 UTC
Comments
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.
Asked by Delbina on 2021-08-30 08:04:22 UTC
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.
Asked by Tom Moore on 2021-09-06 07:04:09 UTC
Comments
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...
Asked by mgruhler on 2021-08-04 01:45:58 UTC
@mgruhler, they are not duplicate, two separate questions! I edited that post to not make confusion
Asked by Delbina on 2021-08-04 03:27:17 UTC
@Masoum great and thanks for the update.
Asked by mgruhler on 2021-08-04 08:16:36 UTC