ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

How to set datum parameter in robot_localization

asked 2021-02-01 05:40:57 -0600

xaru8145 gravatar image

updated 2021-02-01 08:44:06 -0600

Hi all,

I have a rover that uses RTK GPS, IMU and wheel encoders to localize. We perform tests in the same outdoor area using the same trajectory. Our system is configured so that when it first receives an RTK GPS measurement, this value is stored in the datum parameter and only then it launches an EKF global and a navsat_transform node.

Each session the datum is slightly different and therefore the odom->utm transform is different as well. Is this a good practice? Or should I set a fix datum that is the same for every session and then provide an ~initial_state parameter to the EKF with the first RTK measurement?


edit retag flag offensive close merge delete


Thanks @JackB ! In this case, we have a base station that we can use as a fix datum. However, in case your rover starts far away from the base station, the EKG global will take some considerable time to converge to the actual position of the rover. How do you go about this?

xaru8145 gravatar image xaru8145  ( 2021-02-04 03:35:34 -0600 )edit

The only way to prevent the filter "manually" converging is to provide an initial state

JackB gravatar image JackB  ( 2021-02-04 08:04:56 -0600 )edit

I was thinking about doing this but in order to set the initial_state parameter I need to convert my first RTK measurement into the odom frame. This is done by the navsat node and requires odometry from the EKF, which in theory I have to initialize at an initial_state

xaru8145 gravatar image xaru8145  ( 2021-02-04 09:43:45 -0600 )edit

So it is a chicken or the egg problem. How do you set the initial state given the first RTK measurements?

xaru8145 gravatar image xaru8145  ( 2021-02-04 15:43:53 -0600 )edit

Well honestly the initial state is a launch parameter, so its supposed to be known a priori before anything else. If you deploy the robot repeatedly on near the same area you can probably just spend time findinf one close enough to the area and use it to make your filter converge faster.

But to be quite honest, the covariance of your RTK measurement should be so low that your filter should converge very fast in my opinion, regardless of how far away you are. Is this not the case?

JackB gravatar image JackB  ( 2021-02-04 17:01:11 -0600 )edit

Yes, it converges pretty fast. Using a datum that is 825km far from my initial position (extreme case where I deploy the system in a very large environment) and it takes about 25s for the filter to attain +-1cm precision. Thanks for your time Jack, I appreciate it!

xaru8145 gravatar image xaru8145  ( 2021-02-16 05:11:45 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2021-02-01 08:33:50 -0600

JackB gravatar image

In my personal experience, setting a single fixed datum that is the same across all deployments, makes processing of collecting and understanding the data much easier.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2021-02-01 05:40:57 -0600

Seen: 587 times

Last updated: Feb 01 '21