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

Gmapping combine robot localisation or robot pose ekf

asked 2020-07-23 05:55:28 -0500

MarkusHHN gravatar image

Hello everybody,

i am working on a project with an omniwheel robot, which has a bad odometry. I mounted a Kinect Sensor V1 to use it as laserscanner with the pointcloud_to_laserscan node to get later a indoor map with gmapping. I know that the Kinect Sensor has a bad FOV and my odometry has a drift, So I hope to improve my odometry with an Imu Sensor which gave me the orientation and also the angular velocity in Z-Direction.

So I read some information about the robot_pose_ekf and the robot_localisation which using both the Extended Kalman Filter (EKF) Now I am using the robot localisation node combine with the gmapping algorithm to generate a map, which is okay but I hope it is possible to get a better map.image description

TF tree

Regards, Markus

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2020-07-23 09:02:33 -0500

ParkerRobert gravatar image

You can use the imu values and fuse it together with the odometry information to overcome the drift in the odometry data. As you've mentioned robot_localisation (http://wiki.ros.org/robot_localization) is a great place to start. Take note that the type of values you load into the param server matters quite a bit.

Refer to this http://docs.ros.org/melodic/api/robot... for more information about how to configure the various parameters, or you can watch this video https://www.youtube.com/watch?v=QZ5q5...

This is an example of what could be in your .yaml file

frequency: 50

two_d_mode: true

publish_tf: false

odom_frame: odom base_link_frame: base_link world_frame: odom

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

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

process_noise_covariance": [0.05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.04, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.015]

initial_estimate_covariance: [1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0 ... (more)

edit flag offensive delete link more

Comments

thank you for your answer. My robot localization node looks same as yours! But I have on the question, why are you using from the odometry the x and y position? On the documentation they say following words:

Velocities/Poses: robot_localization can integrate velocities or absolute pose information. In general, the best practice is: If the odometry provides both position and linear velocity, fuse the linear velocity. If the odometry provides both orientation and angular velocity, fuse the orientation.

I change so my odom0: odom0_config: [false, false, false, false, false, true, true, true, false, false, false, false, false, false, false]

Do you know what is the purpose for this configuration?

MarkusHHN gravatar image MarkusHHN  ( 2020-07-23 10:22:44 -0500 )edit

This varies from system to system. I have also read the above but for my system it seems that using the x and y position produced a better localisation compared to the x and y velocities. My advice is to try both configurations and see which works better for you

ParkerRobert gravatar image ParkerRobert  ( 2020-08-05 22:43:01 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2020-07-23 05:55:28 -0500

Seen: 670 times

Last updated: Jul 23 '20