[00:00.000 --> 00:07.560] Okay, folks, I think we are back. Let me try once again sharing my screen. [00:13.020 --> 00:18.680] And once again, I'm going to live dangerously and show the whole thing. [00:19.580 --> 00:28.620] So, when we were talking about ideas for talks and projects and things like that, [00:29.260 --> 00:33.440] one of the things that I just happened to mention, and somebody said, well, this seems like it'd be [00:33.440 --> 00:40.500] an interesting little challenge type of project to do. And I'm going to talk to you about something [00:40.500 --> 00:46.180] called AIS point prediction. So, here's the general idea. And if I was better at drawing [00:46.180 --> 00:52.080] graphics, I could have drawn you some graphics. So, I'm going to try going out here to OpenCPN [00:52.080 --> 00:58.520] to see what kind of things we've got going out here. What I really need, and I probably don't [00:58.520 --> 01:07.900] have, well, actually, I probably do have, but you see these vessels out here. This vessel right here, [01:07.900 --> 01:12.700] the Janus, we know is a sailboat. It looks like it's about to come in Ponce Inlet. The Sea King, [01:12.700 --> 01:17.640] I don't know anything about the Sea King. It's also a Type B. That's too bad, but that's okay. [01:18.480 --> 01:27.680] On AIS messages, vessels that are by Code of Federal Regulations required to transmit Class A [01:27.680 --> 01:35.740] type of vessels. So, the really big ones have a lot of passengers, have a certain tonnage or [01:35.740 --> 01:42.760] horsepower. They're Class A. And a Class A is going to be telling me all the information that's [01:42.760 --> 01:51.120] down here. They'll be telling me a speed, course, heading, and turn rate. They'll also be communicating [01:52.480 --> 01:57.020] relatively frequently. Class B vessels, the smaller ones, [01:58.400 --> 02:05.740] aren't required to transmit. And in fact, in a Class B position report, there's no way to even [02:05.740 --> 02:10.840] tell me about a turn rate. So, the reason I'm telling you that is so that I can tell you this. [02:11.220 --> 02:16.180] My question is, and here's an example of Louisiana, which was just offshore pretty [02:16.180 --> 02:25.940] recently, a tanker, offshore Daytona. So, if I know a ship's latitude, longitude, [02:25.940 --> 02:32.300] speed over ground, course over ground, and turn rate, can I predict where they will be [02:32.300 --> 02:40.610] the next time they give me a position report? And in some ways, this sounds like a trivial exercise. [02:41.470 --> 02:46.790] I fooled around a little bit with it, not a lot. It's a really interesting exercise. [02:48.790 --> 02:57.190] And the idea came to me some time ago, the idea being, you know, I'm at a particular place. [02:57.470 --> 03:04.470] And suppose a bad guy spoofs their AIS latitude, longitude of a vessel. And they try to, let's say, [03:04.470 --> 03:11.750] knock Louisiana off the air. And now they spoof, bing, Louisiana. Well, [03:12.810 --> 03:20.490] suppose their next position report puts me five miles away. Well, there's no way that I can move [03:20.490 --> 03:32.870] five miles in a minute. So, my AIS receiver could maybe flash red to say, we just got something that [03:32.870 --> 03:40.830] just doesn't seem right. Now, the other thing, by the way, that this AIS message will tell us, [03:40.830 --> 03:46.030] this position message, this and other things, is you'll notice that this is also giving me [03:46.030 --> 03:52.350] the destination and ETA of when I plan on getting there. So, this vessel, which I saw the other day, [03:52.350 --> 03:59.350] probably about four or five days ago, is expected tomorrow morning at 7 in the morning UTC to be [03:59.350 --> 04:06.970] in Texas. So, it must have, well, it must have been several days ago. Anyway, so where I'm going with [04:06.970 --> 04:14.870] this is this. Again, an AIS type 1, 2, or 3 message is a class A position report. And the information [04:14.870 --> 04:20.470] that matters to me is it's going to give me a latitude. For those of you that are not familiar [04:20.470 --> 04:28.050] with the relationship between latitude, longitude, and distance, it is vaguely as follows. One degree [04:28.050 --> 04:38.030] of latitude is 60 nautical miles. One minute of latitude is one nautical mile. Longitude is about, [04:38.030 --> 04:43.850] one degree of longitude is about 60 nautical miles at the equator, which is zero degrees latitude, [04:43.850 --> 04:52.790] of course. But for every other, any other latitude, a degree of longitude, the linear distance [04:52.790 --> 05:00.630] is going to be some function of the latitude. And think about a globe. And, of course, as you get [05:00.630 --> 05:07.510] closer and closer to the North Pole, one degree of longitude gets to be almost nothing, whereas [05:07.510 --> 05:14.450] one degree of longitude at the equator is 60 nautical miles. Anyway, I mentioned that later on. [05:14.770 --> 05:20.190] Then we're going to have the course in degrees, zero degrees being true north. And so an actual [05:20.190 --> 05:27.390] course will be somewhere between zero and 359. The speed in knots. A knot, of course, is a nautical [05:27.390 --> 05:33.870] mile per hour, which translates to about 1.15 miles per hour. I'm going to have a rate of turn, [05:33.870 --> 05:39.150] which is generally expressed in the number of degrees per minute, left or right. And the time [05:39.150 --> 05:46.190] between transmission is going to be a function of what is your speed and what is your rate of turn. [05:46.970 --> 05:51.490] And it turns out there's a standard for this, and if only the standard matched the reality, [05:51.490 --> 05:57.650] life would be a good thing. But here is actually an example, and it talks about some of the [05:57.650 --> 06:03.890] additional issues related to the problem. So I only care about the Class A transponder types, [06:03.890 --> 06:09.130] although I'm showing you Class Bs as well. So technically speaking, if you're a Class A vessel, [06:09.130 --> 06:14.670] you're at anchor, you just need to transmit every three minutes. Now, you may be saying, [06:14.670 --> 06:21.770] but I'm at anchor, I'm not moving. Well, again, AIS Class A devices, you might be talking about [06:22.010 --> 06:29.290] a vessel that is several hundred meters in length. If it's anchored or moored, the position [06:29.290 --> 06:36.550] of the bridge might be actually composing a circle, that if that ship were to swing around [06:36.550 --> 06:45.510] its anchor in a 360-degree circle, you might be talking about a radius of many hundreds of meters. [06:46.070 --> 06:57.550] Well, a nautical mile is about 2,000 yards, so I might, like I said, I might have a pretty big [06:57.550 --> 07:05.670] swing radius. In any case, if I'm sailing, not sailing obviously, but underway between 0 and 14 [07:05.670 --> 07:12.610] knots, I'm supposed to be transmitting every 10 seconds. If I am sailing at a speed of 0 to 14 [07:12.610 --> 07:19.170] knots and changing course, I need to be transmitting every 3.33 seconds. So that's how you read the [07:19.170 --> 07:25.170] chart in terms of transmission rate. What I did is I then translated this and said, well, what's the [07:25.170 --> 07:32.530] maximum distance I can travel in that amount of time? Well, if I'm going 14 knots and I'm transmitting [07:32.530 --> 07:40.090] every 10 seconds, I'm only going to be traveling 77 yards. That's not very far. And you can sort of [07:40.090 --> 07:49.710] see as my, as I progressed here, what I was trying to give was an idea of exactly how far might I be [07:49.710 --> 07:58.870] going between transmissions. Now, I mentioned I wish the reality were, you know, match the standard. [07:58.870 --> 08:03.310] Sometimes we will see vessels going by that are class A vessels and they're pretty big class A [08:03.310 --> 08:12.750] vessels. And like the Louisiana, the Louisiana was going at 15 knots. Well, at 15 knots, even in a [08:12.750 --> 08:19.390] straight line, they should be transmitting every six seconds. But we had like a minute, that slide [08:19.390 --> 08:26.490] that I showed. So in any case, you know, so the distance or rather the rate between transmissions [08:26.490 --> 08:33.170] is something else we need to take into account. So then I said, well, okay, I've got, I've got a [08:33.170 --> 08:39.050] ship here. That's supposed to be a ship. And it's at some latitude and longitude, which I'm calling [08:39.050 --> 08:46.090] lat zero and long zero. I know my course over ground. I know my rate of turn. And so the question [08:46.530 --> 08:51.950] is, all right, well, I've got a triangle in here. I've got some angle theta. Now, this may or may [08:51.950 --> 09:00.070] not be the right approach to go, by the way, but I've got some angle theta. And so at some t time [09:00.070 --> 09:07.890] later on, I've got my new latitude and longitude, lat one and long one. And so I will observe that [09:07.890 --> 09:14.830] I can figure out the radius of this circle because it's going to be related to the speed over ground [09:14.830 --> 09:22.170] and the rate of turn. I can figure out the distance that I've traveled, that circular [09:22.170 --> 09:27.970] distance, that arc, if you will. That's going to be somehow related to the velocity times the time [09:27.970 --> 09:33.890] between the transmissions, the actual time. And then I've got this delta x and delta y. [09:33.910 --> 09:38.650] Well, delta x is going to be a function of the angle of the circle, the speed over ground and [09:38.650 --> 09:46.790] the time, which as will my delta y. But then my actual change in latitude and longitude [09:47.470 --> 09:55.290] has got to be a function of the course plus theta, meaning that if I was just going due north [09:56.050 --> 10:06.290] or do anything, it'd be easy. But as we start to change off of zero degrees, we start to see, [10:07.000 --> 10:13.790] because again, a degree of latitude is the same everywhere in terms of linear length, [10:13.790 --> 10:18.270] but the linear length of the degree of longitude is not going to be the same. [10:18.430 --> 10:31.410] So like I said, we have, you know, that issue to deal with. So again, my targets that I'm going for [10:32.510 --> 10:37.790] is if there's no rotation of the ship and the ship is moving in a straight line, well, that's [10:37.790 --> 10:46.510] almost easy to do. If the rate of turn is not zero, my ship is turning. And so then the other [10:46.510 --> 10:54.150] thing I was thinking of is not only can I, how well can I predict my next point, but, you know, [10:54.150 --> 10:59.490] we just had a tropical storm down here last week, went up the east coast. And so we always look at [10:59.490 --> 11:40.390] the National Hurricane Center and they give us this cone of certainty for, so that if my next [11:40.390 --> 11:48.790] point is in the box, do I claim victory? And am I looking for, well, a really small box or how big [11:48.790 --> 11:54.590] will I let my box be? If I'm going in a straight line, they really are sort of boxes. If my rate [11:54.590 --> 12:02.530] of turn isn't zero, then the boxes actually become a cone. Am I anywhere in the right range at all? [12:04.310 --> 12:10.950] So, like I said, in terms of a problem, I was just thinking that this sounds like an [12:10.950 --> 12:17.450] interesting problem to tinker with. And, and there's all sorts of places to look at historical [12:17.450 --> 12:23.630] information. What you need to work on, though, if you get historical information, and I could even [12:23.630 --> 12:30.610] provide you some, is you need type one, type two, or type three position reports from the same vessel. [12:31.370 --> 12:38.290] And, and the type one, again, because you need rate of turn. Now, I mentioned something about [12:38.290 --> 12:45.270] the length of the degree of latitude and longitude. So, again, the length of the degree of latitude [12:45.270 --> 12:54.210] in meters, there's, there's a formula that I know is used at a number of the government sites. [12:54.490 --> 12:58.810] It was actually easy to find the formula because they have these pages where they have like a [12:58.810 --> 13:05.230] JavaScript, and you can, you know, put in, you know, what your latitude is. It will tell you the [13:05.230 --> 13:09.610] length of a degree of latitude in meters. Well, of course, if you right-click and look at the [13:09.610 --> 13:14.090] page source, you can see their formula. But it's been used a lot, and I've seen it documented in [13:14.170 --> 13:20.330] a few places. In any case, the length of the degree of longitude, again, you will also notice [13:20.330 --> 13:28.790] is a function of the latitude. The length of the degree of latitude and longitude, here, here's, [13:28.790 --> 13:34.110] that I produced largely from those formulas. And you will notice that a degree of latitude, [13:34.550 --> 13:41.630] in terms of nautical miles, it almost doesn't matter where you are. It's about 60 miles, [13:41.630 --> 13:47.490] 60 nautical miles to a degree. If you look at a degree of longitude, the number of nautical miles, [13:47.490 --> 13:53.950] again, at the equator, it's about 60. And then, as you go towards the poles, it increasingly gets [13:53.950 --> 14:01.110] smaller and smaller, and then rapidly gets smaller once you get above about, you know, 45 degrees, [14:02.090 --> 14:06.650] either north or south. And that actually, you know, makes sense. Until, of course, [14:06.650 --> 14:09.970] you get to the pole, and then the degree of longitude is zero nautical miles. [14:12.330 --> 14:16.070] And again, I've given you some websites where they have more information about this. [14:16.070 --> 14:24.950] And that, more or less, was the challenge. And as I said, I think it's sort of an interesting [14:24.950 --> 14:34.270] problem. And for a few people, I don't know where we sort of go from there. I, like I said, I talked [14:34.270 --> 14:39.770] to Reid out about this, and I think he talked to a couple of other people. Interesting problem. [14:39.770 --> 14:45.050] I think what we're looking for is maybe to have some intermediaries, intermediate solutions at [14:45.050 --> 14:54.210] some point in the next year, maybe revisit this at Hack to C 3.0 next year. And anyway, [14:54.210 --> 15:07.250] so that's where I am. So, questions? Comments? Let me go back up here. I'm no longer [15:08.230 --> 15:19.890] at Hack to C Village. So, I'll sit here for a couple minutes while we go into Q&A.