, in particular, flights 2, 20, 200, 1500 nautical miles (nmi) around JFK Airport to detect potential Near Mid-Air Collisions (NMAC). Your program needs to compute the following:
For each computation, output multiple answers if there are ties. For example, when computing DCPA or TCPA, if there are multiple pairs with the same minimum pairwise value, output all pairs.
More information on ADS-B can be found in the associated ADS-B Data Field Descriptions and ADS-B Exchange Forum.
More information about DCPA and TCPA calculation can be found in A Family of Well-Clear Boundary Models for the Integration of UAS in the NAS, pp 3.
You are given an ADS-B text file with a flight per line, detailing Id, Latitude, Longitude, Trak (0º=North, 90º=East), Horizontal Speed (knots), Altitude (feet), Vertical Speed (feet per minute). Please remove duplicate and empty-value entries in your program. Your output should look as follows:
d1 // minimal pairwise distance id1 id2 id3 id4 ... d2 // minimal pairwise DCPA id1 lat1 long1 alt1 id2 lat2 long2 alt2 ... t3 // minimal pairwise TCPA id1 lat1 long1 alt1 id2 lat2 long2 alt2 ...where
d_idenotes a distance (nmi),
t_idenotes a time (seconds) and
id_idenotes a flight id, and (lat,long,alt) corresponds to the position of each aircraft at DCPA/TCPA. You may use the formula for destination point given distance and bearing from starting point available at https://www.movable-type.co.uk/scripts/latlong.html, and assume a constant vertical speed.
Write an actor-based solution to the NMAC detection problem.
salsac
and salsa
are UNIX aliases or Windows
batch scripts that run java
and javac
with
the expected arguments: See .cshrc
for UNIX, and salsac.bat
salsa.bat
for Windows.[host0:dir0]$ wwcns [port number 0] [host1:dir1]$ wwctheater [port number 1] [host2:dir2]$ wwctheater [port number 2] ...where
wwcns
and wwctheater
are UNIX aliases
or Windows batch scripts: See .cshrc
for UNIX, and wwcns.bat
wwctheater.bat
for Windows.
Make sure that the theaters are run where the actor behavior code is
available, that is, the pa2
directory should be visible in directories:
host1:dir1
and host2:dir2
.
Then, run the distributed program as mentioned above.
NMAC
behavior should be in a relative path pa2/NMAC.salsa
, and should
start with the line module pa2;
.m1(...);m2(...);
does not imply m1
occurs before m2
.m(...)@n(...);
, n
is processed after m is executed, but not
necessarily after messages sent inside m
are executed. For example, if inside m
, messages
m1
and m2
are sent, in general, n
could happen before m1
and m2
.Due Date: March 26th, 6:00PM
Grading: The assignment will be graded mostly on correctness, but code clarity / readability will also be a factor (comment, comment, comment!).
Submission Requirements: Please submit a ZIP file with your code, including a README file. In the README file, place the names of each group member. Your README file should also have a list of specific features / bugs in your solution. Your ZIP file should be named with your LMS user name(s) as the filename, either userid1.zip or userid1_userid2.zip. Only submit one assignment per pair via LMS.