1.目的及应用价值

Isaac Sim 需要强大的 GPU 来支撑其高强度的物理仿真与渲染能力。但如果只需用作营销展示、远程调试或单纯查看运行状态,我们可以通过 WebRTC 技术远程连接服务器上的 Isaac Sim。这样,即使在无 GPU 的轻薄本上,也能流畅观看并交互操作 Isaac Sim(支持内网和公网连通)

  • ARM 架构(aarch64)默认不支持完整的 Livestreaming 功能。
  • A100 显卡不支持 Livestreaming!因为实时视频流高度依赖 NVENC(NVIDIA 硬件编码器),而 A100 专为计算设计,物理上被阉割了 NVENC 模块。

2. 环境与条件准备

实现串流需要两台设备:

  • 服务端(带强力 GPU):负责运行 Isaac Sim。支持 Windows、Ubuntu 系统(支持原生解压安装或 Docker 容器部署)。
  • 客户端(本地电脑,无需强 GPU):负责远程观看与操作。安装Isaac Sim WebRTC Streaming Client。

3. 情况一:Windows 服务端 ➜ Windows 客户端

对于两台windows系统,一台通过官方压缩包装好了Isaac Sim5.1.0版本(目前最稳定版本),另一台安装好了对应windows版本的Isaac Sim WebRTC Streaming Client

3.1 内网连接(同一局域网下)

在同一个网络下操作最简单,核心步骤是开放端口并绑定 IP:

a.放防火墙端口

服务端需要开启UDP port 47998和TCP port 49100端口,然后运行无头isaac sim并且绑定本地IP(不用无头的话需要在extension中开启webrtc)

# 开启 TCP 49100 端口(powershell运行,如果在cmd中运行需要在前面加上powershell -Command)

New-NetFirewallRule -DisplayName "IsaacSim_TCP_49100" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 49100

# 开启 UDP 47998 端口(powershell运行,如果在cmd中运行需要在前面加上powershell -Command)

New-NetFirewallRule -DisplayName "IsaacSim_UDP_47998" -Direction Inbound -Action Allow -Protocol UDP -LocalPort 47998

进入isaac sim文件夹下面运行cmd:

\isaac-sim.streaming.bat --/app/livestream/publicEndpointAddress=xx.xxx.xxx.xxx --/app/livestream/port=49100

其中publicEndpointAddress是服务端的IP,可以通过ipconfig获得

b.启动带 WebRTC 扩展的 Isaac Sim

在客户端输入服务端的IP即可进入

服务端:

首先启动Isaac sim,可以通过isaac-sim.bat

3.1 公网连接

如果不在同一局域网,推荐使用 Tailscale 等内网穿透工具将两台电脑组建在同一虚拟局域网内。

操作差异:启动时的 publicEndpointAddress 参数需要绑定 Tailscale 分配的虚拟 IP(通常是 100.x.x.x)。

网络延迟排雷:如果能 Ping 通但画面卡顿、延迟极高或断连,大概率是流量走了 Tailscale 的 DERP 中继服务器

验证方法:在客户端运行 tailscale ping 服务端虚拟IP。如果显示 pong from ... via x.x.x.x in 20ms 且带有 direct,说明是直连,网络极佳;若显示 via DERPrelay,说明由于公司防火墙限制,打洞失败。

解决办法:找网管在服务端路由器开放 UDP 41641 端口映射以实现直连;或者在两端电脑尝试调小 Tailscale 虚拟网卡的 MTU 值(如改为 1200),解决 UDP 碎片丢包问题。

4. 情况二:Linux (原生安装) ➜ Windows 客户端

对于服务端通过压缩包安装在 Ubuntu 系统的情况,逻辑与情况一完全一致,区别仅在于执行脚本换成了 .sh

对于服务端在Linux上通过压缩包安装Isaac sim5.1,客户端windows系统的情况,依旧可以分为内网和外网连接,由于情况一里已经分过了这里就不细分了

由于时间原因这里先简单写一下步骤,Linux上的操作也是通过运行下面的命令,建议用无头模式

./isaac-sim.streaming.sh --/app/livestream/publicEndpointAddress=xx.xxx.xxx.xxx --/app/livestream/port=49100

5. 情况三:Linux (Docker 部署) ➜ Windows 客户端

对于在服务端在Linux上通过Docker安装Isaac sim5.1,客户端windows系统的情况

首先对于没有Docker的需要先安装Docker,再获取官网Isaac sim的镜像

docker中拉取命令(docker pull)就能直接自动下载相应架构的Isaac sim

进入容器:

docker run --name isaac-sim-5.1 --entrypoint bash -it --gpus all -e "ACCEPT_EULA=Y" --rm --network=host nvcr.io/nvidia/isaac-sim:5.1.0

进入docker后绑定IP(内网):

PUBLIC_IP=$(curl -s ifconfig.me) && ./isaac-sim.sh --exts omni.services.stream_client.webrtc --/app/livestream/publicEndpointAddress=$PUBLIC_IP --/app/livestream/port=49100

或者直接输入IP:

./runheadless.sh --/app/livestream/publicEndpointAddress=xxx.xxx.xxx.xxx --/app/livestream/port=49100

6.总结

记录了三种情况用webRTC远程与Isaac sim进行串流,操作很简单,需要注意的是绑定IP和开放UDP、TCP端口,然后对于外网需要设置虚拟IP让两台电脑在同一网段下,但是会存在延迟高、卡顿的情况,另外如果webrtc客户端没有画面重新进入即可。最难的本人觉得对于没有接触过Docker的小白来说相关的命令操作会感到疑惑。

***本文只做学习记录,感兴趣的可以相互交流,最后欢迎大家批评指正,共同进步!

参考文档:

1.Isaac sim文档直播客户端 — Isaac Sim 文档https://docs.isaacsim.omniverse.nvidia.com/5.1.0/installation/manual_livestream_clients.html

2.nvidia ngc catalog:

GPU-optimized AI, Machine Learning, & HPC Software | NVIDIA NGChttps://catalog.ngc.nvidia.com/

更多推荐