We’ve been working for the past several months with the NASA Ames Intelligent Robotics Group. We’re helping them to model and simulate their forthcoming Resource Prospector (RP) rover, which will be sent to a pole of the moon to drill for water (as ice) and other volatiles. In advance of the mission, they’re using Gazebo to simulate RP to, among other things, support driving experiments with human operators. For these experiments, the visual realism of the camera images that we produce in Gazebo is paramount. So we’re very excited to share this recent result, which shows the view from a simulated camera mounted on the RP model being teleoperated over lunar terrain:
To create the scene shown in the video we made several improvements to the Gazebo rendering component. First, we extended Gazebo’s ability to load and render large a high resolution (8K) DEM model by 1) adding Level-Of-Detail (LOD) support, which made it possible to render large terrains at improved rendering performance; and 2) caching and saving of heightmap data to disk, which significantly reduced the load time of the model. We then added support for using custom shaders with Gazebo heightmaps. The heightmap model in the video uses a high resolution texture map, normal map, bump map, and illumination map, and applies Hapke shading and real time shadows in custom shaders. We also increased the shadow texture size and tweaked a few shadow parameters in an effort to generate sharper shadows. Finally, we post-process the scene by adding some nice looking lens flare effect to the camera.
We’re looking forward to further improving rendering in Gazebo and providing examples of what you can do to get more realistic camera images in your own simulations.