ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A answers.ros.org
Ask Your Question
0

Ros Navigation Stack Robot Spins when it reaches the goal

asked 2020-12-16 16:12:09 -0500

eculver gravatar image

I am using the navigation stack on a custom built meccanum wheeled robot and have run into several problems. I am using rf2o for odometry, and DWA as my local planner. When launching rviz I am able to send goal points to my robot. The robot navigates correctly to that point with the obstacle avoidance. (A side issue is that the path planner refuses to use the sideways movement). Once the robot reaches its goal it is unable to set the orientation of the robot correctly. It spins like 3-4 rotations in one direction then changes and spins the other way. I dont know what is causing this issue and any help is appreciated.

base_local_planner_params.yaml

DWAPlannerROS: 
   acc_lim_theta: 3.2 
   acc_lim_x: 2.5 
   acc_lim_y: 2.5 


   max_vel_x: 0.65 
   min_vel_x: 0.2 

   max_vel_y: 1.0 
   min_vel_y: 0.2 

   max_trans_vel: 1.0 
   min_trans_vel: 0.5 
   max_rot_vel: 1.0         #max_rot_vel
   min_rot_vel: 0.4         #min_rot_vel 
   sim_time: 0.5 
   sim_granularity: 0.025 
   goal_distance_bias: 32.0 
   path_distance_bias: 24.0 
   occdist_scale: 0.01 
   stop_time_buffer: 0.2 
   oscillation_reset_dist: 0.05 
   forward_point_distance: 0.325 
   scaling_speed: 0.25 
   max_scaling_factor: 0.2 
   vx_samples: 10 
   vy_samples: 10 
   vtheta_samples: 20 
   sim_period: 0.1 
   xy_goal_tolerance: 0.2 
   yaw_goal_tolerance: 6 
   rot_stopped_vel: 0.01 
   trans_stopped_vel: 0.01
   holonomic_robot: true
   twirling_cost: 100
   meter_scoring: true

costmap_common_params: obstacle_range: 2.5 raytrace_range: 3.0 footprint: [[0.3556,0.2794], [-0.3556,0.2794], [-0.3556,-0.2794], [0.3556,-0.2794]] #robot_radius: ir_of_robot inflation_radius: 0.25

observation_sources: laser_scan_sensor point_cloud_sensor

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

point_cloud_sensor: {sensor_frame: lidar, data_type: PointCloud, topic: /lidar_pointcloud, marking: true, clearing: true}

plugins:
    - {name: static_map,  type: "costmap_2d::StaticLayer"}

costmap_global_params:

global_costmap:
  global_frame: map
  robot_base_frame: base_link
  update_frequency: 5.0
  static_map: true

costmap_local_params:

local_costmap:
  global_frame: map
  robot_base_frame: "base_link"
  update_frequency: 5.0
  publish_frequency: 2.0
  static_map: false
  rolling_window: true
  width: 20.0
  height: 20.0
  resolution: 0.1
  rolling_window: true

floorbot_configuration.launch

<launch>

    <include file="$(find velodyne_pointcloud)/launch/VLP16_points.launch" />
    <include file="$(find rf2o_laser_odometry)/launch/rf2o_laser_odometry.launch" />
    <node pkg="sensor_information" type="cloud2_to_cloud.py" name="Cloud_converter" output="screen">
    </node>
    <node pkg="robot_setup_tf" type="tf_broadcaster.py" name="tf_broadcaster" output="screen">
    </node>
</launch>

move_base.launch

<launch>

   <master auto="start"/>
 <!-- Run the map server --> 
   <node name="map_server" pkg="map_server" type="map_server" args="/home/user/floorbot_ws/src/floorbot_nav/launch/map.yaml"/>

 <!--- Run AMCL --> 
    <include file="$(find amcl)/examples/amcl_omni.launch" />

   <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
    <rosparam file="$(find floorbot_nav)/src/costmap_common_params.yaml" command="load" ns="global_costmap" /> 
    <rosparam file="$(find floorbot_nav)/src/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find floorbot_nav)/src/costmap_local_params.yaml" command="load" />
    <rosparam file="$(find floorbot_nav)/src/costmap_global_params.yaml" command="load" /> 
    <rosparam file="$(find floorbot_nav)/src/base_local_planner_params.yaml" command="load" />
 </node>

</launch>
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2021-01-11 09:37:33 -0500

eculver gravatar image

I finally solved both issues. The spinning was caused by setting the global costmap to a rolling window. I got the robot to strafe by using TEB_LOCAL_PLANNER

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2020-12-16 16:12:09 -0500

Seen: 285 times

Last updated: Dec 16 '20