Compshare云服务平台Genesis世界模型的上手与测试
关于UCloud(优刻得)旗下的compshare算力共享平台UCloud(优刻得)是中国知名的中立云计算服务商,科创板上市,中国云计算第一股。Compshare GPU算力平台隶属于UCloud,专注于提供高性价4090算力资源,配备独立IP,支持按时、按天、按月灵活计费,支持github、huggingface访问加速。使用下方链接注册可获得20元算力金,免费体验10小时4090云算力。
0. 简介
关于UCloud(优刻得)旗下的compshare算力共享平台
UCloud(优刻得)是中国知名的中立云计算服务商,科创板上市,中国云计算第一股。
Compshare GPU算力平台隶属于UCloud,专注于提供高性价4090算力资源,配备独立IP,支持按时、按天、按月灵活计费,支持github、huggingface访问加速。
使用下方链接注册可获得20元算力金,免费体验10小时4090云算力
https://www.compshare.cn/?ytag=GPU_lovelyyoshino_Lcsdn_csdn_display。
来自卡内基梅隆大学、斯坦福大学、麻省理工计算机科学与人工智能实验室、英伟达和清华大学的众多核心贡献者推出了一个全新的物理仿真平台Genesis。据说可以40秒完成一个go1机械狗的训练。我们这里对该平台进行了一次简单测试,模仿RoboCAS中的拾取与操作任务测试了Genesis的仿真能力。有一说一最核心的代码目前还没完全开源。部分宣传的内容没有release,尤其是AI自动任务生成等具有广泛应用前景的内容。所以大家可以持续关注Github链接。这里最近受到优刻得的使用邀请,正好解决了我在大模型和自动驾驶行业对GPU的使用需求。UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡1.88元,并附带200G的免费磁盘空间。暂时已经满足我的使用需求了,同时支持访问加速,独立IP等功能,能够更快的完成项目搭建。此外对于低性能的还有3080TI使用只需要0.88元,已经吊打市面上主流的云服务器了。


1. 环境安装
由于优刻得已经装好了所有和CUDA相关的内容,VNC可视化作者也专门提供了可视化操作的docker,https://www.compshare.cn/images-detail?ImageID=compshareImage-16gb9we1sib0&ImageType=Community&ytag=GPU_lovelyyoshino_Lcsdn_csdn_display,我们只需要关注代码的使用即可

1.1 通过VNC搭建Ubuntu图形界面
软件安装
更新本地软件包
apt update
安装远程图形界面&轻量化桌面
# 安装较为耗时,预计5-10min
apt update
apt install -y sudo xvfb libgl1 ffmpeg vim-tiny xfce4 xfce4-goodies dbus-x11 x11-utils libgl1-mesa-dri x11vnc xdotool software-properties-common build-essential ca-certificates cups-browsed cups-bsd cups-common cups-filters printer-driver-cups-pdf alsa-base alsa-utils file gnupg curl wget bzip2 gzip xz-utils unar rar unrar zip unzip zstd gcc git coturn jq nano vim htop fonts-dejavu fonts-freefont-ttf fonts-hack fonts-liberation fonts-noto fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-color-emoji fonts-noto-extra fonts-noto-ui-extra fonts-noto-hinted fonts-noto-mono fonts-noto-unhinted fonts-opensymbol fonts-symbola fonts-ubuntu fonts-wqy-zenhei lame less libavcodec-extra libpulse0 supervisor net-tools packagekit-tools pkg-config mesa-utils mesa-va-drivers libva2 vainfo vdpau-driver-all libvdpau-va-gl1 vdpauinfo mesa-vulkan-drivers vulkan-tools radeontop libvulkan-dev ocl-icd-libopencl1 clinfo xkb-data xauth xbitmaps xdg-user-dirs xdg-utils xfonts-base xfonts-scalable xinit xsettingsd libxrandr-dev x11-xkb-utils x11-xserver-utils x11-utils x11-apps xserver-xorg-input-all xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-intel xserver-xorg-video-qxl libxau6 libxdmcp6 libxcb1 libxext6 libx11-6 libxv1 libxtst6 libdrm2 libegl1 libgl1 libopengl0 libgles1 libgles2 libglvnd0 libglx0 libglu1 libsm6 xorg openbox tightvncserver
apt autoclean -y
apt autoremove -y
mkdir -pm755 /etc/apt/trusted.gpg.d && rm -rf /etc/apt/trusted.gpg.d/mozillateam-ubuntu-ppa.gpg && curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x0AB215679C571D1C8325275B9BDB3D89CE49EC21" | gpg --dearmor -o /etc/apt/trusted.gpg.d/mozillateam-ubuntu-ppa.gpg
mkdir -pm755 /etc/apt/sources.list.d && echo "deb https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $(grep UBUNTU_CODENAME= /etc/os-release | cut -d= -f2 | tr -d '\"') main" > "/etc/apt/sources.list.d/mozillateam-ubuntu-ppa-$(grep UBUNTU_CODENAME= /etc/os-release | cut -d= -f2 | tr -d '\"').list"
apt update && apt install --no-install-recommends -y adwaita-icon-theme-full appmenu-gtk3-module ark aspell aspell-en breeze breeze-cursor-theme breeze-gtk-theme breeze-icon-theme dbus-x11 qt5-gtk-platformtheme qt5-image-formats-plugins qt5-style-plugins qtspeech5-flite-plugin qtvirtualkeyboard-plugin software-properties-qt sonnet-plugins sweeper systemsettings ubuntu-drivers-common vlc vlc-l10n vlc-plugin-access-extra vlc-plugin-notify vlc-plugin-samba vlc-plugin-skins2 vlc-plugin-video-splitter vlc-plugin-visualization xdg-user-dirs transmission-qt fcitx fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt5 fcitx-module-dbus fcitx-module-kimpanel fcitx-module-lua fcitx-module-x11 fcitx-tools fcitx-hangul fcitx-libpinyin fcitx-m17n fcitx-mozc fcitx-sayura fcitx-unikey
apt-get update && apt-get install --no-install-recommends -y \
kmod \
libc6-dev \
libpci3 \
libelf-dev \
pkg-config \
xorg
apt autoclean -y
apt autoremove -y
add-apt-repository ppa:kisak/kisak-mesa
apt update
apt upgrade
语言选择
在安装中,需要选择对应语言

依赖项配置
环境变量
NOTE
后续容器会默认添加
-e USER=root设置,此步骤可忽略
echo "export USER=root" >> ~/.bashrc && source ~/.bashrc
dbus-launch启动
NOTE
在软件安装中dbus-x11是启动dbus-launch依赖包,若出现启动失败,可重新
apt install dbus-x11进行安装
dbus-launch
VNC配置
密码设置
NOTE
- 密码为6-8位
- 只读模式设置为n

# 1.运行
vncserver
# 2.密码设置,使用6-8位作为密码,超过会被自动截取
# 3.密码确认,输入和设置的同一个密码即可
# 4.在最后进行view-only选择时,需要选择【n】并输入回车
修改启动文件
启动文件备份
cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
修改文件内容
echo "startxfce4 &" >> ~/.vnc/xstartup
chmod +x ~/.vnc/xstartup
VNC重启
# 1.关闭在密码设置中启动的VNC进程
vncserver -kill :1
# 2.重新启动vncserver
vncserver -geometry 1920x1080
# xauth: (argv):1: bad display name "b9732a281594:1" in "add" command
# New 'X' desktop is b9732a281594:1
# Starting applications specified in /root/.vnc/xstartup
# Log file is /root/.vnc/b9732a281594:1.log
Xvfb :99 -screen 0 1024x768x24 &
echo "export DISPLAY=:99" >> ~/.bashrc && source ~/.bashrc
VNC端口占用说明
-
默认使用端口为5900+启动编号,例如:在执行启动命令
vncserver -geometry 1920x1080后,在log中提示New 'X' desktop is b9732a281594:1则表示,此进程在启动编号:1下执行,则此时占用端口号为5901。若后续需要使用VncViewer工具进行连接,防火墙必须打开5901端口号 -
也可通过命令进行检查端口
(base) root@b9732a281594:/# ss -tuln | grep 590
tcp LISTEN 0 5 0.0.0.0:5901 0.0.0.0:*
VncViewer连接(可选)
IMPORTANT
容器内VncServer服务对应防火墙端口必须打开
官网工具下载
https://www.realvnc.com/en/connect/download/viewer/
桌面连接
- File -> New connection
- 创建连接配置如下
-
VncServer: EIP(外网访问地址):VncServer服务端口号
-
Name:自定义名称

- 双击选择刚刚创建的connection

- 输入在vncserver密码初始化时填入的密码

- 登录成功

Chrome浏览器配置
浏览器打开报错

谷歌浏览器安装
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
apt install -y ./google-chrome-stable_current_amd64.deb
VNC桌面进行浏览器替换(可选)
WARNING
此步骤须桌面的Terminal中进行操作,具体步骤如下
- 执行
xfce4-settings-manager会出现如下弹窗选择

- 选择
Default Applications - 在
Web Browser中选择Other选项

-
输入:
/usr/bin/google-chrome --no-sandbox保存即可 -
打开默认浏览器即可

使用Web浏览器连接远程桌面
TIP
针对于不想安装VncViewer用户,可以选择使用Web浏览器直接访问远程桌面
noVNC下载
项目下载
# noVnc下载
git clone https://github.com/novnc/noVNC.git /usr/lib/noVNC
chmod +x /usr/lib/noVNC/utils/*
noVNC启动
# 启动代理服务,并后台运行
/usr/lib/noVNC/utils/novnc_proxy --vnc localhost:5901 &
# 打印日志如下,端口号默认监听:6080
Using installed websockify at /root/miniconda3/bin/websockify
Starting webserver and WebSockets proxy on port 6080
WebSocket server settings:
- Listen on :6080
- Web server. Web root: /usr/lib/noVNC
- No SSL/TLS support (no cert file)
- proxying from :6080 to localhost:5901
Navigate to this URL:
http://b9732a281594:6080/vnc.html?host=b9732a281594&port=6080
Press Ctrl-C to exit
web页面连接使用
NOTE
必须保证对应的6080端口防火墙打开!!!
- 浏览器访问
http://${外网EIP地址}:6080/vnc.html - 点击页面
连接按钮 - 输入vncserver设置的密码

1.2 环境配置安装
pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118
pip install open3d
pip install genesis-world
git clone https://github.com/Genesis-Embodied-AI/Genesis.git

如果需要光追渲染,需要编译Luisa Compute相关模块
cd Genesis
git submodule update --init --recursive
sudo apt install build-essential manpages-dev software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update && sudo apt install gcc-11 g++-11
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
sudo apt-get install patchelf
sudo apt install libvulkan-dev
sudo apt-get install zlib1g-dev
sudo apt-get install xorg-dev libglu1-mesa-dev
pip install "pybind11[global]"
sudo apt-get install libsnappy-dev
cd genesis/ext/LuisaRender
cmake -S . -B build -D CMAKE_BUILD_TYPE=Release -D PYTHON_VERSIONS=3.10 -D LUISA_COMPUTE_DOWNLOAD_NVCOMP=ON -D LUISA_COMPUTE_ENABLE_GUI=OFF
cmake --build build -j $(nproc)
cd $(dirname $(which python))/../lib
mv libstdc++.so.6 libstdc++.so.6.old
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6
Genesis基于OMPL实现无碰撞运动路径规划,可以直接下载预编译的wheel并使用pip安装
wget https://github.com/ompl/ompl/releases/download/prerelease/ompl-1.6.0-cp310-cp310-manylinux_2_28_x86_64.whl # 根据系统选择正确的版本
pip install ompl-1.6.0-cp310-cp310-manylinux_2_28_x86_64.whl
如果在代码运行过程中出现段错误等问题,可以尝试从源码安装ompl
# 由于需要再conda中安装,所以不使用官方的安装脚本
sudo apt-get -y install g++ cmake pkg-config libboost-serialization-dev libboost-filesystem-dev libboost-system-dev libboost-program-options-dev libboost-test-dev libeigen3-dev libode-dev wget libyaml-cpp-dev
export CXX=g++
export MAKEFLAGS="-j `nproc`"
pip install -vU https://github.com/CastXML/pygccxml/archive/develop.zip pyplusplus
sudo apt-get -y install castxml libboost-python-dev libboost-numpy-dev pypy3
git clone --recurse-submodules https://github.com/ompl/ompl.git -b 1.6.0
mkdir -p ompl/build
cd ompl/build
cmake ../.. -DPYTHON_EXEC=$(which python) -DCMAKE_INSTALL_PREFIX="$CONDA_PREFIX" -DBOOST_ROOT="$CONDA_PREFIX" -DPYTHONPATH=$CONDA_PREFIX/lib/python3.10/site-packages # 注意根据python版本修改路径
make update_bindings
# 如果在make update_bindings过程中出现报错:“No rule for update_bindings”,请检查系统中的boost_python是否正确安装并适配当前python版本(参考https://blog.csdn.net/qq_41854911/article/details/119454212)
make -j8
sudo make install
相关的安装教程可以参考:用户指南🛠️ 安装
2. 场景渲染与相机图像获取
2.1 创建场景
官方文档:👋🏻 Hello, Genesis
import genesis as gs
# 初始化引擎
gs.init(backend=gs.cpu) # 可以选择多种bakcend以适应不同的平台以及设备, 详见官方文档
# 创建场景
scene = gs.Scene()
# 加载模型以及机器人
# 在 Genesis 中,所有对象和机器人都表示为Entity。Genesis 的设计完全面向对象,因此您将能够直接通过它们的方法与这些实体对象进行交互,而不是使用分配给它们的句柄或全局 ID
plane = scene.add_entity(gs.morphs.Plane())
franka = scene.add_entity(
gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
)
# 创建场景,每次添加、删除场景中的物体时都需要重新创建场景
scene.build()
# 运行仿真
for i in range(1000):
scene.step()
首先我们通过ps -ef来查询我们目前已经开启的xvfb模块,我们默认使用的是99。如果没有则需要
export DISPLAY=:99.0
export VTKI_OFF_SCREEN=True
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
配置完成后再输入
Xvfb :99 -screen 0 1024x768x16 &
x11vnc -listen 0.0.0.0 -rfbport 3389 -noipv6 -passwd 你的密码 -display :99
如果提示报错为No display detect:问题可以执行export DISPLAY=:99即可
然后我们在VNC viewer中输入服务器IP+:5901。即可完成最终的图片运行以及可视化生成。
该仿真器默认将物体模型进行凸优化,但是同样支持非凸物体的仿真,参考官方示例
tank = scene.add_entity(
gs.morphs.Mesh(
file="meshes/tank.obj",
convexify=False, # 非凸物体
scale=5.0,
fixed=True,
euler=(90, 0, 0),
),
)

2.2 创建并使用相机
官方文档:📸 Visualization & Rendering
当前Genesis中相机支持渲染 rgb 图像、深度、分割mask和表面法线。
需要在场景build之前对相机进行定义,而build之后可以对相机位姿进行改变。但是并未找到直接的API以将相机固定到机器人的某个link上。
import genesis as gs
gs.init(backend=gs.cpu)
scene = gs.Scene(
show_viewer = True,
viewer_options = gs.options.ViewerOptions(
res = (1280, 960),
camera_pos = (3.5, 0.0, 2.5),
camera_lookat = (0.0, 0.0, 0.5),
camera_fov = 40,
max_FPS = 60,
),
vis_options = gs.options.VisOptions(
show_world_frame = True,
world_frame_size = 1.0,
show_link_frame = False,
show_cameras = False,
plane_reflection = True,
ambient_light = (0.1, 0.1, 0.1),
),
renderer=gs.renderers.Rasterizer(),
)
plane = scene.add_entity(
gs.morphs.Plane(),
)
franka = scene.add_entity(
gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
)
cam = scene.add_camera(
res = (640, 480),
pos = (3.5, 0.0, 2.5),
lookat = (0, 0, 0.5),
fov = 30,
GUI = False,
)
scene.build()
# render rgb, depth, segmentation, and normal
# rgb, depth, segmentation, normal = cam.render(rgb=True, depth=True, segmentation=True, normal=True)
cam.start_recording()
import numpy as np
for i in range(120):
scene.step()
cam.set_pose(
pos = (3.0 * np.sin(i / 60), 3.0 * np.cos(i / 60), 2.5),
lookat = (0, 0, 0.5),
)
cam.render()
cam.stop_recording(save_to_filename='video.mp4', fps=60)

其他详细的内容可以参考官方文档和API
3. 实测体验对比
Genesis的宣传稿描绘了一个通过生成式物理模拟构建虚拟世界的宏大愿景,但实际展示的仅是一个重新设计的轻量级物理引擎。尽管该项目在GitHub上获得了广泛关注,实际体验与宣传内容相距甚远,期待后续进展。
优点:
- 轻量级框架:基于Python,代码简洁易懂。
- 统一物理框架:支持多种求解器和形态模拟,易于扩展。
- 全面的物理模拟:支持刚体、软体、柔体、破坏和碰撞等多种模拟。
- 优秀性能:在高性能GPU上支持大量环境和高帧率,仿真效率显著高于现有平台。
不足:
- 缺乏生成式物理模拟的demo和代码:宣传中提到的功能未在文档和代码中体现。
- 渲染效果与实际差距大:缺乏炫酷效果的demo。
- Avatar角色生成和4D能力缺失:相关demo和代码均未提供。
- 缺乏交互式场景。
下面是知乎大佬飞鸟咿呀的对比
这是再横向对比Isaac系列后得出的结论。此外在 genesis/engine/solvers 目录中,可以看到多个求解器,每个求解器都针对特定的物理模拟场景进行优化。
| 方案 | Genesis | Isaac系列 |
|---|---|---|
| 刚体动力学 (Rigid Body) | 支持 | 支持 |
| 柔体动力学 (Soft Body) | 支持 | 支持 |
| 物质点法 (MPM) | 支持 | / |
| 基于位置的动力学 (PBD) | 支持 | / |
| 光滑粒子动力学 (SPH) | 支持 | 支持 |
| 稳定流体模拟 (Stable Fluids) | 支持 | 支持 |
| 粒子求解器 (Particle-Based) | 支持 | 支持 |
| 关节约束求解器 (Articulations) | 支持 | 支持 |
| Avatar 求解器 | 支持 | / |
| 工具求解器 (Tool Solver) | 支持 | / |
| 流体求解器 (Flow Solver) | 支持 | 支持 |
| 刚体 GPU 求解器 | / | 支持 |
| 多物理场支持 | 支持 | 支持 | |
4. 参考链接
https://blog.csdn.net/weixin_51684047/article/details/144615880
更多推荐


所有评论(0)