c++ - 如何在 Drake Toolbox 中设置 IK 轨迹优化?
问题描述
我已经阅读了多个资源,说 Drake 工具箱的 InverseKinematics 类能够以两种方式解决 IK:单次 IK 和使用三次多项式轨迹的 IK 轨迹优化。(Link1 第 4.1 节,Link2 第 II.B 和 II.C 节)
我已经实现了如下所示的单次 IK 并且正在工作,现在我该如何使用 dircol 或某物?有什么文件可以参考吗?
// Building a floating-base plant for Ik
drake::multibody::MultibodyPlant<mjtNum> plant{0.0005};
drake::multibody::Parser parser(&plant);
std::string full_name = "model.urdf";
parser.AddModelFromFile(full_name);
plant.Finalize();
drake::multibody::InverseKinematics ik(plant,true);
// Constraints
Eigen::Matrix<mjtNum,33,1> q_ik_guess = Eigen::Matrix<mjtNum,33,1>::Zero();
ik.get_mutable_prog()->SetInitialGuess(ik.q(), q_ik_guess);
const auto result = Solve(ik.prog());
const auto q_sol = result.GetSolution(ik.q());
解决方案
IK 三次多项式是 Drake 的过时版本。您可以查看https://github.com/RobotLocomotion/drake/releases/tag/last_sha_with_original_matlab。在文件夹 drake/matlab/systems/plants@RigidBodyManipulator/inverseKinTraj.m
推荐阅读
- javascript - Webpack HMR 不重新加载 HTML 文件
- php - 使用 Guzzle 的变量不通过(流明)
- python - 如何打印一个列表中另一个列表中的元素?
- php - 使用 run-script 或不使用运行 composer 脚本之间的区别?
- javascript - e.querySelector 在单击父元素时未获取子元素
- javascript - Javascript :: 使用变量作为对象 ID 和属性的字符串;
- ios - Objective-C:JWT - 使用私钥的字符串数据使用 RS256 进行编码
- wpf - WPF 绑定计算值
- ruby-on-rails - 如何在 Rails 中跳过记录未捕获的异常?
- c# - asp.net mvc视图中#是什么意思