15 #include "nav2_mppi_controller/critics/velocity_deadband_critic.hpp"
17 namespace mppi::critics
24 getParam(power_,
"cost_power", 1);
25 getParam(weight_,
"cost_weight", 35.0);
28 std::vector<double> deadband_velocities{0.0, 0.0, 0.0};
29 getParam(deadband_velocities,
"deadband_velocities", std::vector<double>{0.0, 0.0, 0.0});
31 deadband_velocities.begin(), deadband_velocities.end(), deadband_velocities_.begin(),
32 [](
double d) {return static_cast<float>(d);});
35 logger_,
"VelocityDeadbandCritic instantiated with "
36 << power_ <<
" power, " << weight_ <<
" weight, deadband_velocity ["
37 << deadband_velocities_.at(0) <<
"," << deadband_velocities_.at(1) <<
","
38 << deadband_velocities_.at(2) <<
"]");
47 if (data.motion_model->isHolonomic()) {
49 data.costs += ((((fabs(deadband_velocities_[0]) - data.state.vx.abs()).max(0.0f) +
50 (fabs(deadband_velocities_[1]) - data.state.vy.abs()).max(0.0f) +
51 (fabs(deadband_velocities_[2]) - data.state.wz.abs()).max(0.0f)) *
52 data.model_dt).rowwise().sum() * weight_).pow(power_).eval();
54 data.costs += ((((fabs(deadband_velocities_[0]) - data.state.vx.abs()).max(0.0f) +
55 (fabs(deadband_velocities_[1]) - data.state.vy.abs()).max(0.0f) +
56 (fabs(deadband_velocities_[2]) - data.state.wz.abs()).max(0.0f)) *
57 data.model_dt).rowwise().sum() * weight_).eval();
63 data.costs += ((((fabs(deadband_velocities_[0]) - data.state.vx.abs()).max(0.0f) +
64 (fabs(deadband_velocities_[2]) - data.state.wz.abs()).max(0.0f)) *
65 data.model_dt).rowwise().sum() * weight_).pow(power_).eval();
67 data.costs += ((((fabs(deadband_velocities_[0]) - data.state.vx.abs()).max(0.0f) +
68 (fabs(deadband_velocities_[2]) - data.state.wz.abs()).max(0.0f)) *
69 data.model_dt).rowwise().sum() * weight_).eval();
76 #include <pluginlib/class_list_macros.hpp>
auto getParamGetter(const std::string &ns)
Get an object to retrieve parameters.
Abstract critic objective function to score trajectories.
Critic objective function for enforcing feasible constraints.
void initialize() override
Initialize critic.
void score(CriticData &data) override
Evaluate cost related to goal following.
Data to pass to critics for scoring, including state, trajectories, pruned path, global goal,...