ROS技术点滴 —— MoveIt!中的运动学插件
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的安装包,可以直接使用以下命令安装:
sudo apt-get install ros-kinetic-trac-ik-kinematics-plugin
然后修改机械臂MoveIt!配置功能包下的kinematics.yaml文件就可以使用啦:
arm:kinematics_solver: tarc_ik_kinematics_plugin/trac_ikKinematicsPluginkinematics_solver_attempts: 3kinematics_solver_search_resolution: 0.005kinematics_solver_timeout: 0.05
接下来再次运行demo.launch,默认加载的就是TRAC-IK运动学插件了,试试规划求解的效率是不是高了很多!
但是TRAC-IK也有问题,它是一种数值算法,每次求解得到的关节位置不一定相同。
三、IKFAST
IKFAST是一种基于解析算法的运动学插件,可以保证每次求解的一致性。
相比KDL和TRAC-IK,IKFAST的安装过程就比较复杂了,不过就笔者的使用经验来讲,IKFAST的效果还是很推荐的,所以不妨一试,以下就是IKFAST的安装配置过程。
- 安装程序:
sudo apt-get install cmake g++ git ipython minizip python-dev python-h5py python-numpy python-scipy qt4-dev-tools
- 安装依赖库:
sudo apt-get install libassimp-dev libavcodec-dev libavformat-dev libavformat-dev libboost-all-dev libboost-date-time-dev libbullet-dev libfaac-dev libglew-dev libgsm1-dev liblapack-dev liblog4cxx-dev libmpfr-dev libode-dev libogg-dev libpcrecpp0v5 libpcre3-dev libqhull-dev libqt4-dev libsoqt-dev-common libsoqt4-dev libswscale-dev libswscale-dev libvorbis-dev libx264-dev libxml2-dev libxvidcore-dev
- 安装OpenSceneGraph-3.4:
sudo apt-get install libcairo2-dev libjasper-dev libpoppler-glib-dev libsdl2-dev libtiff5-dev libxrandr-dev
git clone https://github.com/openscenegraph/OpenSceneGraph.git --branch OpenSceneGraph-3.4
cd OpenSceneGraph
mkdir build; cd build
cmake .. -DDESIRED_QT_VERSION=4
make -j$(nproc)
sudo make install
- 安装sympy
pip install --upgrade --user sympy==0.7.1
- 删除mpmath
sudo apt remove python-mpmath
- 安装IKFast功能包
sudo apt-get install ros-kinetic-moveit-kinematics
- 安装OpenRave
sudo apt-get install ros-kinetic-openrave
- 创建collada文件
export MYROBOT_NAME="marm"
rosrun xacro xacro --inorder -o "$MYROBOT_NAME".urdf "$MYROBOT_NAME".xacro
rosrun collada_urdf urdf_to_collada "$MYROBOT_NAME".urdf "$MYROBOT_NAME".dae
- 创建dae文件
export IKFAST_PRECISION="5"
cp "$MYROBOT_NAME".dae "$MYROBOT_NAME".backup.dae # create a backup of your full precision dae.
rosrun moveit_kinematics round_collada_numbers.py "$MYROBOT_NAME".dae "$MYROBOT_NAME".dae "$IKFAST_PRECISION"
- 查看生成的模型
openrave-robot.py "$MYROBOT_NAME".dae --info links
openrave "$MYROBOT_NAME".dae
- 生成六轴机器人配置
$ export PLANNING_GROUP="arm"
$ export BASE_LINK="1"
$ export EEF_LINK="11"
$ export IKFAST_OUTPUT_PATH=`pwd`/ikfast61_"$PLANNING_GROUP".cpp
$ python `openrave-config --python-dir`/openravepy/_openravepy_/ikfast.py --robot="$MYROBOT_NAME".dae --iktype=transform6d --baselink="$BASE_LINK" --eelink="$EEF_LINK" --savefile="$IKFAST_OUTPUT_PATH"
- 创建插件
export MOVEIT_IK_PLUGIN_PKG="$MYROBOT_NAME"_ikfast_"$PLANNING_GROUP"_plugincd ~/catkin_ws/src
catkin_create_pkg "$MOVEIT_IK_PLUGIN_PKG"
rosrun moveit_kinematics create_ikfast_moveit_plugin.py "$MYROBOT_NAME" "$PLANNING_GROUP" "$MOVEIT_IK_PLUGIN_PKG" "$IKFAST_OUTPUT_PATH"
- 重新编译工作空间
catkin_make
- 修改使用的插件
rosed "$MYROBOT_NAME"_moveit_config/config/kinematics.yaml<planning_group>:
kinematics_solver: <myrobot_name>_<planning_group>_kinematics/IKFastKinematicsPlugin
-INSTEAD OF-
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
注意以上步骤中的机器人名称、运动规划组名称、坐标系序号等需要和自己所使用的机器人匹配,也可以参考官方教程配置:
http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/ikfast/ikfast_tutorial.html
现在运行demo.launch文件时,使用的运动学插件就是IKFAST了,快试一试效果是不是还不错!
ROS技术点滴 —— MoveIt!中的运动学插件相关推荐
- Calibre物理验证技术点滴 (中)
书接上文,在前一讲中(Calibre物理验证技术点滴 (上)),曾经提到calibredrv (DESIGNrev)这个工具,这个工具是calibre进行物理验证视图查验的重要GUI工具.简明来讲,C ...
- ros构建机器人运动学模型_古月私房课 | ROS机械臂开发中的主角MoveIt!
~欢迎关注~ 微信公众号:古月居 新浪微博:古月春旭 知乎专栏:古月居 原文链接:古月私房课 | ROS机械臂开发中的主角MoveIt! 大家好,这里是<ROS机械臂开发:从入门到实战>的 ...
- maya python插件_Maya中Python代码插件编译技术视频教程
本教程是关于Maya中Python代码插件编译技术视频教程,时长:16分,大小:45 MB,MP4高清视频格式,教程使用软件:Maya,附源文件,共1个章节,作者:Chayan Vinayak,语言: ...
- Moveit! 更换运动学插件 Trac-ik
Moveit!默认使用的运动学求解器(KDL):求解速度非常慢,失败率极高. 在这里我推荐使用TRAC-IK: 安装TRAC-IK: sudo apt-get install ros-noetic-t ...
- Ubuntu18.04+Ros Melodic安装Moveit
Ubuntu18.04+Ros Melodic安装Moveit框架 感谢Robot_Tiger_原文https://blog.csdn.net/CH_monsy/article/details/108 ...
- 基于深度学习的计算机视觉技术在无人驾驶中的应用
基于深度学习的计算机视觉技术在无人驾驶中的应用 背景 当前,人工智能是下一代信息技术的核心和焦点,而无人配送则是人工智能典型的落地场景,因为完成无人配送需要自动驾驶技术.机器人技术.视觉分析.自然语言 ...
- 游戏程序中的骨骼插件
如有转载,请详细标明原文作者,以示尊重! 作者:潘李亮 转自:http://www.cppblog.com/lai3d/archive/2009/07/11/89768.html 游戏程序中的骨骼插件 ...
- Qt开发技术:Qt的动态静态插件框架介绍和Demo
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/105481285 长期持续带来更多项目与技术分 ...
- Visual Studio中使用Macros插件给代码添加注释、时间和以及自动脚本
title: Visual Studio中使用Macros插件给代码添加注释.时间和以及自动脚本 date: 2020-09-11 sidebarDepth: 2 tags: 代码 Visual st ...
最新文章
- python系统问题
- 突出告警信息(DBA_OUTSTANDING_ALERTS)
- 讲义not have data_“熟记英语300句 中考英语无忧虑”讲练(089)讲义文本
- SAP CRM product customizing下载的第四个队列
- linux phpize
- 决定对SQL Server 2008 R2进行升级
- C++提高部分_C++类模板中成员函数的创建时机---C++语言工作笔记089
- c语言 freopen txt_C语言的文件操作 freopen
- 《0bug-C/C++商用工程之道》首版勘误表
- 升级到ASP.NET2.0之后的疑问
- WPF自适应可关闭的TabControl 类似浏览器的标签页
- 蒲公英联机平台的服务器虚拟IP,蒲公英客户端如何使用固定虚拟IP管理虚拟局域网的步骤是什么?...
- 数据分析之第三方支付业务
- 增大或者减小图片大小的方法
- arduino步进电机程序库_Arduino步进电机控制示例
- 30_Python基础_异常
- Android6.0动态获取权限java.io.FileNotFoundException: …Permission denied
- MATLAB神经网络43个案例分析
- 剑指offer练习日志02:基于矩阵乘法求斐波那契数列通项
- 假如当初知道skycc营销软件是不是比现在好
热门文章
- 我的第一次Pascal程序
- 类的 三大特性 封装,继承,多态 overload与override的区别
- Null hypothesis TypeⅠerror Type Ⅱ error
- 三白话经典算法系列 Shell排序实现
- C函数的实现(strcpy,atoi,atof,itoa,reverse)
- [原]2011年度生活三层总结
- MemDC,GDI绘制注意点
- 第八课 RNN条件生成与Attention机制
- 120. Triangle
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第21篇]CRT算法如何提高RSA的性能?