{"id":16027383,"url":"https://github.com/andrewda/acrp-miscommunication-detection","last_synced_at":"2025-02-25T23:43:15.309Z","repository":{"id":138526787,"uuid":"488780108","full_name":"andrewda/acrp-miscommunication-detection","owner":"andrewda","description":null,"archived":false,"fork":false,"pushed_at":"2022-05-05T01:52:14.000Z","size":483,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-08T12:35:01.273Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrewda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-05T00:15:28.000Z","updated_at":"2023-03-04T05:56:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"c345375d-70d1-448c-8b67-09eb78dbdf5e","html_url":"https://github.com/andrewda/acrp-miscommunication-detection","commit_stats":{"total_commits":3,"total_committers":1,"mean_commits":3.0,"dds":0.0,"last_synced_commit":"813195ef94c5a38fba453fcc96227172b57c0fb2"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewda%2Facrp-miscommunication-detection","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewda%2Facrp-miscommunication-detection/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewda%2Facrp-miscommunication-detection/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewda%2Facrp-miscommunication-detection/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrewda","download_url":"https://codeload.github.com/andrewda/acrp-miscommunication-detection/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240766677,"owners_count":19854114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-08T20:21:05.341Z","updated_at":"2025-02-25T23:43:15.270Z","avatar_url":"https://github.com/andrewda.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ACRP Miscommunication Detection\n\nThis repository houses the code for the 2022 Airport Cooperative Research\nProgram (ACRP) Design Competition paper titled \"Improving Pilot-Controller\nCommunication Through the Use of Artificial Intelligence for Real-Time Radio\nAnalysis\".\n\n## Tranmission Parsing\n\nTransmissions are expected to be fully textual, with numbers spelled out as\npronounced. For example:\n\n```\nAIRPLANE ONE TWO THREE TURN RIGHT HEADING TWO NINER ZERO CLIMB AND MAINTAIN FIVE THOUSAND\n\nUH TURN RIGHT HEADING TWO NINE ZERO AND SAY AGAIN ALTITUDE AIRPLANE ONE TWO THREE\n\nAIRPLANE ONE TWO THREE CLIMB AND MAINTAIN FIVE THOUSAND\n\nUP TO FIVE THOUSAND AIRPLANE ONE TWO THREE\n```\n\nThe transmission parser takes each individual tranmission as input, and outputs\na structured representation of the transmission:\n\n```ts\nconst transmission = 'SKYHAWK SEVEN THREE ONE FOUR SIX DESCEND FLIGHT LEVEL ONE NINER ZERO AND UH TURN LEFT HEADING ZERO SIX ZERO';\nparseTransmission(transmission);\n\n// {\n//   instructions: [\n//     {\n//       type: InstructionType.Descend,\n//       specifiers: [\n//         {\n//           type: SpecifierType.FlightLevel,\n//           value: 'ONE NINER ZERO',\n//         },\n//       ],\n//     },\n//     {\n//       type: InstructionType.Turn,\n//       specifiers: [\n//         {\n//           type: SpecifierType.Direction,\n//           value: 'LEFT',\n//         },\n//         {\n//           type: SpecifierType.Heading,\n//           value: 'ZERO SIX ZERO',\n//         },\n//       ],\n//     },\n//   ],\n//   type: TransmissionType.Issuance,\n// }\n```\n\nSimilarly, for a readback:\n\n```ts\nconst transmission = 'UH DESCENDING TO FLIGHT LEVEL ONE NINER ZERO AND TURNING LEFT HEADING ZERO SIX ZERO SKYHAWK SEVEN THREE ONE FOUR SIX';\nparseTransmission(transmission);\n\n// {\n//   instructions: [\n//     {\n//       type: InstructionType.Descend,\n//       specifiers: [\n//         {\n//           type: SpecifierType.FlightLevel,\n//           value: 'ONE NINER ZERO',\n//         },\n//       ],\n//     },\n//     {\n//       type: InstructionType.Turn,\n//       specifiers: [\n//         {\n//           type: SpecifierType.Direction,\n//           value: 'LEFT',\n//         },\n//         {\n//           type: SpecifierType.Heading,\n//           value: 'ZERO SIX ZERO',\n//         },\n//       ],\n//     },\n//   ],\n//   type: TransmissionType.Readback,\n// }\n```\n\nThe parser is designed to be easily extensible, so that new instructions can be\ndetected in the future.\n\n## Miscommunication Detection\n\nMiscommunication detection is performed by individual Detector modules.\nStructuring the code in this way allows for new detectors to be easily added in\nthe future. Currently, the following detectors are available:\n\n1. Number Transposition Detector: detects number transpositions, such as \"TWO THREE ONE\" vs. \"TWO ONE THREE\"\n1. Mistaken Call Sign Detector: detects mistaken callsigns, such as \"UNITED ONE SEVEN TWO\" vs. \"UNITED TWO SEVEN ONE\"\n1. Incomplete Readback Detector: detects missing instructions in a readback\n\n## Alerting\n\n![](images/alert_number_transposition.png)\n![](images/alert_mistaken_callsign.png)\n![](images/alert_missing_instruction.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewda%2Facrp-miscommunication-detection","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrewda%2Facrp-miscommunication-detection","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewda%2Facrp-miscommunication-detection/lists"}