robot_localization problem fusing IMU and odometry in navigation and slam stack [closed]

asked 2020-12-10 01:57:31 -0500

Marvin97 gravatar image

updated 2022-04-17 10:40:58 -0500

lucasw gravatar image

Hello,

I have got a question concerning the use of the robot_localization package in combination with both the SLAM and navigation stacks with a Turtlebot 3. I am quite new to ROS, so please forgive me if the questions are a little stupid or self-explanatory.

So in general I would like to fuse the IMU data with the odometry data of the wheel encoders to get a more precise odometry and therefor localization of the robot. First of all, I was wondering that even without the implemented filter by the robot_localization package it seems like the turtlebot recognizes movement around the z-axis without the wheels spinning (in both the navigation and slam stack) which leads to the conclusion that the IMU is responsible for this. Is it correct that the turtlebot3_core node already performs some kind of sensor fusion because otherwise the robot should not recognize yaw movements if the localization would only be based on the wheel encoders right?

Then I would like to ask the core question which is about the combination of the robot_localization package with the navigation and slam package (of course seperated from each other, so first SLAM to create a map and then navigation to navigate within that map). So in general I am not sure if the filter is doing its job correctly. To create the ekf filter I basically followed the instructions of "The Construct" which can be found here: https://rds.theconstructsim.com/r/371... .

First to the SLAM problem:

When I combine the SLAM package with the localization package and plot the odom topic and the odometry/filtered topic (output of my Kalman filter) they exactly overlap, so there is no difference at all between the values. I mean, they should be similar but the fact that the positions are exactly equal indicate that the filter is not doing its job properly. The filter configuration can be seen below:

Configuation for robot odometry EKF

# frequency: 50

two_d_mode: true

publish_tf: false

Complete the frames section

odom_frame: odom base_link_frame: base_link world_frame: odom map_frame: map

Complete the odom0 configuration

odom0: /odom odom0_config: [true, true, false, false, false, true, true, true, false, false, false, false, false, false, false] odom0_differential: false

Complete the imu0 configuration

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

The two Kalman filter matrices have been left out here since no values have been changed in there compared to the ones in the tutorial. I don't believe the general mistake is caused by those. Unfortunately I can't upload pictures since I just signed up on this page, otherwise I could also show you the rqt graph and the tf tree. I can tell you though that for the SLAM package I did not remap anything, so for example the odom topic to odometry/filtered in specific launch files, should I do that?

Navigation package:

In the navigation package I get the same problem as with the SLAM ... (more)

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by Tom Moore
close date 2021-04-27 04:09:01.382243

Comments

I think this question is far too broad. I'd break it up into specific questions. Also, if the filter is exactly mimicking your input, it says more about your input than it does the filter.

Anyway, (1) break this question up into specific singular questions, (2) when you post your EKF config, just post the whole thing, and format it as code (the little 101010 icon), and (3) please also include a sample message from every sensor input.

Tom Moore gravatar image Tom Moore  ( 2021-01-25 11:10:54 -0500 )edit