ubuntu18.04環境下為UR3設定MoveIt!運動學外掛IKFAST(二)

2020-09-27 09:00:16

前言

昨天已經將OpenRAVE設定好了,接下來就是設定IKFast外掛了。

ikfast,機器人運動學的編譯器,在Rosen Diankov OpenRAVE運動規劃軟體提供,是一個強大的逆運動學求解器。不像大多數的逆運動學求解,ikfast可以求解任意複雜運動鏈的運動學方程,併產生特定語言的檔案(如C++)後供使用。最終的結果是非常穩定的解決方案,在最新的處理器能以5微秒的速度完成運算。From:https://www.ncnynl.com/archives/201610/1046.html

參考文獻:有詳細的如何生成(UR5)https://zhuanlan.zhihu.com/p/97364652

如何製作ikfast的外掛(兩篇差不多):https://blog.csdn.net/Kalenee/article/details/80740258

https://blog.csdn.net/harrycomeon/article/details/95517129?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.channel_param


一、設定流程

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,執行以下程式,即可解決

sudo apt-get install ros-melodic-collada-urdf

3.設定精度

設定的精度會影響IKFAST的生成,設定過小會導致無法生成或求解精度過低,過大也會導致無法生成或者求解變慢,可以根據需求調整精度。這裡設定精度為小數點後5位,並備份生成的ur3.dae檔案,方便以後調整使用。

# 先備份
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)。

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放在同一個資料夾下。

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位姿,反解出各個關節角的值。這幾天準備看一些機器人的基礎理論知識,沖沖衝。