• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 3 月 19 日下午 2 點,鎖定 NVIDIA AI 網絡中文專場。立即注冊觀看
    自主機器

    將 Nav2 堆棧與 NVIDIA ISAAC ROS GEMs 集成

    ?

    NVIDIA GPU ROS GEMs 是一個 ROS 軟件包,用于優化基于人工智能的機器人應用程序,使其在 NVIDIA ISAAC 和 Jetson 平臺上運行。人們越來越有興趣將這些軟件包與 Nav2 項目集成,以幫助自主機器人在動態環境中成功導航。

    這項工作完全是在仿真中完成的,可以作為將機器人能力從仿真轉移到現實世界的起點( Sim2Real )。

    在這篇文章中,我將關注一個現實世界中的問題,即機器人因與倉庫中的叉車叉齒發生碰撞而受損。叉車是一種用于短距離搬運重物的工業卡車。它有一個被稱為尖頭(或叉子)的延伸部分,可以在物體下方滑動并提升物體。

    Two photos of standard forklifts, one with packages on the tines.
    圖 1 。叉車

    主要使用的機器人傳感器( lidar )可以檢測叉車的車身,但不能檢測靠近地面的叉齒。在這種情況下,還需要其他傳感器來檢測這些彈齒。在本項目中,您將在模擬中的機器人上使用兩個 RGB 攝像頭。來自這些相機的圖像用于使用 Isaac ROS stereo GEM .

    根據視差,立體寶石生成一個點云,其中包含有關相機視野中的所有對象在環境中的位置的信息。該信息用于更新導航節點,以便在可能發生碰撞時更改機器人的路徑。

    GIF of robot running into forklift tines.

    圖 2 。在 NVIDIA ISAAC Sim 中再現真實世界的問題:機器人與叉車叉齒相撞

    圖 3 顯示了該項目的基本工作流程。

    Diagram starting with NVIDIA Isaac Sim using sensor info for the ROS stereo GEM and using disparity and pointcloud to create the voxel_layer in Nav2.
    圖 3 。工作流程圖

    有關更多信息,請參閱 NVIDIA-AI-IOT/Nav2-with-Isaac-ROS-GEMs GitHub 回購協議。

    NVIDIA ISAAC 是的設置

    在 NVIDIA ISAAC Sim 卡中使用倉庫環境,其中包括 Carter robot 和叉車。按照 ROS2 導航示例 生成占用地圖,供 Nav2 堆棧使用,以避免貨架等靜態障礙物。創建占用地圖后,動態或移動障礙物(包括叉車和手推車)將添加到環境中。這是為了模擬現實世界,在沒有機器人知識的情況下,物體在環境中發生變化。

    重要的是要注意卡特機器人的左、右立體攝像機在NVIDIA ISAAC SIM 之間的偏移,以 NVIDIA ISAAC ROS 立體聲寶石來正確地產生視差。在開始模擬之前,確保 NVIDIA ISAAC Sim 卡中的 ROS2 bridge 已啟用,以便可以在 NVIDIA ISAAC Sim 卡之外傳輸 ROS2 消息。

    NVIDIA ISAAC ROS 立體聲寶石和導航 2

    Nav2 堆棧使用 全球和本地成本圖 引導機器人避開障礙物。本地成本圖根據環境中新的移動障礙物進行更新,并可以將激光掃描和點云作為機器人傳感器的輸入。

    由于激光雷達的激光掃描無法在真實場景中拾取叉齒,所以可以通過使用立體圖像中的點云來解決這個問題,這些點云會被傳遞到 Nav2 。這些點云是使用 NVIDIA ISAAC ROS 立體聲寶石產生的。

    Image of a forklift facing forward and a point cloud scattered in and around the tines.
    圖 4 。當機器人在叉車前面時,使用NVIDIA ISAAC ROS 立體聲寶石產生點云

    在圖 4 的右側,彈齒下方的淺藍色區域顯示, Nav2 本地成本地圖已經更新,以表示那里的障礙物,機器人現在可以避開。 NVIDIA ISAAC Sim 卡的圖像平均速率為 20 FPS ,而 stereo GEM 的點云圖像平均速率為 16 FPS 。

    stereo GEM 生成一個視差圖像,然后為機器人相機的左右圖像中看到的所有對象生成一個點云。使用 ISAAC ROS 分割 GEM?,可以過濾此差異以生成僅包含屬于感興趣對象(例如叉車叉齒)的點的點云。

    下一節將更詳細地解釋這種過濾。

    使用NVIDIA ISAAC ROS 分割 GEM 的視差濾波

    下面介紹了如何將基于合成生成數據訓練的深度學習模型與 NVIDIA ISAAC ROS 推理機結合使用。您可以實現同樣的目標:使用 GEMs 和 Nav2 堆棧,幫助機器人在模擬中避免叉車叉齒。

    但是,您沒有為機器人相機視野中的所有對象生成點云,而是只為叉車尖頭過濾并生成聚焦點云。

    Diagram now includes the segmentation GEM that creates a segmentation mask for disparity filtering.
    圖 5 。使用 NVIDIA ISAAC ROS 分割和立體寶石執行視差過濾的工作流程

    我使用了一個在叉車叉齒圖像上訓練的分割模型。 NVIDIA ISAAC ROS 分割 GEM 在模擬中從機器人獲取 RGB 圖像,并使用給定模型生成相應的分割圖像。

    任何模型都可以與此管道一起使用,以根據用例過濾特定對象。只需在感興趣的數據上生成( Replicator Composer )和訓練( TAO )即可!

    Real-world camera view and segmentation mask combine to create a point cloud for collision avoidance

    圖 6 。訓練模型根據機器人攝像頭的圖像以 39 FPS 的速度生成彩色分割圖像。 ( top left ) 機器人的左攝像頭視圖。 ( top right ) 分割掩模; ( bottom ) 叉車齒的過濾點云。

    原始分割圖像中的每個像素代表圖像中該位置的對象的類別標簽。例如,知道感興趣的標簽,如果 2 代表叉齒,則在立體寶石生成的相應視差圖像中將非感興趣點設置為 invalid 。結果生成的點云不包括這些點。這有助于減少點云中的噪波。

    Image of a forklift facing forward and a point cloud centered on the tines.
    圖 7 。視差濾波后生成的點云

    與圖 4 中的點云不同,它只包含屬于叉車叉齒的點。

    ROS 域 ID

    隨著NVIDIA ISAAC ROS GEMS 在容器內運行, NVIDIA ISAAC SIM 在主機上運行,必須確保 ROS 主題可以在主機和容器之間傳遞。

    為此,請將所有進程的 ROS 域 ID 設置為相同的編號。使用相同域 ID 的所有 ROS2 節點都可以通信;那些使用不同域 ID 的人不能。有關更多信息,請參閱 The ROS_DOMAIN_ID

    筆記

    本項目中介紹的工作流程避免了激光雷達和攝像頭可以檢測到的障礙物。對于太小或被遮擋的障礙物,探索其他傳感器。

    該方法對視差計算和由此產生的點云質量非常敏感。由于計算視差是一項具有挑戰性的任務,因此可能會得到噪聲點云,從而導致 Nav2 錯誤地更新成本圖。

    視差濾波取決于分割模型的性能。無法生成精確分割遮罩的模型會導致視差和點云過濾效果不佳。

    ?

    0

    標簽

    人人超碰97caoporen国产