此博文主要是用来记录ROS-Kinetic 中,用于机器人轨迹规划的MoveIt功能包的学习记录。

英文原版教程见此链接:http://docs.ros.org/en/kinetic/api/moveit_tutorials/html/doc/time_parameterization/time_parameterization_tutorial.html

中文教程转载至古月居:https://www.guyuehome.com/1921

MoveIt!是ROS中一个重要的集成化开发平台,由一系列移动操作的功能包组成,提供运动规划、操作控制、3D感知、运动学等功能模块,是ROS社区中使用度排名前三的功能包,目前已经支持众多机器人硬件平台。

MoveIt!中的众多功能都使用插件机制集成,其中有一个重要的功能模块——运动学插件。

今天我们就来聊下MoveIt!中的运动学求解器。

一、KDL

Kinematics and Dynamics Library (KDL)是MoveIt!中的默认运动学插件,在使用MoveIt! Setup Assistant进行模型配置时,可以进行配置。

配置完成后,就可以运行demo.launch控制虚拟机械臂进行运动规划了。但是KDL有自己的优缺点:

比如一次逆解的求解时间:0.062192秒。。。

很多时候我们在做运动规划的时候,MoveIt!经常会提示规划失败、求解失败等错误,很多都是因为KDL这款运动学插件导致的,那么问题就来了——能不能更换一个运动学插件?

当然可以,以下介绍两个用的最多的运动学插件:TRAC-IK和IKFAST。

二、TRAC-IK

TRAC-IK和KDL类似,也是一种基于数值解的运动学插件,但是在算法层面上进行了很多改进,求解效率高了很多。比如在下边这张图中,左侧的红点是KDL无法求解的姿态点,但是在右侧使用TRAC-IK是可以求解的。

那么如何将KDL更换成TRAC-IK呢,方法很简单,ROS的软件源中已经集成了TRAC-IK的安装包,可以直接使用以下命令安装:

然后修改机械臂MoveIt!配置功能包下的kinematics.yaml文件就可以使用啦:

  1. arm:
  2. kinematics_solver: trac_ik_kinematics_plugin/TRAC_IKKinematicsPlugin
  3. kinematics_solver_attempts: 3
  4. kinematics_solver_search_resolution: 0.005

接下来再次运行demo.launch,默认加载的就是TRAC-IK运动学插件了,试试规划求解的效率是不是高了很多!

但是TRAC-IK也有问题,它是一种数值算法,每次求解得到的关节位置不一定相同。

三、IKFAST

IKFAST是一种基于解析算法的运动学插件,可以保证每次求解的一致性。

相比KDL和TRAC-IK,IKFAST的安装过程就比较复杂了,不过就笔者的使用经验来讲,IKFAST的效果还是很推荐的,所以不妨一试,以下就是IKFAST的安装配置过程。

  • 安装程序:

  • 安装依赖库:

  • 安装OpenSceneGraph-3.4:

  1. sudo apt-get install libcairo2-dev libjasper-dev libpoppler-glib-dev libsdl2-dev libtiff5-dev libxrandr-dev
  2. git clone https://github.com/openscenegraph/OpenSceneGraph.git --branch OpenSceneGraph-3.4
  3. cd OpenSceneGraph
  4. mkdir build; cd build
  5. cmake .. -DDESIRED_QT_VERSION=4
  6. make -j$(nproc)
  • 安装sympy

  • 删除mpmath

  • 安装IKFast功能包

  • 安装OpenRave

  • 创建collada文件

  1. export MYROBOT_NAME="marm"
  2. rosrun xacro xacro --inorder -o "$MYROBOT_NAME".urdf "$MYROBOT_NAME".xacro
  • 创建dae文件

  1. export IKFAST_PRECISION="5"
  2. cp "$MYROBOT_NAME".dae "$MYROBOT_NAME".backup.dae # create a backup of your full precision dae.
  • 查看生成的模型

  • 生成六轴机器人配置

  1. export PLANNING_GROUP="arm"
  2. export BASE_LINK="1"
  3. export EEF_LINK="11"
  4. export IKFAST_OUTPUT_PATH=`pwd`/ikfast61_"$PLANNING_GROUP".cpp
  • 创建插件

  1. export MOVEIT_IK_PLUGIN_PKG="$MYROBOT_NAME"_ikfast_"$PLANNING_GROUP"_plugin
  2. cd ~/catkin_ws/src
  3. catkin_create_pkg "$MOVEIT_IK_PLUGIN_PKG"
  • 重新编译工作空间

  • 修改使用的插件

  1. rosed "$MYROBOT_NAME"_moveit_config/config/kinematics.yaml
  2. <planning_group>:
  3. kinematics_solver: <myrobot_name>_<planning_group>_kinematics/IKFastKinematicsPlugin
  4. -INSTEAD OF-

注意以上步骤中的机器人名称、运动规划组名称、坐标系序号等需要和自己所使用的机器人匹配,也可以参考官方教程配置:

http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/ikfast/ikfast_tutorial.html

现在运行demo.launch文件时,使用的运动学插件就是IKFAST了,快试一试效果是不是还不错!

MoveIt! 学习笔记13 - KDL/IKFAST/TRAC-IK运动学求解器区别相关推荐

  1. mybatis学习笔记(13)-延迟加载

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...

  2. opencv进阶学习笔记13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python版

    基础版学习笔记: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版形态学: opencv学 ...

  3. Linux学习笔记13

    Linux学习笔记13 Linux学习笔记13 配置Nagios 基本介绍 Nagios安装 - 服务端 Nagios安装 - 客户端 监控中心添加被监控主机 配置文件的简单说明 继续添加需要服务端通 ...

  4. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    Hadoop学习笔记-13.分布式集群中节点的动态添加与下架 开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如 ...

  5. 台大李宏毅Machine Learning 2017Fall学习笔记 (13)Semi-supervised Learning

    台大李宏毅Machine Learning 2017Fall学习笔记 (13)Semi-supervised Learning 本博客参考整理自: http://blog.csdn.net/xzy_t ...

  6. java 量化指标_量化投资学习笔记13——各种指标的绘图、计算及交易策略

    <量化投资:以python为工具>第五部分笔记 先来画k线图,要注意finance模块已经从matplotlib库中去除,现在要用mpl_finance库,单独安装. 其中有candles ...

  7. 【计算机网络学习笔记13】交换技术(下)

    [计算机网络学习笔记13]交换技术(下) 一.生成树的诞生和发展 1. 环路问题 两个网桥之间的连接网线如果只有一根,而这根网线或者接口有问题,网络就会出现单点故障.所以为了提高可靠性,网桥在互连时一 ...

  8. R语言小白学习笔记13—基本统计

    R语言小白学习笔记13-基本统计 笔记链接 学习笔记13-基本统计 13.1 概括性统计量 13.2 相关系数和协方差 13.3 t-检验 13.3.1 单样本t检验 13.3.2 两样本t检验 13 ...

  9. MoveIt! 学习笔记14 - Kinematics Configuration/Fake Controller Manager

    此博文主要是用来记录ROS-Kinetic 中,用于机器人轨迹规划的MoveIt功能包的学习记录. 英文原版教程见此链接:http://docs.ros.org/en/kinetic/api/move ...

  10. Excel VBA 学习笔记13:单元格的格式

    Excel VBA 学习笔记13:单元格的格式 NumberFormat 属性 (Excel) vba excel 单元格格式设置 Excel VBA 单元格格式 python解决SNIMissing ...

最新文章

  1. C# GDI+ 简单绘图 (三) 仿浏览器截屏效果
  2. 01 Java面试之控制类
  3. Java多线程- 线程池的基本使用和执行流程分析 - ThreadPoolExecutor
  4. 英伟达再发边缘AI计算设备:仅信用卡大小,性能比TX2强15倍
  5. 解决jmeter响应中文乱码及解码
  6. 利用python爬虫(part6)--用Xpath匹配带来的数据合并问题
  7. 【WebRTC---进阶篇】(一)服务器基础编程
  8. gcc预处理、编译、汇编、链接详解
  9. 微软发现已遭在野利用的 SolarWinds 新0day
  10. android 播放器 直播,通过android中的mediaplayer直播
  11. Zookeeper实现简单的分布式RPC框架
  12. java中蓝色是多少_JAVA几个常见错误简析
  13. jquery表单的提交
  14. matlab画矩阵中的两列,matlab 图例 两列
  15. VMware vSphere Esxi官网下载页面链接
  16. mongodb 什么比mysql快_MongoDB为什么比mysql效率高
  17. 无线路由器当无线交换机后,如何进入路由器配置界面
  18. 【LG-P5072 [Ynoi2015]】盼君勿忘
  19. 内涵社区APP,一款集内涵段子,百思不得其姐,煎蛋于一身的搞笑社区
  20. 爬虫大作业-爬取B站弹幕

热门文章

  1. 软件随想录(local.joelonsoftware.com/wiki)-2001年04月21日 别让架构太空人吓到你 - Don't Let Architecture Astronauts Scar
  2. 数据结构 第2版 第二版 陈越_高中数学选学---人教A版选修2-1第二章第二节椭圆...
  3. 李飞飞学生新作:利用场景图生成图像
  4. 来看看一位阿里P9的年薪和资产
  5. SAP HANA数据获取(data provisioning ) - SLT
  6. 1000瓶水里面有一瓶毒水,通过用兔子去喝水的方式检验,只能让兔子喝一次水,那么最少用多少只兔子检验出来是哪一瓶?
  7. Predicting Depth, Surface Normals and Semantic Labels with a Common Multi-Scale Convolutional Archit
  8. raster包—crop函数
  9. win10开始菜单打不开_win10开始菜单没反应的解决方法教程
  10. flv是什么视频格式?怎么把flv转换成mp4?