![]() |
Camera tracking logic???
Hey, not a programmer, but I've heard (and witnessed) that processing a constant video stream, as well as trying to send images back to the drivers station for processing is a no no. Is there anything special about processing on the crio?? How often should we grab an image from the camera so that the crio can handle it. I heard there was a 0.5 second delay when processing an image on the crio, someone said start a new "thread" in the code, what does that mean? Can anyone confirm or deny these claims???? We don't have the weight for it yet, but is it worth it to have a classmate onboard?? I've seen many teams effectively use the crio, but we're pretty lost. I figured press a button, grab an image, process, make drivetrain adjustments based on how far off target, grab another image after a half second or so, adjust again, and shoot. I think that's all people are doing, but I heard the crio is just too slow, are people knocking down the resolution alot??
|
Re: Camera tracking logic???
Our cRio's processor was peaking, so I removed the'enable vision' boolean in robot main and made a joystick button write to the enable vision.vision processing doesn't happen on the DS. Its all on the cRio.
|
Re: Camera tracking logic???
Oh boy, that's a big bunch of questions. I'm gonna try to answer each part, but there's a lot of information that can go into any one of these, much of which can be confusing to non-programmers and inexperienced programmers alike. Here we go:
Quote:
Quote:
Quote:
From a purely theoretical standpoint, it can be as frequently as you want, as long as your code can respond to it. However, the fewer images you grab, the less strain you put on the network. So if the code can only process 2 images per second, you may want to lower the frequency to 2 a second, or maybe 5 if you want to make sure the camera stays ahead of your processing code. Threading is a way to have a computer share its processing time between two separate, "simultaneous" processes. I put simultaneous in quotes because computers (unless they have multiple cores) just can't do anything simultaneously. You can think of a thread as, well, a thread, weaving in and out of the computer's execution of commands. It's helpful in this case because image processing operations can take a long time, and if you don't have it threaded, this can mean that your robot spends a lot of time sitting there without being able to respond to input from the driver station. Quote:
Quote:
Quote:
If your software guys need more information on how they can process the images they get, I've made a couple of posts on the issue: http://www.chiefdelphi.com/forums/sh...58&postcount=4 and http://www.chiefdelphi.com/forums/sh...61&postcount=2 |
| All times are GMT -5. The time now is 10:05. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi