Closed DanMesh closed 2 years ago
Hi @DanMesh When using RealSense 400 Series cameras in strong sunlight, if the sun is visible in the camera's field of view, Intel recommend in their camera tuning guide to set an auto-exposure Region Of Interest (ROI) in the lower half of the image.
https://github.com/IntelRealSense/librealsense/issues/2190#issuecomment-589027974 offers advice for defining an auto-exposure ROI in the RealSense ROS wrapper using rosparam instructions in the launch file.
Thanks for the feedback @MartyG-RealSense. I have tested my setup with the ROI in the lower half of the FOV, but this has had little-to-no effect. From my experiments, it seems that the auto-exposure is already setting the exposure to the lowest value it can (regardless of ROI), but this is still not low enough.
The scenario in which I am observing this is when the sun is behind the camera, and the reflections/glare are very strong. If a very thin layer of cloud covers the sun, it already makes a big difference in improving the IR and depth images. This makes me think a physical filter on the camera might be helpful for reducing the incoming light.
A physical filter is likely to make a positive difference. You could also try setting the camera's IR emitter to rapidly alternate on and off to see whether that makes a positive difference. A RealSense team member suggests instructions at https://github.com/IntelRealSense/realsense-ros/issues/1657#issuecomment-968920694 for doing this with the RealSense ROS2 3.x wrapper (as you are using 3.2.1).
Thanks, I will see if I can try a physical filter.
I tried enabling the emitter_on_off
setting, but that produces the following error:
Failed to set value: hwmon command 0x7b( 17 0 0 0 ) failed (response -6= Invalid parameter)
This also happens if I try to enable the setting in the RealSense Viewer.
The minimum firmware recommended for D455 is 5.12.7.100 so using an earlier firmware than that could cause harm to your camera.
It seems from your syslog that you are using Linux as your OS. Is that correct, please?
Yes, that's correct. Those tests were done on an Ubuntu 20.04.4 system with ROS2 Foxy.
The infrared image that you are experiencing is similar to one that a RealSense user had outdoors in 2018 at https://github.com/IntelRealSense/librealsense/issues/2875
A RealSense team member in this case suggests defining a ROI (which you have already tried) or using a filter (which you are planning to try).
Hi @DanMesh Do you require further assistance with this case, please? Thanks!
@MartyG-RealSense For now I will continue investigating myself, so we can close this issue. Thanks for your assistance!
You are very welcome, @DanMesh - thanks very much for the update! As you suggested, I will close the issue. Thanks again!
The problem
When using a D455 camera outdoors in sunlight, the infrared images are often very overexposed. When this happens, the depth image contains no data in the overexposed regions. I am looking for any insights as to what might be causing this issue, or suggestions to try and mitigate this problem.
The following images show examples of the depth (top) and IR (bottom) images on two of these occasions. The camera is facing a tree in a grassy field. The leaves and grass are very washed-out, and (I assume) the lack of any texture means the depth cannot be inferred. The config files and resulting syslogs are below.
Investigating auto-exposure
Since this looks like an exposure issue, I tried to play around with the auto-exposure settings. I reduced the auto-exposure limit as low as 120 (microseconds), but that had almost no effect on the resulting IR image. Reducing the limit further drastically degraded the image quality. This leads me to believe the auto-exposure is already lowering the exposure setpoint as much as it can, but that is not enough.
Appendices
Config:
d455.yaml
Config:
camera-depth-filter-settings.json
Syslogs