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

MoveIt教程[20]:TRAC-IK Kinematics Solver相关推荐

  1. MoveIt教程[19]:IKFast Kinematics Solver

    在本节中,将介绍为MoveIt配置IKFast插件. 一.What is IKFast 来自Wikipedia: IKFast,机器人运动学编译器,是Rosen Diankov的OpenRAVE运动规 ...

  2. MoveIt教程[21]:Kinematics Configuration

    在本节中,将研究为机器人配置运动学的一些参数. 一.The kinematics.yaml file MoveIt Setup Assistant生成的kinematics.yam文件是MoveIt的 ...

  3. [ERROR]: Kinematics solver xxx does not support joint group endeffector This plugin only support ...

    [ERROR] [1651904269.179241162]: Kinematics solver N25trac_ik_kinematics_plugin23TRAC_IKKinematicsPlu ...

  4. STM32 电机教程 20 - 基于ST MC Workbench 无感FOC

    前言 磁场定向控制又称矢量控制(FOC), 本质上为控制定子电流的幅度和相位,使之产生的磁场和转子的磁场正交,以产生最大的扭矩. PMSM的磁场定向控制框图如下图所示: 第19讲成功实现了基于NUCL ...

  5. STM32 进阶教程 20 - 串口+DMA实现OneWire总线

    前言 One-wire总线使用一根并联总线完成对于多个设备的访问,通过上拉的OD门实现多设备的读写操作,通过ID区别设备,通过CRC5完成数据校验.常见对于one-wire总线的操作代码主要使用包含基 ...

  6. STM32 基础系列教程 20 - RTC

    前言 学习stm32 RTC(实时时钟)的使用,学会用RTC实现钟表功能. 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm3 ...

  7. OD使用教程20 - 调试篇20

    OD使用教程20 - 调试篇20 让编程改变世界 Change the world by program   名词注释:Keygen为Key Generator的缩写,就是我们一般所说的注册机.是软件 ...

  8. Magento教程 20:仅限会员留言的产品评论设定!

    欢迎使用Magento购物车系统 ,之前和大家说明过为了防止垃圾留言, Magento的产品评论需要管理者审核才可发布. 当有人留言时不会立即显现于前台,而是出现在后台供管理员审核后才会送出. 今天则 ...

  9. 迷你MVVM框架 avalonjs 学习教程20、路由系统

    迷你MVVM框架 avalonjs 学习教程20.路由系统 时间 2014-10-28 14:44:00  Ruby's Louvre 原文  http://www.cnblogs.com/rubyl ...

最新文章

  1. Spring Cloud和Dubbo的区别
  2. AI产业智能化白皮书 | 清华x百度:全面解读AI产业化的现在和未来(附下载)...
  3. 【Python学习系列十二】Python库pandas之CSV导入
  4. 【Linux】一步一步学Linux——pidof命令(122)
  5. Internet Explorer7.0订阅“源”
  6. 深入学习SAP UI5框架代码系列之二:UI5 控件的渲染器
  7. RTP在。net中的使用(资料)
  8. 教你如何监控 Java 线程池运行状态
  9. Sci-Hub又又又被起诉了!这个论文免费下载网站也太难了...
  10. linux键盘映射默认,Linux 中的键盘映射
  11. 花书《深度学习》代码实现:01 线性代数:基本概念+代码实现基本运算
  12. 过去式加ed的发音_动词过去式加ed后发音
  13. AI读书笔记:《剑桥五重奏—机器能思考吗?》
  14. AI崛起,阿里的科技孵化力
  15. docker启动容器指定主机名,网络和ip地址
  16. 肖星老师《一本书读懂财报》经典语句摘录(下)实战篇
  17. ICV:预计到2026年,全球乘用车单车将平均配置3.8颗摄像头
  18. 【Linux】linux进程--进程控制:进程创建、进程终止、进程等待、进程程序替换
  19. 第一次计算机比赛心得
  20. c语言洗牌发牌结构体,C语言实现洗牌发牌小程序

热门文章

  1. WPS 如何设置表格内文字段落
  2. R语言中quantmod金融分析包的实践
  3. C++ 并发指南 std::mutex
  4. 用java代码取网名_【源码教程】iapp获取QQ昵称
  5. 浅谈MQTT底层原理(网络调试助手直连阿里云)
  6. 读取Excel内容生成PNG图片
  7. 怎么查看自己的电脑IP地址?
  8. JS事件笔记:音乐播放器
  9. 多种方式解决Java控制台报错 java.util.LinkedHashMap cannot be cast to.....
  10. java实现从http/https链接地址下载文件