新手入门Omniverse、Isaac Sim、Isaac Lab时经常发现,要想跑通例程,总是usd等资源加载不出来,软件傻傻的进程阻塞卡在那里,点两下就崩溃,这对新手来说非常的不友好,这都是由于没有安装 Nucleus 或者 Nucleus 没有配置好造成的。
比如,运行手臂示例:
python source/standalone/demos/arms.py
发现抛出警告,Could not open asset @http://omniverse-content-production.s3-us-west-2.amazonaws.com之类:
Could not open asset @http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/4.0/Isaac/Props/Mounts/SeattleLabTable/table_instanceable.usd@
等了很久isaac sim也一直卡着
还比如要跑宇树的人形机器人H1,那么就需要H1的USD文件,这个定义在 H1_CFG中
from omni.isaac.lab_assets import H1_CFG # isort:skip
跳转到 H1_CFG,资源就定义在
usd_path=f"{ISAACLAB_NUCLEUS_DIR}/Robots/Unitree/H1/h1.usd"
"""Configuration for the Unitree H1 Humanoid robot."""
H1_CFG = ArticulationCfg(spawn=sim_utils.UsdFileCfg(usd_path=f"{ISAACLAB_NUCLEUS_DIR}/Robots/Unitree/H1/h1.usd",activate_contact_sensors=True,rigid_props=sim_utils.RigidBodyPropertiesCfg(disable_gravity=False,retain_accelerations=False,linear_damping=0.0,angular_damping=0.0,max_linear_velocity=1000.0,max_angular_velocity=1000.0,max_depenetration_velocity=1.0,),
我们看到如果 ISAACLAB_NUCLEUS_DIR 配置的不对,那么由于科学上网等原因,资源就获取不到了,简单办法是,资源下载到本地,然后改 ISAACLAB_NUCLEUS_DIR ,如找到H1的目录,然后给这个 变量直接赋值,如我的是:
ISAACLAB_NUCLEUS_DIR = "D:/omniverse/Downloads/Assets/Isaac/4.0/Isaac/IsaacLab"
有的资源是用的 ISAAC_NUCLEUS_DIR,同理修改成
ISAAC_NUCLEUS_DIR = "D:/omniverse/Downloads/Assets/Isaac/4.0/Isaac"
无NUCLEUS方法(只针对 ISAAC LAB)
我们可以改Lab 里关于 ISAAC_NUCLEUS_DIR 等配置变量的值,文件在source\extensions\omni.isaac.lab\omni\isaac\lab\utils\assets.py,
可以从类似这里跳转 from omni.isaac.lab.utils.assets import NVIDIA_NUCLEUS_DIR
# 修改下面 配置变量或者环境变量代理 值到本地
NVIDIA_NUCLEUS_DIR = f"{NUCLEUS_ASSET_ROOT_DIR}/NVIDIA"
"""Path to the root directory on the NVIDIA Nucleus Server."""ISAAC_NUCLEUS_DIR = f"{NUCLEUS_ASSET_ROOT_DIR}/Isaac"
"""Path to the ``Isaac`` directory on the NVIDIA Nucleus Server."""ISAACLAB_NUCLEUS_DIR = f"{ISAAC_NUCLEUS_DIR}/IsaacLab"
"""Path to the ``Isaac/IsaacLab`` directory on the NVIDIA Nucleus Server."""
这个方法虽然简单,但是要改代码,而且不符合 NUCLEUS 设计理念
Omniverse Isaac Sim
使用NVIDIA Omniverse™ Nucleus
来访问环境和机器人的USD文件等内容。Omniverse Nucleus
服务允许各种客户端应用程序、渲染器和微服务在Omniverse Isaac Sim
中共享和修改虚拟世界的表示。
Nvidia Nucleus 概括介绍:
Nvidia Nucleus 是 Nvidia Omniverse 的数据库和协作引擎,它允许多个用户跨多个应用程序实时连接,共享和修改虚拟世界的数据,从而实现高级协作工作流程。Nucleus 提供了一组基本服务,支持不同客户端应用程序、渲染器和微服务之间的实时交互和协作。
设计理念:
实时协作:Nucleus 的核心设计理念是实现实时协作,通过提供跨多个工作站和多个用户的实时连接,让创作者能够无缝地共享和修改项目数据。
高效迭代:支持快速迭代是 Nucleus 的另一重要设计理念。通过检查点功能和版本控制,创作者可以安全地保存变更历史记录,并在多个版本之间迭代,从而提高工作效率。
灵活性和可扩展性:Nucleus 提供了多种安装方式和灵活的许可选项,以满足不同用户和企业的需求。无论是个人用户还是大型企业,都可以根据自己的需求部署 Nucleus。
安全性:安全性是 Nucleus 设计中的重要考虑因素。通过访问控制列表(ACLs)、单点登录(SSO)和安全传输协议(如 SSL/TLS),Nucleus 确保数据在传输和存储过程中的安全性。
集成和兼容性:Nucleus 旨在与各种现有的3D应用程序和工作流集成,通过提供连接器和扩展程序,让创作者能够继续在他们熟悉的工具中工作,同时享受 Omniverse 带来的协作和实时渲染优势。
综上所述,Nvidia Nucleus 通过提供实时协作、高效迭代、灵活性和可扩展性、安全性以及集成和兼容性等设计理念,为3D创作者和开发者打造了一个强大的协作平台。
好了,下面开始正式 Nucleus 部署之旅。
PS:我试图改过isaac sim里 nucleus 配置,以为有可以改这个全局变量的方法,而不用一个个改,我电脑文件位置在 D:\omniverse\pkg\isaac-sim-4.0.0\exts\omni.isaac.nucleus\config\extension.toml中的内容,希望能够把 nucleus 指向本地,发现没有起作用。
[settings]
persistent.isaac.asset_root.default = "omniverse://localhost/NVIDIA/Assets/Isaac/4.0"
persistent.isaac.asset_root.nvidia = "omniverse://localhost/NVIDIA"
persistent.isaac.asset_root.isaac = "omniverse://localhost/NVIDIA/Assets/Isaac/4.0/Isaac"
persistent.isaac.asset_root.cloud = "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/4.0"
persistent.isaac.asset_root.timeout = 5.0
一、搜索安装 Nucleus Navigator
安装好后启动
Nucleus Navigator — Omniverse Nucleus 最新文档 --- Nucleus Navigator — Omniverse Nucleus latest documentation (nvidia.com)https://docs.omniverse.nvidia.com/nucleus/latest/config-and-info/navigator_v3.html
二、本地服务器的初始设置
点击Create Local Server,然后
NEXT
,填入个人信息,完成本地服务器的初始设置
此时,Nucleus服务器已在本地成功部署,Isaac Sim将自动从该服务器中获取资源作为默认操作,实现资产的无缝接入与管理。
三、下载资源包
下载资源包到本地,这里下载 4.0里面的包,文件很大,注意硬盘空间,
后续步骤也可以参考官方教程,只是这个教程再FAQ里:
Setup FAQ — Omniverse IsaacSim latest documentation (nvidia.com)https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_faq.html#assets-pack
还有一种最全的下载方法是下载这4个Pack,然后合并在一起,我嫌这个麻烦,直接用上面的方法下载的4.0的资源。
注意:资产包对应的版本应当也是Isaac Sim 4.0.0版本。
下载后,将每个包的内容合并到一个根文件夹中。例如,将资源包 2、3 和 4 中的内容合并或复制到资源包 1 文件夹 (isaac_sim-assets-1-4.0.0) 中。
此根文件夹 (Downloadsisaac_sim-assets-1-4.0.0AssetsIsaac4.0) 必须同时包含 NVIDIA 和 Isaac 文件夹。
四、创建本地目录
点击LIBRARY,
在omniverse://localhost/Library/
目录下创建名为NVIDIA
的文件夹(也可以按照自己喜好创建文件夹名)
为了说明是Asserts以及Isaac的资源,又接着往下创建了两级目录,如图
五、将下载资源包拖入到localhost对应目录里
然后右下角开始出现上传进度(这里是拷贝,会占用硬盘资源):
PS: 其实不用拷贝过来也行,设置default为本地文件夹,如:
.\isaac-sim.bat --/persistent/isaac/asset_root/default="C:\Users\<username>\Downloads\isaac_sim-assets-1-4.0.0\Assets\Isaac\4.0"
我没有试过,官方教程里的方法,应该可行。
六、Isaac Sim指定默认的资产根路径
在windows下:
.\isaac-sim.bat --/persistent/isaac/asset_root/default="omniverse://localhost/Library/NVIDIA/Assets/Isaac/4.0"
上面指令的目的是改掉 user.config.json 这个文件,这个文件所在目录在你的DATA PATH下,
如我的在:
D:\omniverse\data\Kit\Isaac-Sim\4.0\user.config.json
后续再运行 isaac-sim.bat 的时候就不需要加上了,因为配置文件已经改掉了。
七、检查本地资产路径是否已经设置成功
打开isaac-sim,在Isaac Utils里点击Nucleus Check,如果显示是
omniverse://localhost/Library/NVIDIA/Assets/Isaac/4.0/
那就代表成功了
八、关于Isaac Lab配置
本以为一切都好了,这时我们再次运行isaac lab里的demo程序,发现还是不行,又以为改json文件,d:/omniverse/pkg/isaac-lab/isaaclab/_isaac_sim/kit/data/Kit/Isaac-Sim/4.0/user.config.json,修改里面的 default字段为omniverse://localhost/Library/NVIDIA/Assets/Isaac/4.0就可以了,发现还是不行,每次运行还是会被刷写掉
于是觉得一定有程序在Lab里启动isaac sim的时候修改了 "/persistent/isaac/asset_root/default"
参数,果然 app_launcher.py 负责修改启动参数,把这里改成这个,就好了。
"omniverse://localhost/Library/NVIDIA/Assets/Isaac/4.0",
九、FAQ假如遇到问题如何查找原因
点击这里的LOGS LOCATION
然后isaac sim的运行日志在这里:
然后搜索 Checking path ,如果有 Failure就是有问题,比如我当时4.0下面没下NVIDIA资源,简单在4.0目录下创建一个NVIDIA就解决了
部署感觉还是挺麻烦的,欢迎加QQ群一起交流学习:723139415