10. isaacsim4.2教程-RTX Lidar 傳感器

1. 前言

RTX Lidar 傳感器

Isaac Sim的RTX或光線追蹤Lidar支持通過JSON配置文件設置固態和旋轉Lidar配置。每個RTX傳感器必須附加到自己的視口或渲染產品,以確保正確模擬。

重要提示:
在運行RTX Lidar仿真時,如果你在Isaac Sim UI中停靠窗口,可能會導致崩潰。請在重新停靠窗口之前暫停仿真。

學習目標

在本示例中,你將:

  • 簡要了解如何使用RTX Lidar傳感器。

  • 創建一個RTX Lidar傳感器并將其附加到Turtlebot3機器人上。

  • 將傳感器數據發布到ROS,作為LaserScan和PointCloud2消息。

  • 使用菜單快捷方式創建RTX Lidar傳感器發布器。

  • 將所有部分結合起來并在RViz中可視化多個傳感器。

開始之前

注意:
在運行Isaac Sim之前,請確保在終端中對ROS進行source操作。如果你的bashrc中已經包含了source ROS命令,那么可以直接運行Isaac Sim。

前提條件

  • 完成ROS相機教程。

  • 啟用了ROS Bridge,并且roscore正在運行。

  • 可選:探索RTX Lidar傳感器的內部工作原理,學習它們的工作方式,使用它們的RTX Lidar節點,以及如何獲取RTX Lidar合成數據。

  • 完成URDF導入:Turtlebot教程,以便加載并讓TurtleBot正常運行。

2.?添加RTX Lidar發布器

2.1 建圖

  1. 添加Lidar傳感器到機器人:

    1. 轉到 Create > Isaac > Sensors > RTX Lidar > Rotating,然后將該傳感器的名字從 Rotating 更改為 Lidar

  2. 將Lidar傳感器與機器人對齊:

    1. 將Lidar傳感器拖到 /World/turtlebot3_burger/base_scan 下,以確保Lidar傳感器與機器人的Lidar單元重合。

    2. 在Property面板中的Transform字段中,將位移設置為零,確保傳感器的位置正確對齊。

  3. 通過Omnigraph節點連接ROS橋和傳感器輸出:

    1. 打開一個可視化腳本編輯器,轉到 Window > Visual Scripting > Action Graph

    2. 向圖中添加以下節點:

      Action Graph Layout

      1. On Playback Tick節點:負責在點擊Play后觸發所有其他節點。

      2. Isaac Create Render Product節點:在輸入相機目標prim中選擇步驟2中創建的RTX Lidar。

      3. ROS1 RTX Lidar Helper節點:此節點負責發布來自RTX Lidar的LaserScan消息。輸入的渲染產品來自步驟b中Isaac Create Render Product的輸出。將frameId名稱更改為Lidar,以匹配Lidar傳感器的名稱。

      4. 添加另一個ROS1 RTX Lidar Helper節點以發布點云數據:選擇輸入類型為 point_cloud,并將話題名稱更改為/point_cloud。此節點處理從RTX Lidar發布點云數據。輸入的渲染產品來自步驟b中的 Isaac Create Render Product 節點的輸出。將 frameId 名稱更改為 Lidar,以匹配Lidar傳感器的名稱。

  4. 啟動仿真:

    1. 設置正確后,點擊 Play 開始仿真。驗證RTX Lidar是否發送了 LaserScanPointCloud2 消息,并且可以在RViz中可視化。

2.2 RViz可視化:

  1. 運行RViz:rosrun rviz rviz

  2. 更新RViz中的固定幀:

    • 在Isaac Sim中,RTX Lidar的固定幀名稱設置為Lidar,因此需要在RViz的 Global Options 標簽中更新 Fixed FrameLidar

  3. 添加LaserScan可視化:

    • 在RViz中,點擊 Add,選擇 LaserScan,然后將話題設置為 /scan

  4. 添加PointCloud2可視化:

    • 同樣,點擊 Add,選擇 PointCloud2,然后將話題設置為 /point_cloud

  5. 驗證可視化:

    • 確保在RViz中看到來自RTX Lidar的激光掃描和點云數據。

3. Rviz中多傳感器

要在 RViz 中同時顯示多個傳感器的數據,并確保所有消息的時間戳正確且同步,請注意以下幾點。

仿真時間戳

使用 Isaac Read Simulation Time 節點作為唯一的時間源,將它的輸出連接到所有發布節點的時間戳輸入。

ROS 時鐘

要將仿真時間發布到 ROS 的 /clock 話題,可按 “運行 ROS Clock 發布器” 教程中的方式設置你的 Action Graph。

frameId 與 topicName

1. 要在 RViz 中同時可視化所有傳感器數據以及 TF 樹,frameId 和 topicName 必須遵循一定的命名約定,RViz 才能正確識別。下表大致描述了這些約定。要查看完整的多傳感器示例,請參考 USD 資源 Isaac/Samples/ROS/Scenario/turtlebot_tutorial.usd

2.查看 RViz 配置
確保仿真正在運行,然后在已 source ROS 的終端中使用以下命令打開示例配置:

rviz -d <noetic_ws>/src/isaac_tutorials/rviz/camera_lidar.rviz

然后添加上接受消息可視化的工具

可以看到他們主題的命名就是按照上表所述進行命名的。

4.?在 Standalone 環境中添加 RTX Lidar

啟動 ROS 與 RViz

1. 在一個終端中,source 你的 ROS 工作空間并運行:

rviz -d <noetic_ws>/src/isaac_tutorials/rviz/rtx_lidar.rviz

以啟動 RViz 并顯示 Lidar 點云。

2. 運行示例腳本

./python.sh standalone_examples/api/omni.isaac.ros_bridge/rtx_lidar.py

場景加載完成后,確認你能在 RViz 中看到旋轉 Lidar 傳感器的點云數據。

RTX Lidar Standalone 腳本解析

雖然大部分示例代碼都比較通用,但以下幾步是創建并模擬 RTX Lidar 傳感器所必需的。

1.創建 RTX Lidar 傳感器

_, sensor = omni.kit.commands.execute("IsaacSensorCreateRtxLidar",path="/sensor",parent=None,config="Example_Rotary",translation=(0, 0, 1.0),orientation=Gf.Quatd(1.0, 0.0, 0.0, 0.0),
)

這里的 Example_Rotary 定義了 Lidar 的配置。除廠商/型號特定的配置外,示例中還提供了兩個通用配置文件,位于:

extsbuild/omni.sensors.nv.common/data/lidar/
├── Example_Rotary.json
└── Example_Solid_State.json

若要切換到固態 Lidar 示例配置,只需將config="Example_Rotary"替換為:config="Example_Solid_State"

2. 創建渲染產品并附加傳感器

hydra_texture = rep.create.render_product(sensor.GetPath(),[1, 1],name="Isaac"
)

3.構建后處理流程并發布到 ROS

writer = rep.writers.get("RtxLidarROS1PublishPointCloud")
writer.initialize(topicName="point_cloud",frameId="sim_lidar"
)
writer.attach([hydra_texture])

注意
在調用 activate_node_template 時,你可以通過可選的 attributes={…} 字典來設置節點特定參數。更多用法請參閱官方 API 文檔。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90575.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QT6 源,七章對話框與多窗體(14)棧式窗體 QStackedWidget:本類里代碼很少。舉例,以及源代碼帶注釋。

&#xff08;1&#xff09;這不是本章節要用到的窗體組件&#xff0c;只是跟著標簽窗體 QTabWidget 一起學了。這也是 QT 的 UI 界面里的最后幾個容器了。而且本類也很簡單。就了解一下它。 本類的繼承關系如下 &#xff1a; UI 設計界面 &#xff1a;運行效果 &#xff1a;&…

魔百和M401H_國科GK6323V100C_安卓9_不分地區免拆卡刷固件包

魔百和M401H_國科GK6323V100C_安卓9_不分地區免拆卡刷固件包刷機說明&#xff1a;1&#xff0c;進機頂盒設置&#xff08;密碼10086&#xff09;&#xff0c;在其他里&#xff0c;一直按左鍵約32下&#xff0c;打開調試模式2&#xff0c;進網絡設置&#xff0c;查看IP地址。3&a…

MySQL基礎02

一. 函數在 MySQL 中&#xff0c;函數是用于對數據進行特定處理或計算的工具&#xff0c;根據作用范圍和返回結果的不同&#xff0c;主要分為單行函數和聚合函數&#xff08;又稱分組函數&#xff09;。以下是詳細介紹&#xff1a;1.單行函數單行函數對每一行數據單獨處理&…

LabVIEW 視覺檢測SIM卡槽

針對SIM 卡槽生產中人工檢測效率低、漏檢誤檢率高的問題&#xff0c;設計了基于 LabVIEW 機器視覺的缺陷檢測系統。該系統通過光學采集與圖像處理算法&#xff0c;實現對卡槽引腳折彎、變形、漏銅等缺陷的自動檢測&#xff0c;誤報率為 0&#xff0c;平均檢測時間小于 750ms&am…

RocketMQ5.3.1的安裝

1、下載安裝 RocketMQ 的安裝包分為兩種&#xff0c;二進制包和源碼包。1 下載 Apache RocketMQ 5.3.1的源碼包后上傳到linux https://dist.apache.org/repos/dist/release/rocketmq/5.3.1/rocketmq-all-5.3.1-source-release.zip2 解壓編譯 $ unzip rocketmq-all-5.3.1-source…

FunASR實時多人對話語音識別、分析、端點檢測

核心功能&#xff1a;FunASR是一個基礎語音識別工具包&#xff0c;提供多種功能&#xff0c;包括語音識別&#xff08;ASR&#xff09;、語音端點檢測&#xff08;VAD&#xff09;、標點恢復、語言模型、說話人驗證、說話人分離和多人對話語音識別等。FunASR提供了便捷的腳本和…

opencv--day01--opencv基礎知識及基礎操作

文章目錄前言一、opencv基礎知識1.opencv相關概念1.1背景1.2特點1.3主要功能與應用1.4.opencv-python2.計算機中的圖像概念2.1圖像表示2.2圖像存儲彩色圖像二、opencv基礎操作1.圖像的讀取2.圖像的顯示3.保存圖像4.創建黑白圖及隨機像素彩圖5. 圖像切片&#xff08;圖片剪裁&am…

如何撤銷Git提交誤操作

要撤銷在主分支上的 git add . 和 git commit 操作&#xff0c;可以按照以下步驟安全回退&#xff1a; 完整回退步驟&#xff1a; # 1. 查看提交歷史&#xff0c;確認要回退的commit git log --oneline# 示例輸出&#xff1a; # d3f4g7h (HEAD -> main) 誤操作提交 # a1b2c3…

React+Three.js實現3D場景壓力/溫度/密度分布可視化

本文介紹了一個基于React和Three.js的3D壓力可視化解決方案&#xff0c;該方案能夠&#xff1a; 加載并渲染3D壓力模型數據 提供動態顏色映射功能&#xff0c;支持多種顏色方案&#xff1a;彩虹-rainbow,冷暖-cooltowarm,黑體-blackbody,灰度-grayscale 實現固定位置的顏色圖…

Go 官方 Elasticsearch 客戶端 v9 快速上手與進階實踐*

1、為什么選擇 go-elasticsearch&#xff1f; 版本同步&#xff1a;與 Elasticsearch 主版本保持一一映射&#xff0c;當前穩定分支為 v9&#xff0c;對應 ES 9.x 系列。(GitHub)完全覆蓋 REST API&#xff1a;所有 HTTP 端點都有等價方法&#xff0c;避免手寫 JSON/HTTP。可插…

`/etc/samba/smb.conf`筆記250720

/etc/samba/smb.conf筆記250720 /etc/samba/smb.conf 是 Samba 服務的核心配置文件&#xff0c;用于實現 Linux/Unix 與 Windows 系統間的文件和打印機共享。以下詳解其結構和常用參數&#xff1a; 配置文件結構 1. 全局設置段 [global] 控制 Samba 服務器的整體行為。 …

Java從入門到精通!第十六天,重點!(多線程和線程池)

一、多線程1&#xff0e;基本概念&#xff08;1&#xff09;程序&#xff08;Program&#xff09;&#xff1a;為了完成特定的任務&#xff0c;用某種計算機語言編寫的一組指令的集合&#xff0c;即指一段靜態的代碼&#xff08;源代碼經編譯之后形成的二進制格式的文件&#x…

軌道交通為什么要有信號系統?

軌道交通為什么要有信號系統&#xff1f;軌道交通信號系統與公路信號系統有什么不同&#xff1f; 在軌道交通中信號系統是必不可少的&#xff0c;其根本原因在于&#xff1a;在軌道交通中已經沒有辦法純靠人力去保證行車安全。 在公路交通中&#xff0c;信號其實是起輔助作用的…

docker 掛載卷

以下是針對您遇到的問題分步解答和解決方案&#xff1a;一、核心結論 ? 可以采用目錄方式&#xff1a;您的命令中的 -v /root/nginx05-vol/:/usr/share/nginx/html/ 是正確的目錄掛載語法。 ? 看不到新文件的可能原因主要集中在 權限問題、緩存機制 或 操作順序錯誤 上。二、…

uniapp 報錯 Not found ... at view.umd.min.js:1的問題

問題描述&#xff1a; uniapp的app中&#xff0c;當頁面中使用多個v-if后會出現這個報錯解決方案&#xff1a; 1、在v-if的地方加上key屬性&#xff08;key屬性要保證唯一&#xff09; 2、用v-show替換v-if&#xff08;不建議&#xff0c;可能會影響業務&#xff09;

水電站自動化升級:Modbus TCP與DeviceNet的跨協議協同應用

水電站的自動化系統就像一個精密的“神經中樞”&#xff0c;既要應對水流變化帶來的動態負載&#xff0c;又得保證閘門啟閉、水輪機調節等關鍵動作的精準性。我們去年參與的某水電站改造項目里&#xff0c;就遇到了一個典型問題&#xff1a;中控室的施耐德PLC采用Modbus TCP協議…

基于Matlab圖像處理的火災檢測系統設計與實現

隨著計算機視覺技術的快速發展&#xff0c;基于圖像處理的火災檢測系統在安全監控領域的應用得到了廣泛關注。本文提出了一種基于圖像處理的火災檢測系統&#xff0c;該系統通過對圖像進行預處理、顏色空間轉換、閾值化處理和形態學分析&#xff0c;自動檢測火災疑似區域。首先…

信息學奧賽一本通 1593:【例 2】牧場的安排 | 洛谷 P1879 [USACO06NOV] Corn Fields G

【題目鏈接】 ybt 1593&#xff1a;【例 2】牧場的安排 洛谷 P1879 [USACO06NOV] Corn Fields G 【題目考點】 1. 狀壓動規 【解題思路】 集合狀態&#xff1a;n個元素中&#xff0c;選擇x個元素構成的集合&#xff0c;可以由一個n位二進制數表示。第i位為1表示選擇第i個元…

SpringBoot創建項目的方式

一、Idea Spring initializr創建&#xff08;Spring 官網下載&#xff09; Spring官網只支持SpringBoot3.0以上&#xff0c;JDK17以上 二、idea Spring inst創建&#xff08;阿里云下載&#xff09; 阿里云可以支持JDK8的版本 Spring版本選擇2.7.6&#xff0c;選擇合適的依賴添…

云原生 —— K8s 容器編排系統

一、 簡介Kubernetes&#xff0c;也稱為K8s&#xff0c;是一個開源的容器編排系統&#xff0c;用于自動部署、擴展和管理容器化應用程序&#xff0c;幫助開發者更高效地跨集群管理應用。本文總結了 k8s 的基礎概念和技術架構。二、基礎概念1. 云原生&#xff08;Cloud Native…