问题描述
使用robosuite建立RL环境,设置has_renderer=True时可以正常运行,而设置has_offscreen_renderer=True时报错如题。
该问题好像
是因为mujoco-py会自带openGL,而我自己又在nvidia显卡驱动里安装了openGL,当使用可视化绘图(has_renderer=True)时,会使用mujoco-py自带的openGL,当不进行显示时(has_offscreen_renderer=True),会使用自己安装的openGL,自己装的openGL版本太高就会报错ERROR: GLEW initalization error: Missing GL version。(从网上的资料看好像是这样
)
所以解决办法是在使用has_offscreen_renderer=True时,使用mujoco-py自带的openGL,如下:
解决办法
在安装的robosuite库的/home/name/anaconda3/envs/env_name/lib/python3.7/site-packages/robosuite/environments/base.py的第310左右修改代码,如下:
elif self.has_offscreen_renderer:
if self.sim._render_context_offscreen is None:
# 下面`两行`为新加的
from mujoco_py import GlfwContext
GlfwContext(offscreen=True)
render_context = MjRenderContextOffscreen(self.sim, device_id=self.render_gpu_device_id)
self.sim.add_render_context(render_context)