Udacity机器人软件工程师课程笔记(十六)-机械臂仿真控制实例(其一)-Gazebo、RViz和Moveit!
機械臂仿真控制實例
目錄
- 環(huán)境設(shè)置
- 項目工具介紹
- Gazebo
(1)Gazebo組件
(2)Gazebo界面 - 統(tǒng)一機器人描述格式(URDF)
- RViz
- Moveit!
1.環(huán)境設(shè)置
對于此項目,使用的是 robo-nd 虛擬機映像,或者在本地安裝了 Ubuntu + ROS 。
關(guān)于安裝虛擬機映像問題,可以參考之前的文章。
對于此設(shè)置的其余部分,活動的ROS工作區(qū)的名稱設(shè)置為catkin_ws。
如果沒有活動的ROS工作空間,則可以通過以下方法創(chuàng)建:
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make
建立了工作區(qū)之后,將項目存儲庫克隆或下載到工作區(qū)的src目錄中:
$ cd ~/catkin_ws/src
$ git clone https://github.com/udacity/RoboND-Kinematics-Project.git
使用全能的 $ rosdep install命令安裝缺少的依賴項:
$ cd ~/catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y
接下來,更改腳本文件的權(quán)限以使其變?yōu)榭蓤?zhí)行文件:
$ cd ~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/scripts
$ sudo chmod u+x target_spawn.py
$ sudo chmod u+x IK_server.py
$ sudo chmod u+x safe_spawner.sh
現(xiàn)在一切就緒,現(xiàn)在可以構(gòu)建項目了。
在工作空間中,可以運行catkin_make來構(gòu)建項目:
$ cd ~/catkin_ws
$ catkin_make
由于拾取和放置模擬器會在單獨的終端中旋轉(zhuǎn)不同的節(jié)點,因此需要將以下內(nèi)容添加到 .bashrc 文件中以進行自動采購:
$ source ~/catkin_ws/devel/setup.bash
由于此項目使用自定義3D模型,因此需要告知Gazebo(仿真軟件)在哪里尋找它們。由于環(huán)境變量,只需在 .bashrc 中添加一行即可輕松實現(xiàn)
打開一個終端窗口,然后輸入以下內(nèi)容:
$ echo "export GAZEBO_MODEL_PATH=~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/models" >> ~/.bashrc
對于演示模式,請確保在 ~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/launch/ 位置的 inverse_kinematics.launch 文件中將 demo 標志設(shè)置為true。
此外,還可以控制架子上目標對象的生成位置。為此,在下面的 target_description.launch 文件中修改 spawn_location 參數(shù)。文件在~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/launch/中。
0-9是 spawn_location 的有效值,0是隨機模式。
這樣就已經(jīng)成功構(gòu)建了我們的項目。
2.項目工具介紹
(1)Gazebo
Gazebo是一種基于物理學(xué)的3D仿真器,廣泛用于機器人世界。在之前的測試ROS節(jié)點的時候我們已經(jīng)使用過了。
(2)RViz
RViz,用于傳感器數(shù)據(jù)分析和機器人狀態(tài)可視化的3D可視化器,強調(diào)把已有的數(shù)據(jù)可視化顯示。
(3)Moveit !
Moveit !,基于ROS的運動計劃,運動學(xué)和機器人控制軟件框架。
3.Gazebo
Gazebo是用于機器人技術(shù)的基于物理的高保真3D仿真器。Gazebo提供了在復(fù)雜的室內(nèi)和室外環(huán)境中準確模擬一個或多個機器人的功能,該環(huán)境充滿了靜態(tài)和動態(tài)對象,逼真的照明和可編程的交互。
Gazebo有助于機器人設(shè)計,快速成型和測試以及真實場景的仿真。雖然Gazebo與平臺無關(guān),并且支持Windows,Mac和Linux,但它通常與ROS一起在Linux系統(tǒng)上與機器人系統(tǒng)一起使用。
簡而言之,它是每個機器人專家必備庫中必不可少的工具。有關(guān)Gazebo歷史的詳細信息和全面的功能列表,請訪問他們的網(wǎng)站。
(1)Gazebo組件
運行Gazebo仿真實例所涉及的兩個主要組件是 gzserver 和gzclient 。
gzserver完成了Gazebo的大部分繁重任務(wù)。它負責(zé)解析與我們要模擬的場景以及其中的對象相關(guān)的描述文件,然后使用物理和傳感器引擎模擬整個場景。
通過在終端中使用以下命令可以獨立啟動服務(wù)器:
$ gzserver
它沒有任何GUI組件。在某些情況下,以所謂的“無頭模式” 運行gzserver可能會派上用場,但是在以后的課程中,我們將進一步討論。
另一方面,gzclient提供了非常重要的圖形客戶端,該客戶端可連接到gzserver并渲染仿真場景以及有用的交互工具。盡管可以使用以下命令從技術(shù)上本身運行g(shù)zclient:
$ gzclient
它根本不執(zhí)行任何操作(消耗計算資源除外),因為它沒有可連接的gzserver。
通常的做法是先運行gzserver,然后運行gzclient,在渲染模擬場景之前,先花一些時間初始化模擬場景,其中的對象以及相關(guān)的參數(shù)。為了使我們的生活更輕松,有一個直觀的命令可以按順序啟動兩個組件:
$ gazebo
(2)Gazebo界面
輸入以下內(nèi)容即可從終端啟動Gazebo
$ gazebo
需要注意的是,有時候Gazebo會陷入一個看似無限的加載循環(huán),如果Gazebo在一分鐘內(nèi)沒有完全加載完,可以考慮在Gazebo終端處于活動狀態(tài)時按Ctrl+C關(guān)閉它,然后重新啟動它。
Gazebo gui分為4個主要部分:
- 場景
- 側(cè)板
- 工具欄
- 菜單
場景
場景是您將花費大部分時間的地方,無論是創(chuàng)建仿真還是運行仿真。雖然可以使用觸摸板在場景中導(dǎo)航,但強烈建議使用鼠標。您可以通過按下LMB并拖動來平移場景。如果你按住SHIFT鍵,你現(xiàn)在可以旋轉(zhuǎn)視圖。您可以使用鼠標滾輪或按下和拖動RMB來放大和縮小。
側(cè)板
左側(cè)的側(cè)面板由三個選項卡組成:“World”,“Insert”和“Layers”。
- World
此選項卡顯示場景中當(dāng)前的燈光和模型。通過單擊單個模型,可以查看或編輯其基本參數(shù),例如位置和方向。此外,您還可以通過“Physics”選項更改場景的物理場,例如重力和磁場。GUI選項提供對默認攝像機視角和姿勢的訪問。 - Insert
在這里可以找到要添加到模擬場景中的對象(模型)。左鍵單擊以展開或折疊模型列表/目錄。要將對象放置在場景中,只需在“插入”選項卡下單擊感興趣的對象即可;這會將對象綁定到鼠標光標,可以通過在該位置單擊鼠標左鍵將該對象放置在場景中的任何位置。 - Layers
這是一項可選功能,因此在大多數(shù)情況下此選項卡將為空。要了解有關(guān)圖層的更多信息,請單擊此處。
頂部工具欄
在頂部有一個工具欄,它可以快速訪問某些光標類型,幾何形狀和視圖。
- Select mode
最常用的光標模式,可用于瀏覽場景。 - Translate mode
更改對象位置的一種方法是在側(cè)面板上的世界選項卡中選擇對象,然后通過屬性更改其姿勢。這既麻煩又不自然,轉(zhuǎn)換模式光標允許更改場景中任何模型的位置。只需選擇光標模式,然后使用適當(dāng)?shù)妮S來拖動對象直到滿意為止。 - Rotate mode
類似于翻譯模式,此光標模式允許更改任何給定模型的方向。
Scale mode
比例模式允許更改比例,從而更改任何模型的整體大小。 - Undo/Redo
由于人類最擅長犯錯誤,因此撤消工具可以幫助我們隱藏錯誤。另一方面,如果您撤消了您不想要的操作,請重做工具以進行撤銷。 - Simple shapes
可以將諸如立方體,球體或圓柱體之類的基本3D模型插入場景。 - Lights
向場景添加聚光燈,點光源或定向光等不同的光源。 - Copy/Paste
這些工具可以在場景中復(fù)制/粘貼模型。另一方面,只需按Ctlr + C復(fù)制并按Ctrl + V粘貼任何模型。 - Align
該工具可以沿著三個主軸之一將一個模型與另一個模型對齊。 - Change view
使用該工具可從不同角度(例如俯視圖,側(cè)視圖,正視圖,仰視圖)查看場景。
底部工具欄
底部工具欄有一個簡潔的播放/暫停按鈕。這使您可以暫停模擬以方便地移動對象。該工具欄還顯示有關(guān)模擬的數(shù)據(jù),例如模擬時間及其與實際時間的關(guān)系。您可以在此處找到FPS計數(shù)器,以評估任何給定場景的系統(tǒng)性能。
4.統(tǒng)一機器人描述格式(URDF)
統(tǒng)一機器人描述格式或urdf是ROS中用于表示機器人模型的XML格式。我們可以使用urdf文件來定義機器人模型,其動力學(xué)特性,視覺元素,甚至是機器人的模型傳感器。URDF只能描述具有通過鏈節(jié)或樹狀結(jié)構(gòu)的關(guān)節(jié)連接的剛性鏈接的機器人。它無法描述具有靈活鏈接或并行鏈接的機器人。
<?xml version="1.0"?>
<robot name="two_link_robot"><!--Links--><link name="link_1"><visual><geometry><cylinder length="0.5" radius="0.2"/></geometry></visual></link><link name="link_2"><visual><geometry><box size="0.6 0.1 0.2"/></geometry></visual></link><!--Joints--><joint name="joint_1" type="continuous"><parent link="link_1"/><child link="link_2"/></joint>
</robot>
以上是使用URDF描述具有兩個連接和一個關(guān)節(jié)的簡單機器人。
由于我們使用urdf文件描述了幾種機器人和環(huán)境屬性,因此閱讀起來往往很長且乏味。這就是為什么我們使用Xacro(XML宏)將單個urdf文件分成多個xacro文件的原因。雖然語法保持不變,但是我們現(xiàn)在可以將機器人描述分為較小的子系統(tǒng)。對于此項目,我們僅將urdf分為兩個xacro文件:
kr210.urdf.xacro-該文件包含所有機器人特定的信息,例如鏈接,關(guān)節(jié),執(zhí)行器等。kr210.gazebo.xacro該文件包含Gazebo特定的信息,例如機器人材料,摩擦常數(shù)以及在Gazebo中控制機器人的插件
由于kr210.urdf.xacro包含機器人特定的信息(如鏈接長度和關(guān)節(jié)偏移),因此它是唯一需要導(dǎo)出DH參數(shù)并創(chuàng)建變換矩陣的文件。由于urdf(和Xacro)文件基本上是XML,因此它們使用標記來定義機器人的幾何形狀和屬性。最重要且最常用的標簽及其元素如下所述:
<robot> </robot>
這是頂層標簽,其中包含與給定機器人相關(guān)的所有其他標簽。
<link> </link>
機械手中的每個剛性鏈接都必須與此標簽關(guān)聯(lián)。
屬性(Attributes)
name:需要唯一的鏈接名稱屬性。
元素(Elements)
<visual> </visual>
該元素指定對象的外觀以用于可視化目的。
| 名稱 | 描述 |
|---|---|
<origin> | 視覺元素的參考框架相對于鏈接的參考框架。 |
<geometry> | 視覺對象的形狀。 |
<material> | 視覺元素的材料。 |
<collision> </collision> | 連接的碰撞屬性。請注意,這可能與連接的視覺屬性不同,例如,通常使用更簡單的碰撞模型來減少計算時間。 |
| 名稱 | 描述 |
|---|---|
<origin> | 碰撞元素的參考框架,相對于鏈接的參考框架。 |
<geometry> | 請參閱以上視覺元素中的幾何描述。 |
<inertial> </inertial> | 連接的慣性屬性在此標簽中描述。 |
| 名稱 | 描述 |
|---|---|
<origin> | 這是慣性參考系相對于連桿參考系的姿勢。慣性參考系的原點必須位于重心。 |
<mass> | 鏈接的質(zhì)量由該元素的value屬性表示。 |
<inertia> | 在慣性框架中表示的3x3旋轉(zhuǎn)慣性矩陣。由于旋轉(zhuǎn)慣量矩陣是對稱的,因此在此處僅使用屬性ixx,ixy,ixz,iyy,iyz,izz指定該矩陣的6個對角線以上的元素。 |
<link>具有重要元素的代碼示例片段:
<link name="link_1"><inertial><origin xyz="0 0 0.4" rpy="0 0 0"/><mass value="${mass1}"/><inertia ixx="30" ixy="0" ixz="0" iyy="50" iyz="0" izz="50"/></inertial><visual><origin xyz="0 0 0" rpy="0 0 0"/><geometry><mesh filename="package://kuka_arm/meshes/kr210l150/visual/link_1.dae"/></geometry><material name=""><color rgba="0.75294 0.75294 0.75294 1"/></material></visual><collision><origin xyz="0 0 0" rpy="0 0 0"/><geometry><mesh filename="package://kuka_arm/meshes/kr210l150/collision/link_1.stl"/></geometry></collision></link>
該<link>標簽有許多可選元素,可以用來定義其他屬性,如顏色、材質(zhì)、紋理等。有關(guān)這些標記的詳細信息,請參考此鏈接。
<joint> </joint>
該標簽通常定義機器人中兩個鏈接之間的單個關(guān)節(jié)。可以使用此標簽定義的關(guān)節(jié)類型包括:
| 名稱 | 描述 |
|---|---|
| 固定 | 沒有自由度的剛性接頭。用于將鏈接焊接在一起。 |
| 旋轉(zhuǎn) | 繞軸旋轉(zhuǎn)的范圍有限的關(guān)節(jié)。 |
| 棱柱 | 沿軸滑動的限位關(guān)節(jié) |
| 連續(xù) | 與“ 旋轉(zhuǎn)關(guān)節(jié)” 相似,但沒有限制。它可以繞軸連續(xù)旋轉(zhuǎn)。 |
| 平面 | 2D 棱鏡關(guān)節(jié),允許在垂直于軸的平面中運動。 |
| 漂浮 | 具有6個自由度的關(guān)節(jié),通常用于四旋翼和無人機 |
屬性(Attributes)
name: 唯一的聯(lián)合名稱
type: 關(guān)節(jié)類型
元素(Elements)
要定義關(guān)節(jié),我們需要聲明旋轉(zhuǎn)/平移軸以及形成關(guān)節(jié)的兩個連接之間的關(guān)系。
| 名稱 | 描述 |
|---|---|
<origin> | 這是從父鏈接到子鏈接的轉(zhuǎn)換。關(guān)節(jié)位于子鏈接的原點。 |
<parent> | 各個關(guān)節(jié)的父級鏈接的名稱。 |
<child> | 各個關(guān)節(jié)的子鏈接的名稱。 |
<axis> | 定義旋轉(zhuǎn)關(guān)節(jié)的旋轉(zhuǎn)軸,棱柱形關(guān)節(jié)的平移軸和平面關(guān)節(jié)的表面法線。固定關(guān)節(jié)和浮動關(guān)節(jié)不使用軸字段。 |
<joint>具有重要元素的代碼示例片段:
<joint name="joint_2" type="revolute"><origin xyz="0.35 0 0.42" rpy="0 0 0"/><parent link="link_1"/><child link="link_2"/><axis xyz="0 1 0"/>
</joint>
<joint>標簽下的其他可選元素可以在此處找到。
還有更多可選標簽和屬性,可幫助定義機器人以及傳感器和執(zhí)行器的各種動態(tài)和運動學(xué)特性。參考此鏈接以獲取關(guān)于這些的更多詳細信息。
5.RViz
RViz(或RViz)代表ROS可視化工具或ROS可視化器。RViz是一站式工具,可以可視化機器人的三個核心方面:感知、決策和驅(qū)動。
使用rviz,我們可以可視化發(fā)布在ROS主題上的任何類型的傳感器數(shù)據(jù),如相機圖像、點云、超聲波測量、激光雷達數(shù)據(jù)、慣性測量等。這些數(shù)據(jù)可以是直接來自傳感器的實時流,也可以是作為bagfile存儲的預(yù)記錄數(shù)據(jù)。
通過RViz還可以可視化機器人的活關(guān)節(jié)角度值,從而構(gòu)建任何機器人的實時三維表示。盡管如此,rviz并不是一個模擬器,也不與物理引擎接口,換句話說,沒有碰撞和動力學(xué)。RViz并不是Gazebo的替代品,而是一個輔助工具,可以監(jiān)視機器人系統(tǒng)下的運動每一個過程。
由于rviz是ROS軟件包,因此需要運行roscore才能啟動rviz。
$ roscore
在另一個終端中,運行rviz:
$ rosrun rviz
正確啟動后,rviz窗口應(yīng)如下所示:
中間的空白窗口稱為3D視圖(3D view),在其中來觀察機器人模型,傳感器可視化和其他元數(shù)據(jù)。
左側(cè)的面板是已加載的顯示(Displays)的列表,而右側(cè)的面板顯示了可用的不同視圖(Views)。
在頂部,我們提供了許多有用的工具(tools),底部的欄顯示了有用的信息,例如經(jīng)過的時間,fps計數(shù)以及所選工具的一些方便的說明/細節(jié)。
(1) 顯示(Displays)
要使任何內(nèi)容都顯示在3D視圖中,首先需要加載正確的顯示(Displays)。
顯示(Displays)還可以用于可視化傳感器數(shù)據(jù)流,例如3D點云,激光雷達掃描,深度圖像等。
默認情況下,Rviz以兩個無法刪除的固定屬性字段啟動- 全局選項和全局狀態(tài)。雖然不顯示這些內(nèi)容,但一個管理簡單的全局設(shè)置,而另一個則檢測并顯示有用的狀態(tài)通知。
讓我們來看看一些基本的顯示(Displays)。我們已經(jīng)加載并啟用了網(wǎng)格顯示。要添加機器人模型顯示,首先需要將機器人描述(urdf)加載到參數(shù)服務(wù)器中,并在所有機器人鏈接之間發(fā)布轉(zhuǎn)換。幸運的是,我們有一個方便的啟動文件,可以為我們完成所有這些工作,打開一個新終端,然后鍵入以下命令:
$ roslaunch kuka_arm load_urdf.launch
如果提示找不到文件,則添加一下環(huán)境變量,之后繼續(xù)運行上面的命令就可以了:
source ~/catkin_ws/devel/setup.bash
現(xiàn)在,讓我們回到rviz窗口并通過單擊Add 底部的按鈕添加顯示。這將打開一個帶有顯示類型的新窗口,選擇RobotModel并點擊Ok。接下來,在Displays中將“ Fixed Frame”下的“ Global Options” 從world(或map)更改為base_link。
如果一切正常,應(yīng)該可以看到機器人模型:
注:若是報錯未找到文件,很多情況下都是由沒有添加環(huán)境變量導(dǎo)致的
可以通過取消選中旁邊的復(fù)選框來禁用顯示類型,而不必完全刪除它。通過選中復(fù)選框再次啟用。
可以隨意使用不同的顯示類型及其屬性,但請記住,要使大多數(shù)顯示類型正常工作,需要加載相應(yīng)的源。
(2) 視圖(Views)
rviz中有幾種視圖類型,它們基本上可以更改3D視圖中的相機類型。請記住,對于每種視圖類型,都可以在底部狀態(tài)欄看到有關(guān)如何使用鼠標旋轉(zhuǎn),平移和縮放的說明。我們將在這里討論三種廣泛使用的相機類型:
1)軌道(Orbit)
在軌道視圖中,你設(shè)置一個焦點,相機就會圍繞這個焦點旋轉(zhuǎn),一直看著它。當(dāng)移動時,你可以看到一個黃色圓盤狀的焦點。
2) 第一人稱 FPS
FPS視圖是第一人稱攝像機視圖。就像FPS視頻游戲一樣,攝像頭會旋轉(zhuǎn),就像繞著你的頭旋轉(zhuǎn)一樣。
3) 上下正交(TopDownOrtho)
該攝像機始終沿全局Z軸向下看,從而將攝像機的移動限制在XY平面上。通常在為移動機器人執(zhí)行2D導(dǎo)航時使用。
(3)工具欄
接下來,我們將探索rviz窗口頂部工具欄中的一些工具。盡管這些工具大多數(shù)都是通用工具,可用于任何機器人,但其中一些工具專用于移動機器人導(dǎo)航,將在以后的課程中介紹。
1)移動相機
這是最基本的工具,通常是默認工具,它用于移動相機。請記住,運動控件從一種視圖類型更改為另一種視圖類型,請再次參考運動表以快速比較控件。
2)選擇
為了演示該工具,讓我們添加一個名為“選擇面板”的新面板。為此,請在rviz窗口的頂部菜單上單擊“面板”,然后單擊“選擇”,現(xiàn)在應(yīng)該在顯示面板頂部看到一個空的“選擇”面板。現(xiàn)在,從工具欄中選擇“選擇”工具。使用此工具,可以通過左鍵單擊來選擇單個項目,也可以通過單擊并拖動以選擇多個項目。選擇的詳細信息顯示在“選擇”面板中。例如,選擇一個機器人鏈接將提供其當(dāng)前姿勢(位置+方向)。在需要確定一個或多個項目的屬性或狀態(tài)的復(fù)雜環(huán)境中,此工具非常有用。
3)對焦相機
顧名思義,此工具將機器人的任何項目或部分置于“焦點”位置,這意味著只需單擊一次即可將其置于3D視圖面板的中心。
4)測量
激活后,此工具可測量3D視圖中兩點之間的距離。可以通過單擊鼠標左鍵設(shè)置起點,然后通過單擊鼠標左鍵設(shè)置終點。這兩個點之間的測量距離將顯示在rviz窗口的底部狀態(tài)欄中。但是請記住,無法測量空白空間中兩點之間的距離。所以必須具有一些對象才能單擊。
5)相互作用
這是一個特殊的工具,可用于與交互式標記交互。在此處可以了解更多有關(guān)交互式標記的信息。
6.Moveit!
MoveIt!是用于操縱,運動學(xué)和控制的高級運動計劃框架。它提供了一個平臺,用于開發(fā)先進的機器人應(yīng)用程序,評估新的機器人設(shè)計以及構(gòu)建適用于工業(yè),商業(yè),研發(fā)和其他領(lǐng)域的集成機器人產(chǎn)品。
我們將利用Moveit的各個組件,因此,對于整個計劃中的不同項目,我們將探討Moveit的各個組成部分。
場景規(guī)劃
規(guī)劃場景表示機器人的狀態(tài)以及周圍世界的狀態(tài)。
它通過訂閱joint_states主題來跟蹤機器人狀態(tài)。它集成了來自各種傳感器(如立體聲攝像頭和/或RGBD攝像頭)的信息,以實質(zhì)上創(chuàng)建機器人周圍動態(tài)環(huán)境的3D地圖。
也可以通過將抽象對象或虛擬對象發(fā)布到特定主題來將其插入到所謂的3D地圖中。
運動規(guī)劃
MoveIt!沒有內(nèi)置的運動計劃算法。相反,它提供了一個方便的插件界面來與各種運動計劃庫進行通信和使用。
Moveit!利用特殊的ROS服務(wù)與任何給定的運動計劃者建立請求-響應(yīng)關(guān)系。
與pub-sub不同,請求-響應(yīng)關(guān)系依賴于在兩個節(jié)點之間傳遞的非常特定的消息。在這種情況下,一旦選擇了運動計劃器并通過插件界面加載了運動計劃器,則可以向計劃器發(fā)送請求消息,其中包含有關(guān)如何生成計劃的特定說明。
響應(yīng)我們的請求消息,Moveit!使用上面討論的“規(guī)劃場景”生成所需的無碰撞軌跡。
需要注意的一點是,運動計劃器僅生成從機器人的開始狀態(tài)到其結(jié)束狀態(tài)的無碰撞路徑,然后生成Moveit!。將此路徑轉(zhuǎn)換為遵循關(guān)節(jié)角度的速度和加速度約束的關(guān)節(jié)空間軌跡。
一旦有了有效的無碰撞軌跡,就可以使用適合您的機器人的控制器來執(zhí)行它。
運動學(xué)
在運動計劃過程的各個階段,Moveit!需要使用正向運動學(xué)將機器人的關(guān)節(jié)狀態(tài)轉(zhuǎn)換為末端執(zhí)行器姿勢,反之亦然。
ROS的RobotState類提供對正向運動功能的訪問,而Moveit!允許用戶編寫自己的逆運動學(xué)實現(xiàn)。這是之后將要實現(xiàn)的部分,首先是數(shù)學(xué)上的實現(xiàn),然后是python腳本的形式。
我們要編寫的python腳本只為特定的6DOF機械臂(Kuka KR210)解決反向運動學(xué)問題(IK),但是有通用庫和插件可用于為不同類型的機器人解決IK。幾個廣泛使用的解決方案是:
- orocos開發(fā)的 運動學(xué)和動力學(xué)庫(KDL)
- OpenRAVE開發(fā) 的 IKFast Slover
move_group節(jié)點
move_group節(jié)點是Moveit!的主節(jié)點!包裝并用作中央樞紐,提供Moveit幾乎所有組件之間的通信。
它以Rviz GUI的形式提供用戶界面,并就各種主題與機器人進行對話,以獲取諸如機器人狀態(tài),轉(zhuǎn)換,傳感器數(shù)據(jù),控制器狀態(tài)等信息。我們將在未來的運動計劃模塊中廣泛討論該節(jié)點。 。
總結(jié)
以上是生活随笔為你收集整理的Udacity机器人软件工程师课程笔记(十六)-机械臂仿真控制实例(其一)-Gazebo、RViz和Moveit!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Udacity机器人软件工程师课程笔记(
- 下一篇: Udacity机器人软件工程师课程笔记(