stuck robot problem

asked 2018-08-06 06:00:29 -0500

Diego_Perez gravatar image

Hi, I'm running navigation stack with a rosbot, my problem is that when my robot is close to the obstacles, it stops. This is normal, but the recovery behaviours doesn't start, this is not normal. If I go to the robot, it detects me, the local costmap updates, and it comes move again.

TrajectoryPlannerROS:
  acc_lim_x: 1.0
  acc_lim_y: 1.0  
  acc_lim_theta: 0.6
  max_vel_x: 0.35
  max_vel_theta: 0.5
  min_in_place_vel_theta: 0.3
  escape_vel: -0.3
  xy_goal_tolerance: 0.10
  yaw_goal_tolerance: 0.25
  path_distance_bias: 40.0
  stop_time_buffer: 0.5
  holonomic_robot: false
  meter_scoring: true
  sim_time: 2.0
  global_frame_id: map
  controller_patience: 5.0
  planner_frequency: 2.0

Common params.yaml

obstacle_range: 2.5
raytrace_range: 3.0
footprint: [[0.10,0.12],[0.10,-0.12],[-0.10,-0.12],[-0.10,0.12]]
inflation_radius: 0.4
resolution: 0.1

use_dijkstra: false

observation_sources: laser_scan_sensor  

laser_scan_sensor: {sensor_frame: laser_frame, data_type: LaserScan, topic: scan, clearing: true, marking: true}

local_costmap:

   update_frequency: 5.0
   publish_frequency: 1.0
   static_map: false
   rolling_window: true
   height: 5.0
   width: 5.0
   resolution: 0.1
   global_frame: odom
   robot_base_frame: base_link
   publish_cost_grid: true

Sometimes, after a long time stopped, it comes move again.

edit retag flag offensive close merge delete

Comments

Have you set the recovery_behaviour parameters to true in move_base.launch? They are enabled by default I think but you should double check that

pavel92 gravatar image pavel92  ( 2018-08-06 07:24:07 -0500 )edit

Yes, when I go to the robot, the costmap marks me and then the recovery behaviour starts. It seems like the robot doesn't know when it is stuck until the cost arround it are too high.

Diego_Perez gravatar image Diego_Perez  ( 2018-08-06 07:32:02 -0500 )edit

I now find that the move_base is sending 0.0 speeds to the robot when it seems stuck, 0.0 speed is a valid speed command, this prevent the controller enter in the recovery behaviours because it's receiving valid commands. Is this correct?

Diego_Perez gravatar image Diego_Perez  ( 2018-08-07 02:40:48 -0500 )edit

move_base will invoke the recovery behaviors on three conditions: An oscillation was discovered, no global plan was received for some amount of time, or the local planner failed to find a valid velocity command for some amount of time. Are you experiencing any of these cases?

pavel92 gravatar image pavel92  ( 2018-08-07 02:50:31 -0500 )edit

Yes and no at the same time. The last case, "the local planner failed to find a valid velocity command for some amount of time" doesn't break because the velocity command (0.0 0.0 0.0) is valid, but it makes the robot stopped at infinite time.

Diego_Perez gravatar image Diego_Perez  ( 2018-08-07 03:01:24 -0500 )edit

The strange thing is when I go to the robot and it detects me like an obstacle, it moves again.

Diego_Perez gravatar image Diego_Perez  ( 2018-08-07 03:02:40 -0500 )edit

Maybe the 0 velocities somehow count as oscillation. Did you try setting the oscillation_timeout to some value?
Also the oscillation_distance must not be 0 since it will reset the oscillation_timeout. Try with timeout of 2-3 secs and distance of 0.5 m

pavel92 gravatar image pavel92  ( 2018-08-07 03:08:15 -0500 )edit

OK, thanks, I will try this.

Diego_Perez gravatar image Diego_Perez  ( 2018-08-07 03:12:07 -0500 )edit