GNU Radio — это бесплатный набор инструментов для разработки программного обеспечения, который предоставляет блоки обработки сигналов для реализации программно-определяемых радиостанций и систем обработки сигналов . Его можно использовать с внешним радиочастотным (RF) оборудованием для создания программно-определяемых радиостанций или без аппаратного обеспечения в среде, подобной моделированию. Он широко используется в любительской, академической и коммерческой среде для поддержки как исследований в области беспроводной связи, так и реальных радиосистем.
Программное обеспечение GNU Radio предоставляет основу и инструменты для создания и запуска программного обеспечения радио или просто общих приложений для обработки сигналов. Сами приложения GNU Radio обычно известны как «блок-графы», которые представляют собой серию блоков обработки сигналов, соединенных вместе, описывающих таким образом поток данных.
Как и во всех программно-определяемых радиосистемах , ключевой особенностью является возможность реконфигурации. Вместо использования разных радиостанций, предназначенных для конкретных, но разрозненных целей, можно использовать одну радиостанцию общего назначения в качестве интерфейсной части радиостанции, а программное обеспечение обработки сигналов (здесь, GNU Radio) выполняет обработку, специфичную для радиостанции. приложение.
Эти блок-графы могут быть написаны на C++ или Python . Инфраструктура GNU Radio полностью написана на C++, а многие пользовательские инструменты (например, GNU Radio Companion) написаны на Python.
GNU Radio — пакет обработки сигналов , являющийся частью проекта GNU . Он распространяется на условиях GNU General Public License (GPL), а авторские права на большую часть кода проекта принадлежат Free Software Foundation . [4]
GNU Radio, впервые опубликованный в 2001 году, является официальным пакетом GNU . Филантроп Джон Гилмор инициировал GNU Radio, выделив 320 000 долларов США Эрику Блоссому на создание кода и обязанности по управлению проектом. Одним из первых приложений было программное создание приемника ATSC.
Программное обеспечение GNU Radio началось как ответвление кода Pspectra, разработанного в рамках проекта SpectrumWare в Массачусетском технологическом институте (MIT). В 2004 году была завершена полная переработка GNU Radio, поэтому сегодня GNU Radio больше не имеет оригинального кода Pspectra.
Мэтт Эттус присоединился к проекту в качестве одного из первых разработчиков и создал Universal Software Radio Peripheral (USRP), чтобы предоставить аппаратную платформу для использования с программным обеспечением GNU Radio. В 2004 году Мэтт основал Ettus Research LLC и начал продавать USRP, работавшие с GNU Radio. [5]
В сентябре 2010 года Эрик Блоссом ушел с поста руководителя проекта и был заменен Томом Рондо. [6]
В начале проекта основные разработчики начали проводить полугодовые Hackfests . В 2011 году проект GNU Radio начал проводить ежегодную конференцию под названием «GRCon», на которой обычно в последний день конференции проводится Hackfest .
В марте 2016 года Том Рондо ушел в отставку, и его заменили Бен Хилберн в качестве руководителя проекта и Джонатан Корган, давний специалист по обслуживанию, в качестве главного архитектора. [7]
В январе 2018 года Джонатан Корган ушел с поста главного архитектора и его заменил Маркус Мюллер. [8]
В сентябре 2020 года GNU Radio стало частью Института SETI (некоммерческой многопрофильной исследовательской и образовательной организации) для всех финансовых и договорных целей. [9]
В октябре 2020 года Бен Хилберн и тогдашние руководители проекта проголосовали за реорганизацию руководства GNU Radio Project, сформировав Генеральную ассамблею с набором подзаконных актов, регулирующих детали работы организации. [10] [11] Совет из трех членов, состоящий из избранных членов Генеральной Ассамблеи, взял на себя функции, ранее исполняемые руководителем проекта.
GNU Radio Companion — это графический интерфейс , используемый для разработки приложений GNU Radio. [12] Это интерфейс библиотек GNU Radio для обработки сигналов . GRC был разработан Джошем Блюмом во время его учебы в Университете Джонса Хопкинса (2006-2007), затем распространялся как бесплатное программное обеспечение на Hackfest в октябре 2009 года . Начиная с версии 3.2.0, GRC официально входил в состав дистрибутива программного обеспечения GNU Radio.
GRC по сути является инструментом генерации кода Python. Когда блок-граф компилируется в GRC, он генерирует код Python, который создает нужные окна и виджеты графического пользовательского интерфейса (GUI) , а также создает и соединяет блоки в блок-графе.
GRC в настоящее время поддерживает создание графического интерфейса с использованием набора инструментов Qt .
GNU Radio предоставляет множество распространенных приемников данных для построения графиков и визуализации данных, включая отображения БПФ, диаграммы созвездий символов и отображения областей. Они обычно используются как для отладки радиоприложений, так и в качестве пользовательского интерфейса к конечному приложению.
Многие пользователи создают «внешние модули» для использования с GNU Radio. Чтобы управлять ими, а также зависимостями, необходимыми для запуска GNU Radio, организация создала проект PyBOMBS (Python Build Overlay Managed Bundle System). [13]