当前位置: 首页 > news >正文

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.dtcms.com/a/294425.html

相关文章:

  • centos9 ssh能连接密码不对
  • 用马尔可夫模型进行自动驾驶安全分析
  • 完整的 Redis 5.0 安装、配置及自启动步骤,包含开放端口和密码设置
  • 【网安-小迪】Day5:反弹SHELL不回显带外正反向连接防火墙出入站文件下载
  • 我的第一个开源项目|集成语音感知与云平台的多任务智能楼宇控制系统
  • GaussDB null的用法
  • 第一站之春晖小区——关爱老年人,我们在行动
  • 快速梳理遗留项目
  • QEMU RISCV TCG 详解二 -- RISCV CPU Representation
  • 多模态Embedding技术
  • 基于springboot的乡村旅游在线服务系统/乡村旅游网站
  • 汽车网络升级攻略:CAN-CAN FD-车载以太网
  • Qt(基本组件和基本窗口类)
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(8):自動詞 & 他動詞 「~ている」「~ておく」「~てある」
  • 疯狂星期四文案网第16天运营日记
  • vmware分配了ubuntu空间但是ubuntu没有获取
  • Python爬虫--Xpath的应用
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘jupyter’问题
  • 系统架构师:软件工程-思维导图
  • 二十二、【Linux系统防火墙管理】firewalld命令详解
  • 使用yolov10模型检测视频中出现的行人,并保存为图片
  • 电子设计大赛【C语言核心知识点】讲解
  • HF86611_VC1/HF86611Q_VC1:多通道USB HiFi音频解码器固件技术解析
  • 动态路由协议基础
  • MIT6.824 Raft算法Lab2A实验
  • 基于阿里云平台的文章评价模型训练与应用全流程指南
  • CASAIM自动蓝光检测供应商三维测量系统近线检测汽车变速箱尺寸
  • Java SE:类与对象的认识
  • 【kubernetes】-3 pod基础和yaml文件
  • 记录一本设计模式的书