I’m currently working on various space robotics simulations in Gazebo, and we have a problem that the images generated by gazebo are a very different from actual cameras in these situations. A HDR camera plugin with optional auto exposure algorithms, sensor and noise models would be ideal but it doesn’t seem to exist.
I’ve been looking into the Gazebo source code and OGRE and a HDR camera looks definitely possible, but I’m not at all familiar with the architecture and the best way to implement this. Is it possible with just a sensor plugin or would it required modifying Gazebo itself?
I realise this is a fairly big job, but I’ve got the time to get stuck into this during my PhD, I’ve also got plenty of C++ and OpenGL experience. I’d like to start a discussion with some of the Gazebo developers about the best way to approach this addition.
Look forward to talking about this soon.
You should be able to port and apply OGRE’s HDR effect to a gazebo camera.
As an example, I created a visual plugin that applies bloom effect to cameras:
https://bitbucket.org/osrf/citysim/src/default/plugins/
I used a visual plugin to apply the effect to all the camera sensors and also user cameras but you may not need to do that. An alternative is to just use a sensor plugin to apply the effect to only one camera sensor.
The materials files are here:
https://bitbucket.org/osrf/citysim/src/default/media/materials/
These material files are taken from OGRE and I just made minor tweaks to make it look better for use case.
Hi Ian,
Thanks for the reply. I’ve had a look into the bloom Compositor script, I can’t tell straight away if this is using ‘true’ HDR with float lumen values or a similar effect but using 8 bit fixed point values. If I can get the floating point buffer of lumen values to my plugin then I can build the rest myself.
Pete
yeah the bloom effect may not what you want. I just thought it would help give an idea the work needed to be done to integrate an OGRE’s post-processing effect with a gazebo camera. OGRE has an HDR compositor in its samples. I haven’t looked at it closely but maybe that’ll be useful.
Yes, I spotted the floating point buffer types in the documentation for the compositor so it’s looks promising. I’ll use your plugin to get me started and post some updates when I have some progress.
Thanks.