Вы не очень подробно рассказали о полном объеме своего проекта, но мне кажется, что вы, возможно, захотите изучить связанные с авиацией проекты с открытым исходным кодом, такие как, например, симуляторы полета, чтобы увидеть, как они Вы делаете такие вещи, и, возможно, даже для того, чтобы увидеть, как их можно использовать для упрощения ваших усилий.
FlightGear , например, обеспечивает поддержку узлов трафика AI, а также нескольких клиентов, подключенных в многопользовательском режиме. Ссылаясь на более раннюю концепцию использования родительского процесса в качестве «мирового» процесса и наличия любого количества клиентских процессов, эмулирующих летательный аппарат, многопользовательский сервер будет мировым процессом.
Итак, в вашем конкретном случае компонент трафика AI в FlightGear выглядит особенно актуально, поскольку он показывает, как 4D-траектории вычисляются и предоставляются другим клиентам. В основном, в FlightGear используется центральный сервер fgms (FlightGear Multiplayer Server), который в основном отправляет широту / долготу, высоту (включая скорости и ориентацию) другим клиентам.
Предполагая, что объем ваших усилий связан с вычислением TCAS, например, траекторий с использованием наземных радиолокационных данных, вы можете просто связать свой код с их многопользовательским сервером с открытым исходным кодом, а затем опрашивать / запрашивать сервер на предмет позиционных обновлений, тем самым эмулируя радарные запросы.
Фактически, просто взглянув на код своего сервера, кажется, что есть еще один способ сделать это: код fgms поддерживает концепцию серверов ретрансляции, когда все данные клиента автоматически зеркально отражаются на другом сервере, так что ваша радиолокационная система может также может быть реализован в качестве прослушивателя этого сервера и выдавать себя за сервер-зеркало / ретранслятор, чтобы он мог обрабатывать весь трафик без явного опроса сервера. Похоже, что это лучший подход, чем тот, который я предлагал ранее, потому что таким образом вы будете автоматически получать позиционные обновления без необходимости выполнять какую-либо обработку самостоятельно (если посмотреть на сетевой протокол, кажется, что пакеты являются просто POD с кодировкой XDR) .
Итак, предполагая, что вам нужно сконцентрироваться на радиолокационной системе, вы можете просто: 1) загрузить их многопользовательский сервер, 2) собрать его, 3) настроить вашу систему erlang в качестве сервера ретрансляции, 4) запустить сервер и 5 ) обработать все обновления и построить трехмерное радиолокационное изображение соответствующего воздушного пространства.
Если вы хотите сохранить простоту в начале, вы также можете просто запустить пару экземпляров симулятора полета, подключив его к локальному многопользовательскому серверу, так что все, что вы делаете в симуляторе полета, будет распространено на ваша радиолокационная система.
Использование компонентов существующих проектов представляется довольно многообещающим подходом: в зависимости от масштабов вашего проекта, вы можете даже просто подключить свой код erlang к FlightGear (или, скорее, к его многопользовательскому серверу), чтобы вы могли напрямую сосредоточиться на самая релевантная работа в ваших усилиях (при условии, что это расчеты TCAS)
Кроме того, если вам необходимо внедрить произвольный трафик в ваше воздушное пространство, их многопользовательский сервер достаточно прост для создания в значительной степени произвольного трафика.
Ранее упомянутая система трафика AI в FlightGear обеспечивает поддержку для создания виртуальных планов полета для маршрутизации трафика AI , характеристики летательных аппаратов также можно настраивать путем редактирования XML-файла .
Обратите внимание, что их текущая реализация многопользовательского сервера действительно очень проста и в основном сводится к мультиплексору пакетов, который просто перенаправляет данные от каждого клиента всем остальным клиентам (см. this для получения дополнительной информации).
Исходный код сервера в значительной степени самодостаточен и не имеет каких-либо нетривиальных зависимостей, однако на данный момент он компилируется только на платформах nix (если вы используете Windows, вы можете захотеть проверить Cygwin или Colinux, чтобы запустить их сервер).
Обратите внимание, однако, что серверный компонент в настоящее время обычно не поддерживается, иными словами, он не обновлялся в течение 3 лет. С другой стороны, сам код регулярно используется уже несколько лет. Таким образом, состояние отсутствия поддержки на данный момент ничего не говорит о самом коде или его удобстве использования, оно действительно влияет только на *. 1037 *
Так что, хотя существует ряд запланированных изменений для fgms (таких как добавление поддержки DIS), никто не активно работает на сервере, и он просто используется как есть, среди этих запланированных функций, тот, который кажется уместным для ваших усилий:
Протокол публикации нескольких самолетов / транспортных средств от одного клиента SF.net
Интересно, что ранее уже обсуждалась о возможности переноса их компонента fgms для реализации в erlang, а не в C ++, так что если вы обнаружите, что вам нужно улучшить или повторно реализовать код сервера, используя erlang, ваш вклад на самом деле может быть высоко оценен, особенно из-за того, что их собственный сервер в данный момент практически не поддерживается.
Если вы решите взглянуть на использование FlightGear для своего проекта, вы, вероятно, захотите подписаться на список рассылки .
для разработчика
FlightGear.
Чтобы получить данные о характеристиках самолета, вы можете проверить эту
базу данных о характеристиках самолета .
Также, возможно, вы захотите взглянуть на это относящееся к FlightGear обсуждение , которое предоставляет различные другие ссылки, касающиеся расчета характеристик самолета в целом и прогнозирования траектории 4D в частности.
В частности, проект EuroControl BADA может показаться интересным.
Даже если в конечном итоге вы обнаружите, что область действия вашего проекта слишком сильно отличается от обычного симулятора полета, использование симулятора полета с открытым исходным кодом, такого как FlightGear, может все же помочь вам визуализировать ваш проект очень хорошим способом, то есть путем фактического изучения транспортных конфликтов в режиме реального времени, в виртуальном трехмерном мире.