環境:Ubuntu18.04 + ROS Melodic
官網下載安裝步驟:http://wiki.ros.org/melodic/Installation/Ubuntu
一鍵安裝的快捷方式:
wget http://fishros.com/install -O fishros && bash fishros
保證自己的ROS可以使用。可以按照官網進行小烏龜測試。
Movelt 並沒有直接附帶在 ROS中,需要自行安裝:
sudo apt install ros-melodic-moveit
如果是更高版本(其他版本)則安裝對應的moveit. 比如Ubuntu20.04對應的是ROS Noetic .也可以直接從原始碼下載:https://moveit.ros.org/install/source/
如果你的手頭沒有現成的素材,可以從tutorial下載,首先我們建立一個工作空間用於 ROS程式的開發。後面會介紹ROS檔案空間的結構。
mkdir ~/ARM/ws_moveit/src
cd ~/ARM/ws_moveit/src
git clone https://github.com/ros-planning/moveit_tutorials.git -b melodic-devel
git clone https://github.com/ros-planning/panda_moveit_config.git -b melodic-devel
安裝一些必要的依賴:
cd ~/ARM/ws_moveit/src
rosdep install -y --from-paths . --ignore-src --rosdistro melodic
設定工作空間
cd ~/ARM/ws_moveit
catkin config --extend /opt/ros/${ROS_DISTRO} --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin build
重新整理工作空間,使其能夠正常工作:
source ~/ARM/ws_moveit/devel/setup.bash
也可以將這句話寫入 bashrc
檔案,使其自動執行,就不需要每次都 source 了:
echo 'source ~/ARM/ws_moveit/devel/setup.bash' >> ~/.bashrc
上手 MoveIt 的最快方法就是通過 RViz 外掛。Rviz 是 ROS 中的主要視覺化工具,也是偵錯機器人非常有用的工具。MoveIt Rviz外掛可以設定虛擬環境(場景),以互動方式建立機器人的開始和目標狀態,測試各種運動規劃器,並以視覺化的方式輸出。
在前3步中我們已經做好了初始化的準備,下面我們看一看rviz外掛的相關操作。
執行 panda_moveit_config
的 demo launch檔案:
cd ~/ARM/ws_moveit
source devel/setup.bash
roslaunch panda_moveit_config demo.launch rviz_tutorial:=true
這裡我們提前使用 panda_moveit_config
包,這個包是封裝了機械結構和運動動力學的機器人模型,後面會將介紹這個包是怎麼來的。
如果是第一次執行,將會看到以下介面:
點選左下角的 Add,選擇 MotionPlanning,點選 OK。看到機器人模型。
當這個機器人模型被載入出來後,我們就可以繼續設定這個機器人。
在左側自上向下依次設定:
/panda_link0
robot_description
/planning_scene
panda_arm
。/move_group/display_planned_path
Rviz 中有四種顯示模式:
/planning scene
規劃環境中的設定(預設情況下處於活動狀態)。可以通過選擇框來開啟關閉各個視覺化狀態:
通過這些索引標籤的開啟關閉可以顯示不同的視覺化效果。
接下來我們只開啟 Planned Path、Start State 以及 Goal State. 不開啟 Scene Robot 。現在可以看到機械臂呈現橘色。
即作如下的視覺化勾選設定:
Planned Path-Show Robot Visual
Scene Robot-Show Robot Visual
Planning Request-Query Goal State
Planning Request-Query Start State
現在應該有兩個互動標記 (interactive markers):
橙色手臂標記用於表示運動規劃的「目標狀態」,
綠色手臂標記用於表示運動規劃的「開始狀態」。
如果看不到互動標記,請按RViz頂部選單中的 "Interact".
注意:某些工具可能是被隱藏了,請按頂部選單中的 "+" 以新增互動工具。
現在,就能夠使用這些標記來拖動手臂並更改其狀態:比如拖動手臂到達某個位置:
Collision. 當試圖移動機械臂的某個關節與其他部分發生碰撞時,碰撞的兩個部分將變為紅色。
在 "Planning" 索引標籤下的 MotionPlanning 外掛中找到的 "Use Collision-Aware IK" 核取方塊允許您切換IK解算器的行為。勾選該核取方塊後,解算器將不斷嘗試為所需末端效應器位姿尋找無碰撞解決方案。
會比之前優雅很多,但還是會碰撞,只是少了很多可能。
未選中這個索引標籤時,解算器會允許有碰撞的解。
無論核取方塊的狀態如何,碰撞的兩個部分依然以紅色顯示。
由於joint的角度限值和關節的固定長度,目標點侷限在一個有效的空間(workspace)內, 對於出界的目標點,求解器將無法求出解。
現在可以通過 Motion Planning 讓機械臂規劃運動。
Planned Path
索引標籤中勾選Planned Path;
在 MotionPlanning 外掛的 Planning
中點選Plan
按鈕, 可以看到機械臂運動的軌跡。
在 Rviz 中通過 slider
檢視運動軌跡點。
在Panels
選單中選擇MotionPlanning - Slider
,在左邊會出現一個滾軸。
Panels在Rviz中最上面的file那一行。
設定目標狀態,點選Plan
拖動滾軸可以檢視軌跡點。
注意,當你把機械臂放到一個新的目標時,先執行 Plan 再執行 slider 中的 Play,否則看到的還是上一次執行的軌跡點。
File->Save Config
這樣下次開啟Rviz,可以通過File->Open 呼叫儲存的設定。
即,下次執行 roslaunch panda_moveit_config demo.launch
,就可以繼續上面的設定進行操作,不必從頭再來。