ROS機械臂 Movelt 學習筆記5 | MoveIt Commander Scripting

2022-08-11 21:00:46

前一講python介面中提到moveit_commander 包。這個包提供了用於運動規劃、笛卡爾路徑計算以及拾取和放置的介面。

moveit_commander 包還包括一個命令列介面程式moveit_commander_cmdline.py. 可以通過一些簡單的命令來替代程式設計。

1. 啟動命令列工具

先開啟 panda 機械臂模型

cd ARM/
 cd ws_moveit/
 source devel/setup.bash
roslaunch panda_moveit_config demo.launch

然後在新視窗中(可以不必切換到ws_moveit 包下)

rosrun moveit_commander moveit_commander_cmdline.py

就可以看到以下畫面:

 

 

 

 

2. 使用個命令列工具

這個命令列工具可以啟動move_group的一些運動範例。

首先需要指定我們要控制的規劃組:

use panda_arm

這會連線到指定的move_group 結點,接下來的命令都是在這個規劃組上進行的。

  • 顯示當前狀態

    current
  • 記錄某個狀態並命名

    rec init
    #相當於把當前關節記為 init
    # 顯示: Remembered current joint values under the name init
    ​
    #輸入vars可以顯示所有命名狀態。

    這就相當於前面提到過的 move_group.getCurrentState(),然後就可以通過修改關節值來進行規劃。

  • 進行運動規劃 (正向運動學)

    最近偶然翻閱《ROS機器人進階範例》P309,發現這種修改關節值的方式就是正向運動學,而另一種指定目標姿態的即逆向運動學

    goal = init
    goal[1] = 0.2
    go goal
    運動後的姿態如下:

     

     

    python介面 提到過,go()是 plan + execute,所以也可以用後者替代:

    goal[0] = 0.2
    goal[1] = 0.2
    plan goal
    execute

    看起來多了一步,但視覺化了規劃的過程,在某些時候會派上用場,比如分析機械臂的奇異解。

 

更多的功能可以輸入 help 來查閱。

此外,關心這些功能如何實現,可以看一看moveit_commander_cmdline.py 的原始碼。

最後,退出命令列工具可以輸入 quit或者Ctrl+C

 

3. 我最關心的

這部分比較簡單,就是幾個命令而已。而且感覺不是很實用,我最關心的是,如何通過命令列工具的命令,快速讓機械臂達到某個狀態或者實現某個運動

比如我寫好了一個抓取瓶子的程式,如何將其封裝成一個簡單的命令呢?

當然,可以給launch 檔案寫別名,但總感覺不如這個方便一點,可以在同視窗實現規劃組的切換以及命令的切換。