详解Virtualhome环境搭建教程 | 智能体
 
 
 
 
🌈个人首页: 神马都会亿点点的毛毛张
 
 
本篇文章毛毛张想分享的是搭建
VitrualHome环境的教程,这个内容在国内很少有人在做,或者做的时候分享的教程比较少,毛毛张在此记录一下
文章目录
- 1.前言
- 2.搭建教程
- 2.1 下载代码
- 2.2 配置虚拟环境
- 2.3 毛毛张遇到的问题
- 2.3.1 将numpy的版本降低为1.x
- 2.3.2 导入函数问题
- 2.3.3 No module named 'unity_simulator'
- 2.3.4 Exception: Error, environment was found but could not be launched
 
 
- 3.代码测试
- 3.1 检验环境是否配置成功
- 3.2 仿真动画
- 3.3 官网教程
 
- 4.其它问题
- 参考文献
1.前言
- 最近毛毛张在做智能体任务规划,看到了几篇文章,他们都是基于VirtualHome这个虚拟环境来做的- 相关文章:https://progprompt.github.io/
- 相关文章:https://tannl.github.io/FLTRNN.github.io/
 
- VirtualHome官网介绍:VirtualHome 是一个交互式平台,可通过程序模拟复杂的家庭活动。VirtualHome 的关键之处在于,它支持与环境进行复杂交互,例如拿起物品、打开 / 关闭电器、打开家电设备等等。我们的模拟器可通过 Python API 轻松调用:将活动编写为简单的指令序列,随后便能在 VirtualHome 中呈现出来。用户可以在不同的智能体和环境之间进行选择,还能随时修改环境。此外,该平台还能输出各类真实数据,比如带时间戳的动作、实例 / 语义分割数据,以及光流和深度数据。这个平台能够模拟多智能体活动,可用作训练具身人工智能任务智能体的环境。
- VirtualHome官网链接:https://github.com/xavierpuigf/virtualhome
- VirtualHome官网教程:http://virtual-home.org/documentation/master/
话不多说,下面开始VirtualHome的搭建教程
2.搭建教程
- 本搭建教程使用的版本为: 
  - python:3.9.20
- virtualhome:2.3.0 (目前最新版本)
- windows系统
 
- 说明:尽量不要改动版本,免得容易报错
2.1 下载代码
- 下载官网代码:https://github.com/xavierpuigf/virtualhome,下图是毛毛张下载官网代码之后使用vscode打开的文件目录结构
  
2.2 配置虚拟环境
虚拟环境配置不熟悉的可以参看毛毛张的这篇文章:【万字长文】【超详尽的配置教程】Anaconda配置深度学习环境教程 | Pytorch | Tensorflow | conda | pip | cuda | cudnn | torch
1.首先创建一个虚拟环境:
conda create -n virtualhome python=3.9
2.激活创建好的虚拟环境:
conda activate virtualhome
3.安装virtualhome库
pip install virtualhome

4.下图则表明virtualhome库安装完成,可以留意一下,当前命令安装的opencv-python版本为4.5.1.48 
 
 5.切换到官网下载的代码目录virtuahome下,注意virtualhome目录下还有一个virtualhome目录,是切换到最外层目录下,然后执行pip install -e .代码,该命令的本质就是运行该目录下的setup.py代码
cd virtualhome
pip install -e .
报错:但是根据官网的代码执行pip install -e .会报错,如下图所示,报错信息显示他需要有一个src文件夹,但下载下来的文件里并没有
 
 解决方案:修改virtualhome目录下的setup.py的第42行的 python_requires=">=3.10",将python版本限制改为3.9,然后可以成功安装。最后setup.py的文件修改为如下情况
 
import setuptools
with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()
setuptools.setup(
    name="virtualhome",
    version="2.3.0",
    author="Xavier Puig",
    author_email="xavierpuig@csail.mit.edu",
    description="Python API to communicate with the VirtualHome environment",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/xavierpuigf/virtualhome",
    project_urls={
        "Documentation": "http://virtual-home.org/docs/",
        "Bug Tracker": "https://github.com/xavierpuigf/virtualhome/issues"
    },
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    install_requires=[
        'certifi==2024.7.4',
        'chardet==3.0.4',
        'idna==2.8',
        'matplotlib>=3.4.2',
        'networkx==2.3',
        'numpy>=1.19.3',
        'opencv-python==4.8.1.78',
        'pillow>=8.3.1',
        'plotly==3.10.0',
        'requests>=1.21.0',
        'ipdb==0.13.9',
        'termcolor==1.1.0',
        'tqdm==4.66.3',
        'urllib3>=1.24.3'
    ],
    package_dir={"": "."},
    packages=setuptools.find_packages(where="."),
    python_requires=">=3.9",
)
6.修改完python版本的限制之后,再执行命令即可安装成功!
pip install -e .

7.接着在官网下载VirtualHome仿真器,并将解压之后的文件放在virtualhome/virtualhome/simulation/unity_simulator目录下
- 官网下载页面:http://virtual-home.org/documentation/master/downloads/downloads.html

8.下载仿真器解压之后的存放的文件目录结构如下图所示,这个比较重要,后面需要用到这个目录

2.3 毛毛张遇到的问题
2.3.1 将numpy的版本降低为1.x
- 在上面的安装过程中如果不限制会默认安装最新版本的numpy,已经是2.x版本了,但是毛毛张在运行代码的时候会出现如下图所示报错,因此我们需要重新降低为1.x版本,通过如下命令:pip install "numpy<2.0"

- 安装成功如下图所示:
  
2.3.2 导入函数问题
- 官网代码存在导入一个函数有问题,做出如下更改:
  
2.3.3 No module named ‘unity_simulator’
报错代码:
 
 解决方案: 找到virtualhome/virtualhome/__init__.py文件,将仿真器的目录添加到系统路径下,如下图所示:
import glob
import sys
from sys import platform
# Needs to be fixed!
original_path = sys.path[5]
new_path = "E:/Agent/text/virtualhome/virtualhome/simulation"
sys.path.append(new_path)
from unity_simulator.comm_unity import UnityCommunication
from unity_simulator import utils_viz

2.3.4 Exception: Error, environment was found but could not be launched
报错: 在运行下面的测试代码的时候可能会遇到下面的报错
 
 解决方案: 在virtualhome\virtualhome\simulation\unity_simulator\communication.py文件的第180行左右添加下面的代码
if not env:
	env = None

3.代码测试
- 下面毛毛张将通过官网的案例来教大家检验环境是否配置成功,前提需要大家把上面毛毛张遇到的问题都统一修改过来,再执行下面的代码,才能测试成功
3.1 检验环境是否配置成功
1.在virtualhome目录下创建代码test1.py,该测试的执行的任务是:把三文鱼放进微波炉
from virtualhome.simulation.unity_simulator.comm_unity import UnityCommunication
import matplotlib.pyplot as plt
# 定义 Unity 可执行文件的路径
YOUR_FILE_NAME = "E:/Agent/text/virtualhome/virtualhome/simulation/unity_simulator/windows_exec.v2.3.0/VirtualHome.exe"
port = "8080"  # 选择一个端口号
# 初始化 UnityCommunication 对象
comm = UnityCommunication(file_name=YOUR_FILE_NAME, port=port)
try:
    # 重置环境
    env_id = 0  # env_id 范围为 0 到 6
    res = comm.reset(env_id)
    comm.add_character('Chars/Female2')
    # Get graph
    s, g = comm.environment_graph()
    if not res:
        raise ValueError("环境重置失败!")
    print("环境重置成功:", res)
    # Get nodes for salmon and microwave
    salmon_id = [node['id'] for node in g['nodes'] if node['class_name'] == 'salmon'][0]
    microwave_id = [node['id'] for node in g['nodes'] if node['class_name'] == 'microwave'][0]
    # Put salmon in microwave
    script = [
        '<char0> [walk] <salmon> ({})'.format(salmon_id),
        '<char0> [grab] <salmon> ({})'.format(salmon_id),
        '<char0> [open] <microwave> ({})'.format(microwave_id),
        '<char0> [putin] <salmon> ({}) <microwave> ({})'.format(salmon_id, microwave_id),
        '<char0> [close] <microwave> ({})'.format(microwave_id)
    ]
    comm.render_script(script, recording=True, frame_rate=30)
except Exception as e:
    print(f"发生错误:{e}")
finally:
    # 关闭通信
    comm.close()
    print("Unity 通信已关闭")
2.稍等一会之后,出现下面结果表示运行成果:
 
 3.同时还会在当前工作目录下生成一个Output目录,这个目录下存放的时执行的动作生成的视频的每一帧的图像,在上面的测试代码中可以参见毛毛张把帧率设置为30
 
3.2 仿真动画
- 上面的代码运行的时候只能在控制台输出结果,想要看见实际的效果图,可以双击仿真器目录下的VirtualHome.exe文件- 注意事项:刚打开的时候是黑的是正常的
- 注意事项:上面的代码中comm.render_script(script, recording=True, frame_rate=60),这一行代码中的recording设置为true是能看见动画的关键
 
- 毛毛张已经将输出的动画结果上传到B站:VirtualHome智能体交互Demo:将三文鱼放进冰箱
3.3 官网教程
- 更多的测试代码,可以查看官网教程进行学习,如果能够把环境配置成功,剩下的就可以通过官方文档自学了:http://virtual-home.org/documentation/master/
4.其它问题
- 如果还有其它问题可以在评论区和毛毛张交流,或者在官网上面去提交问题!
参考文献
- https://blog.csdn.net/rabbit9798/article/details/135635313
 
 
 🌈欢迎和毛毛张一起探讨和交流!
联系方式点击下方个人名片
