Ask Your Question
0

How does robot_localization implement tf conversion from / odom to base_link?

asked 2021-04-13 21:07:44 -0600

miku54 gravatar image

updated 2021-04-27 04:30:22 -0600

Tom Moore gravatar image

I have set the value of the robot_localization odom_frame parameter to "odom_combined" and the base_link_frame to the default value "base_footprint", and I have also set the tf transformation from "base_footprint" to "base_link". After I have performed the tf transformation from "base_footprint" to the sensor, I open the ekf_localization_node, and find that there is no odom or "odom_combined" in the tf_tree,I didn't set up the transformation from "odom_combined" to "base_footprint" anywhere else. at this time. My parameter file is:

### ekf config file ###
ekf_filter_node:
    ros__parameters:
        sensor_timeout: 2.0
        two_d_mode: true
        transform_time_offset: 0.0
        transform_timeout: 0.0
        print_diagnostics: false
        debug: false
        debug_out_file: /path/to/debug/file.txt
        publish_tf: true
        publish_acceleration: false

        map_frame: map
        odom_frame: odom
        base_link_frame: base_footprint
        world_frame: odom_combined

        odom0_config: [false, false, false,
                       false, false, true,
                       true,  true,  false,
                       false, false, false,
                       false, false, false]
        odom0_queue_size: 1
        odom0_nodelay: false
        odom0_differential: false
        odom0_relative: false

        imu0: mobile_base/sensors/imu_data
        imu0_config: [false, false, false,
                      false, false, false,
                      false, false, false,
                      false, false, true,
                      true,  false, false]

        imu0_nodelay: false
        imu0_differential: true
        imu0_relative: false
        imu0_queue_size: 4
        imu0_pose_rejection_threshold: 0.8
        imu0_twist_rejection_threshold: 0.8
        imu0_linear_acceleration_rejection_threshold: 0.8
        imu0_remove_gravitational_acceleration: true
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2021-04-27 04:32:24 -0600

Tom Moore gravatar image

I have set the value of the robot_localization odom_frame parameter to "odom_combined"

Looking at your config file, it looks like maybe you haven't. You need to change

odom_frame: odom

to

odom_frame: odom_combined

The world_frame _must_ match either the value of the map_frame or the value of the odom_frame parameter.

edit flag offensive delete link more

Comments

Thank you for your answer. I tried to change it to what you said, but the result didn't change.

miku54 gravatar image miku54  ( 2021-04-27 08:06:39 -0600 )edit

Update the question with your new config, please, as well as a sample sensor measurement from each sensor input.

Tom Moore gravatar image Tom Moore  ( 2021-06-22 03:55:36 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

3 followers

Stats

Asked: 2021-04-13 21:07:44 -0600

Seen: 111 times

Last updated: Apr 27