
在数据中心里摸过机器人仿真的朋友大概率经历过这种场景手里只有一台能 SSH 的服务器GPU 是 A5000 还是 4090 都验过了nvidia-smi 输出正常Isaac Sim 也能跑起来但画面只能靠日志描述——因为这台机器没有接显示器。稍微有点交互需求就抓瞎调试机器人运动轨迹、看仿真环境的光照材质、调整相机视角全得靠脑补。这种时候远程桌面就是绕不开的基础设施。这篇文章记录我在无头 Ubuntu 服务器上配置 TurboVNC把 Isaac Sim 的 RTX 渲染画面拉到本地工作站看的完整过程包括方案选型、配置步骤和踩坑实录。适合那些在数据中心、机房或家用机架环境里跑 Isaac Sim、OpenUSD 渲染、Omniverse 相关任务又不想反复搬显示器的人。看完你至少能解决三个问题无头机器上怎么给 Isaac Sim 一个可交互的桌面TurboVNC 和 VirtualGL 要怎么配合才不会遇到 GLX 报错以及那些常见的黑屏认证失败软件渲染坑到底该怎么排。1. 为什么无头服务器要配 TurboVNC方案选型背后的逻辑1.1 无头场景下的真实困境Isaac Sim 是基于 NVIDIA Omniverse 构建的机器人仿真工具渲染管线对 GPU 和图形环境非常敏感。平时在带显示器的机器上跑双击启动脚本就有窗口弹出来一切顺理成章。但到了无头服务器上问题就来了没有显示器意味着没有 X Server 会默认运行GLX 上下文创建可能失败Vulkan 的 WSI窗口系统集成也找不到可用的 surface。有人会说既然无头那我就不看画面只跑 headless 模式的仿真不行吗Isaac Sim 确实支持 headless但问题在于你做机器人开发的时候往往需要盯着仿真画面调参数。换个传感器角度、调一下物理材质、看机械臂的路径规划是否合理这些操作有画面和没画面的效率差好几倍。而且合成数据生成、数字孪生验证这类任务也需要具备随时能看到渲染结果的通道。这就要建立一条从外部可以随时接进来、能看 GPU 渲染画面、延迟还能够接受的图形通道。最直接的思路是远程桌面但在 Linux GPU 服务器上远程桌面方案的好坏差别非常大。1.2 常见远程可视化方案横向对比我整理了几种常见的无头环境图形化方案各有各的适应场景不能说谁绝对好关键看你的应用类型。方案渲染路径GPU 加速交互流畅度适用场景X11 转发SSH -X服务器渲染数据走 X11 协议有限3D 场景基本不可用差网络稍慢就拖影轻量 GUI 工具、简单配置界面xrdp XorgRDP 协议光栅化传输一般对 OpenGL 支持较弱中等Windows 客户端方便需要一个桌面做日常维护TigerVNC / 常规 VNCRFB 协议CPU 软件帧缓冲无OpenGL 应用会退化为软件渲染一般低分辨率还能用只看静态内容、性能要求不高TurboVNC VirtualGLRFB 协议GPU 直渲染后压缩传输有OpenGL/GLX 调用被转发到 GPU流畅3D 应用延迟可接受Linux NVIDIA 3D/仿真应用强需求结论很直接跑 Isaac Sim 这种重度 3D 应用常规 VNC 和 xrdp 都不太够看。普通 VNC 的帧缓冲路径会把 OpenGL 丢给软件栈处理画面卡成幻灯片xrdp 对现代 OpenGL 的支持有限ISAAC Sim 的 RTX 渲染拿到 RDP 会话里经常直接崩溃。TurboVNC 配合 VirtualGL是这条路里验证最充分、社区案例最多的组合。1.3 TurboVNC 与 VirtualGL 的工作原理简析要理解为什么这个组合能扛住 3D 场景得先搞清楚它和普通 VNC 的差异。普通 VNC 的模型是服务器上跑一个 Xvnc虚拟 X Server应用把绘制指令发给这个 X ServerX Server 把画面写入一块内存帧缓冲然后 VNC 服务端把帧缓冲压缩后发给客户端。整个过程里OpenGL 绘制如果不做特殊处理会被 Mesa 的软件渲染接管GPU 基本在旁边看戏。这也是为什么很多人在无头机器上用 VNC 打开 3D 应用看到的是llvmpipe这种软件渲染器。TurboVNC 的思路是换掉编码和传输层做了大量优化比如基于帧内差异的压缩、动态 JPEG 编码、多线程编码等让传输效率比普通 VNC 高不少。但更重要的是它和 VirtualGL 的协作VirtualGL 会在应用和 X Server 之间插入一个 GLX 转发层把 OpenGL 命令拦截下来直接送到本机的 GPU 去渲染渲染结果再通过高效的图形回读路径送回 VNC 帧缓冲。打个比方普通 VNC 是让一个没有画板的画师先把画画在脑子里再用 CPU 一点点说出来TurboVNC VirtualGL 是让画师直接在 GPU 这块专业画布上作画然后只把成品图的压缩副本发给你。两者的效率差距在复杂 3D 场景里是数量级的差别。不过有一点要提醒Isaac Sim 的渲染管线比较复杂底层大量使用 Vulkan 而非传统 OpenGLVirtualGL 主要针对 GLX/OpenGL 做了优化。实际使用时部分 Vulkan 应用在无头设备上仍然可能找不到 VkSurface。这个问题没有完美魔法解稳妥的做法是让 X Server 在虚拟显示设备上正常运行给 Vulkan 一个可用的窗口系统环境然后通过环境变量和实测来确认渲染到底走没走 GPU。后面我会专门讲这部分。2. 环境准备从裸机到可远程的图形服务器2.1 前期硬件与驱动检查动手之前先把基础设施捋一遍。我的经验是如果驱动和 SSH 都没搞定后面排查会很痛苦。所以每一步都值得花时间确认清楚。首先是确认 GPU 状态lspci | grep -i nvidia nvidia-sminvidia-smi 能正常打印出显卡型号、驱动版本、显存占用说明驱动是装好了的。如果这条命令报错大概率是 NVIDIA 驱动没装或者内核模块没加载。可以看下内核模块lsmod | grep nvidia确认 nvidia、nvidia_drm、nvidia_modeset、nvidia_uvm 这些模块都有了再继续下一步。有些服务器出厂时装的驱动是跑计算模式的也就是 CUDA 用但图形相关的组件可能被砍了。这时候跑 OpenGL 应用是没有硬件加速的。怎么确认装好基础环境后可以执行glxinfo -B | grep renderer string如果输出的是llvmpipe这类软件渲染器说明图形栈没通到 NVIDIA。另外安装 NVIDIA 驱动时有一个容易踩的坑不少教程在无头环境下推荐给驱动安装命令加--no-opengl-files参数避免驱动接管 Xorg 导致开机黑屏。这个思路本身没错但如果你要用 TurboVNC VirtualGL 跑图形加速最好还是保留 NVIDIA 的 GLX 库。我自己的习惯是如果服务器以后只做远程图形加速就不加这个参数如果服务器上还要同时跑容器化任务驱动冲突风险高可以用--no-opengl-files然后单独配 Mesa 的 GLX 转发到 NVIDIA 的库。具体取舍看你的部署策略但要清楚这个参数是干什么的。确认 SSH 服务也开着systemctl status sshd没有的话装一个 openssh-server 并设为开机自启。远程桌面再强大SSH 始终是最后的保底通道排错全靠它。2.2 安装 TurboVNC 和 VirtualGL环境确认没问题接着装核心组件。我以 Ubuntu 22.04 为例其他 Debian 系系统大同小异。先去官网把 TurboVNC 和 VirtualGL 的 deb 包下载到服务器上安装命令如下sudo apt update sudo apt install -y wget libx11-6 libxext6 libxtst6 libxrender1 libgl1-mesa-glx xauth x11-utils wget https://downloads.sourceforge.net/project/turbovnc/3.0.3/TurboVNC-3.0.3-x86_64.deb sudo dpkg -i TurboVNC-3.0.3-x86_64.deb wget https://sourceforge.net/projects/virtualgl/files/3.1.1/VirtualGL-3.1.1-x86_64.deb/download sudo dpkg -i VirtualGL-3.1.1-x86_64.deb依赖缺失时用sudo apt -f install修复。安装完成后确认版本/opt/TurboVNC/bin/vncserver -version /opt/VirtualGL/bin/vglrun --versionTurboVNC 的默认安装路径在 /opt/TurboVNCVirtualGL 在 /opt/VirtualGL。后面配置和编写 systemd 服务时都要用到这个路径建议记一下。既然要跑 Isaac Sim 这种有完整 GUI 的应用最好给远程会话配一个轻量桌面环境。我在生产环境里用得最多的是 XFCE4资源占用小依赖也干净几乎不会跟 NVIDIA 图形栈打架sudo apt install -y xfce4 xfce4-terminal不建议在 GPU 服务器上装 GNOME 或 KDE太重了远程桌面体验反而差而且依赖的 DBus、PolicyKit 组件容易引入变量排错更复杂。2.3 网络与防火墙的端口规划VNC 的端口规则很简单display 编号 N 时监听端口就是 5900 N。比如vncserver :1对应 5901vncserver :2对应 5902。默认配置下 TurboVNC 只监听回环地址方便你用 SSH 隧道连接安全度很高。如果你打算在可信内网里直接用客户端连接可以放行对应端口sudo ufw allow 5901/tcp如果是云服务器还要在安全组规则里放行对应端口同时限制来源 IP尽量只允许你自己的办公网段访问。我强烈建议优先用 SSH 隧道的方式因为 VNC 协议本身不加密直接暴露在网络上容易被探测。隧道方式后面第 5 章会专门讲这里先把端口规则的逻辑梳理清楚。3. TurboVNC 核心配置与 Isaac Sim 接入3.1 初始化密码vncpasswd 的正确打开方式TurboVNC 的每个用户会各自维护自己的配置文件第一步是设置 VNC 认证密码vncpasswd执行后会让你输入两次密码默认写入~/.vnc/passwd。这里有几个细节要注意不要用 sudo 执行这个命令否则密码文件会生成到 root 用户目录下当前用户根本读不到另外如果之前配置过旧密码想重置就直接重新执行 vncpasswd不用手动删文件。设置完检查一下权限ls -l ~/.vnc/passwd正常情况下应该是-rw-------也就是只有当前用户能读写。如果权限不对之后所有认证都会出莫名其妙的问题。3.2 写好 ~/.vnc/xstartup 是成功的一半这个是整个配置里最关键、也最容易被忽略的环节。xstartup 脚本定义了 VNC 会话启动后要执行什么。TurboVNC 装好以后如果用户目录下没有 ~/.vnc/xstartup它会去找系统默认的 /etc/turbovnc/xstartup.turbovnc。这个默认脚本往往只是启动一个简单的终端窗口对于要跑 Isaac Sim 的我们来说肯定不够。我自己常用的 xstartup 是这样#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS export XDG_SESSION_TYPEx11 export VGL_DISPLAY:1 exec /usr/bin/startxfce4把它写到 ~/.vnc/xstartup然后加执行权限chmod 700 ~/.vnc/xstartup chmod x ~/.vnc/xstartup注意脚本里的VGL_DISPLAY:1要和后面启动 VNC 的 display 编号保持一致不一致的话 VirtualGL 会找不到对应的 X Server渲染就会走偏。还有一个容易踩的坑如果你的服务器上有多个用户每个用户都要在各自的 HOME 下配置一份 xstartup不能共用。3.3 启动、查看、停止 VNC 会话启动一个 display 编号为 1 的会话/opt/TurboVNC/bin/vncserver :1 -geometry 1920x1080 -depth 24-géometry 指定虚拟屏幕的分辨率-depth 24 是 24 位色深。如果你的客户端屏幕比较小也可以设成 1600x900后续还能通过客户端缩放来适配。查看当前有哪些会话在跑/opt/TurboVNC/bin/vncserver -list停止会话/opt/TurboVNC/bin/vncserver -kill :1这里注意TurboVNC 启动后默认会提示一个日志路径比如~/.vnc/server:1.log。日志非常重要几乎所有问题排查都要从这里入手。3.4 从本地客户端连接到服务器客户端的选择很多TurboVNC 自带一个基于 Java 的 vncviewer另外 TigerVNC Viewer、RealVNC Viewer 也都能连。官方下载页也有对应的 Windows/macOS/Linux 客户端。连接的地址格式要注意如果服务器 IP 是 192.168.1.100display 是 :1那么客户端里填192.168.1.100:1或者192.168.1.100::5901都可以。有些新手会填成 5901 以外的端口导致一直连不上。第一次连接会提示证书/指纹确认之类的内容确认后输入刚才的 vncpasswd就能看到远程桌面了。如果到这里一切顺利你看到的是一个 XFCE4 桌面可以打开终端执行命令。3.5 让 Isaac Sim 在 VNC 会话里跑起来桌面进来了接下来就是把 Isaac Sim 在这个会话里启动。这一步要牢牢记住一个概念VNC 会话里的 shell 需要同时拿到 DISPLAY 和 VirtualGL 的桥接环境否则应用要么找不到屏幕要么渲染退化成软件模式。在远程桌面的终端里执行export DISPLAY:1 export VGL_DISPLAY:1然后找到 Isaac Sim 的启动脚本。不同版本路径不太一样老版本常在~/.local/share/ov/pkg/isaac_sim-*/下新版本在~/isaacsim或你自定义的安装目录但一般都有run.sh或isaac_sim.shcd ~/.local/share/ov/pkg/isaac_sim-2023.1.1 vglrun wm ./run.sh这里vglrun wm的 wm 参数表示开启窗口管理器支持让应用创建的窗口能正常显示在虚拟桌面里。如果不加这个参数某些用全屏窗口启动的应用会把桌面遮罩掉表现就是显示异常或者黑屏。启动以后正常情况下远程桌面上会出现 Isaac Sim 的欢迎界面和场景编辑器。这时候你可以在场景里拖一个机器人模型、加载一个仿真环境看看渲染面板是否流畅、GPU 占用是否上去了。如果一切正常说明整条链路已经打通。还有一种情况你不想在 VNC 里开终端手动启动而是想从自己的本机直接通过命令远程拉起 Isaac Sim 并且让它出现在 VNC 会话里那可以在 SSH 登录后这样操作export DISPLAY:1 export VGL_DISPLAY:1 vglrun wm ~/isaacsim/run.sh本质上是一样的注意 DISPLAY 指到 VNC 的 display 号即可。4. 常见问题与排查技巧实录这一章把我在配置过程里遇到和身边同事反馈过的高频问题集中整理成速查表后面再逐个展开说。这些问题有一个共性你看到的表象是一回事实际根因往往是另一回事所以排查思路比命令本身更重要。现象最常见根因处理方式连接后黑屏只有灰底或鼠标~/.vnc/xstartup 无执行权限或内容错误检查日志 chmod x 重启会话认证失败反复提示输入密码passwd 文件权限或归属问题重新执行 vncpasswd确认属主和权限应用启动报 GLX context 相关错误VirtualGL 没正确生效用 vglrun wm 启动检查 glxinfoglxinfo 显示 llvmpipe软件渲染GLX 回读没有连到 NVIDIA检查驱动安装参数和 Xorg 配置连接时提示 display 0 不存在记了错误的 display 号用 vncserver -list 确认真实会话号会话无响应鼠标转圈应用崩溃或 Xorg 假死从 SSH 杀掉会话并重启画面颜色奇怪、锯齿明显色深不对或编码配置不合适检查 -depth 参数和客户端编码设置4.1 连接后黑屏、只有灰色桌面背景这个概率最高。常见原因有三xstartup 没有执行权限切到某个不存在的桌面环境X 服务启动时因为权限问题没起来。第一次遇到别急着重装先看日志cat ~/.vnc/server:1.log重点看最后几十行如果有startxfce4: Command not found说明 XFCE 没装对重新apt install xfce4如果看到Permission denied就检查 xstartup 的权限务必是 700 或者 755并且属主是当前用户。还有一种情况是 xstartup 里的exec /usr/bin/startxfce4路径不对可以用which startxfce4确认一下。另外如果你的 xstartup 里直接执行了某个应用而不是桌面环境比如只跑了exec /bin/bash那你连上去就只有一个终端窗口看起来也接近黑屏其实不是问题是你没把桌面环境拉起来。4.2 认证失败、密码死活不对TurboVNC 的认证走的是 VNC 自己的密码体系跟系统密码无关。遇到认证失败先确认你执行 vncpasswd 时用的用户是不是当前连接用户。很多人会用 sudo 装完组件顺手 sudo vncpasswd结果密码写进了 /root/.vnc普通用户连上去当然失败。另一个可能是密码文件权限过大VNC 服务端出于安全考虑会拒绝加载安全的 passwd 文件。解决办法rm ~/.vnc/passwd vncpasswd chmod 600 ~/.vnc/passwd然后杀掉会话重启/opt/TurboVNC/bin/vncserver -kill :1 /opt/TurboVNC/bin/vncserver :1 -geometry 1920x1080 -depth 244.3 Isaac Sim 启动后报 GLX 错误或黑屏退出如果你没走 vglrun直接在 VNC 会话里裸跑 Isaac Sim很容易看到类似GLX: Failed to create context或者libGL error: failed to load driver: swrast的报错。这是因为应用的 GLX 上下文请求被软件栈拦截了或者根本没有可用的 GPU GLX 上下文。解决办法第一优先是确认 VirtualGL 加载正常vglrun glxinfo -B | grep renderer string输出里应该出现 NVIDIA 的型号例如NVIDIA GeForce RTX 4090/PCIe/SSE2。如果出现llvmpipe那就说明 VirtualGL 没生效或者装驱动时用了--no-opengl-files导致 GLX 库缺失。这时候要么补装 NVIDIA 的 GLX 组件要么检查 vglrun 的路径是不是被覆盖了。还有一种比较隐蔽的情况Isaac Sim 的启动脚本会自动识别环境变量并动态调整渲染后端部分版本默认尝试 Vulkan。在 VNC 虚拟显示器上Vulkan 如果没有可用的 VkSurface 就会报初始化失败。这种情况可以尝试在启动脚本前设置一些渲染后端相关的环境变量不同版本变量名有差异常见的有LIBGL_ALWAYS_INDIRECT0、VK_ICD_FILENAMES等具体要看官方文档和版本说明。基本原则是让渲染栈能够识别虚拟显示设备而不是在无人值守的 headless 状态下直接放弃窗口。4.4 连接时提示 login failed for display 0这个报错我在帮同事排查时遇到过很多次。核心问题在于很多新手默认第一个显示的编号是 0但 TurboVNC 的惯例是物理 X Server 占用了 :0第一个 VNC 会话从 :1 开始。如果你在客户端里填了IP:0而服务器上根本没有 DISPLAY:0 的 VNC 会话就会得到这个错误。处理办法很简单/opt/TurboVNC/bin/vncserver -list看输出里有哪个 display 号正在监听比如 :1、:2然后客户端里填对应编号就行。如果连 :1 也报这个错说明会话没起来回到 4.1 看日志去。4.5 远程画面卡顿、GPU 利用率低VNC 里跑 3D 应用卡顿不一定全是网络问题。我见过最多的是渲染根本没走 GPUCPU 满载画面自然就一帧一帧地蹦。先确认是不是软件渲染vglrun glxspheres64这个 VirtualGL 自带的基准测试程序会以真实 GPU 渲染一个三维球体。如果帧率很低或者运行时 CPU 占用奇高说明 GLX 没到 NVIDIA。此时检查两块NVIDIA 驱动是否带图形栈vglrun 的库路径是否正确加载。执行ldd $(which glxinfo) | grep -i nvidia如果输出为空说明 libGL 没有指向 NVIDIA 的实现。可以设置export LD_LIBRARY_PATH/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH确保 NVIDIA 的 libGL 库在动态链接搜索路径里再重新跑 vglrun。4.6 会话假死、进程占着端口不放机器人仿真这种重负载任务跑久了VNC 会话假死很常见。表现为vncserver -kill :1执行后没有反应或者端口还在占用。这时候别慌两步走先看进程ps -ef | grep -i xvnc找到对应的 Xvnc 进程 PID如果确定会话已经无响应直接 killkill -9 PID然后清理残留文件rm -f /tmp/.X11-unix/X1 /tmp/.X1-lock再启动新会话。这里特别提醒kill -9 属于最后手段正常情况优先用vncserver -kill :1让它自己清理干净。5. 生产环境优化systemd 托管与多会话管理5.1 用 systemd 管理 TurboVNC 服务如果只是临时用用手动敲 vncserver 没问题。但一旦进入长期任务、需要服务器开机自动拉起远程桌面手动管理就不可靠了。我建议把 TurboVNC 挂到 systemd 下面。这里给一个经过验证的 unit 文件模板假设用户是 ubuntudisplay 是 :1[Unit] DescriptionTurboVNC Server for user ubuntu display :1 Afternetwork.target remote-fs.target nss-lookup.target [Service] Typeforking Userubuntu Groupubuntu WorkingDirectory/home/ubuntu EnvironmentHOME/home/ubuntu EnvironmentDISPLAY:1 ExecStartPre/bin/sh -c test -x /home/ubuntu/.vnc/xstartup ExecStart/opt/TurboVNC/bin/vncserver :1 -geometry 1920x1080 -depth 24 ExecStop/opt/TurboVNC/bin/vncserver -kill :1 Restarton-failure [Install] WantedBymulti-user.target把它保存为 /etc/systemd/system/turbovnc.service或者直接以用户名命名然后sudo systemctl daemon-reload sudo systemctl enable turbovnc1.service sudo systemctl start turbovnc1.service启动前务必确保 ~/.vnc/xstartup 已经存在并且有执行权限否则 ExecStartPre 会直接失败。这个前置检查是我在实际部署时加的能避免很多服务显示 active 但连不上的迷惑现象。5.2 多用户与会话隔离团队协作时多个人要在同一台 GPU 服务器上跑 Isaac Sim VNC最忌讳的是大家挤在同一个 display 上互相干扰。正确做法是每个用户独立 VNC 会话、独立 display 号、独立密码。比如用户 alice 用 :1用户 bob 用 :2端口分别是 5901 和 5902。资源上可以通过 systemd 的 User 字段隔离。显卡是共享的GPU 显存分配由 NVIDIA 驱动统一管理一般不会冲突但要留意别让多个重负载 Isaac Sim 同时把显存打爆。还有一个细节如果多个用户都用 XFCE4各自的会话配置是隔离在各自 HOME 下的。确保不要为了方便去共享同一个账号否则配置、密码、文件混在一起出了问题很难查。5.3 安全连接方式SSH 隧道优先前面说端口规则时提到过VNC 协议本身不加密。生产环境里我的建议是VNC 永远只监听本机回环地址不直接对公网开放然后用 SSH 隧道把本地端口转发到服务器。在本地执行ssh -L 5901:localhost:5901 userserver_ip保持这个 SSH 会话开着然后在本地 vncviewer 里连接localhost:5901。流量全部走 SSH 加密通道VNC 端口本身不暴露在网络上安全性高很多。如果你所在的环境有防火墙限制SSH 隧道的 22 端口通常也会比自定义端口好放行。如果一定要直接开放 VNC 端口记得配上云安全组、ufw 规则加上来源 IP 白名单并把 TurboVNC 的认证方式设置成强密码。同时可以加-localhost参数强制只监听回环配合端口转发进一步降低暴露面。5.4 一些小而实用的调优调整色深3D 场景对颜色准确性要求高建议用-depth 24不要为了省带宽降到 16 位否则 Isaac Sim 界面里的渐变和材质细节会出现很明显的色带。控制帧率在客户端里把编码质量调到中而不是高实测在千兆内网下延迟和画质都能兼顾。分辨率动态切换在 VNC 会话里用xrandr调分辨率比如临时改成竖屏观察机械臂时不需要重启会话xrandr --fb 1080x1920开机自启后验证重启服务器后先 SSH 进去vncserver -list确认会话状态再连客户端能省不少时间。我个人实际操作中的体会是TurboVNC 这套组合最需要花时间去理解的不是安装命令而是 VirtualGL 和 X display 怎么配合。很多人装完发现画面还是卡的其实不是网络不好而是 GLX 根本没走 GPU。所以第一次搞的朋友建议先在 VNC 会话里跑一遍vglrun glxinfo -B | grep renderer确认输出是 NVIDIA 型号再上 Isaac Sim这样排错会快很多。最后再分享一个小技巧如果你发现灵力 Sim 或者 Omniverse 相关应用在 VNC 里偶尔渲染黑屏可以先试着在会话里启动一个简单的窗口管理器之外的 3D 测试程序比如 glxspheres64它能正常旋转说明底层 GLX 通路是好的再把锅甩给应用本身不至于绕半天查不到点子上。这套链路搭好之后以后在无头服务器上做机器人仿真开发画面随时能拉回来看效率提升非常明显。