Robot Localization Erratic Behavior (GPS, IMU, Odometry)
Hello ROS community,
I'm currently attempting to fuse GPS, IMU, and Odometry data as detailed on the Robot Localization docs(See Here. I used the dual_ekf_navsat_example.launch (Available Here) from the robot_localization GitHub as an example. The parameters are the same, with the names of the topics changed match my publishers.
The problem I am having is the robot starts "shaking" in Rviz whenever I start-up the ekfs and navsat transform. The shaking only grows worse as the robot begins to move causing the robot jump all around the Rviz visualization. I've recorded a video of this behavior, you can watch it here. (Please excuse the window flickering, I think it's a side effect of VLC)
I am curious if anyone else has experience with this issue, and has some solutions that may help in remedying the problem. The GPS is using RTK corrections and is extremely accurate. In reading through ROS answers, this issue seems similar, but I have accounted for magnetic declination and the orientation of the IMU. I have a strong hunch the IMU is at least partially responsible for the erratic behavior. Though I have tried IMU recalibration to no improvement. This issue is not present in the simulated robot, but has been a road block for weeks now. The ROS driver we're using for the IMU is available here.
I would appreciate any support and would be happy to provide any further information needed. Thank you in advance!
Robot's System:
- x86 64-Bit
- 4.13.0-38-generic Kernal
- Ubuntu 16.04.1
- ROS Kinetic
Hardware:
- IMU - Lord MicroStrain 3DM-GX5-25
- GPS - Trimble BD930
EDIT: The video link should work now, I had forgot to set the permissions correctly.
In response to Pete Blacker, the first kalman filter is fusing strictly IMU and Odometry data. Without this Kalman filter the robot does not shake. However, the second Kalman filter causes the map frame to behave erratically.
As requested, here is a bag file showing the same behavior. It's all the topics so it's a lot of data.
I've also uploaded my localization and IMU launch files with their parameter yaml's as well. You can find them here.
EDIT 2:
I've uploaded the URDF of the robot if looking at the way the frames are laid out will help. It's in the same place as the other ROS files, it's available at the link above.
I've also generated another bag file of the relevant topics, it's available here. The real robot drove in a square (a really rough sqaure) about 9-10 meters on each side. This time, I've set the IMU and the Odom differential parameter for the EKF to false. I've also changed the IMU's orientation as well to be correct according to the diagram on the IMU, I think this helped but I'm still seeing similar erratic behavior in Rviz.
Looks like the video you posted requires permission to view. Also if you can post a bag file that would be helpful!
Oops! Didn't have the sharing permission set correctly, it should work now.