|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
New Camera Class
BETA
I've heavily modified some camera code. There is slightly different functionality in smash_camera.cpp in GetJpegImageBlocking. It blocks with different functionality. It will not always succeed. You can change the functionality by copying the original method from PCVideoServer.cpp. Also, for now, you must manually set the IP to the computer to want to receive video from. You must do this in the method VideoServerHelper on line 65 in smash_video_server.cpp. Required Code: Code:
#include "smash_camera.h" smash::AxisCamera& camera = smash::AxisCamera::getInstance(); camera.writeResolution(smash::k160x120); camera.writeBrightness(0); I didn't try to 2Go PC, but I got 20+ FPS on 160x120. I'll upload dashboard later.... must go! Last edited by TheDominis : 01-26-2010 at 08:25 AM. Reason: Upload Limit |
|
#2
|
||||
|
||||
|
Re: New Camera Class
I'm sorry if I'm not getting this, but what does this do? Does it give an increased framerate or is it just designed to let the user customize what IP they want to use to receive video data?
Does this run on a LabVIEW dashboard, or some custom implementation of your own? |
|
#3
|
|||
|
|||
|
Re: New Camera Class
I didn't know that the zip limit was greater than the rar format. It failed for that reason.
The Dashboard frame rates at 160x120 were 20+ on the laptop I tested it on (not the 2Go computer). The other formats were less, but I think that was due to an error in the dashboard. You will need 3.5 .NET Framework for this to work. Perhaps even SP1 for 3.5 .NET. Last edited by TheDominis : 01-26-2010 at 12:42 PM. Reason: Requirements |
|
#4
|
||||
|
||||
|
Re: New Camera Class
You still didn't really answer my question. Is this just a custom video dashboard? What advantages does this have over the standard code?
|
|
#5
|
|||
|
|||
|
Re: New Camera Class
Opposed to the stock camera server, my server gets 20+ FPS at 160x120. Other image sizes are slightly buggy, but I'll fix that soon. Adding more features later.
Last edited by TheDominis : 01-26-2010 at 05:32 PM. |
|
#6
|
||||
|
||||
|
Re: New Camera Class
Awesome! Without pouring through the code, how did you manage to do this?
Last edited by slavik262 : 01-26-2010 at 05:48 PM. |
|
#7
|
|||
|
|||
|
Re: New Camera Class
Quote:
Step 1. Acquire Image Step 2. Calculate how many packets will be required to send the image Step 3. Send packet(s) via UDP (1032 byes), populate any outdated data Step 4. Repeat 1 - 3 Receiver Step 1. Acquire a 1032 byte packet Step 2. Translate the packet into usable information (i.e Big Endian to Little Endian) Step 3. Populate "Status" with new information Step 4. If the image is finished, present it Step 5. Repeat 1 - 4 This is, of course, a simplified overview. |
|
#8
|
||||
|
||||
|
Re: New Camera Class
So you segment the image into several packets and send it over UDP instead of TCP? I assume you have error-checking built in? I'll have to check it out.
|
|
#9
|
|||
|
|||
|
Re: New Camera Class
I carry very little about errors. I throw them out and wait for a new image.
|
|
#10
|
||||
|
||||
|
Re: New Camera Class
I'm curious - how does this affect the total bandwidth used by a single Crio and dashboard.
In other words, have you increased 20-fold (or is it 20^2 for an image) the number of packets that are going to be sent to increase your framerate by 20 times? For some reason I thought the communication protocalls were sancrosanct - that is I thought we weren't allowed to touch them because of bandwidth concerns. I had thought that was why they limited the dashboard to a 1 hz update, though I might be wrong: you know what they say about assuming. |
|
#11
|
|||
|
|||
|
Re: New Camera Class
Quote:
|
|
#12
|
|||
|
|||
|
Re: New Camera Class
The source code can be found by using svn.
Code:
svn checkout http://frc-video-collab.googlecode.com/svn/trunk/ frc-video-collab-read-only |
|
#13
|
||||
|
||||
|
Re: New Camera Class
The GDC got back to us, and their answer is, in a word, no:
http://forums.usfirst.org/showthread.php?t=14284 We'll have to see what this update brings before moving forward. |
|
#14
|
|||
|
|||
|
Re: New Camera Class
It looks like what they really said is no to UDP... can you make it work over TCP?
|
|
#15
|
||||
|
||||
|
Re: New Camera Class
Quote:
We're also aware that some of the latency is being caused by the Classmate not being enough to keep up with the cRIO, but TCP doesn't help in this respect. Last edited by slavik262 : 02-01-2010 at 02:17 PM. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| define a new class(C++) | nadavsen2 | C/C++ | 15 | 11-02-2010 01:21 PM |
| Camera using IterativeRobot class | Steve Warner | C/C++ | 2 | 01-24-2010 09:47 PM |
| New class for Logitech Dual Action Gamepad | Mike Soukup | C/C++ | 8 | 02-11-2009 08:08 PM |
| Camera Help (New to Camera Programming) | Idaman323 | Programming | 6 | 01-14-2006 03:56 AM |
| **FIRST EMAIL**/FIRST Announces New Class of Senior Mentors. | Billfred | FIRST E-Mail Blast Archive | 1 | 12-23-2004 01:32 PM |