Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   NI LabVIEW (http://www.chiefdelphi.com/forums/forumdisplay.php?f=182)
-   -   Recording Two Video Streams via Labview Dashboard (http://www.chiefdelphi.com/forums/showthread.php?t=145876)

Araknos 18-03-2016 00:15

Recording Two Video Streams via Labview Dashboard
 
My team has two cameras on their robot; we have recently decided that we want to have two simultaneous video streams instead of switching between them. Camera switching worked, albeit with a slight lag during switching.

After our first regional, however, I realized that we needed to record the video stream from the cameras for after match viewing to facilitate debugging and match review.

I have successfully retrieved both camera feeds and displayed them. However, I have only been able to have one of the two camera feed save to AVI after recording. The selection of feed seems to be random.

I modified the AVI creation code VI so that it accepts an outside path instead of grabbing the one from the log file path, so that I can have it save as two separate files. However, this does not work.

What in the Dashboard code is preventing me from saving two files?

Thanks in advance.

ahudson 18-03-2016 12:01

Re: Recording Two Video Streams via Labview Dashboard
 
May I ask how you were able to view 2 camera images simultaneously? We have the drive station set up to have two camera images, but it is not showing both camera images. Any ideas what we are not doing?

Araknos 19-03-2016 20:45

Re: Recording Two Video Streams via Labview Dashboard
 
The way I had implemented it was to duplicate the "WPI_CameraRead MJPG For Dashboard" VI and give it a separate IP corresponding to the other camera. In order to use more than one camera, you have to assign them unique IPs and explicitly address them in the Dashboard code; you cannot use the "Camera IP" local variable, as it will only return one IP (not sure which though).

It's funny that you mention this though, because I am currently trying to fix a problem where when one camera is disconnected, waiting when opening one TCP port causes pausing in the reading of the image in the other.

I am currently working on this problem. Will post when I figure anything out.

adciv 20-03-2016 07:30

Re: Recording Two Video Streams via Labview Dashboard
 
With regards to the pausing, I'm guessing you're reading them both in the same while loop. That VI blocks until it reads in an image. To solve this, move one to a separate loop.

Araknos 20-03-2016 19:52

Re: Recording Two Video Streams via Labview Dashboard
 
Quote:

With regards to the pausing, I'm guessing you're reading them both in the same while loop. That VI blocks until it reads in an image. To solve this, move one to a separate loop.
Unfortunately, the problem isn't that simple. They are in two separate while loops, which would normally cause them to run in parallel. However, in one of the deeply nested VIs (HTTP Authentication, I believe), there is a TCP Open block which has a timeout of 2 seconds. So, when one camera has failed to make a connection, the HTTP VI is called repeatedly, only pausing for the default 500ms wait that occurs when the camera is not active.

While the one camera is waiting on a connection to open (TCP Open), it blocks the TCP Read operation of the other camera used to get the image.

I have "solved" this problem by limiting the number of times a camera can attempt to connect (in case one is unplugged). Then, I decide when to try again based upon what the robot is doing. In my case, it will retry the vision camera when shooting, and retry the intake camera when driving around (robot tells the Dashboard what to do via NetworkTables).

I have still not solved the problem of being able to record both at once, although I assume it may have something to do with a conflict in resources (access to file system, encoding, etc.).

Greg McKaskle 24-03-2016 22:46

Re: Recording Two Video Streams via Labview Dashboard
 
I think that the solution is to make a second call to the Dashboard_Create AVI vi. Pass in the name you want for the second camera. Oh, and you'll want to make the Dashboard Create VI be reentrant. The Preallocated clone will compile such that the feedback node inside the VI is unique per call and will correctly manage more than one file refnum.

Greg McKaskle


All times are GMT -5. The time now is 04:23.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi