Robotics StackExchange | Archived questions

Error in move base : Aborting because the robot appears to be oscillating over and over. Even after executing all recovery behaviors"

I have created my navigating tracked mobile robot. When i give a simple goal to the robot in RVIZ path planning was done successfully. But the robot did not move. Instead of moving the error message was prompted after few seconds as Aborting because the robot appears to be oscillating over and over. Even after executing all recovery behaviors". Can anyone give me a proper solution for this. In here i have attached all parameter files, rqt graph of active topics and some screenshots in RVIZ.

localcostmapparams.ymail

local_costmap:
  global_frame: odom
  robot_base_frame: base_link
  update_frequency: 5.0
  publish_frequency: 2.0
  static_map: false
  rolling_window: true
  width: 1.0
  height: 1.0
  resolution: 0.05
  transform_tolerance: 0.5

  plugins:
   - {name: obstacles,  type: "costmap_2d::VoxelLayer"}
   - {name: inflater,   type: "costmap_2d::InflationLayer"}

globalcostmapparams.yaml

global_costmap:
   global_frame: /map
   robot_base_frame: base_link
   update_frequency: 1.0
   publish_frequency: 0.5
   static_map: true
   transform_tolerance: 0.5

costmapcommonparams.yaml

obstacle_range: 2.5
raytrace_range: 3.0
#footprint: [[x0, y0], [x1, y1], ... [xn, yn]]
footprint: [[-0.2,-0.2],[-0.2,0.2], [0.2, 0.2], [0.2,-0.2]]
#robot_radius: 0.22545
robot_radius: 0.4002


#cost_scaling_factor and inflation_radius were now moved to the inflation_layer ns

inflation_layer:
  enabled:              true
  cost_scaling_factor:  10.0  # exponential rate at which the obstacle cost drops off (default: 10)
  inflation_radius:     0.30 # max. distance from an obstacle at which costs are incurred for planning paths.

obstacle_layer:
  enabled:              true
  min_obstacle_height:  0.0
  max_obstacle_height:  0.6
  origin_z:             0.0
  z_resolution:         0.2

  z_voxels:             2
  unknown_threshold:    15
  mark_threshold:       0
  combination_method:   1
  track_unknown_space:  true    #true needed for disabling global path planning through unknown space
  obstacle_range: 2.5
  raytrace_range: 3.0

observation_sources: laser_scan_sensor 

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

dwalocalplanner_params.yaml

DWAPlannerROS:

# Robot Configuration Parameters - Kobuki
  max_vel_x: 0.55  # 0.55
  min_vel_x: 0.0 

  max_vel_y: 0.4  # diff drive robot
  min_vel_y: 0.0  # diff drive robot

  max_trans_vel: 0.38 # choose slightly less than the base's capability
  min_trans_vel: 0.10  # this is the min trans velocity when there is negligible rotational velocity
  trans_stopped_vel: 0.1

  # Warning!
  #   do not set min_trans_vel to 0.0 otherwise dwa will always think translational velocities
  #   are non-negligible and small in place rotational velocities will be created.

  #max_rot_vel: 5.0  # choose slightly less than the base's capability
  max_rot_vel: 2.0 # Very slow for exploration!
  min_rot_vel: 0.4  # this is the min angular velocity when there is negligible translational velocity
  rot_stopped_vel: 0.4

  acc_lim_x: 0.5 # maximum is theoretically 2.0, but we 

  acc_lim_theta: 2.0
  acc_lim_y: 0.0      # diff drive robot

# Goal Tolerance Parameters
  yaw_goal_tolerance: 0.1  # 0.05
  xy_goal_tolerance: 0.15  # 0.10
  # latch_xy_goal_tolerance: false

# Forward Simulation Parameters
  sim_time: 1.0       # 1.7
  vx_samples: 6       # 3

  vy_samples: 1       # diff drive robot, there is only one sample
  vtheta_samples: 20  # 20

# Trajectory Scoring Parameters
  path_distance_bias: 32.0      # 32.0   - weighting for how much it should stick to the global path plan
  goal_distance_bias: 24.0      # 24.0   - wighting for how much it should attempt to reach its goal
  occdist_scale: 0.50           # 0.01   - weighting for how much the controller should avoid obstacles
  forward_point_distance: 0.325 # 0.325  - how far along to place an additional scoring point
  stop_time_buffer: 0.2         # 0.2    - amount of time a robot must stop in before colliding for a valid traj.
  scaling_speed: 0.25           # 0.25   - absolute velocity at which to start scaling the robot's footprint
  max_scaling_factor: 0.2       # 0.2    - how much to scale the robot's footprint when at speed.

# Oscillation Prevention Parameters
  oscillation_reset_dist: 0.05  # 0.05   - how far to travel before resetting oscillation flags

# Debugging
  publish_traj_pc : true
  publish_cost_grid_pc: true
  global_frame_id: odom

# Differential-drive robot configuration - necessary?
  holonomic_robot: false
  prune_plan: true # May help with Auto Explore.

move_base.launch.xml

<!-- 
    ROS navigation stack with velocity smoother and safety (reactive) controller
-->
<launch>

  <arg name="odom_frame_id"   default="odom"/>
  <arg name="base_frame_id"   default="base_link"/>
  <arg name="global_frame_id" default="map"/>
  <arg name="odom_topic" default="/odom" />
  <arg name="laser_topic" default="/scan" />
  <arg name="vel_topic" default="cmd_vel" />

  <arg name="custom_param_file" default="$(find arlobot_navigation)/param/dummy.yaml"/>

  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
    <rosparam file="$(find arlobot_navigation)/param/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find arlobot_navigation)/param/costmap_common_params.yaml" command="load" ns="local_costmap" />   
    <rosparam file="$(find arlobot_navigation)/param/local_costmap_params.yaml" command="load" />   
    <rosparam file="$(find arlobot_navigation)/param/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find arlobot_navigation)/param/dwa_local_planner_params.yaml" command="load" />
<param name="base_local_planner" value="dwa_local_planner/DWAPlannerROS"/>

<rosparam file="$(find arlobot_navigation)/param/move_base_params.yaml" command="load" />
<rosparam file="$(find arlobot_navigation)/param/global_planner_params.yaml" command="load" />
<rosparam file="$(find arlobot_navigation)/param/navfn_global_planner_params.yaml" command="load" />
<!-- external params file that could be loaded into the move_base namespace -->
<rosparam file="$(arg custom_param_file)" command="load" />

<!-- reset frame_id parameters using user input data -->
    <param name="global_costmap/global_frame" value="$(arg global_frame_id)"/>
    <param name="global_costmap/robot_base_frame" value="$(arg base_frame_id)"/>
    <param name="local_costmap/global_frame" value="$(arg odom_frame_id)"/>
    <param name="local_costmap/robot_base_frame" value="$(arg base_frame_id)"/>
    <param name="DWAPlannerROS/global_frame_id" value="$(arg odom_frame_id)"/>


    <remap from="odom" to="$(arg odom_topic)"/>
    <remap from="scan" to="$(arg laser_topic)"/>
    <remap from="cmd_vel" to="$(arg vel_topic)"/>
  </node>
</launch>

rqt graphs of active topics and nodes

Link1

RVIZ view after giving a simple goal

Link2

Error message

Link 3

Velocity messeges published on the robot base by /cmd_vel topic

Link 4

Can anyone help please....

Asked by channa on 2016-09-07 02:17:49 UTC

Comments

did you find a solution?

Asked by SH_Developer on 2017-05-29 09:47:41 UTC

Answers