【问题标题】:How to set SolverId when setting verbosity in IK solver options in Drake toolbox?在 Drake 工具箱的 IK 解算器选项中设置详细程度时如何设置 SolverId?
【发布时间】:2021-10-15 16:22:38
【问题描述】:
 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());

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

【问题讨论】:

    标签: robotics drake


    【解决方案1】:

    你有两个选择:

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

    【讨论】:

    • drake::solvers::SolverOptions options; options.SetOption(drake::solvers::CommonSolverOption::kPrintToConsole, 1); const auto result = Solve(ik.prog(), {}, options); 在控制台中不显示任何内容。我错过了什么吗?我的IK Formulation
    • std::cout &lt;&lt; result.get_solver_id().name() &lt;&lt; "\n"; 在终端中给我:SNOPT/fortran。
    • 由于您使用的是 SNOPT,它不支持打印到控制台。您应该设置kPrintToFile 选项。
    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2018-02-10
    • 1970-01-01
    相关资源
    最近更新 更多