31 const std::vector<VectorXs> &lams,
32 const std::vector<VectorXs> &vs,
33 std::vector<VectorXs> &Lxs,
34 std::vector<VectorXs> &Lus) {
41 const std::size_t nsteps = problem.
numSteps();
42 bool has_lbdas = !lams.empty();
44 ALIGATOR_TRACY_ZONE_SCOPED_N(
"LagrangianDerivatives::compute");
51 const StageFunctionData &init_cond = *pd.
init_data;
53 Lxs[0].noalias() = init_cond.Jx_.transpose() * lams[0];
55 for (std::size_t i = 0; i < nsteps; i++) {
56 const StageModel &sm = *problem.
stages_[i];
58 const ConstraintStack &stack = sm.constraints_;
59 const DynamicsData &dd = *sd.dynamics_data;
60 Lxs[i] += sd.cost_data->Lx_;
61 Lus[i] = sd.cost_data->Lu_;
63 Lxs[i].noalias() += dd.Jx().transpose() * lams[i + 1];
64 Lus[i].noalias() += dd.Ju().transpose() * lams[i + 1];
67 BlkView v_(vs[i], stack.dims());
68 for (std::size_t j = 0; j < stack.size(); j++) {
69 const StageFunctionData &cd = *sd.constraint_data[j];
70 Lxs[i].noalias() += cd.Jx_.transpose() * v_[j];
71 Lus[i].noalias() += cd.Ju_.transpose() * v_[j];
75 Lxs[i + 1] = -lams[i + 1];
84 Lxs[nsteps] += cdterm.Lx_;
86 BlkView vN(vs[nsteps], stack.dims());
87 for (std::size_t j = 0; j < stack.size(); j++) {
89 Lxs[nsteps].noalias() += cd.Jx_.transpose() * vN[j];
static void compute(const TrajOptProblem &problem, const TrajOptData &pd, const std::vector< VectorXs > &lams, const std::vector< VectorXs > &vs, std::vector< VectorXs > &Lxs, std::vector< VectorXs > &Lus)