Skip to content

Commit 779187d

Browse files
committed
fix MPPI goal critic inversion (ros-navigation#5088)
1 parent eda0a8f commit 779187d

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

nav2_mppi_controller/include/nav2_mppi_controller/critics/goal_critic.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class GoalCritic : public CriticFunction
4646
unsigned int power_{0};
4747
float weight_{0};
4848
float threshold_to_consider_{0};
49+
bool enforce_path_inversion_{false};
4950
};
5051

5152
} // namespace mppi::critics

nav2_mppi_controller/src/critics/goal_critic.cpp

+11-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ namespace mppi::critics
2121

2222
void GoalCritic::initialize()
2323
{
24+
auto getParentParam = parameters_handler_->getParamGetter(parent_name_);
25+
getParentParam(enforce_path_inversion_, "enforce_path_inversion", false);
26+
2427
auto getParam = parameters_handler_->getParamGetter(name_);
2528

2629
getParam(power_, "cost_power", 1);
@@ -40,8 +43,14 @@ void GoalCritic::score(CriticData & data)
4043
return;
4144
}
4245

43-
const auto & goal_x = data.goal.position.x;
44-
const auto & goal_y = data.goal.position.y;
46+
auto goal_x = data.goal.position.x;
47+
auto goal_y = data.goal.position.y;
48+
49+
if (enforce_path_inversion_) {
50+
const unsigned int cusp_idx = data.path.x.size() - 1;
51+
goal_x = data.path.x[cusp_idx];
52+
goal_y = data.path.y[cusp_idx];
53+
}
4554

4655
const auto delta_x = data.trajectories.x - goal_x;
4756
const auto delta_y = data.trajectories.y - goal_y;

0 commit comments

Comments
 (0)