I started to work with robot_localization package for the odometry of my robot and currently the local odometry is working good (the transform "odom -> base_link" has low error). I need to do point-to-point navigation and I would like to use the same package to get the global positioning using a GPS.

I am going to upload the launch file that I use and a bag file. Te route recorded in the bag file is a straight line facing to the south approximately, the robot did a round trip and it finished in the same place that he started, the return way was done in reverse walking ( I didn't want to turn because my model of the robot for the odometry is not appropriate for this terrain). I would be very thankful if somebody can take a look at it and say me if this is a correct configuration and the output is correct. (launch and bag )

My problem is I do not quite understand the meaning of each frame and, for example, if i want to move the robot to a desired position (latitude and longitude), I do not know the position of the goal relative to my robot. I think I could transform the goal to UTM coordinates, but even with this, I can't realize from what frame to what frame I should make the transform. My principal idea is to transform the goal position to UTM and make a frame whose parent is the UTM frame published from the robot_localization package and work with it, but this frame is very far and (I think) imprecise that I do not know if it is the correct way to deal with the package.

May somebody explain the frames of this package and how could I use them to naviagete with my GPS? I would need the relative position of the goal refered to the position of the robot or the global position of both, robot and goal.

Thank you very much in advance.

edit retag close merge delete

Sort by » oldest newest most voted

The three primary coordinate frames are described here. I haven't looked too deeply, but from a cursory glance at your launch file, this looks fine.

In addition to those frames, when you use navsat_transform_node, you get a transform (in your case) from map->utm. If you want to issue a goal in the global frame, you need to first convert your lat/lon into UTM coordinates (there's a header in robot_localization that exposes this functionality), and then use the map->utm transform to transform that UTM position into your robot's world frame. You can then send that goal to your planner.

more

Thank you very much, I did esactly that and it is very unstable (in altitude, I don't know why utm frame is gloiung some kilometres down the earth) and not very precise (map goes far from odom even when the robot is static). I think my problem are my GPS, I am using the GPS of a movile and a tablet.

( 2015-10-02 04:55:09 -0500 )edit

Any chance you get record a bag file that just has your sensor data? In other words, don't run any nodes in robot_localization. It's a bit of a hassle to filter out all the topics, especially when there are a lot of input sources and transforms. Drive the robot around a bit too, if you can, please.

( 2015-10-06 08:56:25 -0500 )edit