Git Product home page Git Product logo

ueye_cam's Introduction

Build Test (not for release)

DISCLAMER:

This project was created within an academic research setting, and thus should be considered as EXPERIMENTAL code. There may be bugs and deficiencies in the code, so please adjust expectations accordingly. With that said, we are intrinsically motivated to ensure its correctness (and often its performance). Please use the corresponding web repository tool (e.g. github, bitbucket, etc) to file bugs, suggestions, pull requests; we will do our best to address them in a timely manner.

LAYOUT:

  • ueye_cam/
    • cfg/: dynamic_reconfigure configuration files
    • include/: header files
    • launch/: roslaunch files
    • src/: source files
    • CMakeLists.txt: CMake project configuration file
    • LICENSES: license agreement
    • package.xml: ROS/Catkin package file
    • nodelet_plugins.xml: ROS nodelet specification file
    • README.md: this file
  • ~/.ros/camera_info/: camera calibration yaml files (see documentation for camera_calibration ROS package for more details)
  • ~/.ros/camera_conf/: UEye camera parameter configuration files (generatable using ueyedemo executable: File -> save parameter -> to file...)

REQUIREMENTS:
IDS uEye Software Suite >= 4.94

DOCUMENTATION:

www.ros.org/wiki/ueye_cam

Copyright (c) 2013-2021, Anqi Xu and contributors

All rights reserved.

BSD3 license: see LICENSE file

ueye_cam's People

Contributors

130s avatar 534o avatar anqixu avatar anuppari avatar cottsay avatar dirk-thomas avatar dominik-fkie avatar flynneva avatar franreal avatar jmackay2 avatar juancamilog avatar k-okada avatar loooph avatar nullket avatar progtologist avatar singhjeet1989 avatar trinhnc avatar youtalk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ueye_cam's Issues

image stream is not the right size when cropping area of interest

When cropping the image (i.e. setting image_width and image_height smaller than the camera resolution), the actual size of the image on the /camera/image_raw topic is the same size as the camera resolution, just with padded zeros. For example, if the camera resolution is 752x480 and the image is cropped to 640x480, the size of the data on the image_raw topic is still 752x480, with columns 641 through 752 equal to zeros. The correct information is displayed in the camera_info topic (i.e. 640x480). This causes rviz to be unable to display cropped images, because the camera_info topic and the actual image_raw image size do not match.

Camera calibration issue

Hi Anqi,

Me again :D. Recently I realized that I have radial distortion in my UI-1221-LE-M camera, which has to be corrected. I used ros package "camera_calibration", successfully calibrated it and got these params:
[image]

width
640

height
480

[narrow_stereo/left]

camera matrix
998.447499 0.000000 299.347092
0.000000 1002.344747 215.660858
0.000000 0.000000 1.000000

distortion
-0.572812 0.253845 0.012846 0.008447 0.000000

rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000

projection
934.325794 0.000000 299.244432 0.000000
0.000000 967.143269 215.957971 0.000000
0.000000 0.000000 1.000000 0.000000

And I also saved them into ~/.ros/camera_info/camera.yaml
However, when I launch ueye_cam/mono8.launch and view the images, there seems to be no corrections at all. The images still looked the same. I also tried to modified the [narrow_stereo/left] to [camera] to fit the launch file, but it didn't work. Do you have any idea how to get it working? Besides, I have also tried the "commit" button in "camera_calibration" package, overwrote the file, but didn't work either. Many thanks.

Cheers,
Lyn

IDS Ueye 4.92 munmap_chunk invalid pointer in ros::init

Hi everyone!

We used a ros:melodic-perception-bionic the docker image (with the necessary dependencies installed):

#Digest: sha256:2a8412596201e7be8a181f4523d00446f6e0a37e659eee4f6a2898139d11972a

docker pull ros:melodic-perception-bionic
docker run --rm --name ids-4.92-ros-error -v$HOME/Downloads/ueye_4.92.0.0_amd64.run:/ueye_4.92.0.0_amd64.run:ro -it  ros:melodic-perception-bionic

apt-get update && apt-get upgrade
apt-get -y install wget software-properties-common build-essential wget curl cmake git rsync gdb

/ueye_4.92.0.0_amd64.run
mkdir /build
cd /build
git clone https://github.com/anqixu/ueye_cam.git
cd ueye_cam
mkdir debug
cd debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make -j4
source devel/setup.bash
rosrun ueye_cam check_ueye_api

Using gdb and catch throw you may print a backtrace (error in ros::init -> file log).

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007fc255fda801 in __GI_abort () at abort.c:79
#2  0x00007fc256023897 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7fc256150b9a "%s\n") at ../sysdeps/posix/libc_fatal.c:181
#3  0x00007fc25602a90a in malloc_printerr (str=str@entry=0x7fc2561527a8 "munmap_chunk(): invalid pointer") at malloc.c:5350
#4  0x00007fc256031ecc in munmap_chunk (p=0x55a6778ba5a0) at malloc.c:2846
#5  __GI___libc_free (mem=0x55a6778ba5b0) at malloc.c:3117
#6  0x00007fc2579595d0 in ros::file_log::init(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) ()
   from /opt/ros/melodic/lib/libroscpp.so
#7  0x00007fc257981821 in ros::init(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int) () from /opt/ros/melodic/lib/libroscpp.so
#8  0x00007fc25798416c in ros::init(int&, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int) () from /opt/ros/melodic/lib/libroscpp.so
#9  0x000055a677146345 in main (argc=1, argv=0x7ffc53e989a8) at /build/ueye_cam/src/check_ueye_api.cpp:45

Best regards,

Markus

Frame count from camera

Hi @anqixu

I would like to ask if it's possible to get the frame count from the camera side.

To clarify more on my setup, I have a 1226 ueye cam that is externally triggered. Now, when I run the ROS driver, does it publish the frame count since the camera was first triggered, or since the ROS driver was started?

I need to get the frame count since the camera was first triggered, but I am not sure if this supported.

Thanks.

Auto_gain setting being overwritten by hardware gain

Hello,

I've run into a problem when setting the auto_gain parameter using the ueye_cam driver. The relevant function is UEyeCamDriver::setGain().

The problem is that the call to is_SetHardwareGain() overwrites any changes to the auto_gain parameter. From the UEye manual for is_SetAutoParameter:

A manual change of the exposure time and gain settings disables the auto functions.

Since is_SetHardwareGain is called AFTER is_SetAutoParameter, auto_gain is always disabled right after having been enabled.

I've added a patch that prioritises auto_gain over the manual gain settings by moving is_SetAutoParameter behind is_SetHardwareGain function: https://gist.github.com/wji/8595160

Consequently, to set a master_gain manually, auto_gain must first be disabled, but I believe that is closer to the expected behaviour than not having auto_gain work at all :).

Plan for releasing DEB?

We're getting more dependent on ueye_cam package with the dual-arm platform called NEXTAGE OPEN from Kawada Industries Inc. Thanks for the great work!

Being able to install the package by apt is ultra convininent in many ways, and ROS makes the whole cumbersome process of doing it much shorter and comfortable (tutorial). Is there a plan to do so soon?

If you're unsure about how to do it, or unwilling to spend that time, I'm happy in taking that role. In that case I have to request a commit/write right to this repository (only situation I commit w/o opening pull request is when I create a tag, by using a special tool called catkin_prepare_release. When I have normal commits I open PReq as usual).

XS camera not working at full resolution

I have been able to use the XS camera at a resolution of 1280x720.

Once I try to change to resolution with the rqt_reconfigure or in the launch file, (also if i have a correct .ini file) i get the following error:

Failed to set UEye camera sensor's Area Of Interest to 2560 x 1920 with top-left corner at (0, 0)

Any suggestions?

IS_NOT_SUPPORTED

Hi,
I'm new to ueye cameras and am trying to use the ueye_cam package with a UI-3590CP and the 4.72 sdk of the ueyecam driver. I'm running into an error simply running the rgb8 launch file. When running the node the package connects to the camera, resets parameters fine, and everything looks great. However, when trying to view the image with image_view I get the following errors:

[ERROR] [1456345530.490563918]: Could not set free-run active-low flash output for [camera] (IS_NOT_SUPPORTED)
[ERROR] [1456345530.491632063]: Shutting down driver nodelet for [camera]

I'm wondering if anyone can tell me what I'm doing wrong here.

As with #24 I've included a pastebin of my output with ROS_INFO_Streaming which can be found here. I don't think I have a camera .ini file.

Unable to change the resolution of the camera without cropping the image

I'm using bayer_rggb_image_proc.launch file in which I'm keeping the image_width and image_height to the maximum resolution of the camera. I want to downsample the resolution of the camera to the half so I set subsampling parameter to 2. However I'm getting the error of Failed to set Area Of Interest.
I can successfully do the same with ueyedemo and getting the resolution I want. What could be the issue here?

Camera: UI527xCP-C
ROS: melodic
Ubuntu: 18.04 LTS

Error:

[ERROR] [1527079605.090495031]: Failed to set Area Of Interest (AOI) to 2056 x 1542 with top-left corner at (0, 0) for [camera]
[ERROR] [1527079605.090617499]: Failed to initialize [camera]

adjust exposure parameter

Sorry, I just adjust the exposure parameter, but it doesn't work. I used ROS kinetic version to change the parameter in "bayer_rggb_image_proc.launch" file, but only the image size and color mode can change. Do you have any method to control the image exposure? Thank you very much.

Camera time out

I frequently get an error saying:
"Failed to acquire image from UEye camera 'camera' (IS_TIMED_OUT)"
My launch looks like this:

<include file="$(find ueye_cam)/launch/rgb8.launch" />
<param name="ueye_cam_nodelet/color_mode" type="str" value="mono8" />
<param name="ueye_cam_nodelet/image_width" type="int" value="752" />
<param name="ueye_cam_nodelet/image_height" type="int" value="480" />
<param name="ueye_cam_nodelet/auto_exposure" type="bool" value="False" />
<param name="ueye_cam_nodelet/auto_frame_rate" type="bool" value="False" />
<param name="ueye_cam_nodelet/pixel_clock" type="int" value="40" /> <!-- in MHz (max 40) -->
<param name="ueye_cam_nodelet/gain_boost" type="bool" value="False" />
<param name="ueye_cam_nodelet/auto_gain" type="bool" value="False" />
<param name="ueye_cam_nodelet/frame_rate" type="double" value="1.0" /> <!-- ignored if auto frame rate -->
<param name="ueye_cam_nodelet/exposure" type="int" value="10" /> <!-- in ms (ignored if auto exposure)-->

I'm using the uEye UI-1226LE-M-GL camera. Everything seems to work fine if I keep auto_exposure, auto_frame_rate and auto_gain on. However when I set them to specific values, it throws the time out error. If I plug the camera into a USB3.0 port, it works fine at the max frame rate, but the camera is a USB2.0 camera and should be able to support the max frame rate and pixel clock of 40 MHz in this slot.

To make sure its not the camera, I put the set the frame rate to 1 and very small exposure time in the above launch file, and yet I still get timeout errors.

camera Id

I am using two camera nodelets in a single manager (i modified rgb8.launch).

How can i ensure that the same cameras will have the same IDs each time i launch the driver.

Sometimes camera_1/image.. refers to the camera on the right side of the robot, and sometimes left. Same for camera_2/image...

Default dynamic reconfigure parameters overwrite camera ini file

There doesn't seem to be a way to use only the ueyedemo generated ini file to set the camera parameters rather than setting any ROS parameters. A basic launch file that doesn't set any of the camera parameters, e.g.,

<launch>
  <!-- <node name="check_ueye_api" pkg="ueye_cam" type="check_ueye_api" required="true" />-->
  <arg name="nodelet_manager_name" value="nodelet_manager" />
  <arg name="camera_name" value="camera" />

  <node pkg="nodelet" type="nodelet" name="$(arg nodelet_manager_name)" args="manager" output="screen" />
  
  <node pkg="nodelet" type="nodelet" name="ueye_cam_nodelet"
        args="load ueye_cam/ueye_cam_nodelet $(arg nodelet_manager_name)">
    <param name="camera_name" type="str" value="$(arg camera_name)" /> <!-- == namespace for topics and services -->
    <param name="camera_topic" type="str" value="image_raw" />
    <param name="camera_id" type="int" value="0" /> <!-- 0 = any camera; 1+: camera ID -->
    <param name="camera_intrinsics_file" type="string" value="" /> <!-- default: ~/.ros/camera_info/<camera_name>.yaml -->
    <param name="camera_parameters_file" type="string" value="" /> <!-- default: ~/.ros/camera_conf/<camera_name>.ini -->

    <param name="ext_trigger_mode" type="bool" value="False" /> <!-- if False, then camera will operate in free-run mode; otherwise, frames need to be triggered by hardware signal (falling-edge) on digital input pin of camera -->
  </node>
</launch>

will correctly pickup the camera.ini file, but then overwrites them with the default values set in the dynamic reconfigure cfg file.

Not sure what would be a good solution to this, since the dynamic parameter server automatically handles overriding the default parameters with whatever parameters are set in the launch file, i.e., there's no real way of distinguishing default parameters from set values.

Couple ideas:

  1. Set invalid options in the cfg file, and check against those on init. Not sure this is possible for numeric values with valid ranges.
  2. Provide a service to read and set parameters from an ini file during runtime.
  3. Generate a cfg file from the ini file

Any ideas?

Unable to launch ueye XS in ros indigo, API 4.61

Simply trying to launch the xs_bayer_rggb.launch file with my ueye XS camera I get this error:

` ``
[ INFO] [1431717546.571885057]: Unable to open camera calibration file [/home/mklingen/.ros/camera_info/camera.yaml]
[ WARN] [1431717558.304534102]: Internal image scaling is not supported by camera
[ WARN] [1431717558.305973604]: Auto frame rate mode is not supported for UEye camera 'camera' (IS_NOT_SUPPORTED)
[ WARN] [1431717558.306020556]: Auto exposure mode is not supported for UEye camera 'camera' (IS_NOT_SUPPORTED)
[ WARN] [1431717558.627241852]: Failed to set white balance red/blue offsets to 0 / 0 for UEye camera 'camera'
[ERROR] [1431717558.627325580]: Failed to initialize UEye camera 'camera'

Ueye camera exposure time smaller than 1 ms

Hi,
I am using the ueye_cam node with a UI-1220LE-M-GL camera. All were running perfectly in the lab.

However when I try to use it outdoor, with quite strong sun light, the node struggled to adjust the exposure to adapt this situation.

I tried both auto and manual exposure: in manual since the exposure parameter is 'int', thus the minimum will be 1 ms, which is not small enough; in auto exposure, same thing happens, I guess it is limited to 1 ms as well.

Is this a limitation of this package? or any way I can set decimal numbers?

Thank you very much for your time,

Chang

Camera imu synchronisation

Hi @anqixu,

Thank you for the neat project.
I am trying to develop hardware sync between imu and camera.

I am thinking to use an arduino with mpu6050 and generate external trigger signal for a ueye cam. Those are all cool, but I need a way to change the timestamp for the output image frame, in order to have the same time frame with the triggering imu message.

Is there a way, that is implemented to do that properly?
You had the multi cam hardware sync with two identical timestamp right?

Thank you for your time.
Chang

no recovery after timeout

Hi!
I have a problem you probably could give me an advice.
I observe timeouts with my UI1221LE-M-GL. I read #6. I tried ARM, amd64, usb2 + usb3. I changed the pixel_clock settings, all in auto mode. I bought an pcie2usb adapter. I measure the Bus > 5 Volt.
The cam gets more stable when I disconnect each and every usb device.

Each time the timeout occurs, the node is lost, it does not recover from timing out, it basically loops in the timeout (UEyeCamDriver::processNextFrame: is_err == IS_TIMED_OUT). Until now, I had to disconnect the cam and restart the node. I thought that the hardware crashes for some reason.

Today I found this trick:
echo "0" > /sys/bus/usb/devices/usb2/authorized
-> /dev/ueye disappears
echo "1" > /sys/bus/usb/devices/usb2/authorized
-> /dev/ueye reappears
Then I can continue until the next timeout.

Correct me if I am wrong, but it does not seem to be hardware issue.

ueyecamerademo recovers and just counts missed frames.

Do you have a clue for me where to look now?

Master Slave in Free-run mode for synchronization

Hello Mr. Xu

First of all i'd like to thank you for creating such a useful package for ROS intergration with Ueye. It has been really helpful with my project. I am currently trying to create a setup that uses 2 Ueye cameras for synchronisation. I want to use the master slave configuration with Cam1 as the master in free-run mode and Cam2 as the slave.

Due to lack of hardware exprience, I was hoping if you could give me a few pointers on the hardware setup required. The questions i have are as follows:

  1. On the hardware side i have to connect Flash output of Master directly to the trigger input of Slave, run the Master in free run mode and Slave in Ext_trigger mode?
  2. You mentioned that i need to ensure on the software side that the slave camera triggers on rising edge (LO_HI) rather than on falling edge (HI_LO). Is it enough to change IS_SET_TRIGGER_HI_LO to LO_HI here?

My current setup includes:

  1. ROS Kinetic
  2. Linux 16.04 LTS
  3. UI-3370CP (supports both Rising Edge and Falling edge as trigger inputs)

Thanks in advance.

Multiple images with identical timestamp

My image callback is getting called multiple images with the same timestamp. This happens intermittently, about once a second, where the camera is publishing at ~80fps and my subscriber runs at ~40 hz with a queue length of 1.

To debug, I have been saving the last timestamp and image, as well as the current, and if they are the same, I save both images to a file, as well as an image of the difference scaled to the image depth.

Example previous image:
lastimage0
Example current image:
thisimage0
scaled difference:
diffimagescaled0

More examples of the scaled image differences
diffimagescaled1
diffimagescaled2

The black regions should indicate where the images are identical, so it appears that my callback is reading an image while a new image is being written. I am using cv_bridge::toCvCopy immediately in my callback, so I'm not sure why the image is being overwritten during reading, especially since I am NOT getting the IS_TIMED_OUT error. However, even if this is an issue with my callback not being fast enough, I'm not sure why my callback is being called twice with the same timestamp?

Master Slave in Free-run mode not in sync

Hi!
I'm trying to capture synced images with two UI-3060CP-M-GL Rev.2 cameras. I edited your master_slaves_rgb8.launch launchfile:

<launch>
  <node pkg="nodelet" type="nodelet" name="nodelet_manager" args="manager" output="screen" />
  
  <node pkg="nodelet" type="nodelet" name="ueye_cam_nodelet_master"
        args="load ueye_cam/ueye_cam_nodelet nodelet_manager">
    <param name="camera_name" type="str" value="master" /> <!-- == namespace for topics and services -->
    <param name="camera_topic" type="str" value="image_raw" />
    <param name="camera_id" type="int" value="1" /> <!-- 0 = any camera; 1+: camera ID -->
    <param name="camera_intrinsics_file" type="string" value="" /> <!-- default: ~/.ros/camera_info/<camera_name>.yaml -->
    <param name="camera_parameters_file" type="string" value="" /> <!-- default: ~/.ros/camera_conf/<camera_name>.ini -->

    <param name="ext_trigger_mode" type="bool" value="False" /> <!-- if False, then camera will operate in free-run mode; otherwise, frames need to be triggered by hardware signal (falling-edge) on digital input pin of camera -->

    <!-- the following are optional camera configuration parameters:
         they will be loaded on the camera after the .ini configuration
         file, and before dynamic_reconfigure. That means that any
         (lingering) dynamic parameters from dynamic_reconfigure will
         override these values, and that these will override parameters
         from the .ini file.
         See http://www.ros.org/wiki/ueye_cam for more details. -->

    <param name="color_mode" type="str" value="mono8" /> <!-- valid options: 'rgb8', 'mono8', 'bayer_rggb8' -->

    <!-- WARNING: the following 4 parameters specify dimensions for camera's area of interest. Values for image_width and image_height that are smaller than your camera's maximum values will result in cropped field of view. For typical cases, one should modify values for sensor_scaling / binning / subsampling to downsample the resulting ROS image to the desired dimensions, without losing potential field of view. -->
    <param name="image_width" type="int" value="1936" />
    <param name="image_height" type="int" value="1216" />
    <param name="image_top" type="int" value="-1" /> <!-- -1: center -->
    <param name="image_left" type="int" value="-1" /> <!-- -1: center -->

    <param name="subsampling" type="int" value="1" /> <!-- supported by only some UEye cameras -->
    <param name="binning" type="int" value="1" /> <!-- supported by only some UEye cameras -->
    <param name="sensor_scaling" type="double" value="1.0" /> <!-- supported by only some UEye cameras -->

    <param name="auto_gain" type="bool" value="True" />
    <param name="master_gain" type="int" value="0" />
    <param name="red_gain" type="int" value="0" />
    <param name="green_gain" type="int" value="1" />
    <param name="blue_gain" type="int" value="16" />
    <param name="gain_boost" type="bool" value="False" />

    <param name="auto_exposure" type="bool" value="False" />
    <param name="exposure" type="int" value="10" /> <!-- in ms -->

    <param name="auto_white_balance" type="bool" value="True" />
    <param name="white_balance_red_offset" type="int" value="0" />
    <param name="white_balance_blue_offset" type="int" value="0" />
    
    <param name="flash_delay" type="int" value="0" /> <!-- in us -->
    <param name="flash_duration" type="int" value="1000" /> <!-- in us -->
    
    <param name="auto_frame_rate" type="bool" value="False" />
    <param name="frame_rate" type="double" value="30.0" />
    <param name="pixel_clock" type="int" value="237" />
  </node>


  <!-- SLAVE -->

  <node pkg="nodelet" type="nodelet" name="ueye_cam_nodelet_slave1"
        args="load ueye_cam/ueye_cam_nodelet nodelet_manager">
    <param name="camera_name" type="str" value="slave1" /> <!-- == namespace for topics and services -->
    <param name="camera_topic" type="str" value="image_raw" />
    <param name="camera_id" type="int" value="2" /> <!-- 0 = any camera; 1+: camera ID -->
    <param name="camera_intrinsics_file" type="string" value="" /> <!-- default: ~/.ros/camera_info/<camera_name>.yaml -->
    <param name="camera_parameters_file" type="string" value="" /> <!-- default: ~/.ros/camera_conf/<camera_name>.ini -->

    <param name="ext_trigger_mode" type="bool" value="True" /> <!-- if False, then camera will operate in free-run mode; otherwise, frames need to be triggered by hardware signal (falling-edge) on digital input pin of camera -->

    <!-- the following are optional camera configuration parameters:
         they will be loaded on the camera after the .ini configuration
         file, and before dynamic_reconfigure. That means that any
         (lingering) dynamic parameters from dynamic_reconfigure will
         override these values, and that these will override parameters
         from the .ini file.
         See http://www.ros.org/wiki/ueye_cam for more details. -->

    <param name="color_mode" type="str" value="mono8" /> <!-- valid options: 'rgb8', 'mono8', 'bayer_rggb8' -->
    <param name="image_width" type="int" value="1936" />
    <param name="image_height" type="int" value="1216" />
    <param name="image_top" type="int" value="-1" /> <!-- -1: center -->
    <param name="image_left" type="int" value="-1" /> <!-- -1: center -->	
  
  <!--
    <param name="image_width" type="int" value="640" />
    <param name="image_height" type="int" value="480" />
    <param name="image_top" type="int" value="-1" /> 
    <param name="image_left" type="int" value="-1" />

    <param name="subsampling" type="int" value="1" />
    <param name="binning" type="int" value="1" />
    <param name="sensor_scaling" type="double" value="1.0" />

    <param name="auto_gain" type="bool" value="True" />
    <param name="master_gain" type="int" value="0" />
    <param name="red_gain" type="int" value="0" />
    <param name="green_gain" type="int" value="1" />
    <param name="blue_gain" type="int" value="16" />
    <param name="gain_boost" type="bool" value="False" />

    <param name="auto_exposure" type="bool" value="False" />
    <param name="exposure" type="int" value="33" />

    <param name="auto_white_balance" type="bool" value="True" />
    <param name="white_balance_red_offset" type="int" value="0" />
    <param name="white_balance_blue_offset" type="int" value="0" />
-->    
    <param name="flash_delay" type="int" value="0" />
    <param name="flash_duration" type="int" value="1000" />
   
    <param name="auto_frame_rate" type="bool" value="False" />
    <param name="auto_exposure" type="bool" value="False" />
    
    <param name="exposure" type="int" value="3" /> <!-- in ms -->
    <param name="pixel_clock" type="int" value="237" />
  </node>

</launch>

But when I record the image topics with rosbag record /master/image_raw /slave1/image_raw the image count for both cameras are different. Looks like the slave camera image is missing sometimes.

screenshot_bagfile

I tried with different flash durations, exposure times and frame rates it's always the same problem.
Do you have any suggestions?

Problem with launching rgb8.launch for IDS mono camera

Hello,
I have been trying to use ueye_cam for calibrating my IDS monocamera, but every time I try to launch the rgb8.launch file, I get this error.
image

Please look into it and help me with the issue.
The IDS drivers are installed and camera is connected and detected using Ethernet.
Thank you

ueye_cam timestamp is 3600 seconds old

I'm running a ueye_cam node as follows:

<node pkg="nodelet" type="nodelet" name="nodelet_manager" args="manager" />

<node pkg="nodelet" type="nodelet" name="ueyecam" args="load ueye_cam/ueye_cam_nodelet nodelet_manager">
    <param name="camera_name" value="ueyecam" />
    <param name="image_width" value="1600" />
    <param name="image_height" value="1200" />
    <param name="frame_name" value="ueyecam" />
    <param name="camera_intrinsics_file" value="ueyecam.yaml" />
    <param name="frame_rate" value="15" />
    <param name="exposure" value="10" />
</node>

But in contrast to other nodes and the official unix timestamp, the timestamp of the /ueyecam/image_raw message is 3600 seconds (=1 hour) old.

I asked the IDS support if this might be a camera-specific setting. They replied referring to the u64TimestampDevice and TimestampSystem fields of the UEYEIMAGEINFO structure: https://en.ids-imaging.com/manuals/uEye_SDK/EN/uEye_Manual/is_getimageinfo.html.

Is the ueye_cam node evaluating these information correctly?
Where can the offset of one hour come from?

Edit: I'm from Germany. My local time is Central European Time (UTC+01:00) and the offset could arise from wrong time zone settings.

Inappropriate Pixel clock bounds

The maximum pixel clock is set to 100 MHz in the dynamic reconfigure cfg file. However, some IDS cameras can go much higher (UI-3060CP Rev.2 can go up do 474). Can you please update the bounds?

stereo camera crashing after synchronisation

I'm trying to use the ueye_cam package to launch a two independent ueye camera(UI122xLE-C) as stereo camera, Because i want to do stereo processing which needs identical time stamps for both the camera's.
I have modified the master_slave launch file and executed with two camera's.
One camera is failed to intialize and the error is like below:

ERROR] [1467313081.966489221]: Could not open UEye camera ID 2 (IS_CANT_OPEN_DEVICE)
[ERROR] [1467313081.966554728]: Failed to initialize UEye camera 'slave'

I would like to launch the both camera's for stereo_image_processing.
I'm using ros-indigo-ubuntu14.04
Any suggestion or ideas for this issue?
Thanks in advance!

IS_TIMED_OUT external trigger

Hello,

I guess this is related to issue #6 The scenario is that I implement a service that sends some information to the camera node and runs the image grep loop till I have one image. I trigger the camera externally and call this service. In this case it needs to check for an image at leased 3 times, with an timeout of 2000ms to get an image. If I minimize the timeout to 40ms I still need to run "get image" around 3 times and I get the image earlier cause of the smaller timeout. Also, I do not trigger again during the image readout.

This tells me that the driver is not really checking for images "during" the timeout.

Add xenial armhf to ROS Jenkins buildfarm

What would it take to add a Jenkins build job for creating an armhf deb for Ubuntu 16.04? I'm using a ueye camera on an ODROID XU4 and being able to apt install ros-kinetic-ueye-cam on an armhf architecture would be so much more convenient.

Thanks for all your work on this project!

Runing stereo Ueye_cam

Hi Mr Xu
I`m runing master slave demo. I deleted one camera and running 2 camera under external trigger mode.


Here are the facts:
I can run two camera at same time using ueyedemo
I can run 2 camera separately and sees the image using both master slave demo(connect only 1 camera) and rgb8 demo. By vary delay time in arduino, i can see fps change for both camera


Here is the problem:
But when I`m running two of them at the same time using master slave demo, there will only be 1 working. And if i writte separate launch file by copy rgb8 demo and modify the name field. the same problem occur, only 1 camera will be running.
It seems 2 camera are using one same pipline and somehow they are not able to share it. Have you encounter this problem before?


Details
launch file

<node pkg="nodelet" type="nodelet" name="ueye_cam_nodelet_cam1"
      args="load ueye_cam/ueye_cam_nodelet nodelet_manager">
  <param name="camera_name" type="str" value="cam1" /> <!-- == namespace for topics and services -->
  <param name="camera_topic" type="str" value="image_raw" />
  <param name="camera_id" type="int" value="1" /> <!-- 0 = any camera; 1+: camera ID -->
  <param name="camera_intrinsics_file" type="string" value="slave1.yaml" /> <!-- default: ~/.ros/camera_info/<camera_name>.yaml -->
  <param name="camera_parameters_file" type="string" value="" /> <!-- default: ~/.ros/camera_conf/<camera_name>.ini -->

  <param name="ext_trigger_mode" type="bool" value="True" /> <!-- if False, then camera will operate in free-run mode; otherwise, frames need to be triggered by hardware signal (falling-edge) on digital input pin of camera -->

  <!-- the following are optional camera configuration parameters:
       they will be loaded on the camera after the .ini configuration
       file, and before dynamic_reconfigure. That means that any
       (lingering) dynamic parameters from dynamic_reconfigure will
       override these values, and that these will override parameters
       from the .ini file.
       See http://www.ros.org/wiki/ueye_cam for more details. -->

  <param name="color_mode" type="str" value="mono8" /> <!-- valid options: 'rgb8', 'mono8', 'bayer_rggb8' -->

  <param name="image_width" type="int" value="752" />
  <param name="image_height" type="int" value="480" />
  <param name="image_top" type="int" value="-1" /> <!-- -1: center -->
  <param name="image_left" type="int" value="-1" /> <!-- -1: center -->

  <param name="subsampling" type="int" value="1" /> <!-- supported by only some UEye cameras -->
  <param name="binning" type="int" value="1" /> <!-- supported by only some UEye cameras -->
  <param name="sensor_scaling" type="double" value="1.0" /> <!-- supported by only some UEye cameras -->

  <param name="auto_gain" type="bool" value="True" />
  <param name="master_gain" type="int" value="0" />
  <param name="red_gain" type="int" value="0" />
  <param name="green_gain" type="int" value="1" />
  <param name="blue_gain" type="int" value="16" />
  <param name="gain_boost" type="bool" value="False" />

  <param name="auto_exposure" type="bool" value="False" />
  <param name="exposure" type="int" value="33" /> <!-- in ms -->

  <param name="auto_white_balance" type="bool" value="True" />
  <param name="white_balance_red_offset" type="int" value="0" />
  <param name="white_balance_blue_offset" type="int" value="0" />

  <param name="flash_delay" type="int" value="0" /> <!-- in us -->
  <param name="flash_duration" type="int" value="1000" /> <!-- in us -->

  <param name="auto_frame_rate" type="bool" value="False" /> <!-- frame rate settings are ignored in camera_ext_trigger_mode -->
  <param name="frame_rate" type="double" value="15.0" /> <!-- frame rate settings are ignored in camera_ext_trigger_mode -->
  <param name="pixel_clock" type="int" value="30" />
</node>

<node pkg="nodelet" type="nodelet" name="ueye_cam_nodelet_cam2"
      args="load ueye_cam/ueye_cam_nodelet nodelet_manager">
  <param name="camera_name" type="str" value="cam2" /> <!-- == namespace for topics and services -->
  <param name="camera_topic" type="str" value="image_raw" />
  <param name="camera_id" type="int" value="2" /> <!-- 0 = any camera; 1+: camera ID -->
  <param name="camera_intrinsics_file" type="string" value="slave2.yaml" /> <!-- default: ~/.ros/camera_info/<camera_name>.yaml -->
  <param name="camera_parameters_file" type="string" value="" /> <!-- default: ~/.ros/camera_conf/<camera_name>.ini -->

  <param name="ext_trigger_mode" type="bool" value="True" /> <!-- if False, then camera will operate in free-run mode; otherwise, frames need to be triggered by hardware signal (falling-edge) on digital input pin of camera -->

  <!-- the following are optional camera configuration parameters:
       they will be loaded on the camera after the .ini configuration
       file, and before dynamic_reconfigure. That means that any
       (lingering) dynamic parameters from dynamic_reconfigure will
       override these values, and that these will override parameters
       from the .ini file.
       See http://www.ros.org/wiki/ueye_cam for more details. -->

  <param name="color_mode" type="str" value="mono8" /> <!-- valid options: 'rgb8', 'mono8', 'bayer_rggb8' -->

  <!-- WARNING: the following 4 parameters specify dimensions for camera's area of interest. Values for image_width and image_height that are smaller than your camera's maximum values will result in cropped field of view. For typical cases, one should modify values for sensor_scaling / binning / subsampling to downsample the resulting ROS image to the desired dimensions, without losing potential field of view. -->
  <param name="image_width" type="int" value="752" />
  <param name="image_height" type="int" value="480" />
  <param name="image_top" type="int" value="-1" /> <!-- -1: center -->
  <param name="image_left" type="int" value="-1" /> <!-- -1: center -->

  <param name="subsampling" type="int" value="1" /> <!-- supported by only some UEye cameras -->
  <param name="binning" type="int" value="1" /> <!-- supported by only some UEye cameras -->
  <param name="sensor_scaling" type="double" value="1.0" /> <!-- supported by only some UEye cameras -->

  <param name="auto_gain" type="bool" value="True" />
  <param name="master_gain" type="int" value="0" />
  <param name="red_gain" type="int" value="0" />
  <param name="green_gain" type="int" value="1" />
  <param name="blue_gain" type="int" value="16" />
  <param name="gain_boost" type="bool" value="False" />

  <param name="auto_exposure" type="bool" value="False" />
  <param name="exposure" type="int" value="33" /> <!-- in ms -->

  <param name="auto_white_balance" type="bool" value="True" />
  <param name="white_balance_red_offset" type="int" value="0" />
  <param name="white_balance_blue_offset" type="int" value="0" />

  <param name="flash_delay" type="int" value="0" /> <!-- in us -->
  <param name="flash_duration" type="int" value="1000" /> <!-- in us -->

  <param name="auto_frame_rate" type="bool" value="False" /> <!-- frame rate settings are ignored in camera_ext_trigger_mode -->
  <param name="frame_rate" type="double" value="15.0" /> <!-- frame rate settings are ignored in camera_ext_trigger_mode -->
  <param name="pixel_clock" type="int" value="30" />
</node>
linux distro: 14.04
ros distro:indigo
32 bit or 64 bit os: 64
ueye camera model:UI1221
how many ueye cameras:2
ids ueye driver version:uEye-Linux-4.72-64-bit
ueye_cam git changeset: no idea 
code execution / roslaunch procedures:  roslaunch master_slaves_rgb8.launch
running launch file is ok. shows no error

after view 2 image by rosrun rviz rviz
output at camera driver shows the error
execution outputs, for both successful and failed runs
dw@dw-HP-EliteBook-820-G2:~/work_space/ueye_cam/src/ueye_cam/launch$ roslaunch master_slaves_rgb8.launch
... logging to /home/dw/.ros/log/4a3a853a-dd29-11e5-afc8-94659ca2f35a/roslaunch-dw-HP-EliteBook-820-G2-24472.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://dw-HP-EliteBook-820-G2:39521/

SUMMARY

PARAMETERS

  • /rosdistro: indigo
  • /rosversion: 1.11.16
  • /ueye_cam_nodelet_slave1/auto_exposure: False
  • /ueye_cam_nodelet_slave1/auto_frame_rate: False
  • /ueye_cam_nodelet_slave1/auto_gain: True
  • /ueye_cam_nodelet_slave1/auto_white_balance: True
  • /ueye_cam_nodelet_slave1/binning: 1
  • /ueye_cam_nodelet_slave1/blue_gain: 16
  • /ueye_cam_nodelet_slave1/camera_id: 1
  • /ueye_cam_nodelet_slave1/camera_intrinsics_file: slave1.yaml
  • /ueye_cam_nodelet_slave1/camera_name: slave1
  • /ueye_cam_nodelet_slave1/camera_parameters_file:
  • /ueye_cam_nodelet_slave1/camera_topic: left_image_raw
  • /ueye_cam_nodelet_slave1/color_mode: mono8
  • /ueye_cam_nodelet_slave1/exposure: 33
  • /ueye_cam_nodelet_slave1/ext_trigger_mode: True
  • /ueye_cam_nodelet_slave1/flash_delay: 0
  • /ueye_cam_nodelet_slave1/flash_duration: 1000
  • /ueye_cam_nodelet_slave1/frame_rate: 15.0
  • /ueye_cam_nodelet_slave1/gain_boost: False
  • /ueye_cam_nodelet_slave1/green_gain: 1
  • /ueye_cam_nodelet_slave1/image_height: 480
  • /ueye_cam_nodelet_slave1/image_left: -1
  • /ueye_cam_nodelet_slave1/image_top: -1
  • /ueye_cam_nodelet_slave1/image_width: 752
  • /ueye_cam_nodelet_slave1/master_gain: 0
  • /ueye_cam_nodelet_slave1/pixel_clock: 30
  • /ueye_cam_nodelet_slave1/red_gain: 0
  • /ueye_cam_nodelet_slave1/sensor_scaling: 1.0
  • /ueye_cam_nodelet_slave1/subsampling: 1
  • /ueye_cam_nodelet_slave1/white_balance_blue_offset: 0
  • /ueye_cam_nodelet_slave1/white_balance_red_offset: 0
  • /ueye_cam_nodelet_slave2/auto_exposure: False
  • /ueye_cam_nodelet_slave2/auto_frame_rate: False
  • /ueye_cam_nodelet_slave2/auto_gain: True
  • /ueye_cam_nodelet_slave2/auto_white_balance: True
  • /ueye_cam_nodelet_slave2/binning: 1
  • /ueye_cam_nodelet_slave2/blue_gain: 16
  • /ueye_cam_nodelet_slave2/camera_id: 5
  • /ueye_cam_nodelet_slave2/camera_intrinsics_file: slave2.yaml
  • /ueye_cam_nodelet_slave2/camera_name: slave2
  • /ueye_cam_nodelet_slave2/camera_parameters_file:
  • /ueye_cam_nodelet_slave2/camera_topic: right_image_raw
  • /ueye_cam_nodelet_slave2/color_mode: mono8
  • /ueye_cam_nodelet_slave2/exposure: 33
  • /ueye_cam_nodelet_slave2/ext_trigger_mode: True
  • /ueye_cam_nodelet_slave2/flash_delay: 0
  • /ueye_cam_nodelet_slave2/flash_duration: 1000
  • /ueye_cam_nodelet_slave2/frame_rate: 15.0
  • /ueye_cam_nodelet_slave2/gain_boost: False
  • /ueye_cam_nodelet_slave2/green_gain: 1
  • /ueye_cam_nodelet_slave2/image_height: 480
  • /ueye_cam_nodelet_slave2/image_left: -1
  • /ueye_cam_nodelet_slave2/image_top: -1
  • /ueye_cam_nodelet_slave2/image_width: 752
  • /ueye_cam_nodelet_slave2/master_gain: 0
  • /ueye_cam_nodelet_slave2/pixel_clock: 30
  • /ueye_cam_nodelet_slave2/red_gain: 0
  • /ueye_cam_nodelet_slave2/sensor_scaling: 1.0
  • /ueye_cam_nodelet_slave2/subsampling: 1
  • /ueye_cam_nodelet_slave2/white_balance_blue_offset: 0
  • /ueye_cam_nodelet_slave2/white_balance_red_offset: 0

NODES
/
nodelet_manager (nodelet/nodelet)
ueye_cam_nodelet_slave1 (nodelet/nodelet)
ueye_cam_nodelet_slave2 (nodelet/nodelet)

auto-starting new master
process[master]: started with pid [24486]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 4a3a853a-dd29-11e5-afc8-94659ca2f35a
process[rosout-1]: started with pid [24509]
started core service [/rosout]
process[nodelet_manager-2]: started with pid [24526]
process[ueye_cam_nodelet_slave1-3]: started with pid [24527]
process[ueye_cam_nodelet_slave2-4]: started with pid [24528]
[ INFO] [1456560511.789361974]: Initializing nodelet with 4 worker threads.
[ INFO] [1456560511.865979831]: Unable to open camera calibration file [slave1.yaml]
[ WARN] [1456560512.532831751]: Could not load [slave1]'s sensor parameters file /home/dw/.ros/camera_conf/slave1.ini (IS_FILE_WRITE_OPEN_ERROR)
[ WARN] [1456560512.555851544]: [slave1] does not support internal image scaling
[ INFO] [1456560512.615054419]: UEye camera [slave1] initialized on topic /slave1/left_image_raw
Width: 752
Height: 480
Left Pos.: -1
Top Pos.: -1
Color Mode: mono8
Subsampling: 1
Binning: 1
Sensor Scaling: 1
Auto Gain: 1
Master Gain: 0
Red Gain: 0
Green Gain: 1
Blue Gain: 16
Gain Boost: 0
Auto Exposure: 0
Exposure (ms): 32.9861
Auto White Balance: 1
WB Red Offset: 0
WB Blue Offset: 0
Flash Delay (us): 0
Flash Duration (us): 1000
Ext Trigger Mode: 1
Auto Frame Rate: 0
Frame Rate (Hz): 15.003
Pixel Clock (MHz): 30
Mirror Image Upside Down: 0
Mirror Image Left Right: 0

[ INFO] [1456560512.653306001]: Unable to open camera calibration file [slave2.yaml]
[ WARN] [1456560513.101279536]: Could not load [slave2]'s sensor parameters file /home/dw/.ros/camera_conf/slave2.ini (IS_FILE_WRITE_OPEN_ERROR)
[ WARN] [1456560513.123710240]: [slave2] does not support internal image scaling
[ INFO] [1456560513.183484081]: UEye camera [slave2] initialized on topic /slave2/right_image_raw
Width: 752
Height: 480
Left Pos.: -1
Top Pos.: -1
Color Mode: mono8
Subsampling: 1
Binning: 1
Sensor Scaling: 1
Auto Gain: 1
Master Gain: 0
Red Gain: 0
Green Gain: 1
Blue Gain: 16
Gain Boost: 0
Auto Exposure: 0
Exposure (ms): 32.9861
Auto White Balance: 1
WB Red Offset: 0
WB Blue Offset: 0
Flash Delay (us): 0
Flash Duration (us): 1000
Ext Trigger Mode: 1
Auto Frame Rate: 0
Frame Rate (Hz): 15.003
Pixel Clock (MHz): 30
Mirror Image Upside Down: 0
Mirror Image Left Right: 0

[ INFO] [1456560529.610068289]: [slave1] set to external trigger mode
[ INFO] [1456560536.721729385]: [slave2] set to external trigger mode
[ERROR] [1456560538.721890473]: Timed out while acquiring image from slave2
[ERROR] [1456560538.721934676]: If this is occurring frequently, see #6 (comment)
[ERROR] [1456560540.722178980]: Timed out while acquiring image from slave2
[ERROR] [1456560540.722215219]: If this is occurring frequently, see #6 (comment)
[ERROR] [1456560542.722422993]: Timed out while acquiring image from slave2
[ERROR] [1456560542.722473447]: If this is occurring frequently, see #6 (comment)
[ERROR] [1456560544.722659439]: Timed out while acquiring image from slave2
[ERROR] [1456560544.722695852]: If this is occurring frequently, see #6 (comment)
[ERROR] [1456560546.722842196]: Timed out while acquiring image from slave2
[ERROR] [1456560546.722887147]: If this is occurring frequently, see #6 (comment)
[ERROR] [1456560548.723238723]: Timed out while acquiring image from slave2
[ERROR] [1456560548.723292800]: If this is occurring frequently, see #6 (comment)
[ERROR] [1456560550.723456031]: Timed out while acquiring image from slave2
[ERROR] [1456560550.723502870]: If this is occurring frequently, see #6 (comment)
[ERROR] [1456560552.723666666]: Timed out while acquiring image from slave2
[ERROR] [1456560552.723707226]: If this is occurring frequently, see #6 (comment)

have you tried opening your cameras using ueyedemo, and seen success/failure frame captures?

Crash on reconnected camera

The ueye_cam nodelet crashes if the following happens:

  1. connect the camera,
  2. subscribe on the image-topic (e.g. with rostopic hz),
  3. disconnect the camera (ueye_cam starts complaining about that, but still works),
  4. reconnect the camera.

After step 4. ueye_cam crashes with an std::runtime_error-exception:
terminate called after throwing an instance of 'std::runtime_error'
what(): Time is out of dual 32-bit range.

IS_INVALID_BUFFER_SIZE when enabling subsampling

Hi all,

I'm using a UI-3591LE-C-HQ with ueye_cam and am having an issue setting the sub_sampling parameter to anything other than 1. ueyedemo allows subsampling of 2x and 4x, however ueye_cam throws an error for either subsampling option. Selecting either subsampling option from rqt or the launch file outputs:

[ERROR] [1463407478.498894127]: Could not start free-run live video mode for "[camera]" (IS_INVALID_BUFFER_SIZE)
[ERROR] [1463407478.499014645]: Shutting down driver nodelet for [camera]
[Thread 0x7fffeda5d700 (LWP 5895) exited]
[Thread 0x7fffef260700 (LWP 5888) exited]
[Thread 0x7fffeea5f700 (LWP 5889) exited]
[Thread 0x7fffbaf42700 (LWP 7124) exited]
[Thread 0x7fffdbfff700 (LWP 5909) exited]
[Thread 0x7fffc0ff9700 (LWP 6025) exited]
[Thread 0x7fffc17fa700 (LWP 6022) exited]
[Thread 0x7fffc1ffb700 (LWP 6021) exited]
[Thread 0x7fffc27fc700 (LWP 6005) exited]
[Thread 0x7fffc3fff700 (LWP 5996) exited]
[Thread 0x7fffc37fe700 (LWP 5998) exited]
[Thread 0x7fffc2ffd700 (LWP 5999) exited]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[Thread 0x7fffd9a98700 (LWP 5992) exited]
[Thread 0x7fffda299700 (LWP 5994) exited]
[Thread 0x7fffd9297700 (LWP 5993) exited]
[Thread 0x7fffe57fa700 (LWP 5904) exited]
[Thread 0x7fffe4ff9700 (LWP 5905) exited]
[Thread 0x7fffed25c700 (LWP 5897) exited]
[Thread 0x7fffe5ffb700 (LWP 5903) exited]
[Thread 0x7fffe6ffd700 (LWP 5901) exited]
[Thread 0x7fffe67fc700 (LWP 5902) exited]
[Thread 0x7fffeca5b700 (LWP 5898) exited]
[Thread 0x7fffe77fe700 (LWP 5900) exited]
[Thread 0x7fffe7fff700 (LWP 5899) exited]
[Thread 0x7fffba741700 (LWP 6391) exited]
[Thread 0x7fffee25e700 (LWP 5890) exited]
[Inferior 1 (process 5870) exited normally]

It looks like a similar (IS_INVALID_BUFFER_SIZE) problem was fixed for binning in 2bee82e. Any advice on how to fix the issue for subsampling?

wrong camera id for stereo camera?

Hi,
I have a pair of UI1221LE-M camera connected to Nvidia TX2.
I launched the camera node with camera ID 1 and camera ID 2. It can only find the camera ID 1, with the second one throwing the error:

[ERROR] [1512988231.806693548]: Could not open UEye camera ID 2 (IS_CANT_OPEN_DEVICE)
[ERROR] [1512988231.806888683]: Failed to initialize [cam1]

Also the camera ID seems to related to sequence of which camera plugged in first.
So what do I do to ensure the camera I launch is the correct one?

I have also read about #48, However I don't know how to run 'ueyecameraconfig' to set camera ID. I don't see any application in such name and terminal complains command not found.

Please help.

Chang

Cannot get full framerate with external trigger

I'm using 2x UEyeSE synchronised externally in hardware.

I cannot seem to get my desired 20 Hz framerate when using the trigger. I have my hardware trigger signal's cycle time set to 50ms. Exposure is set to 30ms. I verified that the trigger signal is just fine.
Timings for trigger :

Pre-Grab: 43.6295 +/- 49.0203 ms (22.9203Hz)
Post-Grab: 99.9462 +/- 2.31419 ms (10.0054Hz)
Target: 20.0053Hz

In free-run, it works fine, and can go upto 25hz.
Timings for free-run :

Pre-Grab: 49.0873 +/- 6.30559 ms (20.3719Hz)
Post-Grab: 49.4513 +/- 4.79193 ms (20.2219Hz)
Target: 20.0053Hz

I have also tried various different cables, different ports, etc.

Could you help? I couldn't also figure out how to use ueyedemo with triggering enabled, to check if the actual driver grab was working at desired rate.

Negative flash delay not possible to set

I am trying to set the flash delay to a negative value. According to the documentation this should be possible from -1000000us to 1000000us

However, in the RQT GUI setting negative values is not possible.

Best,
Ruud

UI-1220LE-M-GL color_mode woes

Hi,

i know the UI-1220LE-M-GL is not officially supported, but it seems there is just a minor fix required to get it running properly. When the nodulet is started from a launch file with mono8 and 640x480 it will produce the below log and does nothing. When dynamic reconfigure is used to set color_mode again to mono8 it works like a charm. Attached the launch file: https://gist.github.com/jmtatsch/67cb8a463b65d92920ba. Am I using it wrong or what could be the issue here?

roslaunch ueye_cam bw.launch
... logging to /home/odroid/.ros/log/b9ce0c42-315c-11e5-a17f-001e06617a39/roslaunch-odroid-10559.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://odroid:41110/

SUMMARY
========

PARAMETERS
 * /rosdistro: jade
 * /rosversion: 1.11.13
 * /ueye_cam_nodelet/auto_exposure: True
 * /ueye_cam_nodelet/auto_frame_rate: False
 * /ueye_cam_nodelet/auto_gain: True
 * /ueye_cam_nodelet/auto_white_balance: True
 * /ueye_cam_nodelet/binning: 1
 * /ueye_cam_nodelet/blue_gain: 16
 * /ueye_cam_nodelet/camera_id: 0
 * /ueye_cam_nodelet/camera_intrinsics_file: 
 * /ueye_cam_nodelet/camera_name: camera
 * /ueye_cam_nodelet/camera_parameters_file: 
 * /ueye_cam_nodelet/camera_topic: image_raw
 * /ueye_cam_nodelet/color_mode: mono8
 * /ueye_cam_nodelet/exposure: 33
 * /ueye_cam_nodelet/ext_trigger_mode: False
 * /ueye_cam_nodelet/flash_delay: 0
 * /ueye_cam_nodelet/flash_duration: 1000
 * /ueye_cam_nodelet/flip_lr: False
 * /ueye_cam_nodelet/flip_upd: False
 * /ueye_cam_nodelet/frame_rate: 30.0
 * /ueye_cam_nodelet/gain_boost: False
 * /ueye_cam_nodelet/green_gain: 1
 * /ueye_cam_nodelet/image_height: 480
 * /ueye_cam_nodelet/image_left: -1
 * /ueye_cam_nodelet/image_top: -1
 * /ueye_cam_nodelet/image_width: 640
 * /ueye_cam_nodelet/master_gain: 0
 * /ueye_cam_nodelet/pixel_clock: 25
 * /ueye_cam_nodelet/red_gain: 0
 * /ueye_cam_nodelet/sensor_scaling: 1.0
 * /ueye_cam_nodelet/subsampling: 1
 * /ueye_cam_nodelet/white_balance_blue_offset: 0
 * /ueye_cam_nodelet/white_balance_red_offset: 0

NODES
  /
    nodelet_manager (nodelet/nodelet)
    ueye_cam_nodelet (nodelet/nodelet)

auto-starting new master
process[master]: started with pid [10570]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to b9ce0c42-315c-11e5-a17f-001e06617a39
process[rosout-1]: started with pid [10583]
started core service [/rosout]
process[nodelet_manager-2]: started with pid [10594]
process[ueye_cam_nodelet-3]: started with pid [10601]
[ INFO] [1437671004.974484114]: Initializing nodelet with 8 worker threads.
[ INFO] [1437671005.658660640]: Unable to open camera calibration file [/home/odroid/.ros/camera_info/camera.yaml]
[ WARN] [1437671012.177399759]: Could not load UEye camera 'camera' sensor parameters file /home/odroid/.ros/camera_conf/camera.ini (IS_FILE_WRITE_OPEN_ERROR)
[ WARN] [1437671012.180301971]: Camera configuration loaded into an unsupported color mode; switching to MONO8.
[ WARN] [1437671013.117394007]: Internal image scaling is not supported by camera
[ INFO] [1437671013.739942835]: UEye camera 'camera' initialized on topic /camera/image_raw
Width:          640
Height:         480
Left Pos.:      -1
Top Pos.:       -1
Color Mode:     mono8
Subsampling:        1
Binning:        1
Sensor Scaling:     1
Auto Gain:      1
Master Gain:        0
Red Gain:       0
Green Gain:     1
Blue Gain:      16
Gain Boost:     0
Auto Exposure:      1
Exposure (ms):      33
Auto White Balance: 1
WB Red Offset:      0
WB Blue Offset:     0
Flash Delay (us):   0
Flash Duration (us):    1000
Ext Trigger Mode:   0
Auto Frame Rate:    0
Frame Rate (Hz):    30.0059
Pixel Clock (MHz):  25
Mirror Image Upside Down:   0
Mirror Image Left Right:    0

[ INFO] [1437671089.123576095]: Camera camera set to free-run mode
[ERROR] [1437671089.125415180]: Camera buffer pitch (752) is smaller than expected: width (640) * bytes per pixel (1)
[ERROR] [1437671089.132365397]: Camera buffer pitch (752) is smaller than expected: width (640) * bytes per pixel (1)
[ERROR] [1437671089.146388956]: Camera buffer pitch (752) is smaller than expected: width (640) * bytes per pixel (1)
[ERROR] [1437671089.179405081]: Camera buffer pitch (752) is smaller than expected: width (640) * bytes per pixel (1)
[ERROR] [1437671089.213082623]: Camera buffer pitch (752) is smaller than expected: width (640) * bytes per pixel (1)

[UI-3131LE-M-GL] Could not set flash parameter info

I have the UI-3131LE monochrome camera and it fails claiming

[ INFO] [1509019730.437946409]: Initializing nodelet with 4 worker threads.
[ INFO] [1509019730.474593811]: Unable to open camera calibration file [/home/dai/.ros/camera_info/camera.yaml]
[ WARN] [1509019731.177803826]: Could not load [camera]'s sensor parameters file /home/dai/.ros/camera_conf/camera.ini (IS_FILE_WRITE_OPEN_ERROR)
[ WARN] [1509019731.318777563]: [camera] does not support internal image scaling
[ INFO] [1509019731.566051275]: UEye camera [camera] initialized on topic /camera/image_raw
Width:			640
Height:			480
Left Pos.:		-1
Top Pos.:		-1
Color Mode:		rgb8
Subsampling:		1
Binning:		1
Sensor Scaling:		1
Auto Gain:		1
Master Gain:		0
Red Gain:		0
Green Gain:		1
Blue Gain:		16
Gain Boost:		0
Auto Exposure:		1
Exposure (ms):		33
Auto White Balance:	1
WB Red Offset:		0
WB Blue Offset:		0
Flash Delay (us):	0
Flash Duration (us):	1000
Ext Trigger Mode:	0
Auto Frame Rate:	0
Frame Rate (Hz):	29.9902
Output Rate (Hz):	0
Pixel Clock (MHz):	30
Mirror Image Upside Down:	0
Mirror Image Left Right:	0

[ERROR] [1509019731.566989662]: Could not set flash parameter info for [camera] (IS_NOT_SUPPORTED)
[ERROR] [1509019731.601301121]: Could not set flash parameter info for [camera] (IS_NOT_SUPPORTED)
[ERROR] [1509019731.601351488]: Shutting down driver nodelet for [camera]

I've tried without any effect:

  • changing color mode to mono8
  • changing flash duration to 0 or -1
  • changing image size to 808 x 608 or 800 x 600
  • disabling auto exposure

I've also tried enabling ext_trigger_mode:

Timed out while acquiring image

It works with the uEye demo app.
I assume my camera does not support setting flash parameters, so not setting them at all could solve the issue. How can I do that?
Any help is appreciated.

Deb package installs the temporary uEye drivers

In DownloadUEyeDriversUnofficial.cmake you warn:

message(WARNING "The official IDS uEye drivers were not detected on your machine. A temporary version of the header/library will be downloaded locally to your ROS buildspace, to ensure that this package compiles. Nevertheless, you (or a system administrator) MUST still download and install the official IDS uEye drivers (http://en.ids-imaging.com/download-ueye.html). Also make sure that the IDS daemon (/etc/init.d/ueyeusbdrc) is running.")

but at the same time in CMakeLists.txt you are

if(USE_UNOFFICIAL_UEYE_DRIVERS)
  get_filename_component(UNOFFICIAL_UEYE_DRIVERS_LIB_REALPATH ${UEYE_LIBRARY} REALPATH)
  install(FILES ${UEYE_LIBRARY} ${UNOFFICIAL_UEYE_DRIVERS_LIB_REALPATH}
    DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
endif()

which results in the debian package including the temporary drivers that were only dowloaded for compiling. This causes error in environments were a newer version of the drivers is installed (or required) and the user has the debian package of the ueye_cam driver installed.

REQUIRED process [check_ueye_api-1] has died!

Hi, this is my first time to use ueye camera. My camera is UI324xLe-M. I installed the driver 4.91.0001. All things are good when I tried to launch the camera by camera Manager. So I tried to launch the camera by ROS. After catkin_make the package. I entry the sudo /etc/init.d/ueyeusbdrc start to start the driver first. Then launch the roscore in a new terminal. At last I cd to catkin_ws/src/ueye_cam/launch/ and run roslaunch rgb8.launch in terminal. But error happens:

process[ueye_cam_nodelet-3]: started with pid [4582]
[ INFO] [1546972685.473706366]: Initializing nodelet with 4 worker threads.
[ INFO] [1546972685.498840234]: Unable to open camera calibration file [/home/gone/.ros/camera_info/camera.yaml]
================================================================================REQUIRED process [check_ueye_api-1] has died!
process has died [pid 4579, exit code -6, cmd /home/gone/catkin_ws/devel/lib/ueye_cam/check_ueye_api __name:=check_ueye_api __log:=/home/gone/.ros/log/3b7297de-1374-11e9-873f-5800e34de6a7/check_ueye_api-1.log].
log file: /home/gone/.ros/log/3b7297de-1374-11e9-873f-5800e34de6a7/check_ueye_api-1*.log
Initiating shutdown!
================================================================================
[ueye_cam_nodelet-3] killing on exit
[nodelet_manager-2] killing on exit
[check_ueye_api-1] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

I don't know why this happens, can anybody help me?

multiple cams

I have problems to get the driver working properly with more than one camera.
Has it ever been tested or I am just doing something wrong?

RosLaunch problem

Hi,
I have the following problem with starting the ueye camera node.
I am using a UI 1221LE camera from a raspberry pi running minibian with ROS indigo.
The camera is confirmed to be working from a ubuntu environment but have problems starting it from the minibian.

I have installed the arm 7 drivers and started successfully the daemon.
I have tried to use the ueye_cam from apt-get, everything was ok but could not launch.
Now i have cloned the git, compiled with catkin successfully, but when trying to run
roslaunch ueye_cam rgb8.launch

i get the output

/root/ueye/ueye_cam/catkin_ws/devel/lib/ueye_cam/check_ueye_api: error while loading shared libraries: libueye_api.so: cannot open shared object file: No such file or directory=REQUIRED process [check_ueye_api-1] has died! process has died [pid 7478, exit code 127, cmd /root/ueye/ueye_cam/catkin_ws/devel/lib/ueye_cam/check_ueye_api __name:=check_ueye_api __log:=/root/.ros/log/2823c8ee-1392-11e7-a344-b827eba280a7/check_ueye_api-1.log]. log file: /root/.ros/log/2823c8ee-1392-11e7-a344-b827eba280a7/check_ueye_api-1*.log Initiating shutdown!

I confirm to have sourced catkin_ws/devel/setup.bash
also, i confirm that the directory /devel/lib includes the files libueye_cam_nodelet.so and libueye_wrapper.so and they are not empty.

Moreover,
Having commented the line
<node name="check_ueye_api" pkg="ueye_cam" type="check_ueye_api" required="true" />
in src/launch/rg8.launch.
i get a different error:

[ERROR] [1490697836.989684294]: Failed to load nodelet [/ueye_cam_nodelet] of type [ueye_cam/ueye_cam_nodelet] even after refreshing the cache: Failed to load library /root/ueye/ueye_cam/catkin_ws/devel/lib//libueye_cam_nodelet.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = libueye_api.so: cannot open shared object file: No such file or directory) [ERROR] [1490697836.989874241]: The error before refreshing the cache was: Failed to load library /root/ueye/ueye_cam/catkin_ws/devel/lib//libueye_cam_nodelet.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = libueye_api.so: cannot open shared object file: No such file or directory) [FATAL] [1490697836.990713562]: Failed to load nodelet '/ueye_cam_nodelet of type ueye_cam/ueye_cam_nodelet to manager nodelet_manager' [ueye_cam_nodelet-2] process has died [pid 7668, exit code 255, cmd /opt/ros/indigo/lib/nodelet/nodelet load ueye_cam/ueye_cam_nodelet nodelet_manager __name:=ueye_cam_nodelet __log:=/root/.ros/log/2823c8ee-1392-11e7-a344-b827eba280a7/ueye_cam_nodelet-2.log]. log file: /root/.ros/log/2823c8ee-1392-11e7-a344-b827eba280a7/ueye_cam_nodelet-2*.log

** having followed this thread on the ros page, I get the same problem, but unable to fix.

Moreover. i tried also to compile the fuerte branch, but couldn't

Thank you!

Dynamically switching between auto-exposure and manual-exposure

Hi Anqixu,

I am using ueye to run a monocular SLAM, which requires camera to keep constant exposure when tracking. However, I would also like the camera automatically adjust the exposure to the optimal to the current lighting condition before SLAM initialisation.

In order to achieve this, I will need the ueye_cam to do two things:

  1. be aware of the suitable suitable camera exposure value: read current camera settings (exposure) when camera in automatic exposure.
  2. switch between auto-exposure and manual-exposure in runtime.

Is the driver possible to do that?
Or is there any better way to achieve this?

Thank you in advance.

Kind Regards,

Chang

Resolution issue

Hi Anqi,

First I would like to thank you for writing such a good ROS driver. Previously I was using the "ueyecamera" package, which only supports 15fps@the maximum resolution. I don't think the author wrote the package very well.
After I switched to your package, I encountered a problem. I'm using Ubuntu 12.04LTS with ROS Groovy. uEye camera model UI-1221-LE-C. According to the manual, the maximum resolution is 752*480. I launched the "rgb8.launch" file, brought the dynamic reconfigure GUI, and tried to change the resolution. However, the terminal window kept outputing "Fail to aquire image from UEye camera 'camera' (IS_TIMED_OUT).
I tried to change the variable "cam_aoi_.s32WIdith=640" to 752 in "ueye_cam_driver.cpp", as well as modify the parameter "image_width" in "rgb8.launch", but neither of them seems to work. Would you plz tell me how I can use the maximum resolution without getting this error? Many thanks.

Cheers,
Lyn

IS_INVALID_BUFFER_SIZE

Hi!
I am using the current version 4.60 of the ueye sdk on armhf and ueye_cam ros indigo.

I am able to use the usb_cam nodelet under the following conditions:

I have to start with the same image_width and image_height as found in the .ini file. Setting a pixel more in any direction gives a

"Failed to set Area Of Interest (AOI) to 752 x 480 with top-left corner at (0, 0) for [ueye]. "

When I do this via dynamic configuration, I can set the image size, but I think this is related to:

When I turn binning on (vial .launch file or dynamic or via .ini), the nodelet crashes with:

Could not start free-run live video mode for [ueye] (IS_INVALID_BUFFER_SIZE)

Binning is supported by the camera.

What can I do? Do you want my launchfile / config? I cannot find your version (4.20) of the ueye driver. Is there such a version for armhf?

Could not load [camera]'s sensor parameters file

Hi

When I launch rgb8.launch, i get this error:

[ WARN] [1496331955.280376918]: Could not load [camera]'s sensor parameters file ~/catkin_ws/src/ueye_cam/camera_conf/ (IS_FILE_WRITE_OPEN_ERROR)
[ WARN] [1496331955.320810776]: [camera] does not support internal image scaling

I get the ini file from ueyedemo.

I need to get the camera calibrated.

My question is:

  1. why i got this error?
  2. why in INI file, there's no intrinsic parameter? How can I set the intrinsric parameter?

Please help me.
I'm new to ROS programming.

[reconfig GUI] Problem with external trigger setting after changing the exposure time

I use the external trigger function with a UI-3240LE. Everything is fine until I change the exposure time in the reconfig gui. The check box for the external trigger is still active but its not working. In this situation, if I turn the external trigger in the reconfig gui off and on, its working from that point unless I change the exposure time again.

Thanks in advance.

Chris

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.