营销型网站制作哪个好薇,免费行情软件网站直播,淘宝网站seo服务,重庆设计集团有限公司MoveIt!是ROS中一个重要的集成化开发平台#xff0c;由一系列移动操作的功能包组成#xff0c;提供运动规划、操作控制、3D感知、运动学等功能模块#xff0c;是ROS社区中使用度排名前三的功能包#xff0c;目前已经支持众多机器人硬件平台。 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-IKIKFAST的安装过程就比较复杂了不过就笔者的使用经验来讲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_VERSION4
make -j$(nproc)
sudo make install
安装sympy
pip install --upgrade --user sympy0.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_NAMEmarm
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_PRECISION5
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_GROUParm
$ export BASE_LINK1
$ export EEF_LINK11
$ export IKFAST_OUTPUT_PATHpwd/ikfast61_$PLANNING_GROUP.cpp
$ python openrave-config --python-dir/openravepy/_openravepy_/ikfast.py --robot$MYROBOT_NAME.dae --iktypetransform6d --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.yamlplanning_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了快试一试效果是不是还不错