GNU Radio 3.9.0

Теги

GNU Radio — программный инструментарий, предоставляющий разработчикам программно-определяемых радиосистем «строительные блоки», обеспечивающие основные функции цифровой обработки сигналов.

Программы, создаваемые средствами GNU Radio, представлены как графы потока управления и могут использоваться с внешними устройствами или для создания программных симуляторов. Для программирования можно использовать визуальную среду GNU Radio Companion или библиотеки на C++ и Python

В комбинации с универсальными программируемыми приёмопередатчиками, не привязанными к полосе частот и типу модуляции сигнала, платформа может быть использована для создания таких устройств, как базовые станции для сетей GSM, устройства для дистанционного чтения RFID-меток (электронные удостоверения и пропуски, смарт-карты), GPS-ресиверы, WiFi, приемники и передатчики FM-радио, TV-декодеры, пассивные радары, спектральные анализаторы и т.п. 

В состав также входит коллекция фильтров, канальных кодеков, модулей синхронизации, демодуляторов, эквалайзеров, голосовых кодеков, декодеров и других элементов, необходимых для создания радиосистем. Указанные элементы могут быть использованы как кирпичики для компоновки готовой системы, что в сочетании с возможностями по определению потоков данных между блоками позволяет проектировать радиосистемы даже без навыков программирования. 

Основные обновления:

  • Внесены изменения в организацию разработки. Для участия в разработке больше не требуется подписание CLA-соглашения, вместо которого разработчику необходимо лишь подтвердить, что он имеет право на передачу кода и не пытается присвоить себе чужой код. Для оформления передачи кода применяется документ Developer Certificate of Origin (DCO), который с 2004 года используется при передаче изменений в состав ядра Linux. Для отслеживания автора к каждому изменению прикрепляется строка "Signed-off-by: имя и email разработчика" (git commit -s). Прикрепляя данную подпись к патчу, разработчик подтверждает своё авторство над передаваемым кодом и соглашается с его распространением в составе проекта или как части кода под свободной лицензией.
  • Разрешено использование конструкций из стандарта C++14, но в коде, где продолжает использоваться Boost, продолжают применяться конструкции C++11. Кроме того, в код добавлены заголовки с информацией о лицензии в формате SPDX. Сборочные сценарии адаптированы для создания повторяемых сборок.
  • Прекращено применение генератора программных интерфейсов SWIG. Для связывания кода на С/C++ и Python теперь применяется PyBind11, который требует написания дополнительного кода, но обеспечивает более предсказуемый и стабильный результат. Вместе с переходом на PyBind проведена большая работа по модернизации кода графического интерфейса GRC (GNU Radio Companion).
  • Добавлен новый модуль gr-network для создания сетевых блоков, поддерживающий TCP и UDP.
  • В графический интерфейс gr-qtgui добавлены графики для азимута, расстояния и автокорреляции, обеспечена визуализация компаса, добавлена вертикальная панель.
  • Добавлена поддержка UHD 4.0 (USRP hardware driver) и предложен новый API для создания фильтров.
  • Прекращена поддержка Python 2, для работы теперь требуется как минимум Python 3.6.5. Обновлены зависимости: numpy 1.13.3, VOLK 2.4.1, CMake 3.10.2, Boost 1.65, Mako 1.0.7, PyBind11 2.4.3. Из компиляторов поддерживаются GCC 8.3.0, Clang 11.0.0 и MSVC 1910 (Microsoft VS 2017 15.0). В число зависимостей включена библиотека libsndfile. Из субмодулей в отдельную зависимость перенесён VOLK (Vector Optimized Library of Kernels).

Проект распространяется под лицензией GPLv3. Код большей части компонентов GNU Radio написан на языке Python.