-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unable to reach GoalPose with xy precision higher than 40cm #1492
Comments
Did you try tuning your controller to follow paths more closely? I think that problem may largely fall on the controller tuning if you don't tuned it in a way capable of achieving that accuracy. If you play with the controller gains, does that behavior change? Also, I'd add some print outs / use the Followup with that information and we can see what we can do. |
I'm 99% confident that my parameters are read correctly since I'm trying to tune them for a few weeks now.
I totally agree on this but using the default Best regards |
I mean, I hope that's true, but I did refactor the way parameters are read in not long ago and if there are issues, this may be how they show up. See #1468. This isn't a PID controller, you may want to read Thrun's paper if you're not familiar with DWA. All of these parameters are dials you can turn, and it wouldnt surprise me if there were actually more that we didn't describe in the default configuration file. If you launch things and then |
@3wnbr1 any updates? Did you find your problem was better after some tuning? |
Edit: looking at branches a little closer I don't think the refactor caused this. the the |
Sorry for the late reply, I tried the second trajectory generator All my tests were done on At first, my robot wasn't achieving its goal but entering recovery right before getting around 40cm from it. The reason was there was no valid trajectories (whatever the number of samples in x, y and theta space). So I said to myself that I might have been too restrictive on the critics so in order to tune the controller, I started by disabling most of the critics. I kept only ROS2 Navigation Tuning Strange behaviorI noticed that about 40 cms from the goal pose, all trajectories where converging to a "virtual point" while their critics went worse which caused the failure and recovery state. But at some point, setting the critic to TL;DR : Tuning the critics influences the cost (color) of the trajectories but I don't get why they converge to single point close to the goal pose I would like your feedback on this as the trajectories generated close to the goal look pretty abnormal. Maybe this could be related #1567 or something similar with a default parameter laying around. controller_server:
ros__parameters:
# Robot Configuration Parameters
use_sim_time: True
FollowPath:
acc_lim_theta: 3.0
acc_lim_x: 1.0
acc_lim_y: 0.0
decel_lim_theta: -3.0
decel_lim_x: -1.0
decel_lim_y: 0.0
max_vel_theta: 3.0
max_vel_x: 0.79
max_vel_y: 0.0
min_speed_theta: 0.05
min_speed_xy: 0.006
max_speed_xy: 0.80
min_vel_x: -0.79
min_vel_y: 0.0
sim_time: 1.7
linear_granularity: 0.025
angular_granularity: 0.025
vx_samples: 25
vy_samples: 0
vtheta_samples: 20
# Trajectory Scoring Parameters
#
# Scores a trajectory based on where the path passes over the costmap.
# To use this properly, you must use the inflation layer in costmap to
# expand obstacles by the robot's radius.
BaseObstacle:
scale: 0.02
sum_scores: false
# Scores a trajectory based on verifying all points along the robot's footprint don't touch an obstacle marked in the costmap.
ObstacleFootprint:
scale: 0.02
sum_scores: false
# Prevents holonomic robots from spinning as they make their way to the goal.
Twirling:
scale: 0.0
# Scores a trajectory based on how well aligned the trajectory is with the goal pose.
GoalAlign:
aggregation_type: last
scale: 0.01
# Scores a trajectory based on how close the trajectory gets the robot to the goal pose.
GoalDist:
scale: 1.0
sum_scores: false
# Prevents the robot from just moving backwards and forwards.
Oscillation:
scale: 1.0
x_only_threshold: 0.05
# Scores a trajectory based on how well it is aligned to the path provided by the global planner.
PathAlign:
aggregation_type: last
scale: 1.0
# Scores a trajectory based on how far it ends up from the path provided by the global planner.
PathDist:
aggregation_type: last
scale: 1.0
# Only allows the robot to rotate to the goal orientation when it is sufficiently close to the goal location
RotateToGoal:
scale: 1.0
critics:
- BaseObstacle
#- ObstacleFootprint
#- GoalAlign
- GoalDist
#- Oscillation
- PathAlign
# - PathDist
# - RotateToGoal
transform_tolerance: 0.2
prune_plan: True
prune_distance: 1.0
debug_trajectory_details: True
trajectory_generator_name: "dwb_plugins::LimitedAccelGenerator"
goal_checker_name: "dwb_plugins::SimpleGoalChecker"
short_circuit_trajectory_evaluation: True
trans_stopped_velocity: 0.25
slowing_factor: 5.0
lookahead_time: -1.5
stateful: True
xy_goal_tolerance: 0.05
yaw_goal_tolerance: 0.25
latch_xy_goal_tolerance: true
# Published params
publish_cost_grid_pc: false
publish_evaluation: true
publish_global_plan: true
publish_local_plan: true
publish_trajectories: true
publish_transformed_plan: true
# Controller
controller_frequency: 30.0
controller_plugin_types: ["dwb_core::DWBLocalPlanner"]
controller_plugin_ids: ["FollowPath"]
min_theta_velocity_threshold: 0.05
min_x_velocity_threshold: 0.006
min_y_velocity_threshold: 1.0 |
to kind of summarize that, you were able to fix it with tuning the controller? Can we close this then? |
I would like to understand why the trajectories don't converge to the goal pose but somewhere else. Then it will be just tuning and I will consider this closed. For now, I wasn't able to fix it Maybe I'm just missing some new param |
Try not using these plugins with known issues. I can’t tell you that DWB works on getting low tolerances, because frankly I haven’t tested that, but I have tested <20cm with the standard params we give in the config files and that works without an issue. My feeling its a mix of that bug and your configuration. |
Thanks for your feedback, I will try to investigate the underlying issue and test with the original config. I'll post updates tomorrow. |
After some testing, this strange behavior was due to |
Bug report
Required Info:
1faa3425cf5a51c3e0d1102687555932663b499e
: brancheloquent-devel
Steps to reproduce issue
xy_goal_tolerance: 0.25
byxy_goal_tolerance: 0.05
Expected behavior
Actual behavior
Additional information
The text was updated successfully, but these errors were encountered: