ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

RTK GPS's for absolute position and Orientation w/ Robot Localization

asked 2018-04-22 10:58:59 -0500

JadTawil gravatar image

Hello All,

I have asked a question before about using a RTK GPS + IMU + Wheel Encoder Setup and received good feedback.

Now i ask about a system with 2 RTK GPS units + Wheel Encoder.

The RTK units are mounted on opposite ends of the robot frame. I am able to obtain position and orientation from this setup.

I want to clarify my settings of the frames for the robot_localization package.

I plan on publishing 2 Odometry messages from the RTK system, one for the position, the other for the orientation. The frame_id in the Odometry message from the RTK system was originally "gps". Since the gps is mounted on the side of the robot, i have defined a static transform from gps->base_link.

  1. For the first Odometry message (in which only the linear positions and linear velocities are populated), i changed the frame_id of the message to "map", as well as set the child_frame_id to "gps". In this way, the RTK solution gives me a transform from map to gps, and the defined static transform gives me gps to base-link, therefore i obtain the map-> base-link transform.

  2. For the second Odometry message (in which only the yaw is obtained, none of the velocities, and none of linear positions), this is provided relative to true north, which is a world fixed frame. So for that i was thinking having frame_id map, and child_frame_id as base_link, because the yaw described in this message is relative to true north.. This would be published as a separate Odometry message.

  3. For the wheel encoder node, i have it publishing Odometry message with frame_id being odom, and child frame id being base_link. All the fields are populated (pose, twist).

And now, i fuse them with one instance of EKF in robot_localization package. From each odometry message, i fuse the following:

  1. only xyz position and linear velocity xyz (map->gps + gps->base_link static transform = map->base_link)
  2. yaw and only yaw (relative to earth and so map->base_link)
  3. linear and angular velocity (odom->base_link)

Does this setup make sense?

Thank you, Jad

edit retag flag offensive close merge delete


@JadTawil I'm a little confused on what the 'gps' frame is in your setup. If the GPS is reporting pose odometry (presumably of gps_link in the gps frame), why are you defining a static transform between gps and base_link? I'm guessing the 'gps' frame is being confused with a 'gps_link' frame.

stevejp gravatar image stevejp  ( 2018-04-26 07:32:43 -0500 )edit

yes gps_link is what it really means.

JadTawil gravatar image JadTawil  ( 2018-04-26 15:46:34 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2018-04-22 14:57:16 -0500

tuandl gravatar image

I can see 2 possible problems in your setup:

1) You might have a broken tf tree since you do not have anything that handles map->odom transform. If you plan to use robot_localization packet, you might want to read the note on fusing gps.

2) I assume "linear velocity xyz" will be "velocity" measurements from your RTK node? In that case, you will feed the filter the same information twice, e.g velocity measurement xyz is obtained by differentiating GPS locations, which you already fuse.

edit flag offensive delete link more


I am under the impression that the map->odom transform is derived from map->base_link transform and odom->base_link transform

JadTawil gravatar image JadTawil  ( 2018-04-22 19:45:16 -0500 )edit

if you know the transfrom from A->B, and the transform from B->C, then A->C is implicitly known. So map->base-link, base-link->odom, gives you map->odom.. true?

JadTawil gravatar image JadTawil  ( 2018-04-23 08:24:32 -0500 )edit

Re. your first comment, you can't have a map->base_link tf and an odom->base_link tf as this would mean base_link has two parents.

stevejp gravatar image stevejp  ( 2018-04-27 15:08:05 -0500 )edit

Right, that is correct.

JadTawil gravatar image JadTawil  ( 2018-04-28 06:26:23 -0500 )edit

Question Tools



Asked: 2018-04-22 10:58:59 -0500

Seen: 1,553 times

Last updated: Apr 22 '18