天天看點

通過Moveit!配置助手配置Moveit!包

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!配置助手界面如下圖所示

通過Moveit!配置助手配置Moveit!包

接下來我們可以根據左邊的清單逐漸配置

2.1開始(start)

這個界面有兩個選項,左邊的是建立一個配置包,右邊的則是選擇已有的配置包進行修改。

我們選擇左邊的建立選項,并且加載之前下載下傳的模型檔案,如下圖(路徑根據實際下載下傳路徑選擇)

通過Moveit!配置助手配置Moveit!包

選擇seven_dof_arm.urdf之後點選加載(load files),這時可以在右側框看到模型,通過滑鼠可以調整模型的位置。

通過Moveit!配置助手配置Moveit!包

2.2生成碰撞矩陣(self-collision)

碰撞矩陣會列出所有不可能發生互相碰撞的連杆。上方的拉動條可以設定一定數量的随機采樣點,根據這些點生成配置參數,過多的點當然能獲得更好的效果,但同時運算速度也會變慢,甚至配置較差的電腦會卡死;過少的點則會導緻參數不完善,預設的采樣點數量是10000個,官方稱這是能獲得較好效果的最低要求。在此,我們不做修改,使用預設的10000個采樣點。

點選滾動條下方的“regenerate default collision matrix“,稍等片刻就可以獲得結果。

通過Moveit!配置助手配置Moveit!包

2.3 虛拟關節(virtual joints)

虛拟關節可以将機器人固定在虛拟世界内,例如一個機械臂有一個滑動底座,可以将機械臂的底座與odom通過一個planar關節連接配接,此時機械臂就可以在二維平面滑動。此處我們預設機械臂是固定不動的,是以不需要設定虛拟關節。

2.4 規劃組(planning groups)

規劃組可以将機器人劃分為不同的組,例如arm機械臂部分和gripper夾持器部分。運動規劃會針對這一個組完成運動規劃,在配置過程中還可以選擇運動學解析器。

在此我們建立兩個組,機械臂組和夾持器組。

通過Moveit!配置助手配置Moveit!包
通過Moveit!配置助手配置Moveit!包
通過Moveit!配置助手配置Moveit!包
通過Moveit!配置助手配置Moveit!包
通過Moveit!配置助手配置Moveit!包

2.5 定義機器人位姿(robot poses)

這裡可以設定一些固定的位置,比如初始位置或者某些特定位置。這樣做的好處是使用moveit!的API程式設計時,可以直接調用這些位置。

這裡我們随意設定一個位姿。

通過Moveit!配置助手配置Moveit!包

2.6 定義末端執行器(end-effectors)

在某些場景下,會安裝夾持器等末端執行器,這一步可以對此進行定義。

通過Moveit!配置助手配置Moveit!包

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!包

此時moveit!配置助手就可以退出了。

在儲存的路徑下可以檢視到Moveit!導出的配置包,測試一下,打開demo檔案。如果配置無誤,此時可以看到機械臂的末端執行器上有一個mark标志,可以拖動機械臂運動并規劃路徑。

通過Moveit!配置助手配置Moveit!包

參考文獻

1.古月居 ros探索總結(二十五)------Moveit!基礎 http://www.guyuehome.com/435

2.《ros_by_example》第二冊第十一章

3.《ROS入門與實戰》第六章