MoveIt教程[20]:TRAC-IK Kinematics Solver

TRAC-IK是由TRACLabs开发的一个逆向运动学求解器,它通过线程将两个IK实现组合在一起,以获得比常见的开源IK求解器更可靠的解决方案。从它们的文档:

[TRAC-IK]为KDL中流行的逆雅可比矩阵方法提供了一个可选的逆运动学求解器。具体来说,KDL的收敛算法是基于牛顿法的,牛顿法在存在关节限制的情况下不能很好地工作,而关节限制在很多机器人平台上都很常见。同时运行两个IK实现。一个是对KDL基于牛顿的收敛算法的简单扩展,该算法通过随机跳跃来检测和缓解由于联合限制而产生的局部极小值。第二种是SQP[序列二次规划]非线性优化方法,它使用了拟牛顿法来更好地处理关节极限。默认情况下,当这两种算法中的任何一种收敛到一个答案时,IK搜索立即返回。为了获得最佳的IK解决方案,还提供了距离和操纵性的次要约束。

trac_ik_kinematics_plugin包提供了一个KinematicsBase MoveIt接口可以替换默认KDL求解器。目前不支持模拟关节。
一.Install
在v1.4.5中,trac_ik是ROS Indigo/Jade二进制的一部分:

sudo apt-get install ros-kinetic-trac-ik-kinematics-plugin

二.Usage
1.安装trac_ik_kinematics_plugin和trac_ik_lib包或将其添加到catkin工作空间中。
2.找到为机器人创建的MoveIt kinematics.yaml文件。
3.将kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin[或类似的函数]替换为kinematics_solver: trac_ik_kinematics_plugin/TRAC_IKKinematicsPlugin。
4.按需设置参数:
[1]支持kinematics_solver_timeout[超时时间以秒为单位,例如0.005]和position_only_ik ARE。
[2]solve_type可以是Speed、Distance、Manipulation1、Manipulation2[详见trac_ik_lib文档]。默认是Speed。
[3]kinematics_solver_attempts参数不是必需的:与KDL不同的是,TRAC-IK求解器在被卡住时已经重新启动了。
[4]此处不适用kinematics_solver_search_resolution。
[5]注意:用于确定有效解决方案的笛卡尔误差距离是1e-5,因为这是硬编码到MoveIt的KDL插件中的。

参考文献:
[1]TRAC-IK Kinematics Solver:http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/trac_ik/trac_ik_tutorial.html

你可能感兴趣的:(计算机视觉,kinetic,trac-ik,kinematic,ros,moveit)