在 Drake 工具箱的 IK 解算器选项中设置冗长时如何设置 SolverId?

How to set SolverId when setting verbosity in IK solver options in Drake toolbox?

 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 问题?

这里有两个选择:

  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 文件。