diff --git a/mjpc/task.cc b/mjpc/task.cc index 4e4c4a6bf..b57e2d27a 100644 --- a/mjpc/task.cc +++ b/mjpc/task.cc @@ -88,9 +88,16 @@ void Task::GetFrom(const mjModel* model) { num_norm_parameters[num_norms]); parameter_shift += num_norm_parameters[num_norms]; num_norms += 1; + + // check for max norms + if (num_norms > kMaxCostTerms) { + mju_error("Number of cost terms exceeds maximum. Either: 1) reduce number of terms 2) increase kMaxCostTerms"); + } } } + + // set residual parameters this->SetFeatureParameters(model); } diff --git a/mjpc/task.h b/mjpc/task.h index 37884afac..263e62ad6 100644 --- a/mjpc/task.h +++ b/mjpc/task.h @@ -26,7 +26,7 @@ namespace mjpc { inline constexpr double kRiskNeutralTolerance = 1.0e-6; // maximum cost terms -inline constexpr int kMaxCostTerms = 10; +inline constexpr int kMaxCostTerms = 30; using ResidualFunction = void(const double* parameters, const mjModel* model, const mjData* data, double* residual);