diff --git a/launch/azimut3/az3_mapping_robot_nav.launch b/launch/azimut3/az3_mapping_robot_nav.launch index 70822a35..d629c868 100644 --- a/launch/azimut3/az3_mapping_robot_nav.launch +++ b/launch/azimut3/az3_mapping_robot_nav.launch @@ -14,9 +14,9 @@ - - + + @@ -30,44 +30,37 @@ - - - - - + - - - - + + - - + - + + + + - - - - - + + - + @@ -88,7 +81,7 @@ - + @@ -126,10 +119,10 @@ - - - - + + + + diff --git a/launch/azimut3/config/base_local_planner_params.yaml b/launch/azimut3/config/base_local_planner_params.yaml index 0fd03f7b..3ead9a12 100644 --- a/launch/azimut3/config/base_local_planner_params.yaml +++ b/launch/azimut3/config/base_local_planner_params.yaml @@ -8,23 +8,23 @@ TrajectoryPlannerROS: # minimal distance of 0.48 m. # Basically, max_rotational_vel * rho_min <= min_vel_x max_vel_x: 0.700 - min_vel_x: 0.212 - max_rotational_vel: 0.550 + min_vel_x: 0.24 + max_rotational_vel: 0.5 min_in_place_rotational_vel: 0.15 escape_vel: -0.10 - holonomic_robot: false + holonomic_robot: true xy_goal_tolerance: 0.20 yaw_goal_tolerance: 0.20 - sim_time: 1.7 + sim_time: 1 sim_granularity: 0.025 vx_samples: 3 - vtheta_samples: 3 vtheta_samples: 20 + controller_frequency: 10 - goal_distance_bias: 0.8 - path_distance_bias: 0.6 + pdist_scale: 0.6 + gdist_scale: 0.8 occdist_scale: 0.01 heading_lookahead: 0.325 dwa: true diff --git a/src/CoreWrapper.cpp b/src/CoreWrapper.cpp index 7bd40472..a4021a64 100644 --- a/src/CoreWrapper.cpp +++ b/src/CoreWrapper.cpp @@ -1070,7 +1070,9 @@ void CoreWrapper::process( bool lastPoseModified = false; if(rtabmap_.getPathCurrentGoalId() == rtabmap_.getPath().back().first && rtabmap_.getLocalOptimizedPoses().size()) { - if(latestNodeWasReached_ || rtabmap_.getLocalOptimizedPoses().rbegin()->second.getDistance(currentMetricGoal_) < rtabmap_.getGoalReachedRadius()) + if(latestNodeWasReached_ || + rtabmap_.getLocalOptimizedPoses().rbegin()->second.getDistance(currentMetricGoal_) < rtabmap_.getGoalReachedRadius() || + rtabmap_.getPathTransformToGoal().getNorm() < rtabmap_.getGoalReachedRadius()) { if(!latestNodeWasReached_) { @@ -2372,7 +2374,7 @@ void CoreWrapper::goalDoneCb(const actionlib::SimpleClientGoalState& state, { if(rtabmap_.getPath().size() && rtabmap_.getPathCurrentGoalId() != rtabmap_.getPath().back().first && - !uContains(rtabmap_.getLocalOptimizedPoses(), rtabmap_.getPath().back().first)) + (!uContains(rtabmap_.getLocalOptimizedPoses(), rtabmap_.getPath().back().first) || !latestNodeWasReached_)) { ROS_WARN("Planning: move_base reached current goal but it is not " "the last one planned by rtabmap. A new goal should be sent when "