一、IKFAST 简介
IKFAST是一种基于解析算法的运动学插件,可以保证每次求解的一致性。
1、准备工作
- 工具:Ubuntu 16.04,ROS kinetic
- 前期安装参考: https://blog.csdn.net/Kalenee/article/details/80740258. 一步步来就行
- abb配置文件下载:ROS中下载abb机械臂文件.
(1)先创建ikfast的工作空间
mkdir -p ~/ikfast_ws/src
cd ~/ikfast_ws/src
catkin_init_workspace
cd ~/ikfast_ws
catkin_make
source devel/setup.bash
(2)然后,将 irb6700_200_260.xacro 和 irb6700_200_260_macro.xacro 文件拷贝到 /ikfast_ws/src 中
2、开始配置abb文件
(1)转换生成URDF文件
cd ~/ikfast_ws/src
rosrun xacro xacro --inorder -o irb6700_200_260.urdf irb6700_200_260.xacro
- 得到 irb6700_200_260.urdf 文件,打开,看到 robot name,需要确保URDF的名称和 robot
name 一样,因此将 irb6700_200_260.urdf 改为 abb_ irb6700_200_260.urdf
(2)将 urdf 转换成 dae 文件
- 接上一步骤,依然在/ikfast_ws/src 中执行,以下程序都是
rosrun collada_urdf urdf_to_collada abb_irb6700_200_260.urdf abb_irb6700_200_260.dae
- 如果出现 [rospack] Error: package ‘collada_urdf’ not found,运行以下程序,即可解决
sudo apt-get install ros-kinetic-collada-urdf
(3)OpenRave 中打开
openrave abb_irb6700_200_260.dae
(4)查询连杆信息
openrave-robot.py abb_irb6700_200_260.dae --info links
3、为 abb_irb6700_200_260 生成IK求解器
- 参数什么的都放在里面了,大家自己参照 ROS进阶——MoveIt!运动学插件IKFAST配置.对比理解
- 依旧接着上面在/ikfast_ws/src 中执行
python `openrave-config --python-dir`/openravepy/_openravepy_/ikfast.py --robot=abb_irb6700_200_260.dae --iktype=transform6d --baselink=1 --eelink=11 --savefile=ikfast61.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"
(1)创建一个空的软件包,名称为 abb_irb6700_200_260_moveit_plugins
catkin_create_pkg abb_irb6700_200_260_moveit_plugins
cd ~/ikfast_ws
catkin_make
(2)将 abb_irb6700_200_260_moveit_config 文件复制到 /ikfast_ws/src 中,再次 catkin_make
- …_moveit_config 的名称,得和URDF的保持一致,需要通过 MoveIt! Setup Assistant 重新配置
- 重新配置时,添加 Planning groups 时,设置 Group Name 为 manipulator
(3)复制 ikfast.h 文件到 abb_irb6700_200_260_moveit_plugins / include 文件夹下
- ikfast.h 文件可在 abb_irb2400_moveit_plugins / irb2400_kinematics / include 中找到,复制过去即可
(4)将先前在软件包创建的 ikfast61.cpp 文件,重命名为 abb_irb6700_200_260_manipulator_ikfast_solver
(5)执行了后,在/ikfast_ws/src 路径下打开两个终端,一个运行 roscore ;另一个运行:
rosrun moveit_kinematics create_ikfast_moveit_plugin.py abb_irb6700_200_260 manipulator abb_irb6700_200_260_moveit_plugins abb_irb6700_200_260_manipulator_ikfast_solver.cpp
- 对比理解
rosrun moveit_kinematics create_ikfast_moveit_plugin.py "$MYROBOT_NAME" "$PLANNING_GROUP" "$MOVEIT_IK_PLUGIN_PKG" "$IKFAST_OUTPUT_PATH"
(5)要是没有error,说明创建成功。此刻可看到运动学求解器已被替换成 ikfast
(6)最后将以下两个文件包放进原工作空间,再catkin_make就可以了
(7)启动演示
roslaunch abb_irb6700_200_260_moveit_config demo.launch
4、总结
- 此次安装方法 abb 的机械臂文件都可以,比如ABB 6640 等
- 本次安装都在 /ikfast_ws/src 中进行