【具身智能】一-在WSL上运行Genesis离线渲染,打开仿真窗口

写在前面:尽可能不要在外接硬盘中使用WSL喵,运行速度已经令人发指了喵!(•́へ•́╬)

单独给Genesis的离线渲染和仿真窗口开一章,是因为笔者在这里花费了很长时间解决……在Windows系统上,根据官方的API手册和示例可以很容易实现Genesis的窗口仿真,但在WSL无头窗口上却需要很大的前置内容。

笔者遇到的问题主要是在使用官方提供的示例代码时,窗口由于卡死而迟迟不被弹出。

但是好在进行离线渲染的时候没有很多问题,所以本章就离线渲染进行。

一、安装基础前置

直接运行下面的内容:

sudo apt-get update
sudo apt-get upgrade
sudo apt install build-essential gcc g++ -y
sudo apt install dkms build-essential -y

二、安装WSL-CUDA

WSL需要单独安装一份CUDA,尽可能与你目前使用的CUDA版本匹配。本文使用CUDA11.8版本进行演示。

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

之后按照提示,耐心等待完成安装即可。

三、配置环境变量

使用VIM打开~/.bashrc文件进行修改(~/.bashrc文件将在你每次开机时自动运行一遍文件内的指令):

vim ~/.bashrc

然后新增两行内容(注意替换cuda版本!!!):

export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

然后进行source刷新并检查一下:

source ~/.bashrc
nvcc -V

四、配置并安装额外前置

如果你直接运行,大概率会出现以下问题:

  • 1、[cuda_driver.cpp:load_lib@36] libcuda.so lib not found. (GPU调用不正常)
  • 2、version `GLIBCXX_3.4.30′ not found. (找不到GLIBCXX_3.4.30文件)
  • 3、failed to open swrast: /usr/lib/dri/swrast_dri.so. (找不到swrast_dri.so文件)
  • ……

这说明环境还是有一些地方没有完善。我们按照下面的步骤,依次运行代码:

export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH  # 解决GPU调用问题
sudo apt-get install mesa-utils  # 解决找不到swrast_dri.so文件
sudo mkdir -p /usr/lib/dri
sudo ln -s /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so /usr/lib/dri/swrast_dri.so
sudo apt install libgl1-mesa-dri  # 解决仿真窗口不弹出和找不到GLIBCXX_3.4.30文件的问题
conda install -c conda-forge libstdcxx-ng

五、安装Pytorch和torchvision

安装torch和torchvision。首先推荐大于2.7.1的版本。你需要分别在torch官方库torchvision官方库中,找到适合你的版本。粗略检索后(搜索2.7.1+cu118),核对Python版本信息(cp310=Python3.10)、系统信息(manylinux)和内核版本(x86_64)。选择好后下载即可。

torch 2.7.1 对应的 torchvision 版本为 0.22.1。同样的方式,去torchvision官方库中找到并下载即可。

torch-2.7.1+cu118-cp310-cp310-manylinux_2_28_x86_64.whl

torchvision-0.22.1+cu118-cp310-cp310-manylinux_2_28_x86_4.whl

下载好后,直接找到其所在路径,使用pip安装即可。

pip install ./torch-2.7.1+cu118-cp310-cp310-manylinux_2_28_x86_64.whl
pip install ./torchvision-0.22.1+cu118-cp310-cp310-manylinux_2_28_x86_4.whl

六、离线渲染示例代码

运行下面的代码进行离线渲染,并生成一段视频:

import genesis as gs
import numpy as np

def main():
    # 初始化
    gs.init(backend=gs.gpu)

    # 创建场景,关闭交互式查看器(show_viewer=False),使用 Rasterizer 渲染器
    scene = gs.Scene(
        show_viewer=False,
        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'),
    )

    # 添加一个相机用于离线渲染(不显示 GUI)
    cam = scene.add_camera(
        res=(1280, 960),
        pos=(3.5, 0.0, 2.5),
        lookat=(0, 0, 0.5),
        fov=30,
        GUI=False
    )

    # 构建场景
    scene.build()

    # 开始录制视频
    cam.start_recording()

    # 运行 1000 步模拟同时记录图像
    for i in range(1000):
        scene.step()

        # 可选:让摄像机绕中心旋转,创建动态视角
        cam.set_pose(
            pos=(3.0 * np.sin(i / 200), 3.0 * np.cos(i / 200), 2.5),
            lookat=(0, 0, 0.5)
        )

        # 渲染 RGB(此处忽略深度、分割、法线等,只要 RGB 即可)
        cam.render()

    # 停止录制并保存视频文件
    cam.stop_recording(save_to_filename='franka_demo.mp4', fps=60)

    print("Finished rendering and saved to franka_demo.mp4")

if __name__ == '__main__':
    main()

不知道为什么,这张gif动不了……自己跑一下,打开视频看看吧。

七、仿真窗口操作

与离线渲染不同的是,你无需特地设置相机位置和运动轨迹——你所视的窗口即为相机。

# Genesis官方提供的代码 

import genesis as gs
gs.init(backend=gs.gpu)

scene = gs.Scene(show_viewer=True)
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()

八、本章小结

这一章我们成功地运行了Genesis的示例脚本,并以离线渲染与仿真窗口的形式体现出来。接下来,我们将进行一些实战操作与练习。

站内分享资源仅限学习交流使用,禁止作任何其他用途。请在下载后24小时内删除!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
背景图片