前言
將 2D 激光雷達數據從 Isaac Sim 流式傳輸至 ROS 2,并通過 RViz 進行可視化。通過激光雷達數據監控機器人與環境的交互,從而在仿真環境中提升機器人的感知能力。
概覽
歡迎來到?入門指南:在 Isaac Sim 中模擬您的第一個機器人?課程。我們將一起探索機器人模擬的世界,使用 NVIDIA Isaac Sim 在模擬環境中動手實踐構建、控制機器人并訪問數據的全過程。
在本課程中,您將會:
- 探索 Isaac Sim 界面:熟悉 Isaac Sim 界面的關鍵組成部分,包括面板、上下文菜單和工具欄。掌握這些基礎知識后,您將能高效地在模擬環境中構建和管理機器人模型。
- 構建一個簡單的機器人模型:通過組裝底盤、輪子和關節等組件來構建一個基礎機器人。這包括創建可視網格并配置物理屬性,以在 Isaac Sim 中模擬真實的物理交互。
- 配置物理屬性:設置物理場景并應用必要的屬性,確保機器人能夠真實地與環境交互。這包括添加碰撞網格和地面平面,以準確模擬重力等物理力。
- 實現控制機制:使用 OmniGraph 和 ROS 2 創建機器人的控制系統,使其能夠動態移動和交互。這涉及設置差分控制器和關節結構,以有效管理輪子運動。
- 集成傳感器:通過添加如 RGB 攝像頭和 2D lidar 等傳感器來增強機器人的感知能力。配置這些傳感器以捕捉環境數據,使機器人能夠智能地感知和響應周圍環境。
- 將傳感器數據流傳輸到 ROS 2:建立從 Isaac Sim 到 ROS 2 的數據流傳輸工作流,以便在 RViz 中實時可視化與分析。這包括設置 ActionGraphs 并使用 ROS 2 Bridge 擴展,實現平臺之間的無縫通信。
本課程面向初學者和具備一定機器人經驗的學習者,幫助您掌握使用 Isaac Sim 的關鍵知識和技能。我們鼓勵您積極參與課程中的實踐活動和練習,以加深學習體驗。
搭建一個簡單的機器人
模塊概覽
在本模塊中,您將學習如何使用 Isaac Sim 構建一個簡單的機器人。您將學會瀏覽界面、創建并配置基礎組件(如底盤和輪子),并設置物理屬性以模擬真實的運動。完成本模塊后,您將掌握構建能與環境交互的機器人模型的基礎知識。
學習目標
- 掌握 Isaac Sim 界面的導航操作,便于高效管理模擬過程。
- 創建可視網格并為基礎幾何體啟用物理屬性。
- 配置層級結構以組織機器人組件。
- 應用旋轉關節以實現輪子的轉動。
- 通過添加驅動力來模擬機器人的運動。
瀏覽 Isaac Sim 界面
我們將從引導您啟動 Isaac Sim 開始,帶您熟悉其用戶界面,包括面板、上下文菜單和工具欄等關鍵組成部分。您將學習如何瀏覽視口,并了解默認場景的設置,包括像?World?和?defaultLight?這樣的原始元素(prims)。此外,您還將探索 Create 菜單,學習如何添加新資產,并訪問 Isaac 示例,了解 Isaac Sim 的各種功能。
完成本模塊后,您將能夠高效管理模擬內容,并為后續模塊中構建第一個機器人模型做好準備。
在開始之前,請確保您已在工作站上安裝了 Isaac Sim。
從 Launcher 啟動
- 首先打開?Omniverse Launcher,然后在?Library?標簽頁中選擇 Isaac Sim 應用。
提示
如果您尚未安裝 Isaac Sim,可以在 Launcher 的 Exchange 標簽頁中進行安裝。
- 點擊?Launch?按鈕啟動應用程序。
- 在本模塊中,請確保未啟用 ROS Bridge 擴展。
- 我們將在后續章節中講解如何訪問數據時再啟用此功能。
界面結構
Isaac Sim 的界面由幾個關鍵組成部分構成:
-
- 面板:這些面板是可自定義的,可以調整大小、停靠、取消停靠、添加或移除。主要面板包括 Stage(場景樹)、Properties(屬性面板)和 Viewport(視口)。
- 右鍵菜單:在視口或場景中右鍵點擊,可以訪問多種操作和工具。
- 工具欄:位于頂部,提供快捷方式用于創建新對象、運行模擬以及訪問擴展管理器等常用功能。
場景中的默認原始體(Prims)
啟動 Isaac Sim 后,默認場景中已經包含了一些原始體(prim),例如?World?和?defaultLight,您可以在?Stage?面板中看到它們。
提示
Isaac Sim 使用的是 OpenUSD(通用場景描述)文件框架。如果您還不熟悉 OpenUSD,可以通過我們的?OpenUSD 學習課程?了解核心概念,例如 prim、stage 和 xform 等。
Create 菜單
這個菜單可以讓我們向場景中添加新的原始體(prim)和資產。它包含了創建基礎形狀(如立方體、球體)、導入機器人模型,以及設置如平面網格等環境選項。
Isaac 示例
Examples?菜單中包含了一系列演示示例,展示了 Isaac Sim 的實際用法。
-
- 這些示例涵蓋了如使用 ROS/ROS 2、操控對象、以及包含多個機器人的場景等功能。
瀏覽視口
- 移動:按住鼠標右鍵并使用 WASD 鍵在視口中控制相機前后左右移動。
- 按住鼠標右鍵并使用 Q 和 E 鍵可以控制相機上下移動。
- 旋轉:按住鼠標右鍵并拖動,可旋轉相機視角。
- 縮放:滾動鼠標滾輪,或按住 Alt 鍵同時點擊右鍵可實現場景的放大和縮小。
- 平移:按住鼠標中鍵并拖動,可水平或垂直平移相機視角。
通過理解這些組件以及如何操作 Isaac Sim 界面,您將能夠高效地創建和管理模擬場景。
構建一個簡單的機器人
現在我們已經能夠熟練操作 Isaac Sim 界面,接下來將在 Isaac Sim 中構建一個基礎的機器人模型。本節將引導您創建機器人底盤的可視網格,并添加輪子和關節等基本組件。您將學習如何啟用物理屬性,以模擬真實的運動和交互,從而使機器人能夠有效地在環境中移動。
完成本節后,您將擁有一個可運行的機器人模型,為后續模塊中的功能拓展和控制機制打下基礎。
創建可視網格
首先在場景中創建一個立方體。
- 選擇?Create > Mesh > Cube?來在場景中生成一個立方體。
提示
此立方體是一個可視網格,也就是我們在視口中看到的對象。但它目前還不是一個物理對象。
啟用場景中的物理效果
- 點擊?Play?按鈕以開始物理模擬。
- 您會發現什么都沒有發生,這是因為立方體還不是物理對象,也沒有添加碰撞體。
- 要啟用物理效果,請前往?Create > Physics > Physics Scene。
- 這將為模擬提供重力等必要的物理機制。
- 查看物理場景的默認屬性,可以看到重力設置為?
Earth Gravity
,在 Isaac Sim 中,上下方向對應的是?Z
?軸。- 您可以參考視口左下角的坐標軸指示器來確認方向。
為立方體添加物理屬性
- 再次點擊?Play,您會發現依然沒有反應。
- 這是因為場景中雖然已經啟用了物理效果,但立方體本身仍然不是一個物理對象。
- 為了解決這個問題,在?Stage?窗口中右鍵點擊?cube,然后選擇?Add > Physics > Rigid Body with Colliders Preset。
- 可視網格與碰撞網格的區別在于:可視網格是我們在視口中看到的形狀,而碰撞網格用于定義物體如何與其他物體交互,以及其他物體如何響應它。
- 點擊?Show?圖標,然后選擇?Show by Type > Physics > Colliders > Selected。
- 此時我們就可以看到立方體上的綠色網格,它表示碰撞網格的范圍。
使用地面平面進行物理模擬
- 點擊?Play?觀察發生了什么。
- 您會看到立方體無限下落,因為場景中還沒有地面平面來阻止它。
- 為了防止立方體一直下落,我們需要添加一個地面平面。這個平面會無限延伸,能阻止所有物理對象穿過它。
- 通過?Create > Physics > Ground?plane 添加地面平面。
- 您會注意到可視網格有邊界,但碰撞網格是無限延伸的。
- 展開?GroundFloor?的 xform,找到其中的?CollisionMesh?和?CollisionPlane。
- 將?cube?移動到地面平面上方。請記住 Isaac Sim 中的默認單位是米(m),所以可以將立方體上移 1 米。
- 最終模擬:再次點擊?Play。
- 您會看到立方體在接觸地面平面時停止下落,這就是我們在物理模擬中所期望的交互效果。
其他說明
-
- 嘗試更改物理場景屬性中的重力方向,觀察它對模擬結果的影響。
關于導入資產的提示:
在將資產導入 Isaac Sim 時,不同的導入器會帶入不同的數據。例如,URDF 導入器會包含預設的物理屬性數據,而 Isaac Sim 導入器只會導入可視數據。在使用不同類型資產時,務必牢記這一點。
添加四個輪子
接下來,我們將為簡單機器人添加輪子,并配置它們以實現運動。您將從準備底盤開始,了解層級結構在組織機器人組件中的重要性。然后,您將創建并放置輪子,確保它們正確對齊并附著在機器人本體上。您還將為輪子添加物理屬性,使其能夠與環境交互。最后,您將配置旋轉關節以實現轉動,并施加驅動力來模擬輪子的推進效果。
完成本節后,您的機器人將配備可運作的輪子,準備好在后續模擬中實現動態移動。
準備底盤
-
- 確保立方體位于世界原點?
(0, 0, 0)
。這個立方體將作為我們機器人的主底盤。 - 將立方體縮放為?
2, 1, 0.5
。X 方向設置為 2,是為了容納前后輪子。
- 確保立方體位于世界原點?
理解層級結構在構建復雜模型中的重要性,有助于更好地組織對象,也方便后續的變換與修改。
創建機器人 Xform 并添加底盤
-
- 在?Stage?面板中右鍵點擊,選擇?Create > Xform?創建一個 xform,它將作為我們機器人的父節點。
- 雙擊新建的?xform,將其重命名為?SimpleRobot。
- 將底盤(立方體)拖拽到?Stage?中的?SimpleRobot?xform 下,使其成為其子元素。
- 選中?SimpleRobot?xform,在?Properties?標簽頁中找到?Transform?屬性。
- 將?SimpleRobot?在 Z 方向上抬高?1。
- 您會看到底盤隨 xform 一起抬升,這是因為變換會作用于?SimpleRobot?xform 中的所有 prim,它起到了容器的作用。
- 將底盤本體的高度值設置為?0,以校正位置。
親子層級關系 (Child-Parent Relationships)
如前一步驟所述,SimpleRobot 的變換節點 (xform) 是一個容器。它在場景層級 (stage) 中創建了一種父子層級關系。請理解層級結構中父子關系的重要性。這種關系使得層級內對象的管理和變換操作更加便捷。
創建并定位車輪 (Creating and Positioning the Wheels)
- 創建車輪: 在場景 (Stage) 面板中,右鍵點擊 SimpleRobot,選擇 創建 (Create) > 網格 (Mesh) > 圓柱體 (Cylinder) 來創建一個車輪。
- 調整方向與大小: 在變換屬性 (transform properties) 下,將其繞 X 軸旋轉 90 度,并將其縮放比例設置為 0.75, 0.75, 0.25。
- 定位車輪: 將車輪平移 (Translate) 至位置 0.5, 0.75, 0。此操作將該車輪相對于世界坐標軸和機器人主體進行定位。
- 重命名車輪: 在場景面板 (Stage panel) 中右鍵點擊該圓柱體,選擇 重命名 (Rename),將其命名為 Front_Left_Wheel(左前輪)。
- 復制車輪: 復制 Front_Left_Wheel 以創建另外三個車輪。可以通過右鍵點擊并選擇 復制 (Duplicate),或在選中該圖元 (prim) 時按鍵盤快捷鍵 Ctrl+D 來實現。
- 重命名其他車輪: 根據各自的位置將每個車輪重命名為 Front_Right_Wheel(右前輪)、Rear_Left_Wheel(左后輪)、Rear_Right_Wheel(右后輪)。
- 確保父子關系: 確保所有車輪都是 SimpleRobot 變換節點 (xform) 的子對象 (children)。
為車輪添加物理屬性并進行模擬 (Adding Physics to the Wheels and Simulating)
- 添加剛體物理: 選中所有車輪,右鍵點擊,在 添加 (Add) 菜單下選擇 帶碰撞預設的剛體 (Rigid Body with Collision Preset)。
- 確認碰撞網格: 選中車輪后,可以看到碰撞網格 (collision meshes) 現在已顯示出來。
- 運行模擬: 按下 播放 (Play) 按鈕,觀察車輪如何在重力作用下也掉落至地面。
準備關節 (Preparing the Joints)
車輪設置完成后,我們可以通過配置使車輪能夠運動的關節來增強 SimpleRobot。本節將指導您選擇和設置旋轉關節 (revolute joints),這種關節允許旋轉運動,非常適合車輪。您將學習如何通過調整軸線和旋轉來正確配置這些關節,確保它們與車輪的方向對齊。此外,您將為后輪創建角驅動 (angular drives) 以模擬推進力,并設置速度和阻尼等參數以實現穩定控制。
完成本節后,您的機器人將擁有功能齊全的關節,準備好在仿真中動態移動。
創建旋轉關節 (Creating Revolute Joints)
- 選擇一個車輪。 注意我們需要將關節放置在 Y 軸上。
- 旋轉關節允許圍繞單軸進行旋轉運動,這非常適合車輪。
- 創建旋轉關節:
- 首先選擇父物體 Cube。
- 然后,按住 Ctrl 鍵選擇子圖元 (Front_Left_Wheel)。
- 右鍵單擊并選擇 創建 (Create) > 物理 (Physics) > 關節 (Joint) > 旋轉關節 (Revolute joint)。
- 提示: 按住 Ctrl 鍵可以同時選擇兩者。
- 重要: 請記住先選擇 Cube,然后再選擇車輪,以便關節能夠正確設置自身。
配置旋轉關節 (Configuring the Revolute Joint)
- 注意: 默認值是不正確的。默認軸線設置為 X,但我們需要將其更改為 Y。
- 將關節軸線更改為 Y。 觀察可視化效果現在指向上方。
- 我們需要手動設置關節的局部旋轉 0 (local rotation 0),使其與圖元 (prim) 的方向匹配。
- 將 local rotation 0 設置為 0, 0, 0。
- 觀察: 旋轉關節現在與車輪的方向對齊了。放大關節并注意紅色的 X 箭頭已正確對齊,但藍色的 Z 箭頭沒有對齊。
- 將局部旋轉 1 (Local Rotation 1) 的值設置為 -90, 0, 0 以糾正不匹配。
- 取消選擇并重新選擇關節以查看更新。
- 確保所有線條都沿其正確的方向。
- 注意: 我們可以忽略箭頭的指向方向。
- 重命名旋轉關節 (RevoluteJoint),使其與所連接車輪的名稱相匹配,例如 Front_Left_Joint。
創建剩余關節 (Creating the Remaining Joints)
- 一次創建一個關節。
- 首先選擇主體 (body),然后選擇下一個車輪。
- 使用與第一個關節相同的參數創建新關節。
- 完成后,將機器人向下移動到地平面 (ground plane)。
為后輪添加驅動力 (Adding a Drive Force to the Rear Wheels)
我們將只為后輪添加驅動力,因為后輪是驅動機器人的兩個輪子。
- 右鍵單擊后輪的關節,選擇 添加 (Add) > 物理 (Physics) > 角驅動 (Angular Drive)。
- 設置驅動的速度 (velocity)。 這里重要的屬性是阻尼 (damper)。將其設置為 10,000。
- 為后輪選擇較大的阻尼值 10,000 是為了實現精確的速度控制、減少振蕩并確保穩定性。
- 將目標速度 (target velocity) 設置為 50。
- 為另一個后輪重復此操作。
模擬機器人 (Simulating the Robot)
- 按下 Play 按鈕,觀察機器人向前移動。
- 挑戰:
- 如何讓機器人準備轉彎?嘗試將一個車輪的目標速度設置為正值,另一個設置為負值。
故障排除 (Troubleshooting)
- 如果出現問題,請檢查車輪是否低于主體 (body) 以及關節是否設置正確。否則,機器人會被拖行。
- 調試時,請仔細檢查您的參數以確保數值正確。一個數值錯誤就可能導致奇怪的結果。
復習
在本模塊中,您已經成功在 Isaac Sim 中構建了一個簡單的機器人。您學習了如何操作界面,創建底盤的可視網格,并啟用了物理效果來模擬真實的交互。您還學會了配置層級結構,并為輪子添加了轉動關節,最終完成了一個功能完整的機器人模型。
學習目標
- 掌握 Isaac Sim 的界面導航,熟悉各個面板和工具。
- 創建可視網格,并添加物理屬性來模擬交互。
- 配置機器人模型中的層級結構。
- 應用轉動關節
Quiz
5/5 points (graded)
以下哪種操作可以讓您在 Isaac Sim 的視圖中向前移動攝像機?
按住右鍵并拖動
按住右鍵的同時使用 WASD 鍵
按住左鍵的同時使用 Q 和 E 鍵
按鍵盤上的向上鍵
正確
解釋
在 Isaac Sim 中,按住右鍵并使用 WASD 鍵可以讓攝像機在視圖中前后左右移動,這是在模擬環境中導航的關鍵方式。
為了讓一個立方體在物理模擬中與其他物體發生交互,必須為其添加什么?
可視網格
碰撞網格
紋理
光源
正確
解釋
碰撞網格定義了物體在模擬中如何與其他物體發生物理交互。雖然可視網格負責呈現外觀,但只有碰撞網格才能讓物體在場景中產生實際的物理作用。
在 Isaac Sim 中構建機器人時,使用層級結構的重要性是什么?
它確保所有組件在視圖中可見。
它會自動將物理屬性應用到所有子對象。
它可以減少模擬時間。
它有助于組織組件并簡化變換操作。
正確
解釋
在 Isaac Sim 中,層級結構對于組織復雜的機器人組件至關重要。通過將相關組件歸在父對象下,可以更方便地進行縮放、移動等變換操作。
在 Isaac Sim 中,將轉動關節應用到機器人的輪子上,主要作用是什么?
允許輪子繞固定點旋轉
使輪子上下移動
鎖定輪子
在模擬中改變輪子的形狀
正確
解釋
轉動關節允許物體圍繞單一軸旋轉,這是實現輪子運動的關鍵。該類型的關節常用于模擬車輛或機器人輪子的旋轉行為。
為了模擬后輪驅動機器人的前進運動,需要對后輪進行什么設置?
增加后輪的重力
改變輪子尺寸以增加摩擦力
移除前輪的碰撞網格
添加帶有速度控制的角驅動
正確
解釋
要模擬輪子驅動,需要在后輪上添加角驅動,通過控制其旋轉速度實現前進或后退,從而模擬現實中的驅動機制。
Show answer
控制機器人
模塊概覽
在本模塊中,您將學習如何使用?Isaac Sim?的?OmniGraph?來控制您的?SimpleRobot,并為其配置鍵盤輸入控制功能。您將設置一個差速控制器來管理輪子運動,并探索關節機制的概念,以確保物理交互的準確性。
完成本模塊后,您將能夠動態且高效地控制機器人運動。
學習目標
- 使用?OmniGraph?實現差速控制器?來管理機器人的移動。
- 配置關節機制,以實現準確的物理交互。
- 整合鍵盤控制,實現對機器人的手動操控。
- 分析?OmniGraph?節點,理解它們在控制機器人中的作用。
- 模擬機器人運動,并排查出現的問題。
差速控制器
雖然?SimpleRobot?已經能動了,但現在還只能靠手動控制。接下來我們將實現并配置一個差速控制器,用于在?Isaac Sim?中管理機器人的運動。本模塊將引導您完成關節機制的設置,確保物理交互能夠準確模擬。您將使用?OmniGraph?來創建差速控制器,并設置輪子的半徑和間距,以優化移動效果。此外,您還將探索用于控制的?OmniGraph?節點,調整參數以實現更靈活的機器人行為。
完成本節后,您將擁有一個完整可用的控制系統,使機器人能夠在模擬中精確導航。
提示
本課程不會深入講解?OmniGraph,但如果您想了解更多內容,請參考?OmniGraph 官方文檔。
關節機制的概念
關節機制(Articulations)使物理系統能夠正確地與機器人的網格和關節進行交互。它對于模擬真實的運動和交互非常關鍵。
設置控制器
在創建控制器之前,必須先確保關節機制(articulations)已經創建,這是非常重要的。這樣才能確保控制器能正確地與已建立關節的機器人進行交互。
- 要為機器人添加關節機制,請右鍵點擊?SimpleRobot?的?xform,選擇?Add > Physics > Articulation Root。
- 在菜單欄中,打開?Isaac Utils,選擇?Common Omnigraphs,然后點擊?Differential Controller。
我們將使用?OmniGraph?——?Omniverse?的編程框架,來控制機器人。
配置差速控制器
一個新的?差速控制器(Differential Controller)?窗口將會顯示出來。
- 保留?路徑(path)?為默認值,并將?SimpleRobot?添加到?RobotPrim。
- 根據輪子的直徑設置?輪子半徑(wheel radius)(例如,直徑為 0.75,則半徑為 0.375)。
- 將兩個輪子之間的?間距(distance)?設置為?1.5。
- 指定我們希望控制器控制的具體關節。由于我們希望由后輪驅動機器人,因此請在對應字段中填入那兩個后輪關節的名稱。
- 點擊?OK。
理解 OmniGraph
您會在?Stage?窗口中看到一個新的?Graphs?文件夾,里面包含了名為?differential_controller?的?OmniGraph。
- 右鍵點擊該?graph?并將其打開。圖中包含四個節點,我們來逐一了解它們的作用:
- On Playback Tick:?這個節點會在每一幀執行,向后續節點發送信號,驅動它們進行設定的計算。
- Differential Controller:?這個節點會根據輸入值計算機器人的速度指令。左側的?pin?可以接入其他節點輸出的值,右側是該節點計算后的輸出結果。
- Articulation Controller:?這個節點根據?Differential Controller?的輸出結果控制機器人的關節向前或向后移動。
- MakeArray:?這個節點允許我們為關節名稱添加任意數量的值。
測試控制器
- 點擊?播放(play),您會發現機器人保持靜止,因為在?差速控制器(Differential Controller)?中設置的?期望線速度(Desired Linear Velocity)?是?0。
- 打開?Differential Controller,調整?Desired Linear Velocity?或?Angular Velocity?來讓機器人移動。
- 保持數值較小,例如設置為?1?可以前進,-1?則向后移動。
關于物理材質的提示:
在控制機器人移動時,您可能會注意到它像是碾過東西一樣顛簸,這是因為輪子在地面上打滑。這是由于還沒有設置物理材質,當前輪子和地面使用的是相同的材質。這個部分將在后續課程中講解。
為了避免每次都手動輸入這些數值,我們將在下一節設置鍵盤控制機器人移動。
使用 ActionGraph 配置鍵盤輸入
在差速控制器配置完成之后,我們可以通過整合鍵盤輸入進一步增強機器人的控制系統,使其具備動態控制能力。本節將引導您使用一個預設的包含鍵盤控制功能的?OmniGraph?開始配置。我們將對差速控制器進行設置,使其支持使用?W、A、S、D?鍵對機器人進行手動操作。
通過在?ActionGraph?中設置輸入節點,我們可以讓機器人響應鍵盤指令,從而實現在模擬環境中的精準導航與交互。完成本節后,您將擁有一個強大的控制系統,能夠通過鍵盤輸入直觀地操作機器人。
為機器人添加鍵盤控制
- 刪除之前創建的簡單?OmniGraph。我們將用一個包含鍵盤控制功能的全新預設圖替代它。
- 導航到?Isaac?菜單,選擇?Common OmniGraphs,然后點擊?Differential Controller。
配置差速控制器
- 將?SimpleRobot?添加到?robot prim?中。
- 這一步非常關鍵,就像?articulation root?一樣重要。differential controller?會在這里尋找關節,以便為其提供速度數值。
- 將?輪子半徑(wheel radius)?設置為?0.375,兩個輪子之間的?距離(distance)?設置為?1.5。
- 將?rear_right_joint?和?rear_left_joint?添加到可控制的關節列表中。
- 將?Use Keyboard Control?設置為?true(啟用鍵盤控制)。
探索新的 OmniGraph
- 右鍵點擊新創建的?OmniGraph,然后打開它。
雖然這個圖中包含了更多節點,但右側的終端節點與之前介紹的相同。新增的部分包括:
-
- 輸入節點(Input Nodes):?左側新增了四個輸入節點,分別監聽鍵盤上的?W、A、S?和?D?鍵的按下操作。
- 每個輸入節點都可以添加一個主鍵和一個組合鍵。當您按下這些鍵或組合鍵時,數據將被發送到后續節點,生成不同的數值供控制器使用。
模擬場景
- 點擊?播放(play)?以開始模擬場景。現在,您可以通過鍵盤來控制機器人的移動。
提示
您可以通過修改?Constant Double?節點來調整每次按下鍵盤時增加的線速度和角速度數值。
回顧
在本模塊中,您成功使用 OmniGraph 設置了一個差速控制器,從而實現了對 SimpleRobot 的移動控制。您配置了關節結構,以確保物理交互的真實感,并整合了鍵盤控制以實現手動操作。通過分析 OmniGraph 節點,您深入了解了它們在管理機器人行為中的作用。
學習目標
- 實現差速控制器來控制輪子的移動。
- 配置關節結構以實現真實的物理交互。
- 整合鍵盤控制以實現手動操作機器人。
- 分析 OmniGraph 節點及其功能。
- 模擬并排查機器人運動問題。
在下一個模塊中,您將為 SimpleRobot 添加傳感器,使其能夠更智能地與環境交互。
Quiz
5/5 points (graded)
在 Isaac Sim 中,差速控制器的主要作用是什么?
用來調整機器人的外觀
用來模擬重力作用在機器人上
用來管理機器人的輪子旋轉與移動
用來控制模擬中的攝像機移動
正確
解釋
差速控制器用于計算并管理機器人輪子的速度,根據輸入值實現可控的移動。它通過控制輪子轉動,確保機器人協調移動。
為什么在 Isaac Sim 中,在設置控制器之前需要先配置關節結構?
關節結構允許對機器人進行手動控制。
關節結構確保關節與網格之間的物理交互是準確的。
關節結構可以讓機器人移動更快。
關節結構只用于視覺效果。
正確
解釋
關節結構定義了關節與網格之間的物理交互方式,這對實現逼真的模擬至關重要。如果沒有正確配置關節結構,控制器將無法準確管理機器人的運動。
如何通過鍵盤在 Isaac Sim 中控制機器人?
在差速控制器中將 "Use Keyboard Control" 設置為 true
給機器人添加一個新的碰撞網格
增大輪子的半徑以提升操控性
在設置菜單中啟用 "Use Keybaord Control"
正確
解釋
要通過鍵盤實現手動控制,需在差速控制器中將 "Use Keyboard Control" 設置為 true。這樣,按下 W、A、S、D 等按鍵時就能在模擬中控制機器人的移動。
在 OmniGraph 中,哪個節點根據輸入值計算機器人的速度指令?
On Playback Tick
Articulation Controller
Differential Controller
MakeArray
正確
解釋
Differential Controller 節點負責根據諸如線速度或角速度等輸入值計算速度指令,并將這些指令發送給像 Articulation Controller 這樣的節點以控制機器人移動。
如果按下播放后機器人沒有移動,可能的原因是什么?
差速控制器中的線速度值設為 0
輪子沒有添加碰撞網格
沒有將關節根節點添加到 SimpleRobot 中
沒有創建地面平面
正確
解釋
以下每個問題都可能導致機器人無法移動:
A) 如果線速度設置為 0,輪子不會前進,機器人將停在原地。
B) 如果輪子沒有碰撞網格,就無法與環境交互,因此不會移動。
C) 如果沒有添加關節根節點,控制器就無法正確管理機器人的關節,導致運動失敗。
D) 如果沒有地面平面,機器人可能會無限下墜,或無法與環境正常交互。
Show answer
添加傳感器
模塊概覽
在本模塊中,您將為?SimpleRobot?增加傳感器,使其具備與環境交互的能力。您將學習如何添加?RGB?和二維激光雷達(2D lidar)傳感器,配置它們以進行數據采集,并設置可視化工具來觀察傳感器輸出。
完成本模塊后,您的機器人將具備先進的感知能力,為更智能的交互打下基礎。
學習目標
- 安裝 RGB 傳感器,并配置其參數以實現最佳數據采集效果。
- 集成 2D 激光雷達傳感器,并設置可視化工具以監控其輸出。
- 配置傳感器安裝方式,確保位置正確、功能正常。
- 使用多視圖窗口?實時分析傳感器數據。
- 排查常見問題,包括傳感器位置和數據可視化相關問題。
準備 SimpleRobot
現在我們已經可以使用鍵盤操控機器人在環境中移動了。接下來,我們要為集成高級傳感器打好基礎,在?SimpleRobot?上設置一個專門用于安裝傳感器的空間。本節將指導您創建一個?xform,作為各個傳感器組件的父級,從而確保它們可以跟隨機器人移動,并作為一個整體進行管理。您會將這個?xform?安裝在機器人機身的前上方,以便優化數據采集效果。此外,您還將添加一個縮小比例的立方體作為傳感器位置的可視化表示,確保不會被其他組件遮擋。
完成本節后,您的?SimpleRobot?將為傳感器集成做好充分準備,為后續模塊中的環境交互與數據采集奠定基礎。
創建并放置新的 Xform
- 右鍵點擊?SimpleRobot,創建一個新的?xform。
- 將其重命名為?Front_Sensor。
- 這個 Xform 將作為傳感器組件的父級,使其可以跟隨機器人移動,并便于統一管理。
- 將?Front_Sensor?xform 移動到機器人機身的前上方。
- 這個位置對需要朝前采集數據的傳感器來說非常關鍵。
- 右鍵點擊新的?Front_Sensor?xform,添加一個?Rigid Body。
- 我們之所以要為這個 xform 添加?Rigid Body,是為了讓它的子級原語能夠隨之一起移動。
已知問題
如果您無法將?Rigid Body?添加到某個 xform 上,請嘗試以下解決方法:
- 先將所有子級原語從該 Xform 下移除。
- 在所有子級原語移除后,再嘗試為該 Xform 添加?Rigid Body。
- 添加成功后,再將子級原語移回該 Xform。
添加可視化表示
- 為了直觀表示傳感器的位置,在?
Front_Sensor
?xform 下添加一個立方體。 - 將立方體縮放至?
0.1, 0.1, 0.1
。- 這個小尺寸可以確保它僅作為視覺標記存在,不會影響其他組件。
按照上述步驟操作后,您的?SimpleRobot?就已為傳感器集成做好準備了。這將讓您在仿真環境中輕松地添加和管理傳感器。
在接下來的部分中,我們將添加一個 RGB 傳感器,并在場景中引入障礙物來測試傳感器的功能。這個設置將幫助我們可視化機器人所“看到”的內容,以及它如何與環境進行交互。
添加 RGB 傳感器
在標準安裝座就位后,我們來添加一個 RGB 攝像頭傳感器,使其能夠從環境中捕獲視覺數據。本節將指導您完成傳感器安裝座的設置以及攝像頭的配置,以實現最佳放置位置和功能。您將學習如何正確放置攝像頭,確保其面向前方并捕捉機器人的行進路徑。此外,您還將探索可視化攝像頭視場角的方法,并通過在場景中添加障礙物來測試其功能。
至此,您的機器人將配備一個 RGB 傳感器,為后續模擬中更高級的交互提供寶貴的視覺輸入。
設置傳感器安裝底座
- 將之前添加的?立方體(cube)重命名為?Sensor_Mount。
- 它將作為安裝傳感器的基礎組件。
- 右鍵點擊?Sensor_Mount,添加一個?Rigid Body with Colliders Preset。
- 這一步確保傳感器底座可以在物理模擬中正確交互。
創建并定位攝像頭
- 右鍵點擊?Sensor_Mount?立方體,選擇?Create,然后創建一個新的?Camera。
- 這個攝像頭將作為 RGB 傳感器使用。
- 將攝像頭在?Y?軸方向上旋轉?-90?度,以確保其朝向前方。
- 將攝像頭重命名為?Robot_Camera,并將其放置在?Sensor_Mount?立方體的邊緣位置。
通過傳感器查看畫面
- 在視圖窗口頂部,打開?視角選擇(view selection)?菜單,在?cameras?下選擇?Robot_Camera,即可查看傳感器所捕捉到的畫面。
- 由于一開始畫面中內容不多,可以先切換回?Perspective?視角繼續操作。
添加障礙物
- 在場景中添加各種?原語(prims)(例如立方體、圓錐體、圓柱體)作為障礙物,以便通過傳感器觀察。
- 可以根據您的喜好隨意擺放它們!
- 添加完原語后,切換回?Robot_Camera?視角,觀察這些障礙物從機器人的視角是如何呈現的。
雙視口增強可視化效果
為了同時查看兩個視角,可以添加第二個視口。
- 在菜單欄中選擇?Window > Viewport > Viewport 2。
- 將一個視口設置為?Perspective?視角,另一個保持為?Robot_Camera。這樣您就可以異步查看兩個不同視圖。
完成以上步驟后,您的 SimpleRobot 現在已經安裝了一個基礎的 RGB 傳感器,您可以同時查看機器人本身的視角和傳感器的視角。接下來,我們將創建一個 2D 激光雷達傳感器。
配置2D激光雷達傳感器
在查看RGB傳感器生成的視角后,讓我們集成一個2D激光雷達傳感器,使機器人能夠更智能地感知環境并與之互動。本節將指導您完成為機器人添加激光雷達傳感器、正確安裝定位、以及設置可視化工具來監測其輸出的全過程。您將學習如何配置傳感器參數以實現最佳性能,并確保其能精準探測場景中的障礙物。
完成本節內容后,您的機器人將具備先進的感知能力,為未來仿真中更復雜的交互與數據分析做好準備。
警告:
本視頻包含頻閃效果或快速閃爍的圖像。
添加激光雷達傳感器
- 選中?Front_Sensor?xform 后,右鍵點擊或在頂部打開?Create?菜單。
- 在?Isaac?下選擇?Sensors,然后在?PhysXLidar?下選擇?Rotating。
- 這將為您的?SimpleRobot?添加一個二維激光雷達傳感器。
- 將?lidar?移動到?Sensor_Mount?立方體的頂部位置。
- 在場景中,激光雷達和攝像頭會顯示在同一個位置。
- 攝像頭有視野的可視化表示,而激光雷達只通過變換工具(transform gizmo)顯示其位置。
設置可視化
為了確認激光雷達是否正常工作,先停止仿真。
- 選中?lidar?后,向下滾動找到?Raw USD Properties,啟用 "Draw Lines" 和 "Draw Points"。
- 再次點擊?播放(play)?開始仿真。
- 您應該能看到調試用的線條圍繞傳感器旋轉,這說明它正在正常運行。
確保物體被傳感器檢測到
如果傳感器沒有檢測到任何物體,請記住我們使用的是物理型激光雷達(Physics lidar),它依賴于場景中的物體具有物理屬性。
- 在?Stage?窗口中選中所有障礙物?prims。
- 右鍵點擊并選擇?Add > Rigid Body with Colliders Preset。
- 再次點擊?播放(play)。
- 您現在應該能看到障礙物擋住了調試線,說明它們已被激光雷達成功檢測到。
調整激光雷達參數
如有需要,您可以在?Raw USD Properties?窗口中調整參數來減慢激光雷達的旋轉速度。減速有助于更清晰地觀察激光束打到哪些物體,但請記住,高效運行的激光雷達通常需要較快的旋轉。
在上方視頻中,您可以看到,減速后我們發現激光束打在了輪子上。我們可以將激光雷達稍微上移,再次運行仿真以避免這種情況。
保存場景
您的 SimpleRobot 現在已經安裝了 RGB 傳感器和 2D 激光雷達,并且已經在場景中進行了測試,確保它們能夠正常工作。
- 保存您的場景,然后關閉?Isaac Sim,準備在下一個模塊中重新打開以啟用 ROS 2。
通過以上步驟,您已經成功為 SimpleRobot 添加了 2D 激光雷達傳感器。這將使它能夠更好地利用高級感知能力與環境進行交互。
回顧
在本模塊中,您成功為 SimpleRobot 添加了傳感器,使其更容易“看到”并與環境交互。您安裝了一個 RGB 傳感器和一個 2D 激光雷達傳感器,配置了它們的設置,并設置了可視化工具來有效監控輸出。
學習目標
- 安裝了 RGB 傳感器并配置其用于數據采集。
- 整合了 2D 激光雷達傳感器并使用可視化工具監控其輸出。
- 配置了傳感器的安裝支架以確保合適的位置與功能。
- 通過雙視口分析實時傳感器數據。
- 排查與傳感器位置和可視化相關的問題。
在下一個模塊中,您將學習如何在 ROS 2 中訪問數據,使您能夠將 Isaac Sim 中的傳感器信息傳輸到外部應用程序進行進一步處理與分析。
Quiz
5/5 points (graded)
在 Isaac Sim 中,您應使用哪個菜單為機器人添加 RGB 相機傳感器?
Create > Camera
Edit > Preferences > Sensors
Tools > Add Sensor
Isaac > Sensors > Camera
正確
解釋
在 Isaac Sim 中添加 RGB 相機傳感器時,您需要右鍵點擊 "Front_Sensor" 的 XForm,然后選擇 Create > Camera。這會創建一個新的相機,用作 RGB 傳感器,從環境中捕捉視覺數據。
在 Isaac Sim 中,要可視化 2D 激光雷達傳感器的輸出,必須啟用什么?
在視口中啟用相機視角
增加輪子半徑以提升檢測能力
在 Raw USD 屬性中啟用 Draw Points 和 Draw Lines
添加一個檢測平面
正確
解釋
為了可視化 2D 激光雷達傳感器的輸出,您需要在該傳感器的 Raw USD 屬性中啟用 "Draw Points" 和 "Draw Lines"。這樣可以顯示表示已檢測物體的調試線條。
為什么在 Isaac Sim 中為傳感器組件創建 XForm 很重要?
它能通過調整視場角提升傳感器精度。
它允許傳感器作為一組跟隨機器人移動。
它可以防止傳感器受到重力影響。
它能自動為所有傳感器配置最佳性能。
正確
解釋
為傳感器創建 XForm 可以確保它們隨著機器人一起移動,便于成組管理傳感器,并保持它們相對于機器人的正確位置。
如何在 Isaac Sim 中同時查看機器人的視角和透視視圖?
打開兩個 Isaac Sim 實例
提高屏幕分辨率以獲得更清晰畫面
僅使用一個視口并手動切換視角
添加第二個視口,一個設置為 "Robot_Camera",另一個為 Perspective 視圖
正確
解釋
通過添加第二個視口,您可以讓一個視口顯示機器人 RGB 傳感器所見的畫面("Robot_Camera" 視角),另一個保持透視視圖,從而同時監控兩個不同視角。
如果激光雷達傳感器沒有檢測到障礙物,可能的原因是什么?
激光雷達傳感器安裝位置過高
障礙物沒有啟用物理屬性
場景中物體太多
激光雷達旋轉太快以至于無法檢測物體
正確
解釋
為了讓激光雷達傳感器能檢測到障礙物,場景中的物體必須啟用物理屬性。否則,激光雷達無法將它們識別為可交互的物理對象。
Show answer
訪問數據
安裝 ROS 2 Humble
在本模塊中,您將學習如何將?Isaac Sim?的傳感器數據流式傳輸至?ROS 2,從而實現高級的數據處理與可視化。您將搭建?ROS 2?環境,集成?ROS 2 Bridge?擴展,并配置?ActionGraphs?以實現數據流傳輸。完成本模塊后,您將能夠在?RViz?中可視化傳感器數據,并確保?Isaac Sim?與?ROS 2?之間的通信無縫銜接。
提示
本課程采用?原生 ROS 啟動方式(Running Native ROS),在 Ubuntu 系統上進行。請依照以下路徑的安裝指南操作:Running Native ROS > ROS 2 > Ubuntu 22.04 > Humble。
學習目標
- 安裝并配置 ROS 2 Humble?以實現與 Isaac Sim 的集成。
- 創建 ActionGraphs,用于將 RGB 和激光雷達數據流式傳輸至 ROS 2。
- 配置 ROS 2 Bridge?擴展,實現數據通信。
- 使用 RViz 可視化傳感器數據,實現實時監控。
- 排查常見問題,例如數據流傳輸與可視化相關的問題。
連接 Isaac Sim 與 ROS 2
我們現在需要稍作準備,為仿真環境集成?ROS 2?打下基礎,從而實現更強大的數據流傳輸與控制功能。本節將引導您配置工作空間,并以支持?ROS 2?的方式啟動?Isaac Sim,為機器人仿真與?ROS 2?應用之間的無縫通信做好準備。
完成本節后,您將可以通過?ROS 2?實現傳感器數據的流式傳輸與機器人控制,為更復雜的機器人項目奠定基礎。
為 ROS 2 集成做準備
現在我們已經在?SimpleRobot?上添加了傳感器,接下來要將數據從?Isaac Sim?流式傳輸到?ROS 2。在重新啟動?Isaac Sim?之前,我們需要確認系統中已正確安裝?ROS 2 Humble。
- 檢查 ROS 2 安裝情況:
- 訪問?ROS 2 Humble?安裝頁面,確認安裝步驟。
- 本課程使用的系統版本為?22.04。
- 請使用最適合您系統的安裝方式,通常在 Ubuntu 22.04 上建議使用 Debian 軟件包進行安裝。
- 請參考我們的?Isaac Sim 安裝文檔,了解更多安裝說明。
- 在安裝完 ROS 2 后,請安裝?vision_msgs_package,這是 ROS 2 Bridge 所必需的依賴包。
重新啟動 Isaac Sim 并啟用 ROS 2
- 在確認已安裝 ROS 2 后,重新打開 Isaac Sim,以便更改環境設置并啟用向 ROS 2 的數據流。
- 啟動 Isaac Sim 后,從 App Selector 打開一個終端。
- 通過運行以下命令來 source 您的 ROS 工作空間:?source /opt/ros/humble/setup.bash。
- 這條命令確保 ROS 2 環境被正確配置,從而能夠使用 ROS 2 命令。
- 在終端中運行一個簡單的?
ros2
?命令,以驗證 ROS 2 是否安裝成功。- 例如運行?
ros2 topic list
,您將看到一些默認的主題。我們將在后續課程中詳細介紹該命令。
- 例如運行?
- 使用終端通過以下命令啟動 Isaac Sim:?
./isaac-sim.sh
,加載過程可能稍久。
加載您的項目
- Isaac Sim 啟動后,通過菜單欄選擇?File > Open Recent?打開您在上一模塊中保存的項目文件。
- 如有需要,可以通過菜單欄選擇?Window > Viewport > Viewport 2?打開第二個視口。
- 根據項目需要設置您的視角視圖。
啟用 ROS 2 Bridge 擴展
- 前往?Window > Extensions?打開?Extension Manager(擴展管理器)。
- 搜索 "ROS2"。ROS 2 Bridge?擴展通常是默認啟用的,但如果尚未啟用,請現在啟用它。
- ROS 2 Bridge 擴展提供適用于機器人任務的?OmniGraph?節點。
- 啟用此擴展后,Isaac Sim?將能與?ROS 2?實現通信。
通過以上步驟,您已經完成?Isaac Sim?與?ROS 2?集成環境的準備工作,現可通過?ROS 2?實現傳感器數據流傳輸并控制機器人。
訪問 2D 激光雷達數據
在本課程的最后一節中,我們將把激光雷達傳感器的數據從?Isaac Sim?流式傳輸至?ROS 2,以實現更高級的可視化與分析。本節將指導您創建一個專門用于激光雷達數據的?ActionGraph,配置節點以讀取并發布激光束數據,并將數據與仿真的時間戳同步。您將連接這些節點以確保數據流的準確性,并調整相關設置,在?RViz?中高效可視化雷達輸出。
完成本節后,您將能夠通過激光雷達數據監控機器人與環境的交互,從而在仿真環境中提升機器人的感知能力。
設置激光雷達數據流
<div class="
設置激光雷達數據流
提示
在繼續之前,請確保 Isaac Sim 中的仿真已停止。
- 創建一個新的?ActionGraph,并將其重命名為?ROS2_LidarStream。
- 向圖中添加以下?節點(Nodes):
- Isaac Read lidar Beams Node:?搜索并添加該節點,用于讀取激光雷達傳感器的數據。
- ROS 2 Publish Laser Scan Node:?添加該節點,將激光雷達數據發布到 ROS 2。
- Isaac Read Simulation Time Node:?添加該節點,用于同步仿真時間戳。
- <
配置節點
首先,我們來配置?Isaac Read Lidar Beams Node。
- 通過點擊 "Add Target" 并搜索 "lidar",將?LidarPrim?目標設置為您的激光雷達傳感器。該節點將計算激光雷達的所有必要信息。
- 接著,將?Isaac Read Lidar Beams Node?的相關輸出連接至?ROS 2 Publish Laser Scan?節點的輸入:
- 將 "On Playback Tick" 連接至 Isaac Read Lidar Beams 節點。
- 將 "Isaac Read Simulation Time" 連接到 ROS 2 Publish Laser Scan 節點中的 Timestamp 輸入端。
- 在?ROS 2 Publish Laser Scan?節點中,如果您有多個傳感器,可以通過修改?TopicName?來更改所發送的傳感器名稱。
- 將?TopicName?改為?
scan_lidar
請記下 FrameID,例如 “sim_lidar”,它將在 RViz 可視化時使用。
警告:
本視頻包含頻閃效果或快速閃爍的圖像。
運行并在 RViz 中進行可視化
- 啟動仿真:在 Isaac Sim 中點擊?Play?開始數據流傳輸。
- 接下來驗證數據流是否正常。打開一個?終端?并運行以下命令以 source 工作空間:?
source /opt/ros/humble/setup.bash
- 運行?
ros2 topic list
?查看當前活躍的話題,包括激光雷達數據的 topic。 - 在終端中運行?
rviz2
?啟動 RViz。 - 在 RViz 中將?Fixed Frame?設為之前設置的?Topic?名稱(例如 "scan_lidar")。
- 在左下角窗口中點擊?Add,切換到?By Topic?標簽頁,選擇 "laser scan",點擊?OK?添加激光雷達可視化。
- 最后,觀察激光
駕駛與觀察
提示
在 RViz 中,您看到的是環境在靜止的機器人周圍移動,而不是機器人在環境中移動。
- 在 Isaac Sim 中使用鍵盤控制機器人移動,并觀察環境中的障礙物變化。
完成以上步驟后,您已成功實現將 2D 激光雷達數據從 Isaac Sim 流式傳輸至 ROS 2,并通過 RViz 進行可視化。這使您能夠在機器人移動過程中實時監控其與環境的交互情況。
回顧
在本模塊中,您成功將 Isaac Sim 與 ROS 2 集成,實現了傳感器數據的流式傳輸以進行高級處理。您安裝并配置了 ROS 2 Humble,創建了用于 RGB 和?激光雷達數據傳輸的 ActionGraph,并在 RViz 中可視化這些數據。
學習目標
- 安裝并配置了 ROS 2 Humble?以配合 Isaac Sim 使用。
- 創建了 ActionGraph?來將 RGB 和激光雷達數據傳輸至 ROS 2。
- 配置了 ROS 2 Bridge 擴展?以實現無縫通信。
- 在 RViz 中可視化傳感器數據,增強了實時監控能力。
- 排查了與數據流和可視化相關的問題。
Quiz
5/5 points (graded)
要在終端驗證 ROS2 Humble 是否正確安裝,應運行哪個命令?
'ros2 --checkInstall'
'ros2 launch isaac_sim.launch'
'ros2'
'source /opt/ros/humble/setup.bash'
正確
解釋
運行簡單的命令 'ros2' 可以確認系統中是否已安裝 ROS2 Humble。這是在將其與 Isaac Sim 集成之前驗證 ROS2 是否設置正確的快速方法。
在 ActionGraph 中,哪個節點負責將機器人攝像頭的 RGB 數據傳輸到 ROS2?
Isaac Create Render Product
ROS2 Camera Helper
On Playback Tick
Isaac Read Simulation Time
正確
解釋
ROS2 Camera Helper 節點負責將機器人攝像頭的 RGB 數據流傳輸到 ROS2。它將攝像頭畫面連接到 ROS2,實現實時數據傳輸以供后續處理或可視化。
ROS2 Bridge 擴展在 Isaac Sim 中的作用是什么?
它直接控制機器人的移動。
它提升了模擬的視覺質量。
它通過 OmniGraph 節點實現 Isaac Sim 與 ROS2 之間的通信。
它允許向機器人添加更多傳感器。
正確
解釋
ROS2 Bridge 擴展提供了必要的 OmniGraph 節點,使 Isaac Sim 與 ROS2 之間能夠進行數據通信,從而實現像傳感器數據流傳輸這樣的無縫集成任務。
如何在 RViz 中可視化來自 Isaac Sim 的 RGB 攝像頭數據?
在終端使用 'ros2 topic echo /rgb'
在 RViz 中通過 By Topic 選項卡選擇 "Image",添加 Camera Display
在相機傳感器的 Raw USD 屬性中啟用 "Draw Points"
提高相機畫面的分辨率
正確
解釋
要在 RViz 中可視化 RGB 攝像頭數據,需要在顯示設置中通過 "By Topic" 選項卡選擇 "Image",添加 Camera Display。這可以實現對傳感器輸出的實時監控。
如果激光雷達數據在 RViz 中未正確顯示,可能的原因是什么?
相機的視場與激光雷達傳感器重疊
激光雷達傳感器朝向不正確
RViz 中的 FrameID 與 Isaac Sim 中激光雷達配置的 FrameID 不匹配
激光雷達旋轉速度太慢
正確
解釋
如果激光雷達數據在 RViz 中無法正確顯示,一個常見的問題是 RViz 中使用的 FrameID 與 Isaac Sim 中配置激光雷達時設置的 FrameID 不一致。確保兩者匹配對于正確可視化至關重要。
Show answer
總結
本課程教會了您在 Isaac Sim 中進行機器人仿真的基礎技能。繼續探索 Isaac Sim 中的各種可能性,不斷提升您的機器人相關知識。
學習目標
在本課程中,我們:
-
探索了 Isaac Sim 界面:熟悉了 Isaac Sim 界面的關鍵組件,包括面板、右鍵菜單和工具欄。這些基礎知識幫助您高效地在仿真環境中操作、構建和管理機器人模型。
-
構建了一個簡單的機器人模型:通過組裝底盤、輪子和關節等組件,構建了一個基礎機器人。這一過程包括創建視覺網格并配置物理屬性,以在 Isaac Sim 環境中實現真實交互。
-
配置了物理屬性:設置了物理場景并應用必要的屬性,確保機器人能與環境真實互動。這包括添加碰撞網格和地面平面,以準確模擬重力和其他力。
-
實現了控制機制:使用 OmniGraph 和 ROS 2 創建了機器人的控制系統,實現動態移動與交互。包括設置差速控制器和關節結構來有效管理輪子運動。
-
集成了傳感器:通過添加 RGB 相機和 2D 激光雷達等傳感器增強了機器人的感知能力。配置這些傳感器以采集環境數據,使機器人能智能地感知與響應周圍環境。
-
將傳感器數據流傳輸到 ROS 2:建立了 Isaac Sim 到 ROS 2 的數據傳輸工作流,實現了在 RViz 中的實時可視化與分析。包括設置 ActionGraph 及使用 ROS 2 Bridge
參見:
NVIDIA 深度學習培訓中心(DLI)| 在線實戰培訓