首页 > 解决方案 > 在 Drake 工具箱的 IK 解算器选项中设置详细程度时如何设置 SolverId?

问题描述

 drake::solvers::SolverOptions options;
    options.SetOption(drake::solvers::**?**, "verbose", {0, 1});   //{0,1} for verbose, {0,0} for no verbosity
    const auto result = Solve(ik.prog(), {}, options);
    const auto q_sol = result.GetSolution(ik.q());

我应该将 SolverId 设置为什么来解决逆运动学 nlp 问题?

标签: roboticsdrake

解决方案


您在这里有两个选择:

  1. 为您使用的特定求解器设置选项。您可以通过检查来知道调用了哪个求解器result
    std::cout << result.get_solver_id().name() << "\n";
    
    如果它打印“IPOPT”,那么你可以做options.SetOption(drake::solvers::IpoptSolver::id(), ...)
  2. 另一个(更好的)解决方案是设置通用求解器选项
    options.SetOption(CommonSolverOption::kPrintToConsole, 1);
    
    这会将输出信息打印到任何支持控制台打印的求解器的控制台。您还可以执行options.SetOption(CommonSolverOption::kPrintFileName, "output.txt")将输出打印到output.txt文件的操作。

推荐阅读