anqixu / ueye_cam

A ROS nodelet and node that wraps the driver API for UEye cameras by IDS Imaging Development Systems GMBH.
Other
60 stars 102 forks source link

Cannot get full framerate with external trigger #29

Closed mhkabir closed 8 years ago

mhkabir commented 8 years ago

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.

anqixu commented 8 years ago

Your triggered "Pre-Grab" timings have an extremely large variance. Keep in mind that the slave/triggered camera needs to be idle before and during the entire trigger period (i.e. not in exposure mode or transfer mode). You need to do the math to ensure that your trigger cycle (50ms) - 3*stdev - exposure (30ms) > 0.

I don't have a uEye camera with me, but I definitely remember using ueyedemo to test out external triggering mode. Go through every one of the settings (wrench icon). If that fails, save the camera configuration to a file, open it, modify the external trigger settings manually, then load that config file.