日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Udacity机器人软件工程师课程笔记(十六)-机械臂仿真控制实例(其一)-Gazebo、RViz和Moveit!

發(fā)布時間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Udacity机器人软件工程师课程笔记(十六)-机械臂仿真控制实例(其一)-Gazebo、RViz和Moveit! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

機械臂仿真控制實例

目錄

  1. 環(huán)境設(shè)置
  2. 項目工具介紹
  3. Gazebo
    (1)Gazebo組件
    (2)Gazebo界面
  4. 統(tǒng)一機器人描述格式(URDF)
  5. RViz
  6. 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仿真實例所涉及的兩個主要組件是 gzservergzclient

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個主要部分:

  1. 場景
  2. 側(cè)板
  3. 工具欄
  4. 菜單

場景

場景是您將花費大部分時間的地方,無論是創(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。