# RTK GPS Localization in known static map

Hey guys,

I just have a few question based on localization and mapping with an RTK GPS setup for outdoor navigation.

I'm running a setup with RTK GPS positioning and heading, i use a dual kalman filter setup of the robot_localization package to produce an odom (wheel odometry + imu + gps heading) and map (wheel odometry + imu + gps heading + gps position) frame, Now my questions are:

1. Can i localize my robot in a provided static map (say using map_server) using only RTK GPS (no amcl), i understand the navsat_transform_node i am using provides a transform for the map->odom frame (and implicitly map->base_link) and in conjuction with the utm transform i can localize the robot in the world, but upon initialization how does the robot know where to start in a given map (map and odom frame at t=0 start at the robot's origin), would i need to apply some sort of offset to the static map based on the robot's gps position on start, if so how?

2. Is is possible to manually build a static map offline instead of using a real-time mapping algorithm such as SLAM. For example by grabbing a satellite image of the target field and building a map image based on some grid with a resolution and then coloring (as per value interpretation standards of the map_server package) the respective free, unknown and occupied space?.

edit retag close merge delete

Sort by » oldest newest most voted

Thanks tom for that reply! I did manage to figure this out, when i start my mapping routine, i save the current gnss position (as the origin), i then perform my mapping, and when i want to load this map, i use the datum parameter of navsat_transofrm_node to set that initial saved origin which correctly offset's the map frame accordingly

more

would i need to apply some sort of offset to the static map based on the robot's gps position on start, if so how?

If you want to use a GPS to localize your robot on a map, then you need your map to have the same origin as your map frame, or your would need to publish the map with some other frame in its header, and provide a transform from, e.g., map_image_frame -> map. You could potentially figure out the origin of your map in the utm frame, and then publish the map occupancy grid with the frame_id set to utm.

If the package adhered to all of REP-105, we'd have an earth frame, and then you could have an earth->map_image transform to specify where the map is on earth, and then an earth->map transform to specify where the robot is. The utm frame can serve the same purpose here, though.

Is is possible to manually build a static map offline instead of using a real-time mapping algorithm such as SLAM

Sure, that's totally possible. Just need to make sure that you have the transform that specifies where the map is in the UTM grid.

more