From ae4efe3eaed0205e5235d7c9a860fed9836da763 Mon Sep 17 00:00:00 2001 From: pure <374565074@qq.com> Date: Wed, 14 Jan 2026 14:29:25 +0800 Subject: [PATCH] fix: the calculation error in the P matrix in the piecewise_jerk_path_problem --- .../piecewise_jerk_path_problem.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/planning/planning_base/math/piecewise_jerk/piecewise_jerk_path_problem.cc b/modules/planning/planning_base/math/piecewise_jerk/piecewise_jerk_path_problem.cc index 49b6360f591..c928bc467a2 100644 --- a/modules/planning/planning_base/math/piecewise_jerk/piecewise_jerk_path_problem.cc +++ b/modules/planning/planning_base/math/piecewise_jerk/piecewise_jerk_path_problem.cc @@ -67,6 +67,13 @@ void PiecewiseJerkPathProblem::CalculateKernel(std::vector* P_data, (weight_ddx_ + weight_dddx_ / delta_s_square) / (scale_factor_[2] * scale_factor_[2])); ++value_index; + + for (int i = 0; i < n - 1; ++i) { + columns[2 * n + i + 1].emplace_back( + 2 * n + i, (-weight_dddx_ / delta_s_square) / + (scale_factor_[2] * scale_factor_[2])); + ++value_index; + } for (int i = 1; i < n - 1; ++i) { columns[2 * n + i].emplace_back( 2 * n + i, (weight_ddx_ + 2.0 * weight_dddx_ / delta_s_square) / @@ -78,14 +85,7 @@ void PiecewiseJerkPathProblem::CalculateKernel(std::vector* P_data, (weight_ddx_ + weight_dddx_ / delta_s_square + weight_end_state_[2]) / (scale_factor_[2] * scale_factor_[2])); ++value_index; - - // -2 * w_dddx / delta_s^2 * x(i)'' * x(i + 1)'' - for (int i = 0; i < n - 1; ++i) { - columns[2 * n + i].emplace_back(2 * n + i + 1, - (-2.0 * weight_dddx_ / delta_s_square) / - (scale_factor_[2] * scale_factor_[2])); - ++value_index; - } + CHECK_EQ(value_index, num_of_nonzeros);