在模型xml文件中,添加了代表vehicle视角的相机’cam’,用于障碍物识别。希望可以同时完成两件事:
- 在屏幕GLEW窗口上以默认相机的视角展现仿真的过程
- 以5hz的频率获取cam捕捉的图片
通过查阅mujoco-py的官方文档可以看到,

在新建了sim之后,如果直接在循环中调用:
sim.render(height=600, width=600, camera_name='cam', depth=False)
获取来自cam的信息,会在一个glew窗口中交替出现cam和默认相机的内容,而且十分卡顿
原因在于这样处理相当于同时渲染了两个相机,耗时巨大,而这也是Mujoco官方没有在sensor中提供camera选项的最直接原因。
为了解决上述问题,首先我们需要将cam和默认相机,分到两个glew窗口:
#导入xml模型
model = mujoco_py.load_model_from_path("111/vehiclev4.xml")
sim = mujoco_py.MjSim(model)
#新建默认相机对应的viewer
viewer = mujoco_py.MjViewer(sim)
#新建cam相机对应的viewer
viewer2 = mujoco_py.MjRenderContextOffscreen(sim, 0)
其中,因为cam相机我们并不需要每时每刻看到其内容,只需要以一定的频率获取图像数据并且用相应的算法对其进行处理即可,所以采用屏幕外(off-screen)渲染,这样可以加快渲染速度。
while True:
sim.step()
viewer.render()
i += 1

本文介绍了如何在Mujoco模型中高效地使用两个相机,一个用于实时仿真显示,另一个以5Hz频率抓取障碍物识别的图片。通过创建独立的渲染context,解决了卡顿和性能问题,确保了仿真的流畅和数据获取的高效性。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



