# Revision history [back]

I'm not totally clear on your use case. Do you already have a map for your boat, or are you literally running mapping every time you run? If you already have a map, then you'd want to use something like amcl, though you can still work with the EKF in that case.

If you are literally running mapping every time you run, the problem is that the coordinate frame of the GPS data isn't going to match your gmapping output. When you first start, they'll be fine for a very short period, but as soon as gmapping closes a loop, you're hosed, because the two frames won't match. gmapping will say you are at, e.g., (10, 10), and your GPS will say you are at e.g., (12, 17). The root issue is that any time you map, the coordinate frame in which you are mapping is subject to change.

If you already have a map, it's a very different story. It's still pretty complicated, though, because you have to make sure your robot gets localized within your map before navsat_transform_node computes its transform.

I'm not totally clear on your use case. Do you already have a map for your boat, or are you literally running mapping every time you run? If you already have a map, then you'd want to use something like amcl, though you can still work with the EKF in that case.

If you are literally running mapping every time you run, the problem is that the coordinate frame of the GPS data isn't going to match your gmapping output. When you first start, they'll be fine for a very short period, but as soon as gmapping closes a loop, you're hosed, because the two frames won't match. gmapping will say you are at, e.g., (10, 10), and your GPS will say you are at e.g., (12, 17). The root issue is that any time you map, the coordinate frame in which you are mapping is subject to change.

If you already have a map, it's a very different story. It's still pretty complicated, though, because you have to make sure your robot gets localized within your map before navsat_transform_node computes its transform.