How to localized a robot

My name is Ehsan.
I am working on the localization of the robot but it is not happening to me. Will you help me? If so, it would be a pleasure for me.
I have a physical robot. I have created a map using Teleop and Hector Slam but I don’t know how to localize my robot in this map.
I’ve also installed a navigation package for it but I don’t know how to use it. Please help me.

here is the launch file

      <launch>
          <master auto="start"/>
          <param name="/use_sim_time" value="true"/>
          <include file="$(find navigation_stage)/move_base_config/move_base.xml"/>
          <node name="map_server" pkg="map_server" type="map_server" args="$(find navigation_stage)/stage_config/maps/mynewmap.yaml" respawn="false" />
          <node pkg="stage_ros" type="stageros" name="stageros" args="$(find navigation_stage)/stage_config/worlds/sim.world" respawn="false" >
            <param name="base_watchdog_timeout" value="0.2"/>
          </node>
          <include file="$(find navigation_stage)/move_base_config/amcl_node.xml"/>  
          <node name="rviz" pkg="rviz" type="rviz" args="-d $(find navigation_stage)/single_robot.rviz" />
        </launch>

here is the move_base.xml code

<launch>

  <node pkg="move_base" type="move_base" respawn="false" name="move_base_node" output="screen">
    <rosparam file="$(find navigation_stage)/move_base_config/move_base_params.yaml" command="load" />
    <rosparam file="$(find navigation_stage)/move_base_config/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find navigation_stage)/move_base_config/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find navigation_stage)/move_base_config/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find navigation_stage)/move_base_config/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find navigation_stage)/move_base_config/base_local_planner_params.yaml" command="load" />
    
    <rosparam file="$(find navigation_stage)/move_base_config/dwa_local_planner_params.yaml" command="load" />
    
  </node>
</launch>

Here is the code of amcl_node.xml

<node pkg="amcl" type="amcl" name="amcl" respawn="true">
  <remap from="scan" to="base_link" />
  <!-- Publish scans from best pose at a max of 10 Hz -->
  <param name="odom_model_type" value="omni"/>
  <param name="odom_alpha5" value="0.1"/>
  <param name="transform_tolerance" value="0.2" />
  <param name="gui_publish_rate" value="10.0"/>
  <param name="laser_max_beams" value="30"/>
  <param name="min_particles" value="500"/>
  <param name="max_particles" value="5000"/>
  <param name="kld_err" value="0.05"/>
  <param name="kld_z" value="0.99"/>
  <param name="odom_alpha1" value="0.2"/>
  <param name="odom_alpha2" value="0.2"/>
  <!-- translation std dev, m -->
  <param name="odom_alpha3" value="0.8"/>
  <param name="odom_alpha4" value="0.2"/>
  <param name="laser_z_hit" value="0.5"/>
  <param name="laser_z_short" value="0.05"/>
  <param name="laser_z_max" value="0.05"/>
  <param name="laser_z_rand" value="0.5"/>
  <param name="laser_sigma_hit" value="0.2"/>
  <param name="laser_lambda_short" value="0.1"/>
  <param name="laser_lambda_short" value="0.1"/>
  <param name="laser_model_type" value="likelihood_field"/>
  <!-- <param name="laser_model_type" value="beam"/> -->
  <param name="laser_likelihood_max_dist" value="2.0"/>
  <param name="update_min_d" value="0.2"/>
  <param name="update_min_a" value="0.5"/>
  <param name="odom_frame_id" value="odom"/>
  <param name="resample_interval" value="1"/>
  <param name="transform_tolerance" value="0.1"/>
  <param name="recovery_alpha_slow" value="0.0"/>
  <param name="recovery_alpha_fast" value="0.0"/>

</node>
</launch>

Here is the output of launch file:

pi@raspberrypi:~/catkin_ws $ roslaunch navigation_stage move_base_amcl_5cm.launch
… logging to /home/pi/.ros/log/aecf56e6-5994-11eb-a4bb-b827eb233d23/roslaunch-raspberrypi-16002.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

WARNING: ignoring defunct tag
started roslaunch server http://192.168.10.2:38865/

SUMMARY

PARAMETERS

  • /amcl/gui_publish_rate: 10.0
  • /amcl/kld_err: 0.05
  • /amcl/kld_z: 0.99
  • /amcl/laser_lambda_short: 0.1
  • /amcl/laser_likelihood_max_dist: 2.0
  • /amcl/laser_max_beams: 30
  • /amcl/laser_model_type: likelihood_field
  • /amcl/laser_sigma_hit: 0.2
  • /amcl/laser_z_hit: 0.5
  • /amcl/laser_z_max: 0.05
  • /amcl/laser_z_rand: 0.5
  • /amcl/laser_z_short: 0.05
  • /amcl/max_particles: 5000
  • /amcl/min_particles: 500
  • /amcl/odom_alpha1: 0.2
  • /amcl/odom_alpha2: 0.2
  • /amcl/odom_alpha3: 0.8
  • /amcl/odom_alpha4: 0.2
  • /amcl/odom_alpha5: 0.1
  • /amcl/odom_frame_id: odom
  • /amcl/odom_model_type: omni
  • /amcl/recovery_alpha_fast: 0.0
  • /amcl/recovery_alpha_slow: 0.0
  • /amcl/resample_interval: 1
  • /amcl/transform_tolerance: 0.1
  • /amcl/update_min_a: 0.5
  • /amcl/update_min_d: 0.2
  • /move_base_node/DWAPlannerROS/acc_lim_th: 3.2
  • /move_base_node/DWAPlannerROS/acc_lim_x: 2.5
  • /move_base_node/DWAPlannerROS/acc_lim_y: 2.5
  • /move_base_node/DWAPlannerROS/forward_point_distance: 0.325
  • /move_base_node/DWAPlannerROS/goal_distance_bias: 32.0
  • /move_base_node/DWAPlannerROS/max_rot_vel: 1.0
  • /move_base_node/DWAPlannerROS/max_scaling_factor: 0.2
  • /move_base_node/DWAPlannerROS/max_trans_vel: 0.65
  • /move_base_node/DWAPlannerROS/max_vel_x: 0.65
  • /move_base_node/DWAPlannerROS/max_vel_y: 0.1
  • /move_base_node/DWAPlannerROS/min_rot_vel: 0.4
  • /move_base_node/DWAPlannerROS/min_trans_vel: 0.1
  • /move_base_node/DWAPlannerROS/min_vel_x: 0.0
  • /move_base_node/DWAPlannerROS/min_vel_y: -0.1
  • /move_base_node/DWAPlannerROS/occdist_scale: 0.01
  • /move_base_node/DWAPlannerROS/oscillation_reset_dist: 0.05
  • /move_base_node/DWAPlannerROS/path_distance_bias: 24.0
  • /move_base_node/DWAPlannerROS/rot_stopped_vel: 0.01
  • /move_base_node/DWAPlannerROS/scaling_speed: 0.25
  • /move_base_node/DWAPlannerROS/sim_granularity: 0.025
  • /move_base_node/DWAPlannerROS/sim_period: 0.1
  • /move_base_node/DWAPlannerROS/sim_time: 1.7
  • /move_base_node/DWAPlannerROS/stop_time_buffer: 0.2
  • /move_base_node/DWAPlannerROS/trans_stopped_vel: 0.01
  • /move_base_node/DWAPlannerROS/vtheta_samples: 20
  • /move_base_node/DWAPlannerROS/vx_samples: 3
  • /move_base_node/DWAPlannerROS/vy_samples: 10
  • /move_base_node/DWAPlannerROS/xy_goal_tolerance: 0.2
  • /move_base_node/DWAPlannerROS/yaw_goal_tolerance: 0.17
  • /move_base_node/TrajectoryPlannerROS/acc_lim_th: 3.2
  • /move_base_node/TrajectoryPlannerROS/acc_lim_x: 2.5
  • /move_base_node/TrajectoryPlannerROS/acc_lim_y: 2.5
  • /move_base_node/TrajectoryPlannerROS/dwa: True
  • /move_base_node/TrajectoryPlannerROS/escape_vel: -0.1
  • /move_base_node/TrajectoryPlannerROS/goal_distance_bias: 0.8
  • /move_base_node/TrajectoryPlannerROS/heading_lookahead: 0.325
  • /move_base_node/TrajectoryPlannerROS/holonomic_robot: True
  • /move_base_node/TrajectoryPlannerROS/max_rotational_vel: 1.0
  • /move_base_node/TrajectoryPlannerROS/max_vel_x: 0.65
  • /move_base_node/TrajectoryPlannerROS/min_in_place_rotational_vel: 0.4
  • /move_base_node/TrajectoryPlannerROS/min_vel_x: 0.1
  • /move_base_node/TrajectoryPlannerROS/occdist_scale: 0.01
  • /move_base_node/TrajectoryPlannerROS/oscillation_reset_dist: 0.05
  • /move_base_node/TrajectoryPlannerROS/path_distance_bias: 0.6
  • /move_base_node/TrajectoryPlannerROS/prune_plan: True
  • /move_base_node/TrajectoryPlannerROS/sim_granularity: 0.025
  • /move_base_node/TrajectoryPlannerROS/sim_time: 1.7
  • /move_base_node/TrajectoryPlannerROS/vtheta_samples: 20
  • /move_base_node/TrajectoryPlannerROS/vx_samples: 3
  • /move_base_node/TrajectoryPlannerROS/xy_goal_tolerance: 0.1
  • /move_base_node/TrajectoryPlannerROS/y_vels: [-0.3, -0.1, 0.1,…
  • /move_base_node/TrajectoryPlannerROS/yaw_goal_tolerance: 0.05
  • /move_base_node/base_local_planner: base_local_planne…
  • /move_base_node/controller_frequency: 2.0
  • /move_base_node/controller_patience: 5.0
  • /move_base_node/global_costmap/base_scan/clearing: True
  • /move_base_node/global_costmap/base_scan/data_type: LaserScan
  • /move_base_node/global_costmap/base_scan/expected_update_rate: 0.4
  • /move_base_node/global_costmap/base_scan/marking: True
  • /move_base_node/global_costmap/base_scan/max_obstacle_height: 0.4
  • /move_base_node/global_costmap/base_scan/min_obstacle_height: 0.08
  • /move_base_node/global_costmap/base_scan/observation_persistence: 0.0
  • /move_base_node/global_costmap/cost_scaling_factor: 10.0
  • /move_base_node/global_costmap/footprint: [[-0.325, -0.325]…
  • /move_base_node/global_costmap/footprint_padding: 0.02
  • /move_base_node/global_costmap/global_frame: map
  • /move_base_node/global_costmap/inflation_radius: 0.55
  • /move_base_node/global_costmap/lethal_cost_threshold: 100
  • /move_base_node/global_costmap/map_type: voxel
  • /move_base_node/global_costmap/mark_threshold: 0
  • /move_base_node/global_costmap/max_obstacle_height: 2.0
  • /move_base_node/global_costmap/observation_sources: base_scan
  • /move_base_node/global_costmap/obstacle_range: 2.5
  • /move_base_node/global_costmap/origin_z: 0.0
  • /move_base_node/global_costmap/publish_frequency: 0.0
  • /move_base_node/global_costmap/raytrace_range: 3.0
  • /move_base_node/global_costmap/robot_base_frame: base_link
  • /move_base_node/global_costmap/rolling_window: False
  • /move_base_node/global_costmap/static_map: True
  • /move_base_node/global_costmap/transform_tolerance: 0.3
  • /move_base_node/global_costmap/unknown_threshold: 9
  • /move_base_node/global_costmap/update_frequency: 5.0
  • /move_base_node/global_costmap/z_resolution: 0.2
  • /move_base_node/global_costmap/z_voxels: 10
  • /move_base_node/local_costmap/base_scan/clearing: True
  • /move_base_node/local_costmap/base_scan/data_type: LaserScan
  • /move_base_node/local_costmap/base_scan/expected_update_rate: 0.4
  • /move_base_node/local_costmap/base_scan/marking: True
  • /move_base_node/local_costmap/base_scan/max_obstacle_height: 0.4
  • /move_base_node/local_costmap/base_scan/min_obstacle_height: 0.08
  • /move_base_node/local_costmap/base_scan/observation_persistence: 0.0
  • /move_base_node/local_costmap/cost_scaling_factor: 10.0
  • /move_base_node/local_costmap/footprint: [[-0.325, -0.325]…
  • /move_base_node/local_costmap/footprint_padding: 0.01
  • /move_base_node/local_costmap/global_frame: odom
  • /move_base_node/local_costmap/height: 6.0
  • /move_base_node/local_costmap/inflation_radius: 0.55
  • /move_base_node/local_costmap/lethal_cost_threshold: 100
  • /move_base_node/local_costmap/map_type: voxel
  • /move_base_node/local_costmap/mark_threshold: 0
  • /move_base_node/local_costmap/max_obstacle_height: 2.0
  • /move_base_node/local_costmap/observation_sources: base_scan
  • /move_base_node/local_costmap/obstacle_range: 2.5
  • /move_base_node/local_costmap/origin_x: 0.0
  • /move_base_node/local_costmap/origin_y: 0.0
  • /move_base_node/local_costmap/origin_z: 0.0
  • /move_base_node/local_costmap/publish_frequency: 2.0
  • /move_base_node/local_costmap/publish_voxel_map: True
  • /move_base_node/local_costmap/raytrace_range: 3.0
  • /move_base_node/local_costmap/resolution: 0.025
  • /move_base_node/local_costmap/robot_base_frame: base_link
  • /move_base_node/local_costmap/rolling_window: True
  • /move_base_node/local_costmap/static_map: False
  • /move_base_node/local_costmap/transform_tolerance: 0.3
  • /move_base_node/local_costmap/unknown_threshold: 9
  • /move_base_node/local_costmap/update_frequency: 5.0
  • /move_base_node/local_costmap/width: 6.0
  • /move_base_node/local_costmap/z_resolution: 0.2
  • /move_base_node/local_costmap/z_voxels: 10
  • /move_base_node/oscillation_distance: 0.5
  • /move_base_node/oscillation_timeout: 0.0
  • /move_base_node/planner_frequency: 2.0
  • /move_base_node/planner_patience: 5.0
  • /move_base_node/shutdown_costmaps: True
  • /rosdistro: melodic
  • /rosversion: 1.14.5
  • /use_sim_time: True

NODES
/
amcl (amcl/amcl)
map_server (map_server/map_server)
move_base_node (move_base/move_base)
rviz (rviz/rviz)

auto-starting new master
process[master]: started with pid [16012]
ROS_MASTER_URI=http://192.168.10.2:11311

setting /run_id to aecf56e6-5994-11eb-a4bb-b827eb233d23
process[rosout-1]: started with pid [16023]
started core service [/rosout]
process[move_base_node-2]: started with pid [16030]
process[map_server-3]: started with pid [16031]
process[amcl-4]: started with pid [16032]
process[rviz-5]: started with pid [16033]
[ WARN] [1610978074.506882013]: Request for map failed; trying again…
libEGL warning: DRI2: failed to authenticate
qt5ct: using qt5ct plugin
qt5ct: D-Bus global menu: no

TF Tree

My Tf tree can not show any tree or data.

Hello Ehsan,

In the first post you mentioned that you have physical robot, then in launch file you are using stage_ros simulator. Could you if you are working with physical robot or in simulator?

Navigation stack will not work without localization, but may produce a lot of unwanted output.
To narrow down the problem you should simplify the launch files. This would be removing the navigation from your launch files.

Could you describe your hardware configuration and how did you use Hector Slam to build map?

Regards,
Łukasz