-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Erroneous trigger out behavior #8171
Comments
Also to note for point 1, it is always 9 triggers for 5 frames, I have also seen 10 or 12 triggers for the same code. |
Hi @kshitijminhas Have you instead considered using the External Synchronization (Genlock) feature of the RealSense SDK to trigger your camera? Genlock provides an advanced level of control over trigger sequencing of cameras. https://dev.intelrealsense.com/docs/external-synchronization-of-intel-realsense-depth-cameras Section 4 of the paper should enable you to quickly reach a conclusion about whether Genlock would be a suitable replacement for your own triggering method. |
@MartyG-RealSense thank you for the link. It seems Genlock feature is for triggering the RealSense camera from an external source. Instead, in our application, we are trying to trigger an external camera from RealSense triggers. |
Could you provide information please about what external camera you are using if it is not a RealSense camera. Thanks! |
I am using a FLIR Chameleon camera: https://www.flir.com/products/chameleon3-usb3/ I believe the issue is independent of the external camera. The first trigger out from realsense may not be the first captured frame, because there could be a delay between starting the camera (pipe.start()) and fetching the frame (wait_for_frames()) Which leads to a frame mismatch between the realsense frame and any other camera. |
There is not a lot of available information about syncing between RealSense and non RealSense cameras. There is a past case though involving a RealSense D415 and a Stereolabs ZED depth camera that discussed using camera metadata to sync the devices. There is also a case that discusses hardware components that might be involved in syncing a RealSense D435i with a Flir Blackfly S. It was recommended that the RealSense was made the Master camera (the one that transmits the trigger pulse) and the Flir made the Slave. |
Hi @MartyG-RealSense, This frame number starts from 0 and each frame will align with each trigger out from the RealSense? Aka 1st trigger on the scope will correspond to get_frame_number() = 0? |
A camera that is set as a Slave listens out on each frame for a trigger pulse, such as one generated by a Master camera. If a trigger pulse is not detected within a certain time period then the slave stops listening and triggers an unsynced capture. I would therefore prefer not to claim with certainty that the trigger pulse will be detected by the slave and acted upon in the very first frame. In regard to the frame handle, a more detailed explanation of its function is provided in the link below. |
Hi, Ideal case is the following, where the the sensor starts triggers from a low state. Error case 1: Here the trigger line goes high for about 250 ms then triggers are seen. Error case 2: Here the trigger line is high for > 500 ms before triggers are seen. Since we want to use this line to trigger an external (non-intel) camera, this non-deterministic behavior leads to frame mis-alignment. Any advice on how to make this more deterministic? @MartyG-RealSense |
If you are planning to trigger a non-RealSense Flir camera, as mentioned in this discussion, and genlock is not being used then it is difficult to advise on this situation as it is the kind of syncing scenario that genlock was designed to solve. Without genlock, control of trigger timing between a RealSense and non-RealSense camera may be considerably more complex to achieve. In the absence of genlock, we are probably back to the earlier discussed subject of using metadata to sync the frames of each camera. |
Well, it seems GenLock is only for systems where an external device is the Master. However in my system, RealSense device is the master. It seems metadata is my best bet. |
@kshitijminhas genlock can be used as well. It is described in the white paper how you can set one camera to master and the others to slave with genlock. The limitations on frame rate and exposure time are detailed in the paper. |
Hi @kshitijminhas Do you require further assistance with this case, please? Thanks! |
Case closed due to no further comments received. |
Issue Description
I am trying to sync an external camera to the trigger out from RS depth camera. When I use the realsense-viewer the triggers start properly (see yellow triggers in the following image)
However, when I write my own code to fetch frames, I see 2 'not-normal' behavior:
Thank you
The text was updated successfully, but these errors were encountered: