From df135b19ed6e2df547bd9ae0afd7e8e089a1c8af Mon Sep 17 00:00:00 2001 From: Jarek Karwowski Date: Wed, 20 Sep 2023 20:22:28 +0200 Subject: [PATCH] `config` - preliminary parameter tuning for socially-complaint behaviour and reasonable performance [#92] --- cfg/HuberoPlanner.cfg | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/cfg/HuberoPlanner.cfg b/cfg/HuberoPlanner.cfg index b72b02e4..e80dbe16 100755 --- a/cfg/HuberoPlanner.cfg +++ b/cfg/HuberoPlanner.cfg @@ -19,7 +19,7 @@ group_limits_custom.add("maintain_vel_components_rate", bool_t, 0, "When true an group_general = gen.add_group("General", type="tab") group_general.add("planning_approach", bool_t, 0, "Whether to use planning (True) or proactive approach (False) for trajectory generation", True) -group_general.add("sim_time", double_t, 0, "The amount of time to roll trajectories out for in seconds. Too high with impede high velocities as traj. points will exceed the local costmap.", 3.0, 0) +group_general.add("sim_time", double_t, 0, "The amount of time to roll trajectories out for in seconds. Too high with impede high velocities as traj. points will exceed the local costmap.", 2.0, 0) group_general.add("sim_granularity", double_t, 0, "The granularity with which to check for collisions along each trajectory in meters", 0.2, 0) group_general.add("angular_sim_granularity", double_t, 0, "The granularity with which to check for collisions for rotations in radians", 0.1, 0) group_general.add("local_goal_distance_multiplier", double_t, 0, "The factor for the distance from the center point of the robot to place the local goal for self-driven force calculation; consider reducing it for proactive approach; resultant distance must not exceed local costmap bounds.", 1.1, 0.10, 8.0) @@ -153,8 +153,11 @@ group_traj_social_as.add("fis_as_amplifier_granularity", double_t, 0, "", +1.00, group_cost = gen.add_group("Cost", type="tab") ## Weights/scales of the cost functions -group_cost.add("path_distance_scale", double_t, 0, "The weight for the path distance part of the cost function", 7.9, 0.0) -group_cost.add("goal_distance_scale", double_t, 0, "The weight for the goal distance part of the cost function", 10.58, 0.0) +# Performance tuning was performed using `path_distance_scale` initially set to 7.7. Values up to 14.0 provide +# reasonable results (9.9, 11.0, 12.0 were also tested). +group_cost.add("path_distance_scale", double_t, 0, "The weight for the path distance part of the cost function", 10.0, 0.0) +# Note that `goal_distance_scale` at 17.5 may slow down the robot just before the goal (e.g., near walls). +group_cost.add("goal_distance_scale", double_t, 0, "The weight for the goal distance part of the cost function", 17.5, 0.0) group_cost.add("occdist_scale", double_t, 0, "The weight for the obstacle distance part of the cost function", 0.02, 0.0) group_cost.add("occdist_sum_scores", bool_t, 0, "Whether to sum up the scores along the path or use the maximum one", False) group_cost.add("occdist_separation", double_t, 0, "The minimum separation that should be kept from obstacles", 0.025, 0.0) @@ -165,8 +168,8 @@ occdist_kernel = gen.enum([ "Occdist Separation Kernel Type") group_cost.add("occdist_separation_kernel", int_t, 0, "Type of kernel that the robot's footprint is enlarged with.", 1, 0, 1, edit_method=occdist_kernel) group_cost.add("ttc_scale", double_t, 0, "The weight for the time to collision cost function (scores a whole trajectory instead of a single cell)", 3.0, 0.0) -group_cost.add("alignment_scale", double_t, 0, "The weight for the alignment with the global plan. In a classical DWA implementation equal to `path_distance_scale`", 1.4, 0.0) -group_cost.add("goal_front_scale", double_t, 0, "The weight for the achievement of the additional goal point placed in front of the mobile base. In a classical DWA implementation equal to `goal_distance_scale`", 5.0, 0.0) +group_cost.add("alignment_scale", double_t, 0, "The weight for the alignment with the global plan. In a classical DWA implementation equal to `path_distance_scale`", 1.5, 0.0) +group_cost.add("goal_front_scale", double_t, 0, "The weight for the achievement of the additional goal point placed in front of the mobile base. In a classical DWA implementation equal to `goal_distance_scale`", 8.0, 0.0) group_cost.add("backward_scale", double_t, 0, "The weight for the backward motion penalisation", 0.08, 0.0) group_cost.add("heading_change_smoothness_scale", double_t, 0, "The weight for the cost function that penalizes robot rotational velocity changes", 11.0, 0.0)