關節空間運動是機械臂常用的一種控制方法。所謂關節空間,就是以關節角度為控制量的機器人運動。雖然各關節到達期望位置所經過的時間相同,但是各關節之間互相獨立,互不影響。機器人狀态使用各軸位置來描述,在指定運動目标的機器人狀态後,通過各軸運動來達到目标位姿。
首先我們需要一個.srdf檔案。這個檔案是配置機械臂參數、夾具參數、規劃組、自定義位姿等。其中配置如下圖:
有了.srdf檔案以後,我們就可以通過moveit group commander來控制機械臂進行關節空間規劃了。
moveit_commander.roscpp_initialize(): 這個函數是對API進行導入,初始化的底層依然使用的是roscpp接口,隻是在上層做了python封裝.
moveit_commander.MoveGroupCommander(): 這個函數是初始化API。參數是.srdf檔案中的group name。
moveit_commander.MoveGropuCommander.set_goal_joint_tolerance(): 這個函數是設定動作允許的誤內插補點
moveit_commander.MoveGroupCommander.set_named_target(): 這個函數是按照名稱設定關節配置,名稱是.srdf檔案中的group_state name
moveit_commander.MoveGroupCommander.go(): 這個函數是控制機械臂完成動過
moveit_commander.MoveGroupCommander.set_joint_value_target(): 這個函數是使用位置資料設定機械臂關節的目标資料,一般我們使用array
moveit_commander.roscpp_shutdown(): 這個函數是關閉API的接口
moveit_commander.os._exit(): 這個函數是退出moveit group commander
下面是我的使用moveit gropu commander的簡答的代碼: