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