首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >玩转IsaacSim软件在环(SIL):从 Nova Carter 开始

玩转IsaacSim软件在环(SIL):从 Nova Carter 开始

作者头像
GPUS Lady
发布2026-01-05 11:57:39
发布2026-01-05 11:57:39
1920
举报
文章被收录于专栏:GPUS开发者GPUS开发者

前言

本文基于 NVIDIA DLI 的《在 Isaac Sim 中使用软件在环 (SIL) 开发机器人》免费课程,带着大家逐步熟悉这套软件仿真模拟的应用流程,内容的实操性比较强,因此建议大家最好能注册进到课程之中,里面还有一些辅助的动态视频内容,能协助我们更有效率地操作进行操作。

关于 SIL 与 HIL 的相关内容,我们已经在前面的《【文末有福利】NVIDIA Isaac开发平台全方位解锁具身智能开发困局》与《读懂SIL与HIL的核心关联,才算真正入门NVIDIA机器人开发》文章中重点讲解过,如果还不了解的请自行参考这两篇文章。

如果您还未完成对 OmniGraph 使用环境的调试(包括安装 ROS2 与下载 Assets 资源包),请至我前一篇《玩转IsaacSim软件在环(SIL):读懂OmniGraph核心价值及动手配置》进行处理。如果一切就绪的话,那就准备起航啦!

1. 启动 ROS2 与 IsaacSim 模拟器与 ROS2 Bridge 功能

首先,SIL软件在环的终极目的是要与HIL硬件在环对接,而中间最重要的桥梁就是 ROS2 机制,因此在IsaacSim启动模拟器之前就要先启动 ROS2 环境,并且启动 IsaacSim 模拟器之后,启动内置的 ROS2 Bridge 功能。请按照以下顺序执行:

开启终端后执行以下指令:

代码语言:javascript
复制
source /opt/ros/jazzy/setup.bash
代码语言:javascript
复制
执行以下指令启动 IsaacSim 模拟器:
代码语言:javascript
复制
export ISAACSIM_PATH="<IsaacSim安装目录>"
${ISAACSIM_PATH}/isaac-sim.sh
代码语言:javascript
复制
在 IsaacSim 模拟器中启动 ROS2 Bridge 功能

开启 IsaacSim 模拟器之后,点击上方 Windows -> Extension(最下方),会出现以下窗口:

  • 在左上方先清除内容,然后输入“ROS”,就会过滤出下面选项
  • 点击“ROS 2 Bridge” 后出现右边内容
  • 开启右边最上方的 “ENABLED" 开关,并点击右边的 “AUTOLOAD”

这样就完成要执行的环境配置。

2.导入 Simple_Room 与 Nova_Carter 素材

  • 导入Simple_Room:这个材料位置在 Isaac Sim/Environments/Simple_Room/ 下面,可以在“Content Browser”里按照路径顺序找到 Simple_Room 位置,然后将 Simple_Room.usd 文件拉进工作区即可

刚拉上去的时候,会看到整个房间的外观(如下图)

我们需要使用的是房间里面的小桌子,现在在右上角“Stage”的搜索框中填入“table”,就会过滤出三个项目:

点击最右方属性为 Mesh 的 "table_low" ,然后在键盘上敲下 “F” 键,工作区就会看到如下图的状态:

此时将鼠标点到工作区,然后用滚轮稍微往上(放大),就会出现下面画面,这是我们所需要的内容:

  • 导入 Novo_Carter:这个材料位置在 Isaac Sim/Robots/NVIDIA/NovaCarter/ 下面,可以在“Content Browser” 里按照路径顺序找到,然后将 nova_carter.usd 拉到小桌子附近。

按一下模拟器左边的 "Play" 键,如果小车位置是悬空的,它会下降到地面上。

3. 启动 OmniGraph模拟器

右键点击 Carter 车,然后按照 Create -> Virtual Scripting -> Action Graph 顺序(如下图)

会在下面出现一个空白的 Action Graph 窗口(如下图),左边所有 OmniGraph 的节点元素:

在上面过滤框中填入关键字,将下面种类节点拖拉到 Action Graph 编辑器中:

  • ROS2 Context(上下文)
  • On Playback Tick(播放时钟)
  • ROS2 Subscribe Twist(订阅Twist)
  • Scale To/From Stage Units(按照平台单位缩放)
  • Break 3-Vector:2个(制动)
  • Make Array(创建数组)
  • Differential Controller(差分控制器)
  • Articulation Controller(关节控制器)
  • Constant Token:2个 (常量标记)

然后按照下图(请自行放大)的接口将个节点进行连接:

4. 各节点功能与参数配置:

首先说明一下这些节点的主要功能,如下:

  • ROS 2 Subscribe Twist 节点监听 /cmd_vel 主题的速度指令。
  • Differential Controller 将线速度和角速度转换为左右轮子的速度。
  • Articulation Controller 将速度应用到机器人的轮子上。
  • Constant Token 节点指定被控制的关节(左右轮)。

现在就来配置这几个节点的参数:

  • Differential Controller(差分控制器):分别配置以下参数(如下图)
  • Max Linear Speed: 2.0
  • Max Angular Speed: 3.0
  • Wheel Distance: 0.413
  • Wheel Radius: 0.14

  • 配置 Articulation Controller 节点
    • 右击 Articulation Controller 节点
    • 在其右侧属性面板中点击 Add Target
    • 在弹出的窗口中,选择 nova_carter > chassis_link > Select,将控制目标设置为 Carter 机器人
  • 两个 Constant Token 分别配置为左右轮:

两个 Constant Token 节点对应到 Stage 下面 ActioGraph 的 constant_tokenconstant_token_01,点到每个节点在右下方都会出现 Property 视窗。不同节点的属性内容都不一样,我们在这里的 Inputs / Value 里面,分别为两个节点填入 joint_wheel_right joint_wheel_left 。

配置好以上参数之后,我就就可以开始准备通过 ROS 2 与机器人进行通信,并开始控制其移动。

启动 ROS2 控制 Nava_Carter

  • 现在开启新的终端并执行以下指令以启动 ROS 2 通讯:
代码语言:javascript
复制
source /opt/ros/jazzy/setup.bash  # 确认通讯状态 ros2 topic list
代码语言:javascript
复制

如果出显示 /cmd_vel 、 /parameter_events 、/rosout 三个 topic ,就表示目前 ROS 2 状态正常。

  • 现在执行以下指令让 Nova_Carter 小车缓慢前行:
代码语言:javascript
复制
ros2 topic pub /cmd_vel 
geometry_msgs/Twist
 \
     "{'linear': {'x': 0.2, 'y': 0.0, 'z': 0.0}, \
       'angular': {'x': 0.0, 'y': 0.0, 'z': 0.0}}"
代码语言:javascript
复制
终端会出现如下的信息:
  • 在 IsaacSim 模拟器左边点击“Play”键开始执行。

如果一切都正取的话,会看到 Nova_Carter 小车朝 X 轴方向在缓步前进(x=0.2)。你可以试试调整 'linear' 里面的参数,看看会产生什么变化,如果所有变量全部设为 0.0 的时候,小车就会停止,如下:

代码语言:javascript
复制
ros2 topic pub /cmd_vel geometry_msgs/Twist \
     "{'linear': {'x': 0.0, 'y': 0.0, 'z': 0.0}, \
       'angular': {'x': 0.0, 'y': 0.0, 'z': 0.0}}"
代码语言:javascript
复制

用键盘控制 Nava_Carter

在 ROS 里提供将键盘信号转换成 ROS 指令的功能,可以结合这些功能来实现键盘控制小车的应用。请执行下面指令来安装这个功能库:

代码语言:javascript
复制
# 根据 $ROS_DISTRO 版本安装对应库 
sudo apt-get install ros-$ROS_DISTRO-teleop-twist-keyboard
# 执行以下指令来启动键盘控制:
ros2 run teleop_twist_keyboard teleop_twist_keyboard  
代码语言:javascript
复制
信息最后面会显示控制的方式:

请自行使用键盘操控一下 Nova_Carter 小车。

结语

到目前为止,我们对于 IsaacSim 的软件在环已经算得上登堂了,能掌握 OmniGraph 节点的基本运作模式与参数配置,并且与 ROS2 进行通讯的方法。虽然图形界面适合完成基础任务,不过我们对于机器人的其他物理参数还是相当不足,要进行仿真模拟还需要整合更多的内容。

接下来,我们将带着大家用 IsaacSim 提供的 Python Scritp Editor 并导入 USD API,来提供了更高的灵活性与控制力,可用于创建复杂仿真和自动化重复性任务。【完】

关于这部分的执行细节,可以在NVIDIA DLI课程里了解。欢迎大家报名课程,还可以获得我们送出的精美礼物!课程链接可以扫描下列二维码

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 1. 启动 ROS2 与 IsaacSim 模拟器与 ROS2 Bridge 功能
    • 2.导入 Simple_Room 与 Nova_Carter 素材
    • 3. 启动 OmniGraph模拟器
    • 4. 各节点功能与参数配置:
    • 启动 ROS2 控制 Nava_Carter
    • 用键盘控制 Nava_Carter
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档