in place rotation always goes clockwise

asked 2014-09-03 08:28:51 -0500

dreamcase gravatar image

Hi, All,

there's a strange behaviour on my robot.

whenever it tries to do a in place rotation, it always goes clockwise, even though the actual target is just a few degree counter clockwise. here's the dump of the rosparam

move_base:
  NavfnROS: {allow_unknown: false}
  TrajectoryPlannerROS: {acc_lim_th: 0.2, acc_lim_theta: 0.2, acc_lim_x: 0.2, acc_lim_y: 0.0,
    allow_unknown: false, angular_sim_granularity: 0.3, dwa: false, escape_reset_dist: 0.1,
    escape_reset_theta: 1.57079632679, escape_vel: -0.1, gdist_scale: 0.8, global_frame_id: world,
    heading_lookahead: 2.0, heading_scoring: false, heading_scoring_timestep: 0.1,
    holonomic_robot: false, max_in_place_rotational_vel: 0.1, max_rotational_vel: 0.4,
    max_vel_theta: 0.4, max_vel_x: 0.6, min_in_place_rotational_vel: -0.1, min_in_place_vel_theta: 0.1,
    min_rotational_vel: -0.4, min_vel_theta: -0.4, min_vel_x: 0.05, occdist_scale: 0.01,
    oscillation_reset_dist: 0.05, pdist_scale: 0.6, restore_defaults: false, sim_granularity: 0.3,
    sim_time: 4.2, simple_attractor: false, vtheta_samples: 20, vx_samples: 20, xy_goal_tolerance: 0.5,
    y_vels: '-0.3,-0.1,0.1,-0.3', yaw_goal_tolerance: 0.5}
  aggressive_reset: {reset_distance: 1.84}
  base_global_planner: navfn/NavfnROS
  base_local_planner: base_local_planner/TrajectoryPlannerROS
  clearing_rotation_allowed: false
  conservative_reset: {reset_distance: 3.0}
  conservative_reset_dist: 3.0
  controller_frequency: 20.0
  controller_patience: 5.0
  global_costmap:
    allow_unknown: false
    footprint: '[[0.9,0.8],[1,0],[0.9,-0.8],[-0.8,-0.8],[-0.8,0.8]]'
    footprint_padding: 0.01
    global_frame: /world
    height: 200
    inflation_layer: {cost_scaling_factor: 7.0, enabled: true, inflation_radius: 3.0,
      robot_radius: 0.46}
    obstacle_layer:
      combination_method: 1
      enabled: true
      laser_scan_sensor: {clearing: true, data_type: LaserScan, marking: true, sensor_frame: base_laser,
        topic: scan}
      max_obstacle_height: 2.0
      observation_sources: laser_scan_sensor
      obstacle_range: 5.4
      raytrace_range: 5.5
      track_unknown_space: true
    obstacle_layer_footprint: {enabled: true}
    origin_x: -100.0
    origin_y: -100.0
    plugins:
    - {name: static_layer, type: 'costmap_2d::StaticLayer'}
    - {name: obstacle_layer, type: 'costmap_2d::ObstacleLayer'}
    - {name: inflation_layer, type: 'costmap_2d::InflationLayer'}
    publish_frequency: 0.0
    resolution: 0.05
    robot_base_frame: base_link
    robot_radius: 0.46
    static_layer: {enabled: true, lethal_cost_threshold: 160, track_unknown_space: true}
    static_map: true
    transform_tolerance: 5.0
    update_frequency: 0.2
    width: 200
  local_costmap:
    allow_unknown: false
    footprint: '[[0.9,0.8],[1,0],[0.9,-0.8],[-0.8,-0.8],[-0.8,0.8]]'
    footprint_padding: 0.01
    global_frame: /base_odom
    height: 12
    inflation_layer: {cost_scaling_factor: 7.0, enabled: true, inflation_radius: 3.0,
      robot_radius: 0.46}
    lethal_cost_threshold: 160
    obstacle_layer:
      combination_method: 1
      enabled: true
      laser_scan_sensor: {clearing: true, data_type: LaserScan, marking: true, sensor_frame: base_laser,
        topic: scan}
      max_obstacle_height: 2.0
      observation_sources: laser_scan_sensor
      obstacle_range: 5.4
      raytrace_range: 5.5
      track_unknown_space: false
    obstacle_layer_footprint: {enabled: true}
    origin_x: -100.0
    origin_y: -100.0
    plugins:
    - {name: obstacle_layer, type: 'costmap_2d::ObstacleLayer'}
    - {name: inflation_layer, type: 'costmap_2d::InflationLayer'}
    publish_frequency: 5.0
    resolution: 0.05
    robot_base_frame: base_link
    robot_radius: 0.46
    rolling_window: true
    static_map: false
    transform_tolerance: 1.0
    update_frequency: 2.0
    width: 12
  oscillation_distance: 0.5
  oscillation_timeout: 0.0
  planner_frequency: 0.0
  planner_patience: 5.0
  recovery_behavior_enabled: true
  restore_defaults: false
  shutdown_costmaps: false
edit retag flag offensive close merge delete

Comments

It isn't just the oscillation blocker? Once you rotate / move into a direction there is a block for going into the other direction until you covered a certain distance (oscillation_distance parameter). You could try to set oscillation_distance to 0 to test if it is that.

AReimann gravatar image AReimann  ( 2014-10-01 03:11:03 -0500 )edit