【问题标题】:How to access the Optimization Solution formulated using Drake Toolbox如何访问使用 Drake Toolbox 制定的优化解决方案
【发布时间】:2021-11-20 01:37:02
【问题描述】:

这里是 C++ 新手! 终端输出中的详细信息表示问题已成功解决,但我无法访问解决方案。最后一行有什么问题?

drake::solvers::MathematicalProgram prog;
auto x = prog.NewContinuousVariables(n_x);

// Cost and Constraints

drake::solvers::MathematicalProgramResult result;
drake::solvers::OsqpSolver osqp_solver;
if (osqp_solver.available()) {
    // Setting solver options.
    for (int print_to_console : {0, 0}) {           //{0,1} for verbose, {0,0} for no terminal output
        drake::solvers::SolverOptions options;
        options.SetOption(drake::solvers::OsqpSolver::id(), "verbose", print_to_console);
        osqp_solver.Solve(prog, {}, options);
    }
}
const auto u = result.GetSolution(x);

另一个问题是,如果我不想选择 OSQP 并让 Drake 决定将哪个求解器用于 QP,我该怎么做?

【问题讨论】:

    标签: c++ robotics drake


    【解决方案1】:

    你需要换行

    osqp_solver.Solve(prog, {}, options);
    

    result = osqp_solver.Solve(prog, {}, options);
    

    目前result 未设置。

    另一个问题是,如果我不想选择 OSQP 并让 Drake 决定将哪个求解器用于 QP,我该怎么做?

    你可以的

    const drake::solvers::MathematicalProgramResult result = drake::solvers::Solve(prog, {}, options);
    

    Drake 会自动选择求解器。更多信息请参考https://github.com/RobotLocomotion/drake/blob/master/tutorials/mathematical_program.ipynb中的教程。它谈到了自动与手动选择求解器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      相关资源
      最近更新 更多