Navigation in Stage simulation without using laser

asked 2015-05-25 06:55:10 -0500

Dio Eraclea gravatar image


I want to simulate a robot in stage_ros with only odometry information and without using laser scanner for localization. I want to use navigation stack with Lego Mindstorms in the future (they have no laser scanner). I read some information about how to exclude laser from the simulation and so I deleted it from observation_sources.

image description

According to the graph, navigation really stopped using base_laser, but unexpected problem appeared - the robot started to hit the obstacles. The map is very simple - just the rectangular of 8 x 4 meters with the two walls in the middle.

image description

The robot should pass through the gap between the walls. Without the walls navigation is perfect, so it is not the localisation error, probably. I tried to watch what is happening in Rviz. It shows that global plan is almost good, and in the beginning robot starts moving according to it. But shortly after that, the robot is going like through the short cut - through the wall.

Here is base_local_planner_params.yaml:

  #Set the acceleration limits of the robot
  acc_lim_th: 3.2 
  acc_lim_x: 2.5
  acc_lim_y: 2.5
  #Set the velocity limits of the robot
  max_vel_x: 0.65
  min_vel_x: 0.1
  max_rotational_vel: 1.0
  min_in_place_rotational_vel: 0.4
  #The velocity the robot will command when trying to escape from a stuck situation
  escape_vel: -0.1
  #For this example, we'll use a holonomic robot
  holonomic_robot: true
  #Since we're using a holonomic robot, we'll set the set of y velocities it will sample
  y_vels: [-0.3, -0.1, 0.1, -0.3]
  #Set the tolerance on achieving a goal
  xy_goal_tolerance: 0.1
  yaw_goal_tolerance: 0.05
  #We'll configure how long and with what granularity we'll forward simulate trajectories
  sim_time: 1.7
  sim_granularity: 0.025
  vx_samples: 3
  vtheta_samples: 20
  #Parameters for scoring trajectories
  goal_distance_bias: 0.8
  path_distance_bias: 0.6
  occdist_scale: 0.01
  heading_lookahead: 0.325
  #We'll use the Dynamic Window Approach to control instead of Trajectory Rollout for this example
  dwa: true
  #How far the robot must travel before oscillation flags are reset
  oscillation_reset_dist: 0.05
  #Eat up the plan as the robot moves along it
  prune_plan: true

Here is costmap_common_params.yaml:

#For this example we'll configure the costmap in voxel-grid mode
map_type: voxel #Voxel grid specific parameters
origin_z: 0.0
z_resolution: 0.2
z_voxels: 10
unknown_threshold: 9
mark_threshold: 0
transform_tolerance: 0.3 #Set the tolerance we're willing to have for tf transforms
obstacle_range: 2.5 #Obstacle marking parameters // in wiki - global filtering parameters
max_obstacle_height: 2.0
raytrace_range: 3.0
footprint: [[-0.325, -0.325], [-0.325, 0.325], [0.325, 0.325], [0.46, 0.0], [0.325, -0.325]]#The footprint of the robot and associated padding
footprint_padding: 0.01
inflation_radius: 0.35 #Cost function parameters
cost_scaling_factor: 10.0
lethal_cost_threshold: 100 #The cost at which a cell is considered an obstacle when a map is read from the map_server

Here is global_costmap_params.yaml

  #Set the global and robot frames for the costmap
  global_frame: /map
  robot_base_frame: base_link
  #Set the ...
edit retag flag offensive close merge delete