<source : greatway9999>

一、前言

什麼方式可以盡情地學機器手臂,又不用擔心撞壞它呢?當然就是在模擬環境中學習囉!

接下來,會在 ROS Rviz 的環境中,從 MoveIt 的套件應用來了解機器手臂的運動、防碰撞、路徑規劃等基本操作。

如果你還不熟悉 Rviz ,可以參考 ROS官網。Rviz 是 ROS 環境中的一種主要的可視化工具,對於開發者在除錯上,帶來很大的幫助。也因為有 Rviz ,我們可以很輕鬆地和機器手臂互動,而不用擔心破壞機器手臂或環境,讓學習變得綁手綁腳。期待測試機器手臂的路徑規劃嗎?話不多說,Let's Go!

二、一步一步認識指令

Step1. 執行演練的Launch檔並設定 Plugin (插件)

roslaunch panda_moveit_config demo.launch rviz_tutorial:=true

執行後,你會看到如上圖般,空蕩蕩的 Rviz 世界。

咦?我們的 Panda ARM呢?別擔心,請看 Rviz 的左下方,有一個和下圖一樣的 "Add" 按鈕,直接給它點下去。 

<source : greatway9999>

接下來你會看到如下圖般一個頁籤為 "By display type" 的畫面,在 "moveit_ros_visualization" 的資料夾中,選擇 "MotionPlanning" ,按 "OK" 。

<source : greatway9999>

這時候,夢寐以求的 Panda ARM 就出現囉!(開心~~~)


好囉!一旦把 Motion Planing 的插件載入後,我們就可以進行設置。請先看左上角選單,你會看到 Display 中的 "Global Options",點擊它,並將 "Fixed Frame" 區域設置為 "/panda_link0"。如下圖所示。 



接下來進行 Display 中的 "MotionPlanning"設定 :
  • 確認 Robot Description 設定為 " robot_description "。
  • 確認 Planning Scene Topic  設定為 " /planning_scene "
  • 在 Planning Request 中,將 Planning Group 改成 " panda_arm "。
  • 在 Planned Path 中, 將 Trajectory Topic 設為 " /move_group/display_planned_path "。
如下圖所示 :




Step2. 初探可視化機器人 

有 4 種可視化的內容會重疊在一起 :
  • 在 "/planning scene" 開發環境中的機器人設定。(預設為開啟)
  • 為機器人規劃的路徑。(預設為開啟)
  • 綠色 : 啟動狀態的運動控制。(預設為關閉)
  • 橘色 : 目標狀態的運動控制。(預設為開啟)

每個展示化的狀態都可透過設定表單來進行開關的設定。
  • 開啟機器人的可視化,可勾選 "Scene Robot"  中的 "Show Robot Visual" 。 
  • 開啟路徑的可視化,可勾選 "Planned Path"  中的 "Show Robot Visual" 。 
  • 開啟啟動狀態的可視化,可勾選 " Planning Request"  中的 "Query Start State" 。 
  • 開啟目標狀態視化,可勾選 " Planning Request"  中的 "Query Goal State" 。 
<source : MoveIt>

Step3. 和 "熊貓" 互動

在這個步驟中,會開啟機器人、啟動狀態與目標狀態的可視化。
  • 關閉機器人的可視化,取消勾選 "Scene Robot"  中的 "Show Robot Visual" 。(白色的機器人模型會消失,出現的是作為標記用的橘色機器人) 
  • 開啟路徑的可視化,勾選 "Planned Path"  中的 "Show Robot Visual" 。 
  • 開啟啟動狀態的可視化,勾選 " Planning Request"  中的 "Query Start State" 。 
  • 開啟目標狀態視化,勾選 " Planning Request"  中的 "Query Goal State" 。 
現在畫面中應該會呈現兩個互動標記。其中一個標記對應橘色手臂,會被用來設定運動規劃的目標狀態。另一個標記對應綠色手臂,用來設定運動規劃的啟動狀態。

如果沒看到互動標記,請點選 Rviz 頂端的 "Interact" 按鈕。(備註 : 有時候工具會被隱藏,請按頂端選單中的 "+" ,將 "Interact" 加入選單中)。

<source : greatway9999>

現在就可以使用這些標記來拖曳手臂,並改變手臂的方向。試試看吧!

碰撞發生!!

操作的過程中,當機器手臂的其中部分碰撞到機器手臂的另外一部分,Rviz會有什麼樣的顯示呢?

沒錯,機器手臂碰撞到的部分會變成紅色。
<source : greatway9999>

"Use Collision-Aware IK" 設定選單可以在 MotionPlanning 插件中的 "Planning"標籤,進行 IK solver(解析器)的行為設定。當設定選單被勾選,解析器會試圖為預想的末端效應器找出一個避免碰撞的解決方案。當選單未被勾選,在解決方案中,解析器會允許碰撞發生。碰撞到的連桿將會持續顯示紅色,而不會受到設定選單的狀態影響。
<source : greatway9999>

超出可到達工作區域的移動?

試著將末端效應器移出可到達工作區域外,看看發生什麼事?

<source : MoveIt>

移動關節或移動到Null Space (零空間)

可以透過 " MotionPlanning " 插件,選擇 "Joints" 標籤,再移動 "Nullspace Exploration"滑桿,觀察機器手臂的變化。<觀看原文作者的Demo影片>

<source : greatway9999>

Step4. 熊貓的動作規劃 

現在來使用 MoveIt Rvix插件,試試看 Panda 的動作規劃。
  • 在預想位置設定啟動狀態。
  • 在另一個預想位置設定目標狀態。
  • 確認兩個位置不會讓機器人本身發生碰撞。
  • 確保路徑規劃是可視的。可在 "Planned Path" 中的 "Show Trail" 選單中檢視設定。
在 "Planning" 標籤中的 "MotionPlanning" 視窗中,點擊 "Plan" 按鈕。接著就可以看到機器手臂移動的軌跡。

<source : greatway9999>

檢視軌跡停留點

從 "Panels" 選單中,選擇 "MotionPlanning - Slider",就可以在Rviz中看到滑桿

<source : greatway9999>

接著設定目標姿態,接著執行 "Plan"。此時會看到畫面右邊的中間出現 " MotionPlanning - Slider ",其內容會有 Waypoint (路點)。透過調整Waypoint數據,會發現Waypoint其實就是手臂在移動的動作位置,隨著數字增加,手臂移動的位置資訊也隨之增加,當到達最大值時 (本例為25),Rviz會顯示所有的移動位置資訊。請見下圖。

<source : greatway9999>

備註 : 一旦你的EEF到新的目標,要先點擊 "Plan",再執行"Play"。否則你會看到前次目標的停留點。

規劃笛卡兒運動

若 "Use Cartesian Path" 設定被啟動,機器人會在笛卡兒空間中,以直線方式移動末端效應器。Waypoint高達81。如下圖。

<source : greatway9999>

若未啟動 "Use Cartesian Path" ,Waypoint為35。請見下圖。

<source : greatway9999>


繪製軌跡,調整速度

在成功完成規劃後,點擊 "Plan & Execute" 或 "Execute",軌跡將會傳送給機器人。

一開始,預設的速度和加速度被設定在機器人最大速度的10%。你可以藉由 "Planning" 按鈕來改變,或是從機器人的 moveit_config 設定擋中修改。(位於 "joint_limits.yaml" )

<source : greatway9999>

試著使用 RViz Visual Tools

從 "Panel" 選單中,選擇 "RvizVisualToolsGui" 。接著會看到新的panel加到Rviz中。

<source : greatway9999>

儲存設定檔

選擇順序為 File >> Save Config 。

接著就可以準備挑戰下個單元囉!


---
參考資料 :
#MoveIt #rviz

0 留言