

本文基于 NVIDIA DLI 的《在 Isaac Sim 中使用软件在环 (SIL) 开发机器人》免费课程,带着大家逐步熟悉这套软件仿真模拟的应用流程,内容的实操性比较强,因此建议大家最好能注册进到课程之中,里面还有一些辅助的动态视频内容,能协助我们更有效率地操作进行操作。
关于 SIL 与 HIL 的相关内容,我们已经在前面的《【文末有福利】NVIDIA Isaac开发平台全方位解锁具身智能开发困局》与《读懂SIL与HIL的核心关联,才算真正入门NVIDIA机器人开发》文章中重点讲解过,如果还不了解的请自行参考这两篇文章。
如果您还未完成对 OmniGraph 使用环境的调试(包括安装 ROS2 与下载 Assets 资源包),请至我前一篇《玩转IsaacSim软件在环(SIL):读懂OmniGraph核心价值及动手配置》进行处理。如果一切就绪的话,那就准备起航啦!
首先,SIL软件在环的终极目的是要与HIL硬件在环对接,而中间最重要的桥梁就是 ROS2 机制,因此在IsaacSim启动模拟器之前就要先启动 ROS2 环境,并且启动 IsaacSim 模拟器之后,启动内置的 ROS2 Bridge 功能。请按照以下顺序执行:
开启终端后执行以下指令:
source /opt/ros/jazzy/setup.bash执行以下指令启动 IsaacSim 模拟器:export ISAACSIM_PATH="<IsaacSim安装目录>"
${ISAACSIM_PATH}/isaac-sim.sh在 IsaacSim 模拟器中启动 ROS2 Bridge 功能开启 IsaacSim 模拟器之后,点击上方 Windows -> Extension(最下方),会出现以下窗口:

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

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

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

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

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


按一下模拟器左边的 "Play" 键,如果小车位置是悬空的,它会下降到地面上。
右键点击 Carter 车,然后按照 Create -> Virtual Scripting -> Action Graph 顺序(如下图)

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

在上面过滤框中填入关键字,将下面种类节点拖拉到 Action Graph 编辑器中:
然后按照下图(请自行放大)的接口将个节点进行连接:

首先说明一下这些节点的主要功能,如下:
ROS 2 Subscribe Twist 节点监听 /cmd_vel 主题的速度指令。现在就来配置这几个节点的参数:
2.03.00.4130.14


两个 Constant Token 节点对应到 Stage 下面 ActioGraph 的 constant_token 与 constant_token_01,点到每个节点在右下方都会出现 Property 视窗。不同节点的属性内容都不一样,我们在这里的 Inputs / Value 里面,分别为两个节点填入 joint_wheel_right 与 joint_wheel_left 。
配置好以上参数之后,我就就可以开始准备通过 ROS 2 与机器人进行通信,并开始控制其移动。
source /opt/ros/jazzy/setup.bash # 确认通讯状态 ros2 topic list
如果出显示 /cmd_vel 、 /parameter_events 、/rosout 三个 topic ,就表示目前 ROS 2 状态正常。
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}}"终端会出现如下的信息:
如果一切都正取的话,会看到 Nova_Carter 小车朝 X 轴方向在缓步前进(x=0.2)。你可以试试调整 'linear' 里面的参数,看看会产生什么变化,如果所有变量全部设为 0.0 的时候,小车就会停止,如下:
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}}"
在 ROS 里提供将键盘信号转换成 ROS 指令的功能,可以结合这些功能来实现键盘控制小车的应用。请执行下面指令来安装这个功能库:
# 根据 $ROS_DISTRO 版本安装对应库
sudo apt-get install ros-$ROS_DISTRO-teleop-twist-keyboard
# 执行以下指令来启动键盘控制:
ros2 run teleop_twist_keyboard teleop_twist_keyboard 信息最后面会显示控制的方式:
请自行使用键盘操控一下 Nova_Carter 小车。
到目前为止,我们对于 IsaacSim 的软件在环已经算得上登堂了,能掌握 OmniGraph 节点的基本运作模式与参数配置,并且与 ROS2 进行通讯的方法。虽然图形界面适合完成基础任务,不过我们对于机器人的其他物理参数还是相当不足,要进行仿真模拟还需要整合更多的内容。
接下来,我们将带着大家用 IsaacSim 提供的 Python Scritp Editor 并导入 USD API,来提供了更高的灵活性与控制力,可用于创建复杂仿真和自动化重复性任务。【完】
关于这部分的执行细节,可以在NVIDIA DLI课程里了解。欢迎大家报名课程,还可以获得我们送出的精美礼物!课程链接可以扫描下列二维码