-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Feature request
The constrained smoother has a cost function in ceres, that is not aligned with the documentation of ceres and causes poor convergence. The documentation can be found on the ceres page. The cost function squares all residuals even though ceres does that internally and it should not be done by the user. This causes the linearization being bad which in turn makes the trust region smaller and slows down the convergence a lot in scenarios where the costmap is causing the highest residual values.
Feature description
Squaring of residuals need to be removed in all residuals. For example remove the extra multiplication by value here:
navigation2/nav2_constrained_smoother/include/nav2_constrained_smoother/smoother_cost_function.hpp
Line 213 in d518dd3
| r += (T)weight * value * value; // objective function value |
Implementation considerations
Since this changes the shape of the cost function, the weights also need to be adjusted. Is there an example that can be used to tune the parameters?