前言
昨天已經將OpenRAVE配置好了,接下來就是配置IKFast插件了。html
ikfast,機器人運動學的編譯器,在Rosen Diankov OpenRAVE運動規劃軟件提供,是一個強大的逆運動學求解器。不像大多數的逆運動學求解,ikfast能夠求解任意複雜運動鏈的運動學方程,併產生特定語言的文件(如C++)後供使用。最終的結果是很是穩定的解決方案,在最新的處理器能以5微秒的速度完成運算。From:https://www.ncnynl.com/archives/201610/1046.htmlpython
參考文獻:有詳細的如何生成(UR5)https://zhuanlan.zhihu.com/p/97364652c++
如何製做ikfast的插件(兩篇差很少):https://blog.csdn.net/Kalenee/article/details/80740258spa
1、配置流程
1.將機器人模型由.xacro文件轉爲.urdf文件
這裏的.xacro爲你須要轉化的機器人模型的描述文件,ur3.urdf是你想要新生成的.urdf文件的名稱。我這裏的ur3_joint_limited_robot.urdf.xacro後面加了robotiq85夾爪,所以後面的模型可視化是帶有夾爪的。插件
rosrun xacro xacro --inorder -o ur3.urdf ur3_joint_limited_robot.urdf.xacro
2.將機器人模型.urdf轉爲.dae文件
rosrun collada_urdf urdf_to_collada ur3.urdf ur3.dae
若是出現 [rospack] Error: package ‘collada_urdf’ not found,運行如下程序,便可解決c++11
sudo apt-get install ros-melodic-collada-urdf
3.設置精度
設置的精度會影響IKFAST的生成,設置太小會致使沒法生成或求解精度太低,過大也會致使沒法生成或者求解變慢,能夠根據需求調整精度。這裏設置精度爲小數點後5位,並備份生成的ur3.dae文件,方便之後調整使用。code
# 先備份 cp ur3.dae ur3.backup.dae # 設置精度 export IKFAST_PRECISION="5" rosrun moveit_kinematics round_collada_numbers.py ur3.dae ur3.dae "$IKFAST_PRECISION"
4.查看關節數據
openrave-robot.py ur3.dae --info links
5.查看關節模型
openrave ur3.dae
6.生成IKFast的cpp文件
這裏的ur3.dae是以前第二步轉化你獲得的名字,baselink和eelink的值根據你以前查看的關節數據以及本身在setup assistant裏面配置Planning Group裏面的設置。因爲我採用的不管是UR3仍是UR5都是6DOF,因此直接默認transform6d就行,最後的savefile是你想保存的路徑和名稱。最後兩篇參考文獻講的很清楚如何配置這些參數,不懂的能夠去那裏詳細看看。生存過程比較久,大概是20分鐘的樣子,能夠恰好開一局王者(23333)。orm
python `openrave-config --python-dir`/openravepy/_openravepy_/ikfast.py --robot=ur3.dae --iktype=transform6d --baselink=0 --eelink=9 --savefile=$(pwd)/ikfast61.cpp
7. 使用 ikfast61.cpp 求逆解
此處須要將ikfast.h和ikfast61.cpp放在同一個文件夾下。htm
g++ ikfast61.cpp -o ikfast -llapack -std=c++11
因爲目前網上只有UR5的配置做參考,爲了驗證成功配置,所以還用UR5來驗證,成功獲得了8組逆解。(UR機器人8組逆解,參考來源:https://www.zhihu.com/question/47605775/answer/113477680)
所以表示安裝完成,後面能夠進一步生成插件導入rviz中。生成插件的部分自行參考前言給出的後兩篇參考文獻,基本上不存在什麼坑,按照步驟catkin_make就行,以後能夠查看本身的kinematics.yaml,發現已經變成了ikfast。
而後能夠roslaunch本身相應的config包裏面demo.launch來對比改變先後的區別。
目前我在rviz裏面沒有體會到特比大的區別,時間上由於rviz不止是運動學求解的時間,還有其餘時間,所以沒有體會到4微秒那樣的速度。
總結
也算是把ikfast配置好了,接下來要作的就是給定TCP(tool center point)的6D位姿,反解出各個關節角的值。這幾天準備看一些機器人的基礎理論知識,沖沖衝。