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

Heading estimation with GPS heading

asked 2015-06-18 11:33:01 -0600

ahendrix gravatar image

I'm tuning a kalman filter for position estimation of an outdoor robot, and I'm seeing significant compass interference which is producing significant errors in the final position estimate.

My other sensors are: 3-axis gyro, 3-axis accel, GPS and a wheel speed sensor.

I'm considering an approach where I estimate heading based mostly on GPS heading while my vehicle is moving, instead of relying heavily on the compass for heading.

Has anyone else tried this, either with one of the existing ROS kalman filter nodes or with a custom filter?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2015-06-18 11:58:19 -0600

Tom Moore gravatar image

I haven't tried that exactly, but I have worked with multiple source of heading information using robot_localization. You'd have to make sure your GPS driver (or some other node) converts your GPS heading data into a PoseWithCovarianceStamped message. You may also want to either stop sending GPS-sourced heading messages when the vehicle is at rest, or dynamically modify the covariances of the heading sensors based on your current state (moving, turning, resting, etc.). I'd also suggest turning relative mode on for both heading sources.

What is causing the compass interference? Is it distortions from the metal and electronics on board your robot, or is it due to external sources?

edit flag offensive delete link more


OK, I'll give that a try. My compass error is coming from external sources, so there isn't much I can do about it. (I've already calibrated out the hard-iron interference from my chassis)

ahendrix gravatar image ahendrix  ( 2015-06-18 12:33:33 -0600 )edit

For reference, I calculate the heading from sequential GPS position measurements (and use a rolling average so it's only valid in straight lines), and use this to check the IMU heading. Compared to GPS, my IMU (built into the CR Jackal) will naturally drift by 3-7 degrees.

M@t gravatar image M@t  ( 2016-08-08 17:55:19 -0600 )edit

I have a GPS which provides heading directly as part of the GPRMC message.

ahendrix gravatar image ahendrix  ( 2016-08-08 18:39:32 -0600 )edit

Hi ahendrix, I have the same problem as yours. My imu works quite well most of the times, but in a area where I test my robot the magnetometer goes crazy, also causing crashes. I have mounted a ZED-F9P, which can output an heading and its precision. When the robot is stationary, the heading is not updated and the precision goes to 180 degrees... So this part is kind of sorted... How did you go about the direction of movement? I mean, it's probably all good until driving straight ahead or smooth turns, but what about backwards maneuvers?

tomy983 gravatar image tomy983  ( 2022-11-13 11:15:10 -0600 )edit

Question Tools



Asked: 2015-06-18 11:33:01 -0600

Seen: 2,026 times

Last updated: Jun 18 '15