MoveIt! 学习笔记13

您所在的位置:网站首页 kdlimd MoveIt! 学习笔记13

MoveIt! 学习笔记13

2023-10-12 08:44| 来源: 网络整理| 查看: 265

此博文主要是用来记录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社区中使用度排名前三的功能包,目前已经支持众多机器人硬件平台。

 

1

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

 

2

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

一、KDL

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

 

3

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

 

4

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

 

5

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

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

 

二、TRAC-IK

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

 

6

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

 

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

  arm:kinematics_solver: trac_ik_kinematics_plugin/TRAC_IKKinematicsPluginkinematics_solver_attempts: 3kinematics_solver_search_resolution: 0.005

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

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

 

三、IKFAST

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

 

7

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

安装程序:

安装依赖库:

安装OpenSceneGraph-3.4:

sudo apt-get install libcairo2-dev libjasper-dev libpoppler-glib-dev libsdl2-dev libtiff5-dev libxrandr-devgit clone https://github.com/openscenegraph/OpenSceneGraph.git --branch OpenSceneGraph-3.4cd OpenSceneGraphmkdir build; cd buildcmake .. -DDESIRED_QT_VERSION=4make -j$(nproc)

安装sympy

删除mpmath

安装IKFast功能包

安装OpenRave

创建collada文件

export MYROBOT_NAME="marm"rosrun xacro xacro --inorder -o "$MYROBOT_NAME".urdf "$MYROBOT_NAME".xacro

创建dae文件

export IKFAST_PRECISION="5"cp "$MYROBOT_NAME".dae "$MYROBOT_NAME".backup.dae # create a backup of your full precision dae.

查看生成的模型

8

9

生成六轴机器人配置

export PLANNING_GROUP="arm"export BASE_LINK="1"export EEF_LINK="11" export IKFAST_OUTPUT_PATH=`pwd`/ikfast61_"$PLANNING_GROUP".cpp 

创建插件

export MOVEIT_IK_PLUGIN_PKG="$MYROBOT_NAME"_ikfast_"$PLANNING_GROUP"_plugincd ~/catkin_ws/srccatkin_create_pkg "$MOVEIT_IK_PLUGIN_PKG"

重新编译工作空间

修改使用的插件

rosed "$MYROBOT_NAME"_moveit_config/config/kinematics.yaml :kinematics_solver: __kinematics/IKFastKinematicsPlugin-INSTEAD OF-

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

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3