Robotics StackExchange | Archived questions

Robot localization package to perform sensor fusion, Odometry/filtered not publishing any data [URGENT]

Dear friends, I am working on a 6-wheeled autonomous vehicle to make it autonomously navigate to the desired location. Using robot localization package i tried to perform sensor fusion of the Lidar and imu data. I am not using wheel encoders since the vehicle has skid steering it will be very noisy. Following the steps, i first created a launch file and the configuration file for launching the Robot localization package and adding sensor configuration respectively. But when i look for odometry filtered data published on odometry/filtered topic by the Robot localization package i cannot see any results or sensor data. Even though individual sensors like imu and Lidar are publishing the result. I would be very grateful to you guys if you can help me, its urgent since i have a deadline to meet. Thank you for your help and time .

Config file:

ekf config file

ekffilternode: ros_parameters: frequency: 30.0 sensortimeout: 0.1 twodmode: false transformtimeoffset: 0.0 transformtimeout: 0.0 printdiagnostics: true debug: false debugoutfile: /path/to/debug/file.txt permitcorrectedpublication: false publishacceleration: false publishtf: true

    map_frame: map              # Defaults to "map" if unspecified
    odom_frame: odom            # Defaults to "odom" if unspecified
    base_link_frame: base_link  # Defaults to "base_link" if unspecified
    world_frame: odom           # Defaults to the value of odom_frame if unspecified

    # default values, and must be specified.
    #odom0: velodyne_points/point_cloud
    #odom0_config: [true,  true,  false,
    #               false, false, false,
    #               false, false, false,
    #               false, false, true,
    #               false, false, false]

    #odom0_queue_size: 2
    #odom0_differential: false
    #odom0_relative: false
    #odom0_pose_use_child_frame: false
    #odom0_pose_rejection_threshold: 5.0
    #odom0_twist_rejection_threshold: 1.0


    imu0: imu/applanix
    imu0_config: [false, false, false,
                  false, false, false,
                  false, false, false,
                  false,  false,  false,
                  true,  false,  false]
    imu0_differential: false
    imu0_relative: true
    imu0_queue_size: 5
    imu0_pose_rejection_threshold: 0.8                 # Note the difference in parameter names
    imu0_twist_rejection_threshold: 0.8                #
    imu0_linear_acceleration_rejection_threshold: 0.8  #

    imu0_remove_gravitational_acceleration: true

    use_control: true

    stamped_control: false

    control_timeout: 0.2

    control_config: [true, false, false, false, false, true]

    acceleration_limits: [1.3, 0.0, 0.0, 0.0, 0.0, 3.4]

    deceleration_limits: [1.3, 0.0, 0.0, 0.0, 0.0, 4.5]

    acceleration_gains: [0.8, 0.0, 0.0, 0.0, 0.0, 0.9]

    deceleration_gains: [1.0, 0.0, 0.0, 0.0, 0.0, 1.0]

    process_noise_covariance: [0.05, 0.0,    0.0,    0.0,    0.0,    0.0,    0.0,     0.0,     0.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,    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,    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,    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,    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,    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,
                               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,    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,    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,    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,    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,    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,    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,     0.0,     0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.015]

    initial_estimate_covariance: [1e-9, 1e-9, 1e-9, 1e-9, 1e-9, 1e-9, 1e-9, 1e-9, 1e-9, 1e-9, 1e-9, 1e-9, 1e-9, 1e-9, 1e-9]"

and launch file: "from launch import LaunchDescription from launchros.actions import Node from amentindexpython.packages import getpackagesharedirectory import os

def generatelaunchdescription(): # Load parameters from a YAML file parametersfiledir = os.path.join(getpackagesharedirectory('impalaodometry'), 'config', 'ekf_localization.yaml')

return LaunchDescription([
    Node(
        package='robot_localization',
        executable='ekf_node',
        name='ekf_localization',
        parameters=[parameters_file_dir],

       ),     ])"

Asked by Muhammad Ahmed on 2023-07-11 05:27:55 UTC

Comments

Answers