Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auto exposure not working in r200 cameras #131

Closed
tulku opened this issue Oct 18, 2016 · 6 comments
Closed

Auto exposure not working in r200 cameras #131

tulku opened this issue Oct 18, 2016 · 6 comments
Labels
Milestone

Comments

@tulku
Copy link

tulku commented Oct 18, 2016

System Configuration

Version Your Configuration
Operating System Ubuntu 16.04
Kernel 4.4.0-38
Backend v4l
ROS kinetic
ROS RealSense 1.5.0
librealsense 1.11.0
Camera Type-Firmware r200-1.0.72.06

Expected Behavior

When setting auto_exposure to 1, the camera should adjust the exposure value so that the image is well exposed (avoid under/over exposure). Ideally, getting rid of holes due to too much IR reflections.

Actual Behavior

Enabling the auto_exposure value does not change the exposure setting of the camera.

Steps to Reproduce

To produce and under exposed image: Set auto exposure to 0, and manually adjust the exposure value to 50, you should see a dull IR image. Then re-enable auto_exposure, like in the picture:
auto_expo_1_gain_50

To produce and over exposed image: Set auto exposure to 0, and manually adjust the exposure value to 164, you should see a very bright IR image. Then re-enable auto_exposure:
auto_ex_1_expo_164

If I understand auto_exposure correctly, whenever it is active, it should adjust the exposure to whatever is the best value at that moment, so the previously, manually set values, should have no effect when re enabling auto_exposure.

For the pictures in the issue, the camera is facing a wall, at a distance between 80 to 90cm.

@rjingar
Copy link

rjingar commented Oct 31, 2016

Hi @tulku ,

Yes we are able to reproduce it. We will work on fixing this issue and will notify once it is fixed.
Thank you for filling an issue!

@stwirth
Copy link
Contributor

stwirth commented Nov 21, 2016

I can reproduce the same issue with an LR200. The r200_lr_auto_exposure_enabled setting doesn't seem to have any effect.

Version Your Configuration
Operating System Ubuntu 14.04.5 LTS
Kernel 4.4.0-040400-generic
ROS indigo
ROS RealSense 1.5.0
librealsense 1.11.0
Camera Type-Firmware LR200-2.0.71.24

@tulku
Copy link
Author

tulku commented Dec 15, 2016

I tested this again with a downgraded firmware to see if it solved the problem:

  • os: Ubuntu 16.04
  • librealsense: 1.11.1
  • realsense-camera: 1.6.0
  • camera type - firmware: r200-1.0.72.04

But autoexposure is still not working.

@pefuer
Copy link

pefuer commented Feb 8, 2017

Hi,
Is this still an issue in the 1.9.7. release? Or does auto exposure work in a more recent release?

Figured it out myself: setting the option rs::option::r200_lr_auto_exposure_enabled does the job.
os: Win10, librealsense 1.9.7., camera: R200

@evanbeard
Copy link

evanbeard commented Feb 14, 2017

@pfuersattel @rjingar This still does not seem to work with the latest release. Any guidance on when this might be addressed would be much appreciated - without auto-exposure it's hard to use the camera reliably in a variety of lighting conditions.

reaganlo added a commit that referenced this issue Mar 9, 2017
Added Color auto exposure
Added Color manual exposure related to issue #213
reaganlo added a commit that referenced this issue Mar 9, 2017
LR gain should be set only when LR auto exposure is disabled
@mdhorn mdhorn added this to the 1.8.0 milestone Mar 23, 2017
@mdhorn
Copy link

mdhorn commented Apr 3, 2017

Resolved in release 1.8.0
Available now by pulling tag 1.8.0 and building from sources.
Released to ROS Build Farm. Available in Shadow Repository once PR 14443 for Indigo and PR 14444 for Kinetic are merged.
Public ROS repository packages available after next sync (1-3 weeks) by OSRF.

@mdhorn mdhorn closed this as completed Apr 3, 2017
jonpol01 added a commit to jonpol01/realsense that referenced this issue Apr 17, 2017
* Don't ignore linker flags set by user

Yocto's bitbake sets global LDFLAGS that include the option
--hash-style=gnu. If this option is ignored then bitbake's
QA checks report that

QA Issue: No GNU_HASH in the elf binary: '/[...]/opt/ros/indigo/lib/librealsense_camera_nodelet.so' [ldflags]

The patch includes user defined linker flags to
CMAKE_SHARED_LINKER_FLAGS defined in the project's CMakeList.txt.

Signed-off-by: Dmitry Rozhkov <dmitry.rozhkov@linux.intel.com>

* Make system wrapper function generic

Error message was assume only use was dynamic reconfigure

Added boost as ROS dependency -- should have already been required.

* Added imu_start_ts for imu sync

* Added frame callbacks instead of rs_wait_for_frames

* Added imu_mutex for data sync to callback

* Refactored setStreams

* Removed prepareTopics thread; replaced with setDepthEnable

* Changed depth_scale_meters to local var

* Renamed getStreamData to setImageData

* Change color stream default to 30fps

Improve reliability of the camera by reducing the color stream
to 30fps by default. This will be the highest frame rate which will
be validate with VGA or higher resolutions for use with ROS.

Default files will no longer use the librealsense preset modes
as they will be depreciated in the future.

* Fixed boost mutex error when destroying ZR300 nodelet

Replaced boost::mutex with std::mutex

* Added destructor to ZR300 nodelet to join thread

* Fix F200/SR300 tests for new default 30fps

The F200 and SR300 tests were attempting too much code reuse
by include the r200_nodelet_default.launch file.
When the Default launch files were changed to set 30fps as the new
default for the color stream, F200/SR300 also had to set new defaults
for the Depth stream to prevent using the invalid R200 depth default.
The R200 default file does NOT pass the depth_width and depth_height
to the nodelet so the override values were lost.

* Add Dynamic Transforms support -- multi-cam

Due to a ROS bug which prevents publishing more than one static
transform in separate processes, enable the use of dynamic
camera transforms when needed for multiple camera support.

Static transforms are still the default.

See:
  ros/ros_comm#146
  ros/geometry2#181

* Code Review Fixes

* Enable ROS Lint

Many minor fixes to be compliant with ROS Lint standards.

* C++11 Flagged ROS Lint items

Suppressing these for now, but should be investigated as
they are not compliant with current ROS standards.

* Update Change log for release

* 1.7.0

* Update RGBD launch files.

Modify the r200/sr300 RGBD-style launch files
to no longer use the RGBD depth/ir/rgb_processing
flags to control whether the corresponding stream
is also enabled. For example, now turning off
RGBD depth *processing* will no longer disable
the depth stream itself.

* Do not register IR callback if stream disabled

Work around bug in librealsense where the callback for
IR is called even if the stream is disabled if IR2 stream
is enabled.
See IntelRealSense/librealsense#393

* Start IMU in startCamera

* Fix Multi-cam example launch file

Leading '/' required to ensure both cameras use the same
nodelet manager due to group name space.

* Added try-catch for start and stop device

* Fixed spacing before comment - roslint failure

* Disable Fisheye and IMU on ZR300 for RGBD launch

* Fixed roslint tabs errors

* Allow Disabling of IMU after PR#175

Refactoring PR IntelRealSense#175 broke the logic for disabling IMU

* Updated Change Log for 1.7.0

* Added retry in tests to avoid random failures

* Also exclude swap files from Git

* Use shared timestamp for SR300/F200 cameras

Due to camera hardware issues on the SR300 and F200, reverted back
to using a common timestamp updated by the fastest stream. This was the
old behaviour when rs_wait_for_frames was used prior to release 1.7.0.

* Generate Warning for non-validated camera firmware

Compare the camera's firmware version to the validated firmware version. Log
a warn message if the two firmware versions do not match. If the camera is
ZR300, also check the adapter firmware version and the motion module firmware
version.

* Updated Change Log for 1.7.1

* 1.7.1

* Git ignore QT Creator *.workspace files

* Upload 18 bat tests

Upload first version of stable bat tests, there are 2 common tests
to check librealsense and realsense_camera installed, and there are
4 specific tests of each camera (R200/F200/SR300/ZR300) to check
camera info matrix, enabled tf, set power off/on and force power
off/on, totally 18 tests.

All the tests are based on rospy, using python script as test type.

* Changed fisheye_strobe and fisheye_external_trigger to static params

* Change tf to using setRPY for consistency

* Create tool to get debug info

Create a node tool that, when run, will display the user's
operating system, kernel, ROS version, RealSense version, librealsense
version, and the type and firmware of any detected cameras.

* Fix minor spelling errors

* Updated the maintainers

* Update change log

* 1.7.2

* Added SyncNodelet class

* Updated F200 to be based on SyncNodelet

* Updated SR300 to be based on SyncNodelet

* Fixed roslint errors

* Removed getTimestamp override from F200 and SR300

* Updated r200 to be based on SyncNodelet

* Added loop checking of start/stop camera

* Update Debug Tool

Update debug tool to show motion module and adapter firmwares for the
ZR300 camera.

Update the validated firmware versions.

* Added check for depth_enable dynamic change

* Dynamic reconfigure of SR300 exposure controls

* Updated Copyright to 2017

* Added SyncNodelet destructor

* Added blank lines for readability after closing braces

* Fixed LR auto exposure issue IntelRealSense#131

LR gain should be set only when LR auto exposure is disabled

* Add option to link against non-catkin librealsense

In OpenEmbedded setups where both meta-ros and
meta-intel-realsense layers are used it's problematic
to avoid two copies of librealsense installed onto
an embedded target: one catkit-based installed under
/opt/ros and one other installed to a standard system
location.

This patch adds an option making realsense_camera link
against librealsense provided by the host system.

By default the currently existing behavior is preserved.

Signed-off-by: Dmitry Rozhkov <dmitry.rozhkov@linux.intel.com>

* Enable roslint when CATKIN_ENABLE_TESTING is True

roslint depends on catkin_run_tests_target() which is defined only
when CATKIN_ENABLE_TESTING is True.

Thus run roslint functions in CMakeLists.txt only when testing
is enabled.

Signed-off-by: Dmitry Rozhkov <dmitry.rozhkov@linux.intel.com>

* Exposed autoexposure toggle and exposure control for F200, R200. Updated copyright data on nodelets

* Fix build timing issue for catkin

* Make ZR300 consistent with other cameras

Recent color auto exposure code changes are slightly different
for SR300/F200/R200 from ZR300. Mainly the ZR300 needed the same
if condition added for only setting the manual value when auto
exposure is disabled.

* Updated changelog

* 1.8.0

* Enable configuration of the TF publication rate when using tf_dynamic

The parameter is called tf_publication_rate

* 1.8.0 -- Updated

* librealsense: Fix link when the system library is used

Otherwise librealsense won't be listed as a dependency for the nodelet
that will fail to load due to undefined symbols.

Signed-off-by: Murilo Belluzzo <murilo.belluzzo@intel.com>

* Add RGDB launch file for the ZR300
rsinnet pushed a commit to MisoRobotics/realsense that referenced this issue Feb 13, 2021
Added Color auto exposure
Added Color manual exposure related to issue IntelRealSense#213
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants