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…