moveit!是一個很強大的包,如果沒有它,機械臂的正逆運動學問題,碰撞檢測,動作規劃等都會是非常複雜的問題,而moveit!!的存在,就如它的名字一般,使之變成了簡單的move it.
目錄
1.Moveit!安裝
2.配置Moveit!包
2.1開始(start)
2.2生成碰撞矩陣(self-collision)
2.3 虛拟關節(virtual joints)
2.4 規劃組(planning groups)
2.5 定義機器人位姿(robot poses)
2.6 定義末端執行器(end-effectors)
2.7 定義被動關節(passive joints)
2.8 作者資訊(suthor information)
2.9 生成配置檔案(configuration files)
參考文獻
1.Moveit!安裝
$sudo apt-get install ros-indigo-moveit-full
為了便于體驗Moveit!配置的過程,我選擇跟着古月居教程的腳步使用《master ros for robotics programming》裡的案例進行配置,之前也嘗試過配置pr2的機械臂,但是pr2太過複雜,多多少少會遇到一些小問題,配置之後運作demo看不到mark圖示。
$git clone https://github.com/qboticslabs/mastering_ros.git
2.配置Moveit!包
Moveit!的配置助手可以将編寫好的urdf檔案生成srdf檔案,并進而生成Moveit!的功能包。
運作Moveit配置助手:
$rosrun moveit_setup_assistant moveit_setup_assistant
ps.根據小夥伴回報,有時候啟動配置助手會報錯,關閉重新開機幾次一般就好了。
Moveit!配置助手界面如下圖所示
接下來我們可以根據左邊的清單逐漸配置
2.1開始(start)
這個界面有兩個選項,左邊的是建立一個配置包,右邊的則是選擇已有的配置包進行修改。
我們選擇左邊的建立選項,并且加載之前下載下傳的模型檔案,如下圖(路徑根據實際下載下傳路徑選擇)
選擇seven_dof_arm.urdf之後點選加載(load files),這時可以在右側框看到模型,通過滑鼠可以調整模型的位置。
2.2生成碰撞矩陣(self-collision)
碰撞矩陣會列出所有不可能發生互相碰撞的連杆。上方的拉動條可以設定一定數量的随機采樣點,根據這些點生成配置參數,過多的點當然能獲得更好的效果,但同時運算速度也會變慢,甚至配置較差的電腦會卡死;過少的點則會導緻參數不完善,預設的采樣點數量是10000個,官方稱這是能獲得較好效果的最低要求。在此,我們不做修改,使用預設的10000個采樣點。
點選滾動條下方的“regenerate default collision matrix“,稍等片刻就可以獲得結果。
2.3 虛拟關節(virtual joints)
虛拟關節可以将機器人固定在虛拟世界内,例如一個機械臂有一個滑動底座,可以将機械臂的底座與odom通過一個planar關節連接配接,此時機械臂就可以在二維平面滑動。此處我們預設機械臂是固定不動的,是以不需要設定虛拟關節。
2.4 規劃組(planning groups)
規劃組可以将機器人劃分為不同的組,例如arm機械臂部分和gripper夾持器部分。運動規劃會針對這一個組完成運動規劃,在配置過程中還可以選擇運動學解析器。
在此我們建立兩個組,機械臂組和夾持器組。
2.5 定義機器人位姿(robot poses)
這裡可以設定一些固定的位置,比如初始位置或者某些特定位置。這樣做的好處是使用moveit!的API程式設計時,可以直接調用這些位置。
這裡我們随意設定一個位姿。
2.6 定義末端執行器(end-effectors)
在某些場景下,會安裝夾持器等末端執行器,這一步可以對此進行定義。
2.7 定義被動關節(passive joints)
機器人上的某些被動關節可能在規劃、控制過程中使用不到,例如從動輪等,可以在此事先聲明,它們将不被列入運動規劃的範圍。此處不存在被動關節,無需額外配置。
2.8 作者資訊(suthor information)
并不是很重要的步驟,但是不填寫的話,最後生成Moveit檔案會報錯,是以建議寫一下。
2.9 生成配置檔案(configuration files)
最後就将生成moveit!配置檔案,取名通常會使用<your_robot>_moveit_config。
這裡,我們将它取名為arm_a_moveit_config,點選generate packet生成檔案。
此時moveit!配置助手就可以退出了。
在儲存的路徑下可以檢視到Moveit!導出的配置包,測試一下,打開demo檔案。如果配置無誤,此時可以看到機械臂的末端執行器上有一個mark标志,可以拖動機械臂運動并規劃路徑。
參考文獻
1.古月居 ros探索總結(二十五)------Moveit!基礎 http://www.guyuehome.com/435
2.《ros_by_example》第二冊第十一章
3.《ROS入門與實戰》第六章