0
$\begingroup$

Rosanswers logo

Hi!

According to the robot_localization docs it is my understanding that the EKF uses an omnidirectional motion model.

I'm running robot_localization on a custom differential robot with the setup described in the docs for using gps data and it works really well, however I'm having a hard time getting a robust and reliable north referenced heading from commercial grade IMUs: usually the angle they yield can have an error of up to ~20 degrees even if they are fully calibrated, probably because all the magnetic noise the motors and other power electronics elements can produce.

I'm aware this is not robot_localization's fault, however I was thinking that RTK GPS data could be used to remove these static (or very low frequency) offsets that the magnetometer has knowing that a differential robot is being used, since a restriction could be added to tell RL that the robot's linear speed can only point towards the direction it is heading to. This assumption is not present in an omnidirectional motion model, where the robot's linear speed and heading are completely independent (think for instance of a drone).

Do you think that may be a good idea? Or would you recommend creating a custom kalman filter to fuse IMU heading with GPS data knowing that the robot is differential and then feeding this "fused imu" to robot_localization?

Have someone tried to enhance IMU heading with GPS data? If so, I would love to hear your experiences.


Originally posted by Pepis on ROS Answers with karma: 130 on 2022-05-09

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Hello looks like you want to fuse imu and gps location data, for this you can do something liek this:

imu0: /imu/data
imu0_config: [false, false, false,
              false, false, false,
              false, false, false,
              false, false, true,
              false, false, false]

imu0_differential: true
imu0_relative: true 

pose0: hedge_pose # Hedgehog!
pose0_config: [true,  true,  false,
               false, false, false,
               false, false, false,
               false, false, false,
               false, false, false]

pose0_rejection_threshold: 3

As of robot_localization package, it supports both the global and local localiztion fully you only need to understand the parametes propely.


Originally posted by dinesh with karma: 932 on 2022-05-10

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by Pepis on 2022-05-10:
Hi! I'm well aware this can be done. However my question addresses the fact that robot_localization uses an omnidirectional motion model by default, but since I'm using a differential robot I thought some advantages could be gained by using a proper motion model, one of them being the capability of enhancing IMU heading data with high precision GPS.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.