当前位置: 首页 > news >正文

基于 Windows + Ubuntu 练习 MuJoCo 模拟

基于 Windows + Ubuntu 练习 MuJoCo 模拟

在本地 Windows 电脑上学习 MuJoCo 时,如果服务器是无图形界面的 Ubuntu 环境,最常见的问题是:仿真程序可以运行,但看不到 MuJoCo Viewer 的可视化窗口。本文记录了一套基于 Windows + Ubuntu 服务器的 MuJoCo 可视化配置流程,使用 XFCE 图形桌面与 TigerVNC 搭建远程桌面环境,并通过 SSH 隧道在本地安全访问服务器上的 MuJoCo 仿真画面。该流程适合用于 MuJoCo 入门、强化学习环境调试、机械臂仿真观察,以及后续基于 Gymnasium / Gymnasium-Robotics 的具身智能学习。

服务器配置

| 操作系统 | Ubuntu `22.04.5 LTS` |
| CPU | `16` 核心 |
| 内存 | `80 GB` |
| GPU | NVIDIA GeForce RTX `4090 D`,显存约 `24 GB` |
| NVIDIA 驱动 | `580.76.05` |
| CUDA 兼容版本 | `13.0` |
| Conda | `24.4.0` |

—— 服务器选择可以参考我的配置,我使用的服务器提供商是 AutoDL,具体配置根据任务强度调整。

Ubuntu 配置步骤

环境配置

  1. 基于ubuntu镜像,在服务器终端执行如下代码:
    这一步是在 Ubuntu 服务器上安装 MuJoCo 可视化所需的基础工具、XFCE 图形桌面、TigerVNC 远程桌面服务,以及 OpenGL/Mesa 等渲染依赖,使无显示器的云服务器能够通过 VNC 打开并观察 MuJoCo 仿真画面。
apt-get updateDEBIAN_FRONTEND=noninteractive apt-get install -y \git tmux ffmpeg \xfce4 xfce4-goodies dbus-x11 xauth \tigervnc-standalone-server tigervnc-tools \libgl1 libegl1 libglfw3 libgl1-mesa-dri mesa-utils
  1. 创建一次性完整 Python 环境 (建议用conda管理环境):
conda create -n mujoco-learning python=3.10 -y
conda activate mujoco-learningpip install \mujoco \numpy scipy matplotlib \imageio imageio-ffmpeg \gymnasium[mujoco] gymnasium-robotics \torch stable-baselines3 tensorboard

MuJoCo 官方 Python 包已经包含 MuJoCo 动态库,不需要单独下载桌面安装程序。

配置 VNC

  1. 在服务器执行:
vncpasswd
mkdir -p /root/.vnc
  1. 创建 /root/.vnc/xstartup:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec dbus-launch --exit-with-session startxfce4
  1. 然后:
chmod +x /root/.vnc/xstartuptigervncserver :1 \-localhost yes \-geometry 1600x900 \-depth 24

其中 ” :1” 对应服务器端口:5900 + 1 = 5901

不要把 VNC 端口直接暴露到公网。-localhost yes 表示 VNC 只监听服务器本机地址,必须通过 SSH 隧道访问,安全性更高。

在配置自动启动之前,每次 AutoDL 重新开机后,需要重新启动一次

tigervncserver :1

Windows 连接方式

  1. 在 Windows PowerShell 中建立隧道,运行(假设使用 AutoDL 作为服务器提供商):
ssh -CNg -L 5901:127.0.0.1:5901 root@<AUTODL_HOST> -p <SSH_PORT>

其中 root@<AUTODL_HOST><SSH_PORT> 以及密码 ****通过AutoDL的SSH获取。

image.png

保持 PowerShell 窗口运行。

切换 Wi-Fi 后,原 SSH 连接通常会断开,需重新打开 PowerShell 连接。

  1. 打开本地 TigerVNC Viewer,连接:
127.0.0.1:5901

如果一切正常将进入可视化桌面:

image 1

AutoDL 官方说明,个人用户可以使用 SSH 隧道代理任意端口,因此不需要企业认证,也不需要占用平台公开映射的 6006 或 6008 端口。

如果仍然失败,先普通登录 AutoDL:

ssh root@<AUTODL_HOST> -p <SSH_PORT>

在服务器检查 VNC:

tigervncserver -list

如果没有 :1 会话,重新启动:

cd /root/autodl-tmp/repos/mujoco-learning
bash server/start_vnc.sh

启动 MuJoCo Viewer

在 AutoDL 控制台输入

export DISPLAY=:1
python -m mujoco.viewer --[path].xml

切换到 TigerVNC Viewer 即可看到 MuJoCo 环境窗口:

771bf93ee7f1a45eb18189d72f7dde4

Q & A

记录交互式学习过程中遇到的问题与解决办法,持续更新。

  1. 在 ubuntu 终端尝试执行 python -m mujoco_viewer 时发生如下报错
/root/miniconda3/envs/mujoco-learning/lib/python3.10/site-packages/glfw/**init**.py:917: GLFWError: (65550) b'X11: Failed to open display :1'
warnings.warn(message, GLFWError)
ERROR: could not initialize GLFW

这个报错说明:DISPLAY=:1 上没有可用的 X/VNC 桌面,所以 MuJoCo Viewer 的 GLFW 窗口打不开。服务器可能经历过重启,尝试输入以下命令后重新运行 mujoco-viewer:

tigervncserver :1
http://www.zskr.cn/news/1489867.html

相关文章:

  • 基础采集设备
  • Vim党福音:用Coc.nvim + Clangd搞定嵌入式开发,解决交叉编译链头文件索引的终极脚本
  • 高效空气过滤器哪家好 2026年市场选择指南 - 品牌排行榜
  • 鸿蒙原生 ArkTS:margin 溢出、Row 弹性分配与 alignItems 的交互
  • 鸿蒙6.0应用开发——网络状态管理
  • LeetCode 2161.根据给定数字划分数组:双指针(O(1)但非源地操作)
  • 电商物流避坑指南:这8个快递查询痛点,你遇到过几个?
  • 告别截图!MapChart遗传图谱高清导出与个性化样式进阶教程
  • 市面上正规的雾森系统厂家哪家可靠
  • 大模型应用专家,做好随时涨薪的准备吧~
  • STM32F4 CANopen SDO通信调试实录:我是如何用逻辑分析仪抓包解决数据帧错误的
  • 2026乐山油炸串串推荐 脆皮五花肉人气店 - 优质品牌商家
  • 限流:从单机QPS计数器到分布式三层防御体系
  • AD9253 国产替代方向:四通道 14 位 125MSPS ADC 选型注意事项
  • 2026年成都名酒回收商家:核心技术维度深度解析 - 优质品牌商家
  • 过期食品被晒图投诉,舆情处置时发声明为什么被骂更惨
  • 别再傻傻用pip list了!Python包版本查询的5种高效姿势(含Pycharm/VSCode环境)
  • 安卓必备神器,收藏到吃灰都要下!
  • 别再只做本地开发了!手把手教你用IIS和花生壳内网版,把本地项目变成临时演示环境
  • 7不同岗位如何挑选 AI 证书?运营、产品、设计、市场选型全指南
  • 基于深度学习YOLOv10的森林火灾烟雾识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • 石家庄空调移机怎么选?2026年5家公司全面对比 - 本地品牌推荐
  • 指令周期:一条指令是怎么被执行的?
  • 终极SPT-AKI存档编辑器完全指南:简单快速修改你的单机塔科夫存档 [特殊字符]
  • 技术深度解析:Jasminum - Zotero中文文献管理的架构设计与实现
  • 后 | 室 Backrooms
  • 2026年新能源类本科院校技术办学实力实测与推荐:航空办学特色大学推荐/航空航天类大学推荐/优选推荐 - 优质品牌商家
  • 实战指南 | 企业Geo运营方法论:AI搜索优化实战指南
  • 丰田电动SUV热销,为何此时却放缓电动化步伐?
  • 面向对象设计(OOP)核心思想与 Java 实践总结