Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   What is T_Packet_Data.my ?? (http://www.chiefdelphi.com/forums/showthread.php?t=43948)

354.FIRST 13-02-2006 20:04

What is T_Packet_Data.my ??
 
Help

In terminal.c there is the following code:


// does the camera have a tracking solution?
if(T_Packet_Data.my == 0)

how exactly does T_Packet_Data.my give us whether the camera has found a centered target? Is this what we should be using to know if our camera has a target in sight and centered?

thanks

-354

Mike 13-02-2006 20:08

Re: What is T_Packet_Data.my ??
 
This is the y axis location of the "blob" (the green target) on the cameras view. If there is no blob, it is zero. Theres no specific variable saying if something is in view, but this works just as well.

354.FIRST 13-02-2006 20:18

Re: What is T_Packet_Data.my ??
 
Thanks.
What's the best way to tell if the camera has a centered target?
-354

Greg Marra 13-02-2006 20:21

Re: What is T_Packet_Data.my ??
 
Well, logically, if the blob was centered in both the x and y dimensions, it would be safe to assume that the camera was centered on the target.

Now how could you tell how where the blob is....

Mike 13-02-2006 20:27

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by 354.FIRST
Thanks.
What's the best way to tell if the camera has a centered target?
-354

I'm not totally sure where Kevin found this information (maybe he can elaborate more) but in tracking.h I see
Code:

// parameters for CMUcam2 with OV7620 camera module
#define IMAGE_WIDTH 159
#define IMAGE_HEIGHT 239

So from this data you can figure that the middle point of the field of view is (79, 119) which, is also the value of the defines PAN_CENTER_PWM_DEFAULT and TILT_CENTER_PWM_DEFAULT.

So, what you want to do is get T_Packet_Data.my the closest you can to TILT_CENTER_PWM_DEFAULT and T_Packet_Data.mx to PAN_CENTER_PWM_DEFAULT.

-Mike

Greg Ross 13-02-2006 20:32

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by Mike
If there is no blob, it is zero.

That's what I thought too, but in debugging, it looked to me like mx and my DO NOT get cleared when the target is lost. As I noted in another thread, I changed the if(T_Packet_Data.my == 0) tests in tracking.c to if(T_Packet_Data.confidence <= 1) to make the tracking more reliable.

354.FIRST 13-02-2006 20:44

Re: What is T_Packet_Data.my ??
 
thanks for all the help y'all.
Totally saving my butt.
Can you point me to that other thread you mention? I am not finding it.
-354

Quote:

Originally Posted by GW (Greg) Ross
That's what I thought too, but in debugging, it looked to me like mx and my DO NOT get cleared when the target is lost. As I noted in another thread, I changed the if(T_Packet_Data.my == 0) tests in tracking.c to if(T_Packet_Data.confidence <= 1) to make the tracking more reliable.


Greg Ross 13-02-2006 21:01

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by 354.FIRST
thanks for all the help y'all.
Totally saving my butt.
Can you point me to that other thread you mention? I am not finding it.
-354

http://www.chiefdelphi.com/forums/sh...897#post448897

X-Istence 13-02-2006 21:30

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by GW (Greg) Ross
That's what I thought too, but in debugging, it looked to me like mx and my DO NOT get cleared when the target is lost. As I noted in another thread, I changed the if(T_Packet_Data.my == 0) tests in tracking.c to if(T_Packet_Data.confidence <= 1) to make the tracking more reliable.


Ehm, where did you get that from? They get cleared when there is new data from the camera, and if the data from the camera contains a y that does not exist, it will be set to 0, as in it can not find it.

That is at least what I got from the code, and the fact that each time the slow loop is run data is retrieved from the camera.

Kevin Watson 13-02-2006 21:44

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by GW (Greg) Ross
That's what I thought too, but in debugging, it looked to me like mx and my DO NOT get cleared when the target is lost. As I noted in another thread, I changed the if(T_Packet_Data.my == 0) tests in tracking.c to if(T_Packet_Data.confidence <= 1) to make the tracking more reliable.

Seriously? I've never seen it do that, but I'll look into it. I'm working on an updated tracking.c and I'll incorporate the fix(s) when I understand the problem better. BTW, did Rob Steele know about this?

-Kevin

Kevin Watson 13-02-2006 21:46

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by 354.FIRST
Is this what we should be using to know if our camera has a target in sight and centered?

Use the error values for this.

-Kevin

Kevin Watson 13-02-2006 22:33

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by GW (Greg) Ross
That's what I thought too, but in debugging, it looked to me like mx and my DO NOT get cleared when the target is lost. As I noted in another thread, I changed the if(T_Packet_Data.my == 0) tests in tracking.c to if(T_Packet_Data.confidence <= 1) to make the tracking more reliable.

Greg, are you saying that the CMUcam2 will occasionally send a t-packet with a non-zero value for .my when it does *not* have a tracking solution?

-Kevin

Mike 13-02-2006 23:25

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by Kevin Watson
Greg, are you saying that the CMUcam2 will occasionally send a t-packet with a non-zero value for .my when it does *not* have a tracking solution?

-Kevin

I don't think he is saying that it sends a t-packet with a non-zero value for .my/.mx but rather that the .my/.mx that is already stored does not change it's value when the image of a blob is lost.

X-Istence 13-02-2006 23:26

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by Mike
I don't think he is saying that it sends a t-packet with a non-zero value for .my/.mx but rather that the .my/.mx that is already stored does not change it's value when the image of a blob is lost.


It however does when it gets new information from the camera, so that would make no sense.

Keith Watson 13-02-2006 23:30

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by GW (Greg) Ross
That's what I thought too, but in debugging, it looked to me like mx and my DO NOT get cleared when the target is lost. As I noted in another thread, I changed the if(T_Packet_Data.my == 0) tests in tracking.c to if(T_Packet_Data.confidence <= 1) to make the tracking more reliable.

After reading what Greg found in the other thread, Saturday our programmer changed the terminal routine to dump out mx, my, and confidence and we ran tests. We saw non-zero mx, my values with confidence up to 6 or so with the target outside the camera's field of view. When the target is in the field of view the confidence was as low as 140 but was mostly well over 200.

The room the tests were run in had the camera on a 3' table, rows of white flourescent lights were 8'-9' up, and the target was at 3'. We determined the camera was picking up the white lights and putting those in the mx, my values. When we put the target on the floor and limited the tilt up angle the camera no longer picked up the white lights.

Our programmer changed the code to use confidence and it worked perfectly even with white lights in the field of view.

Keith Watson 13-02-2006 23:40

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by 354.FIRST
Is this what we should be using to know if our camera has a target in sight and centered?

No. Looking at mx, my, or even confidence does not mean the target is centered. Mx and my are undocumented but they are the target centroid in pixels in the sensor grid of IMAGE_WIDTH pixels by IMAGE_HEIGHT pixels which Mike reported. The tracking code which has modes of searching, tracking, and locked is separate. But the default tracking code does not make these modes available for use elseswhere. I modified our tracking code to make these available.

Kevin Watson 14-02-2006 00:14

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by Mike
I don't think he is saying that it sends a t-packet with a non-zero value for .my/.mx but rather that the .my/.mx that is already stored does not change it's value when the image of a blob is lost.

This isn't possible. The .mx value is only tested when the camera has sent a new t-packet. From what Greg and Keith are saying, it seems as though the camera does spit-out funky t-packets under weird lighting conditions.

-Kevin

Greg Ross 14-02-2006 14:45

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by Kevin Watson
Greg, are you saying that the CMUcam2 will occasionally send a t-packet with a non-zero value for .my when it does *not* have a tracking solution?

Correct. I believe I saw non-zero "my"s with very low confidence (possibly as low as 0.)


Quote:

Originally Posted by Kevin Watson
BTW, did Rob Steele know about this?

I'm not sure if Rob was around when I made the discovery.


What Keith reported corresponds very closely to my experience, although I didn't attempt controlled experiments. I just noticed that sometimes the camera locked on to a spot well away from the target, and noted that the confidence was zero (or so.)

Kevin Watson 14-02-2006 14:58

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by GW (Greg) Ross
Correct. I believe I saw non-zero "my"s with very low confidence (possibly as low as 0.)

What Keith reported corresponds very closely to my experience, although I didn't attempt controlled experiments. I just noticed that sometimes the camera locked on to a spot well away from the target, and noted that the confidence was zero (or so.)

Okay, I'll update the code to use the .confidence value as a discriminator instead of .my. Thanks for the information.

-Kevin

Kevin Watson 15-02-2006 23:11

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by Keith Watson
After reading what Greg found in the other thread, Saturday our programmer changed the terminal routine to dump out mx, my, and confidence and we ran tests. We saw non-zero mx, my values with confidence up to 6 or so with the target outside the camera's field of view. When the target is in the field of view the confidence was as low as 140 but was mostly well over 200.

I'm altering the tracking code to use the t-packet confidence value as a discriminator. Do you have a better idea of what the default value should be for the code?

-Kevin

Keith Watson 16-02-2006 00:42

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by Kevin Watson
I'm altering the tracking code to use the t-packet confidence value as a discriminator. Do you have a better idea of what the default value should be for the code?

-Kevin

When we saw values down to 140 with the green light that was with the target light tilted more than 45 degrees away and objects possibly partially blocking the light. But I consider 140 valid. With white lights we saw a maximum of 6. I would consider up to 10 invalid. That leaves a pretty large unknown range. Our programmer chose a level of 100. I think it was Greg who mentioned using 80 or 90.

Kevin Watson 16-02-2006 01:25

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by Keith Watson
When we saw values down to 140 with the green light that was with the target light tilted more than 45 degrees away and objects possibly partially blocking the light. But I consider 140 valid. With white lights we saw a maximum of 6. I would consider up to 10 invalid. That leaves a pretty large unknown range. Our programmer chose a level of 100. I think it was Greg who mentioned using 80 or 90.

Keith,

Can you do me a favor? Can you grab this code and test it under the conditions that caused the camera to send the low confidence t-packets? These are the changes I've made so far:

1) All changes to servo position are now done through two functions, which will make it easier for teams to use the CMUcam2 servo outputs if they desire.

2) Fixed bug in search initialization code where temp_pan_servo was initialized to zero instead of Tracking_Config_Data.Pan_Min_PWM.

3) Altered tracking algorithm to use the t-packet confidence value to determine whether the code should track or search. This value can also the changed on-the-fly from the tracking menu.

4) Added Get_Tracking_State() function, which can be used to determine if the camera is on target. New code in Process_Data_From_Master_uP( ) uses this function to turn on the switch3 LED on the operator interface when the camera is on target.


-Kevin

Keith Watson 16-02-2006 13:47

Re: What is T_Packet_Data.my ??
 
Kevin,

I have arranged to get some camera time to test your changes. It will be on Saturday morning before the bot goes to a scrimmage. It will be Saturday evening before I can report back.

Keith

kevlarman 17-02-2006 11:38

Re: What is T_Packet_Data.my ??
 
The non-zero my's probably come from stray pixels that the camera finds (like if the room is lit w/ flourescent lights and there is green or yellow paper on the walls), this doesn't make much of a difference most of the time, but it's annoying that it resets the search pattern, which results in the camera getting stuck going in circles and never finding the target (in our debugging we have gotten around this by covering its field of view until it was facing the target, we should probably make it not reset the search pattern ourselves, but hasn't annoyed us enough to do so yet)
EDIT:
i would also try changing
Code:

if(new_search == 1)
in tracking.c to:
Code:

if(FALSE)
(or if you aren't as lazy as I am just get rid of the whole if block and remove the else)
EDIT 2:
it's also be possible to not set new_search to 1 until after ~.5 seconds of seeing the target, since it will usually lose the stray pixels by then, but I don't see the benefit of reseting the search pattern.

Keith Watson 17-02-2006 13:23

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by kevlarman
The non-zero my's probably come from stray pixels that the camera finds (like if the room is lit w/ flourescent lights and there is green or yellow paper on the walls), this doesn't make much of a difference most of the time, but it's annoying that it resets the search pattern, which results in the camera getting stuck going in circles and never finding the target (in our debugging we have gotten around this by covering its field of view until it was facing the target, we should probably make it not reset the search pattern ourselves, but hasn't annoyed us enough to do so yet)

If the logic for tracking vs searching is changed from "is there a target pixel" to "is there confidence" then this problem goes away. For some reason confidence is only large if there is a green light.

kevlarman 17-02-2006 13:30

Re: What is T_Packet_Data.my ??
 
the confidence can drop sharply if there is a reflection of the target somewhere (which is likely considering all the reflective surfaces on the field), so finding that value that won't pick up the reflections but will pick up the real thing may be difficult.

Keith Watson 19-02-2006 15:14

Re: What is T_Packet_Data.my ??
 
Quote:

Originally Posted by Keith Watson
Kevin,

I have arranged to get some camera time to test your changes. It will be on Saturday morning before the bot goes to a scrimmage. It will be Saturday evening before I can report back.

Keith

Kevin,

I have sent email with feedback. It looks good. The feedback is just a couple of minor things in the comments.

Keith


All times are GMT -5. The time now is 21:00.

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