the robot rotates instead of following the path
Hello
my robot seems to be undecided when following a trajectory from a certain point. It rotate in the same place over and over again.
Video: robot video
The problem seems to happen sometimes and only in a few places.
Maybe my robot's footprint is interfering negatively. I believe that there is no problem with the base, because using the teleop_twist_keyboard it works well.
My robot is differential, with RPLIDAR A1. Move_base is running on a machine on the local network with core i5 and base_controler on a raspberrypi. My odometry rate is approximately 50Hz. My local planner is TrajectoryPlannerROS
Any parameter tips to adjust?
Here are my yaml files:
local_costmap:
global_frame: /map
robot_base_frame: /base_footprint
update_frequency: 5.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width: 5.0
height: 5.0
resolution: 0.02 #defaul 0.02
transform_tolerance: 0.5
global_costmap:
global_frame: /map
robot_base_frame: /base_footprint
transform_tolerance: 0.5
update_frequency: 1.0
publish_frequency: 1.0
static_map: true
rolling_window: false
costmap_common_params_navigation:
obstacle_range: 2.5
raytrace_range: 3.0
footprint: [[-0.06,-0.115],[-0.06,0.115],[0.17,0.115],[0.17,-0.115]]
observation_sources: scan
scan: {sensor_frame: base_link, observation_persistence: 0.0, max_obstacle_height: 0.4, min_obstacle_height: 0.0, data_type: LaserScan, topic: /scan, marking: true, clearing: true}
move_base:
controller_patience: 15.0
planner_frequency: 3.0
controller_frequency: 15.0
TrajectoryPlannerROS:
max_vel_x: 0.20
min_vel_x: 0.10
max_vel_theta: 1.0 #0.4
min_vel_theta: -1.0 #-0.4
max_rotational_vel: 0.6
min_in_place_rotational_vel: 0.6
max_in_place_vel_theta: 1.0
min_in_place_vel_theta: 1.0
occdist_scale: 0.05 #defaul 0.1
holonomic_robot: false
AMCL:
<launch>
<node pkg="amcl" type="amcl" name="amcl" output="screen">
<!-- Publish scans from best pose at a max of 10 Hz -->
<param name="odom_model_type" value="diff"/>
<param name="odom_alpha5" value="0.1"/>
<param name="transform_tolerance" value="0.1"/>
<param name="gui_publish_rate" value="10.0"/>
<param name="laser_max_beams" value="30"/>
<param name="min_particles" value="500"/>
<param name="max_particles" value="5000"/>
<param name="kld_err" value="0.05"/>
<param name="kld_z" value="0.99"/>
<param name="odom_alpha1" value="0.2"/>
<param name="odom_alpha2" value="0.2"/>
<!-- translation std dev, m -->
<param name="odom_alpha3" value="0.8"/>
<param name="odom_alpha4" value="0.2"/>
<param name="laser_z_hit" value="0.5"/>
<param name="laser_z_short" value="0.05"/>
<param name="laser_z_max" value="0.05"/>
<param name="laser_z_rand" value="0.5"/>
<param name="laser_sigma_hit" value="0.2"/>
<param name="laser_lambda_short" value="0.1"/>
<param name="laser_lambda_short" value="0.1"/>
<param name="laser_model_type" value="likelihood_field"/>
<!-- <param name="laser_model_type" value="beam"/> -->
<param name="laser_likelihood_max_dist" value="2.0"/>
<param name="update_min_d" value="0.2"/>
<param name="update_min_a" value="0.5"/>
<param name="odom_frame_id" value="odom"/>
<param name="resample_interval" value="1"/>
<param name="recovery_alpha_slow" value="0.0"/>
<param name="recovery_alpha_fast" value="0.0"/>
<param name="base_frame_id" value="base_footprint"/>
</node>
</launch>
Looks like it's within the inflation zone around the counter. If that behavior is absent when out in the middle of the room, it looks like ROS trying to avoid hitting the counter. Reduce inflation and make sure that you don't start or stop navigation within an inflation zone. If that behavior occurs even outside of inflation zones, then I can't help you.
Thank you for your reply. I believe this is the reason, because in the middle of the room it is working normally.
OK. I'll change comment to answer and you can mark as correct.