2024年6月更新: Isaac Sim当前已经更新到4.0.0大版本,有了不少新的内容,因此笔者制作了最新的Isaac Sim整套入门教程,欢迎大家跳转到新的入门教程链接。
前言
笔者出于工作需要,使用ISAAC SIM,顺便也整理一份使用的教程,方便后来人少走弯路。
作者: Herman Ye@Auromix
Auromix是一个机器人爱好者组织,欢迎参与我们Github上的开源项目
一、安装Isaac Sim
1.下载omniverse
NVIDIA Omniverse™ Isaac Sim
是NVIDIA Omniverse™
平台的一款机器人仿真工具包。Isaac Sim
具备构建虚拟机器人世界和实验的关键功能。它为研究人员和从业人员提供了创建健壮、物理精确仿真和合成数据集所需的工具和工作流程。Isaac Sim
通过ROS/ROS2
支持导航和操控应用。它可以模拟RGB-D、Lidar和IMU等传感器的传感器数据,用于多种计算机视觉技术,如领域随机化、真值标签、分割和边界框。
因为Isaac Sim
是依托于NVIDIA Omniverse
平台的仿真工具包,所以需要前往Nvidia Isaac Sim官网下载Omniverse
2.启动Omniverse
替换掉<your_omniverse_appimage>
为你下载的omniverse版本,通常名为omniverse-launcher-linux.AppImage
sudo chmod +x <your_omniverse_appimage> # grant executable permissions
例:
sudo chmod +x omniverse-launcher-linux.AppImage # grant executable permissions
在没有安装FUSE时可能无法启动appimage,因此先安装FUSE
sudo apt install fuse -y # install fuse
通过命令行启动Omniverse,也可手动双击启动
./<your_omniverse_appimage>
例:
./omniverse-launcher-linux.AppImage
3.登录Nvidia账号
登录Nv的账号,按照引导,默认即可,进入Omniverse主页面
4.安装ISAAC SIM
进入EXCHANGE
页面,选择ISAAC SIM
,点击install
,等待自动下载安装完成
5.安装NUCLEUS
Omniverse Isaac Sim
使用NVIDIA Omniverse™ Nucleus
来访问环境和机器人的USD文件等内容。Omniverse Nucleus
服务允许各种客户端应用程序、渲染器和微服务在Omniverse Isaac Sim
中共享和修改虚拟世界的表示。
Nucleus
采用发布/订阅模型。在访问控制的前提下,Omniverse客户端可以将数字资产和虚拟世界的修改发布到Nucleus数据库(DB),或订阅其变化。更改在连接的应用程序之间实时传输。数字资产可以包括描述虚拟世界及其随时间演变的几何形状、灯光、材料、纹理和其他数据。
这使得各种Omniverse-enabled
客户端应用程序(Apps, Connectors等)能够共享和修改虚拟世界的权威表示。
进入NUCLEUS
页面,点击Add Local Nucleus Device
,创建管理员账号
点击COMPLETE SETUP
,等待下载并设置完成
6.启动ISAAC SIM
在LIBRARY
中找到ISAAC SIM,点击Launch
启动,按照默认选项,点击START
继续启动
过程中可能会遇到一些依赖安装、光追编译、加载等情况,根据个人电脑性能情况速度不同,等待即可
提示: ISAAC SIM 对于个人计算机性能要求比较苛刻,因此个人建议最低配置表如下:
硬件 | 参数 |
---|---|
内存 | 32 GB |
存储 | 1 T |
显存 | 8 G |
具体的ISAAC SIM性能要求可参考Nvidia Isaac Sim Documentation System Requirements
7.观察ISAAC SIM主界面
在成功启动并完成编译、配置等过程后,Isaac Sim的空主界面应当为如下状态:
相关附录
Nvidia Omniverse Isaac Sim Documentation
Isaac Sim ROS2 tutorial
How to use Isaac Sim with your own robot?
Auromix Github Repository
0nhc@Auromix Isaac Sim野生教程01: Isaac Sim的安装
二、简单使用Isaac Sim
这是Isaac Sim的架构图,可作为了解,具体的架构、开发流等相关内容可查阅Isaac Sim Documentation
1.了解USD
对于框架中提及的USD
,可以稍微了解一下:
Omniverse Isaac Sim
使用USD
交换文件格式来表示场景。Universal Scene Description (USD)
是由皮克斯公司开发的一种易于扩展、开源的3D场景描述和文件格式,用于内容创作和工具间的交换。由于其强大和多功能,USD
不仅在视觉效果社区中被广泛采用,而且在建筑、设计、机器人、制造和其他领域也被广泛采用。
2.配置环境
以下案例以ROS2 Humble
版本为标准
安装xacro
sudo apt-get install ros-humble-xacro
安装Isaac Sim ROS-extension
参考Isaac Sim提供的Enabling the ROS / ROS 2 Bridge Extension教程,执行如下步骤:
开启ROS Bridge拓展
- 在 Isaac Sim 中,转到窗口 -> 扩展的扩展管理器菜单,并搜索 ROS bridge。请注意,一次只能启用一个 ROS Bridge 扩展,比如启用ROS2 BRIDGE时不可使用ROS BRIDGE。
设置 Fast DDS 中间件配置
- 在ROS的目录下新建FASTDDS文件
sudo touch ~/.ros/fastdds.xml
- 打开文件并粘贴以下XML文件内容:
sudo nano ~/.ros/fastdds.xml
例如使用nano编辑工具打开该文件:
<?xml version="1.0" encoding="UTF-8" ?>
<license>Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
NVIDIA CORPORATION and its licensors retain all intellectual property
and proprietary rights in and to this software, related documentation
and any modifications thereto. Any use, reproduction, disclosure or
distribution of this software and related documentation without an express
license agreement from NVIDIA CORPORATION is strictly prohibited.</license>
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles" >
<transport_descriptors>
<transport_descriptor>
<transport_id>UdpTransport</transport_id>
<type>UDPv4</type>
</transport_descriptor>
</transport_descriptors>
<participant profile_name="udp_transport_profile" is_default_profile="true">
<rtps>
<userTransports>
<transport_id>UdpTransport</transport_id>
</userTransports>
<useBuiltinTransports>false</useBuiltinTransports>
</rtps>
</participant>
</profiles>
fastdds.xml
文件是 ROS2 中用来配置 Fast DDS 中间件的文件。
在 fastdds.xml
文件中,主要定义了以下内容:
<transport_descriptors>
:定义了运输描述符,这里使用的是 UDPv4 传输。<participant>
:定义了参与者的配置。在这个配置中,使用的是 UDPv4 传输,因此它设置了UdpTransport
作为userTransports
,并且设置了useBuiltinTransports
为false
。
这些设置的含义是,Fast DDS 将使用 UDPv4 进行数据通信,而不是使用内置的传输方式。
取消LD_LIBRARY_PATH环境变量
unset LD_LIBRARY_PATH
unset LD_LIBRARY_PATH
: 这条命令是用来取消设置 LD_LIBRARY_PATH
环境变量的。LD_LIBRARY_PATH
是一个环境变量,它指定了在运行时动态链接器应该搜索共享库的目录。如果 LD_LIBRARY_PATH
中包含的目录中存在不兼容的库版本,可能会导致问题,因此在启动 Isaac Sim 之前取消设置此环境变量可以避免潜在的问题。
添加FAST DDS配置文件的环境变量
export FASTRTPS_DEFAULT_PROFILES_FILE=~/.ros/fastdds.xml
export FASTRTPS_DEFAULT_PROFILES_FILE=~/.ros/fastdds.xml
: 这条命令是设置 FASTRTPS_DEFAULT_PROFILES_FILE
环境变量,使其指向之前创建的 fastdds.xml
文件的位置。Fast RTPS 使用 XML 文件来定义配置文件,通过 FASTRTPS_DEFAULT_PROFILES_FILE
环境变量来指定这个配置文件的位置。当 ROS2 Fast DDS
启动时,它会查看这个环境变量,并加载指定的 XML 文件中的配置。
警告: 不要在运行Isaac Sim的终端里source ROS2
,因为这可能会因符号冲突而在启动过程中导致错误。
这通常已经在装ROS2的时候写入了~/.bashrc
,因此将~/.bashrc作备份,并在bashrc中取消ROS2的自动source。
sudo cp ~/.bashrc ~/.bashrc.backup # backup the ~/.bashrc
sudo nano ~/.bashrc # edit the ~/.bashrc
注释掉~/.bashrc中和ROS2相关的脚本行:
source /opt/ros/humble/setup.bash # uncomment the line of ROS
source /home/<your_username>/<your_workspace>/install/setup.bash # uncomment the line of ROS workspace
3.下载并设置工作空间
下载Isaac Sim官方提供的ROS包
对于Humble版本,工作空间在下载的repo的IsaacSim-ros_workspaces/humble_ws
目录下。
git clone https://github.com/NVIDIA-Omniverse/IsaacSim-ros_workspaces
安装依赖
# For rosdep install command
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
# For colcon build command
sudo apt install python3-colcon-common-extensions
在当前终端设置一次ROS环境变量
source /opt/ros/humble/setup.bash
安装turtlebot3包案例
cd ~/humble_ws/src
git clone -b humble-devel https://github.com/ROBOTIS-GIT/turtlebot3.git turtlebot3
对应的urdf文件存储在~/humble_ws/src/turtlebot3/turtlebot3_description/urdf
下
安装ROS包的依赖
cd humble_ws # go to the humble_ws folder
rosdep install -i --from-path src --rosdistro humble -y # install dependencies of ROS
应当提示如下结果:
#All required rosdeps installed successfully
编译工作空间
- 安装编译相关依赖
catkin_pkg
是用于ROS开发的Python库,它可以帮助解析ROS包的信息。
pip install catkin_pkg # install catkin_pkg for ROS colcon build
名为 empy
的Python库是一个模板引擎,主要用于生成代码,ROS中的一些功能需要它来生成接口相关的代码。
# CAUTION: DO NOT INSTALL EM, EM IS NOT FOR ROS2
# pip uninstall em
pip install empy # install empy for ROS colcon build
Lark
是一个强大的解析库,用于在Python中构建语法解析器和编译器。它可以帮助你解析自定义的文本格式和语言,或者处理复杂的数据结构。
pip install lark # install lark colcon build
- 设定
setuptools
版本来避免编译错误
pip uninstall setuptools
pip install setuptools==58.2 # install setuptools 58.2 to avoid build error
如果仍存在问题,暂时忽视这个问题,不影响使用。
- 编译
cd ~/humble_ws
unset LD_LIBRARY_PATH # avoid confict
source /opt/ros/humble/setup.bash
colcon build # build
5.使用这个包
打开新终端,执行以下命令
source /opt/ros/humble/setup.bash
cd humble_ws
source install/local_setup.bash
随后执行希望执行的demo