Okay. Yeah, sequence services clearly labeled there. You got frame acquisition, image acquisition that goes to a buffer. You've got the frame differencing. You've got frame selection, and then you've got a color conversion that looks like from why you [inaudible] RGB. Then you've got, this is where you do your added feature like Laplacian look like you did it in some different transforms. Two different Laplacian emboss and sharpen. Okay, cool. This is kind of a more detailed analysis of the one heart service. S1 is the differencing one. You can see this is the semaphore release jitter. Basically everything is pretty much above 0 and up to almost 1.7,1.8 milliseconds. That's about 0.4. Then completion time versus deadline, execution time. Then it's kind of min-max and average for that as well. You're getting an average frame rate that's very close to 30 so that was your assumption is that I've got 30 frames to choose from in a second. Therefore in a tenth of a second I've got three frames to choose from. So three frames and then it's easier to detect the transition and then give a little bit of margin for drift and jitter as well. Right. Then once you find the tick, you keep looking for it every one second or 10 times a second. Every second so I have two different functions, one for the 10 hertz and one for the one hertz. But at 10 hertz, do you look for it 10 times a second or just once a second, and then try to assume that it's a 100 milliseconds offset from the tick. 10 times a second. 10 times a second. Interesting. Here's the sum of the pixels, and for each, individual pixel, if it's a tick, it's going to be a pretty big difference on each individual pixel. Yeah. Then a lot of the other ones, if you're getting noise, they're going to be anywhere from 0 to 10 when you multiply. But when you add that by 640 by 480, that really raises a huge noise level. You kind of have like a band pass kind of thing. It's got to be more change. It's more than say like 10. The change in intensity of more than 10 to even be counted or something like that. Yeah. A lot of the frames that are stable will have a value of 0 as the total difference. Got you. No that is important. That's super-important. I mean, there's, without some sort of filters, you can get a lot of false triggers for all kinds of things depending on what you're trying to detect versus what might give you a false detection. So I agree. Okay. The difference imaging is called diffy. Yeah. I've got in the buffer it's diffy [inaudible]. Okay. Here the initial pointer is the pointer to the tick that's it's detected. Okay. Point it to a frame where the tick occur. Yeah. These are referring to the frame it's coming in from the VL or V4, L2 buffer. Yeah. They should be about 30 apart for one second. Okay. What sort of troubles did you have while you were working on? Was it mostly setting the threshold and that thing or was it more timing or both? A lot of both. With the one Hertz timing wasn't too bad. The 10 Hertz timing was a lot more of a challenge. Yeah. I'm hoping the threshold set right it now because otherwise it blows everything up. If you don't have the threshold set at the proper level. Yeah. Okay. Yeah. I can see it's a little blurry. Freeze frame zero. Whenever you have any trouble, well, I'm guessing you have, where like when you don't detect a tick, when the secondhand crosses past the hour or the minute hand. I was worried about that, but that actually ended up being okay because when it's either leaving from outside to inside or leaving from inside to outside, there's gonna be a difference. That one sometimes falls below the threshold. We've got the frames here, so go ahead and show me, how you verify by going through them. Yes. Okay, so first I'll start off I would start off with the first one, and the last just to see. Yeah. Whether it's going to be good or not. Yeah, exactly. There you got 180 or is that 181? Oh, you started at zero. Got you. It should be in the same position, with the minute hand move one. Actually in our case, three minutes. Yeah. Not 30. Okay, so it looks like we in fact have that because it's one ticking for the two. Now let's start from zero and just see if it advances one at a time. Okay. No words escapes. One, two, three, four, five, six. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. I'm doing this, how I was checking it because just going by five is a lot easier. No, that's okay. It's tedious. Yeah. One, two, three, four, five. Especially when it's off by one second out of 1800 and you have to go figure out where that was. Yeah. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. Okay. We just did a minute. Yes. Yeah. I'm convinced that I didn't see anything that looked suspicious. This is just showing me that the second one works. Yeah. Looks like second hand is in the same spot. Then a hand is 30 minutes advanced. It's right on the seven hash there. At the beginning. It looks like I'm getting a little reflection, but this one is okay. - Lottery selection. Like the sun angle has changed in the room where you have the set up for something? - Yes. it's in the front room of our house because it has better lighting up there, but also the sun's setting, so it's getting a little brighter in there too. - Right? - One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. - It's kind of like a silvery secondhand. - It does, which is probably been kind of helpful. - Okay. So you get some pretty good intensity reflection off that thing? - Yeah. Maybe too much sometimes. - But even on the white background, it's nice. - Yes, because it's still dark, but then it gives nice contrast over the black hands. - Yeah. Right. - One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. One, two, three, four, five. - Oh, looks good. I'm convinced so two times demonstrated past and its ppms. Did you plot the timestamps that you have in your headers and all your analysis? - Yes. So those are the frame timestamps, - Got you. Interesting. Do you Know why it does that? - Yes. I'll show you the difference between this and the ten hertz. So this one, I give enough flexibility for essentially plus or minus a few 100 milliseconds so it can grab a number of different things with that layer. Whichever one that determines is the most stable. It grabs moving forward. So in here, there's one, two, three, four, five, six, seven or eight different frames that are typically picks from within that subset. - Most stable means the least change from the previous frame. - Yes, so the lowest difference, so typically as zero for difference. - So why is it moving through them like that? Do you know? - Oh, kind of at this diagonal. - Yeah why is this diagonal that you have? - That's a great question. What the algorithm picks the first lowest difference? My guess is just a little bit of noise in there. But this could also be right after the tick it picks a frame, then I guess after the next row. - Also say a feature of the code is too regular to me. - Yes, it's kind of random. - Yes. Anyway that would be interesting. That'll make things where you pass the test, but I'll make a notebook. - Yes. In my head, I had it explained but now that I'm trying to explain it again,. - I think you explained half of it. Half of it was why is there just this band? And the band is there because you could select a frame anywhere in that, within a second, right? - Yes. - Now, why isn't a pattern inside the band like this. - Right. Like in this one it makes more sense because there's only two frames to pick from. Yes. Bounces between them. -Then I think this is a feature of the camera or it's just, kind of staggering. Based on the initial timestamp that I picked. The frame stamp on the camera I guess staggers for some reason or another. Okay. I'm not sure what that is. No that's good actually you get credit for having unknowns and admitting them by the way. Thank you. All right. Here's, let's go one, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three, four, five, six, seven, eight, nine, ten. One, two, three,, four, five, six, seven, eight, nine, ten. The other hundreds and thousands are actually pretty clearer. I saw 20 in around ,53 and 78, I think. Yeah, look at that. Now is with your additional feature off, right? Correct. Okay. I haven't noticed any impact of that so on what I plotted it out, here's basically the additional feature execution completion time versus its deadline and that was there's plenty of margin. Yeah. Okay. Through the system. We'll first transform frame so we've got the first and the last one. Okay. So we got 27.4 and we got three 27.4. There are three minutes apart, we've got 54 and one and we got to blurred, looks like a blurred 28 again? It's a blur between a two and a five. Okay. I think your suspicion is right that the remote clock doesn't get through every single hundreds and it'll be hundreds and thousands of a second in theory that they're displaying. Yeah. I feel like that frame captures or way too solid on them for this quality of camera. Tens of a second is totally believable because my hope is that they actually essentially like at their server, they get like NIST time or GPS or something. They send it over a network, and typical network latencies are as high as a few 100 milliseconds. Which wouldn't be a problem but if you've got a good connection like if you were to do like a ping to that location, have you tried that? Like, what's your latency? Let's see if I have it. Let's see what's the website. The time and date. How would you even ping a website like that? I think you can just ping time and date.com, that's probably good enough. Okay. There might be a little additional latency getting to that particular service at that domain. I think you could do ping time indeed.com, Okay, so just get rid of it. Yeah. Assuming they respond to ping. Yeah. Sure looks like they do. You get like 50 milliseconds. Okay. You're tenths of a second is believable that it could update your web page with tens of a second accurately. Yeah. Because your ping is below a 100 milliseconds. Yeah. The other ones not so much. Well, if it was like 50 milliseconds, like the ping says, it would be like one number or another number probably, right? Yeah. That mean, their clock on their side may in fact go down to 1000 in seconds. When I've had to do this, I just don't buy a GPS receiver and I use GPS from time. Like the PTS and now I have time accurate to GPS time. If I had descended across a network, right now it's going to have whatever kind of transport latency there is. Yeah. Yeah. I think that explains it. Okay. You can pass these tests with your additional feature run. Where does your feature run? Does it run on its own core? Or does it run on the real-time core? It runs on the real-time core. Okay. That's impressive. Explain to me your core mapping again. What do you have on Core 0, like the one that Linux normally runs?. Core 0 is just Core 0. Core 1 is image acquisition to off the camera. Yeah. Core 2 is the frame differencing, frame selection, the YUYV to RGB, and then the frame Transform. Okay. Then you got another, then core 3 is the right-packed? Yeah. Okay. It's best effort. Yeah. Then everything in Core 2 is RMA. Yeah. Then Core 1 is in theory RMA, but it's just with a single service RMA. That is it? Yeah, exactly.