Введение
Общий интерфейс генератора изображений (CIGI) (произносится как "сиг и"), — это протокол передачи данных по каналу связи, обеспечивающий взаимодействие между генератором изображений и его хост-симуляцией. Интерфейс разработан для установления единого отраслевого стандарта обмена данными между хост-устройством и генератором изображений (IG). CIGI обеспечивает принцип Plug and Play для производителей генераторов изображений, соответствующих стандарту, и снижает затраты на интеграцию при модернизации визуальных систем.
Предыстория
Большинство высококлассных симуляторов не работают целиком на одном компьютере, как это реализовано в популярных домашних программах-симуляторах, таких как Flight Simulators. Модель самолета выполняется на одном компьютере, обычно называемом хостом, а визуализация за окном или программа построения графа сцены – на другом, который обычно называют генератором изображений (IG). Зачастую для отображения окружающей среды, создаваемой хостом, требуется несколько IG. CIGI является интерфейсом между хостом и IG. Основная цель CIGI – максимально эффективно использовать предыдущие инвестиции за счет использования общего интерфейса. CIGI разработан для упрощения интеграции, повторного использования кода и снижения общих затрат для поставщиков и интеграторов систем IG. Ранее большинство генераторов изображений предоставляли собственные проприетарные интерфейсы, и каждый хост должен был реализовывать этот интерфейс, что делало замену генераторов изображений дорогостоящей задачей. CIGI был создан для стандартизации интерфейса между хостом и генератором изображений, чтобы переключение генераторов изображений требовало минимальных изменений. Инициатива CIGI была в значительной степени инициирована компанией Boeing в начале XXI века. Последняя версия CIGI (CIGI 4.0) была разработана Организацией стандартов взаимодействия моделирования (SISO) в виде SISO STD 013 2014, Стандарт для общего интерфейса генератора изображений (CIGI), версия 4.0, датированный 22 августа 2014 года. SISO STD 013 2014 доступен для свободного скачивания на сайте SISO.
Определения
Генератор изображений – В данном контексте генератор изображений состоит из одного или нескольких каналов рендеринга, создающих изображение, которое может быть использовано для визуализации сцены "Вид из окна", или изображений, полученных в результате различных симуляций датчиков, таких как инфракрасное излучение, изображение с дневной ТВ-камеры, электрооптическое и ночное видение. Симуляция хоста – В данном контексте "Хост" – это вычислительная система, предоставляющая информацию об имитируемом устройстве, чтобы генератор изображений мог отобразить пользователю корректную обстановку. Эта информация передается генератору изображений посредством CIGI.
Срок созревания
CIGI 4 – это последняя версия стандарта, утвержденная Организацией стандартов интероперабельности моделирования 22 августа 2014 года. CIGI стал международным стандартом SISO, известным как SISO STD 013 2014, который включает в себя Документ управления интерфейсом (ICD) CIGI версии 4.0. CIGI 4.0 является официальным стандартом, опубликованным SISO. Разработка предыдущих версий CIGI велась компанией Boeing, включая CIGI v3.3 (ноябрь 2008 г.), v3.2 (апрель 2006 г.), v3.1 (июнь 2004 г.), v3 (ноябрь 2003 г.), v2 (март 2002 г.) и оригинальную версию (v1) в марте 2001 года.
Зависимости от протокола
UDP: Обычно CIGI использует UDP в качестве транспортного протокола, однако CIGI не требует использования какого-либо конкретного механизма передачи данных, лишь соответствия определению пакетов. У CIGI-трафика нет общеизвестного порта, но использование портов 8004 и 8005 широко распространено в коммерческих реализациях генераторов изображений.
Эмулятор хоста
Эмулятор хоста может использоваться в качестве замены для управления интерфейсом, когда симуляционный хост недоступен. Это Windows-приложение для генерации изображений, предназначенное для разработки, интеграции и тестирования генераторов изображений, использующих протокол CIGI. Оно предоставляет графический пользовательский интерфейс (GUI) для создания, изменения и удаления объектов; управления видами; контроля атрибутов и явлений окружающей среды; а также других функций хоста. Эмулятор хоста обладает рядом функций, полезных для интеграции и тестирования. Режим свободного полета обеспечивает возможность полета на самолетах с фиксированным крылом и вертолетах, перемещение по осям объектов и свободное вращение с помощью джойстика или аналогичного устройства. Функции скриптинга и записи/воспроизведения поддерживают регрессионное тестирование, демонстрации и другие задачи, требующие точного воспроизведения определенных последовательностей событий. Функция перехвата пакетов позволяет пользователю анализировать содержимое сообщений CIGI, время отклика генератора изображений и задержки. Окно монитора сердечного ритма отображает графическую историю изменения частоты кадров данных генератора изображений. Другие функции включают явное создание пакетов, управление анимацией, моделирование пуска ракет и окно отображения обстановки (только для Host Emulator 3.x).
Многоцелевой виджет
Многоцелевой просмотрщик (MPV) предоставляет базовую функциональность, ожидаемую от генератора изображений, такую как загрузка и отображение базы данных рельефа местности, отображение объектов и тому подобное. Многоцелевой просмотрщик может использоваться в качестве замены для работы с интерфейсом, когда реальный генератор изображений недоступен. MPV способен работать как с операционными системами Windows, так и с Linux.
Библиотека классов CIGI
CCL — это объектно-ориентированный программный интерфейс, который автоматически обрабатывает формирование и разбор сообщений (то есть упаковку, распаковку и изменение порядка байтов в соответствии со спецификацией ICD) как на стороне хоста, так и на стороне генератора изображений. CCL интерпретирует сообщения от хоста или генератора изображений на основе параметров, заданных во время компиляции. Он также выполняет обработку ошибок и преобразование между различными версиями CIGI. Для каждого типа пакета предусмотрен свой класс. Доступ к отдельным полям пакета осуществляется через методы доступа класса пакета. Исходящие сообщения формируются путем последовательного добавления каждого пакета в исходящий буфер с использованием оператора потоковой передачи. Входящие сообщения разбираются с использованием механизмов обратного вызова или событий, предоставляющих использующей программе полностью сформированные объекты пакетов.
Текущий набор инструментов
Набор инструментов разработки CIGI поддерживается и обслуживается группой поддержки продуктов CIGI организации SISO. Последние версии пакетов доступны на SourceForge. Комментарии и предложения по пакетам можно направлять на форум обсуждений SISO по адресу: https://discussions.sisostds.org/index.htm?A0=SAC PSG CIGI
Уайршарк
Wireshark — это бесплатный анализатор пакетов с открытым исходным кодом. Он используется для диагностики сетевых проблем, анализа, разработки программного обеспечения и протоколов связи, а также в образовательных целях. Wireshark предоставляет средство для разбора пакетов CIGI. По состоянию на октябрь 2016 года средство разбора пакетов CIGI полностью функционирует для версий CIGI 2 и 3. Поддержка версии 1 пока не реализована.
Старые версии CIGI
Документ управления интерфейсом CIGI (ICD) и набор инструментов разработки доступны в формате с открытым исходным кодом. Инструменты, ICD и сопутствующая пользовательская документация доступны для загрузки на веб-сайте CIGI на SourceForge. Версия MPV на SourceForge имеет ограниченную поддержку пакетов данных CIGI и будет расширяться по мере необходимости. MPV использует CIGI 3 в качестве интерфейса, но обеспечивает обратную совместимость с более ранними версиями CIGI посредством CCL. MPV использует библиотеку Open Scene Graph для визуализации сцены. Граф сцены изменяется в соответствии с командами CIGI, полученными от хоста через CCL. Сам MPV является прикладным уровнем, состоящим из небольшого ядра, активно использующего плагиновую архитектуру для упрощения обслуживания и повышения гибкости. Разработчик может реализовать интерфейс с нуля, однако доступен полный набор инструментов для интеграции. Эти инструменты включают в себя три компонента: эмулятор хоста (HE), многоцелевой просмотрщик (MPV) и библиотеку классов CIGI (CCL).