Running multiple programs concurrently

hey all

i have 2 programs, program 1 connects to the zed2i cameras through a webcam approach and Program2 uses the zed2i through the API since i am extracting the depth map as the camera is running.

i realise this poses the problem of a locked resource which cannot be accessed while in use and i have used v4l2loopback to create a virtual camera interface through linux which is what i am using on program1. but the API wont open the camera till the first program is done

Hi @SaifK2049
the ZED cameras cannot be used by two different processes at the same time, but there is a workaround.
The program that opens the “real” camera can start a ZED SDK streaming server.
The second software instead of opening the “real” camera connects to the network stream.

Read more here: Local Video Streaming | Stereolabs
Tutorials: https://github.com/stereolabs/zed-sdk/tree/master/camera%20streaming

I was told by one of the employees in a private conversation that the Depth map data could be accessed using the ZED SDK stream, so far i connected two receiver devices and 1 sender but they both give out the live video feed. my requirement is that the depth map data has to be read and understood by an algorithm, and acted upon and not just viewed.

The streaming module allows you to retrieve the same information you retrieve from live cameras.
The only difference is in the parameters to be used when opening the cameras.

The documentation showed “using the zed sdk as an input” so would I be able to retrieve the depth map data through that?

Yes, I just told you that with streaming input you use the camera in the same way.

Did you test it?

through the ZED SDK i wasnt able to do it, on both the receiver and sender, I only see the video being displayed

To retrieve the depth you can simply use the retrieveMeasure function after grab.

I ran the code and it works, but pointing to another issue i had in this thread Multicam with local ip streaming - #6 by multicore-manticore

I ran the code and I found this error to be a reason that is causing a segmentation fault

Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x0000fffff41843cc in sl::ZEDmcu::getIMUCameraTransform() ()
   from /usr/local/zed/lib/libsl_zed.so

on the receiver side i also tried to run two programs separately, where i just changed the port number for the receiver code but no image was being displayed

The getIMUCameraTransform is a bug to be fixed. I just reported it.

You must not change the port of the receivers… all of them can use the same port.
Only the sender must change the port if there are multiple senders.

the point of having multiple ports for the receiver is the window would keep switching between the first and second camera since they are coming from the same IP and there will be another 2 streams but they come from different IP addresses

Can you describe in detail the configuration of senders and receivers?

I sent it to your messages