RTI Labs запускает Python-включенный Connector для Connext DDS — теперь в Connext Suite
Многое изменилось с тех пор, как эта статья впервые появилась. Сегодня вы можете получить доступ к DDS напрямую из Python или JavaScript — благодаря бета-тестерам нашей программы RTI Labs, RTI Connector для Connext® DDS был интегрирован в семейство продуктов Connext.
На этой неделе мы рады представить RTI Labs — бесплатную инициативу, дающую нашим клиентам ранний доступ к следующему поколению технологий Industrial IoT. Проекты, выпущенные под RTI Labs, экспериментальны, позволяя участникам прототипировать новые идеи и формировать дорожную карту наших продуктов через реальную обратную связь. Это win-win для RTI и сообщества.
Мы запускаем программу с тремя экспериментальными проектами, и первый — RTI (R) Connector для Connext DDS. Если вы уже скачали RTI Connext 5.3.0 и запустили RTI Launcher, вы заметите новые иконки во вкладке «Lab» — одна из них иконка Connector.

Клик по иконке Connector открывает страницу RTI Connector на Community Portal. Connector был создан исследовательской командой RTI для ускорения разработки демо и быстрого тестирования. Он начался с Lua интерфейса к RTI Prototyper и с тех пор расширился для поддержки Python и JavaScript/node.js.
Что такое RTI Connector?
RTI Connector для Connext DDS предоставляет легковесный, скриптуемый интерфейс к полной мощи RTI Connext DDS. Он поддерживает JavaScript, Python и Lua, и строится на возможностях Connext XML App Creation и Dynamic Data. Пока эта статья фокусируется на Python API, те же принципы применяются к JavaScript/node.js и Lua/Prototyper.
Кейсы использования
Ранние адоптеры нашли Connector ценным в нескольких сценариях:
- Тестирование: Когда компоненты распределенной системы не готовы, Connector может эмулировать отсутствующие DDS части, позволяя изолированное тестирование и снижая задержки интеграции.
- Прототипирование: Быстро строить демо или proof-of-concept с минимальным кодом — часто на порядок меньше, чем нативные Connext API.
- Пользовательские интерфейсы: Комбинируйте Connector с Python UI фреймворками такими как PyQt для создания простых дашбордов, публикующих или подписывающихся на DDS данные.
- Интеграция: Используйте обширную экосистему Python — PyPI хостит более 112 439 пакетов — для добавления сторонней функциональности и коммуникации через DDS.
- Другое: Делитесь своим уникальным кейсом на RTI Community Forum и помагайте формировать будущие улучшения.
Начало работы с RTI
Следующее предполагает базовое знакомство с Python. RTI Connector работает с Python 3 и более ранними релизами, запускается на всех основных энтерпрайз ОС и поддерживается на встроенных платах таких как Raspberry Pi. Полный список платформ доступен на нашем сайте. Если вам нужна поддержка другой среды, обратитесь на форум.
Установите Connector из PyPI:
pip install rticonnextdds_connector
Альтернативно, клонируйте репозиторий:
git clone https://github.com/rticommunity/rticonnextdds-connector.git
Репозиторий включает несколько готовых-к-запуску примеров:
- simple/writer.js — Создать writer, установить инстанс, публиковать сэмплы.
- simple/reader.js — Получить reader, извлечь сэмплы, инспектировать контент.
- simple/read_and_write.py — Прочитать каждый сэмпл, инвертировать два поля, записать обратно.
- mixed/ — Обновленные примеры, покрывающие длины последовательностей, использование wait() и больше.
Обзор API
Для глубокого погружения консультируйтесь с README в нашем GitHub репозитории. Ниже — краткий walkthrough ключевого API.
Сначала импортируйте библиотеку Connector:
import rticonnextdds_connector as rti
Создайте инстанс Connector с желаемой конфигурацией и XML файлом:
connector = rti.Connector("MyParticipantLibrary::Zero", "./ShapeExample.xml")
Первая строка именует конфигурацию, вторая указывает на XML-базированный App Creation файл. Пример файла доступен в репозитории.
Доступ к Data Writers через getOutput и Data Readers через getInput:
output = connector.getOutput("MyPublisher::MySquareWriter") input = connector.getInput("MySubscriber::MySquareReader")
Оба метода принимают имя сущности, определенное в XML.
Установите поля на writer используя словарь или индивидуально:
output.instance.setDictionary(sample) output.instance.setNumber("y", 2)
На стороне reader, извлеките сэмплы с read() или take(), затем итерируйте:
input.read() # or input.take() numOfSamples = input.samples.getLength() for j in range(1, numOfSamples+1): if input.infos.isValid(j): x = input.samples.getNumber(j, "x") y = input.samples.getNumber(j, "y") # …
Сэмплы также могут быть доступны как словарь:
sample = input.samples.getDictionary(j)
При работе с многопоточностью, охраняйте доступ к Connector — примеры доступны в репозитории.
Ограничения
Пока RTI Connector упрощает многие задачи, он намеренно легковесный. Он поддерживает только Dynamic Data, не скомпилированные типы, и лишен некоторых продвинутых фич, доступных в полном Connext DDS Pro сьюте. Для специализированных кейсов мы рекомендуем пересмотреть нашу документацию или связаться с поддержкой для альтернативных решений.
Стоимость
RTI Connector бесплатен. Мы просим только, чтобы пользователи предоставляли обратную связь для формирования будущих релизов. Ваши инсайты влияют на нашу дорожную карту.
Заключение
Этот пост предлагает высокоуровневый взгляд на RTI Connector для Python. Лучший способ научиться — экспериментировать — скачайте пакет, запустите примеры и делитесь опытом на RTI Community Forum. Ваша обратная связь бесценна, пока мы совершенствуем инструмент и планируем следующее поколение фич.
Интернет вещей
- OpenDDS против RTI Connext DDS: выбор правильного решения Data Distribution Service
- Построение надежной системы мониторинга временных рядов: интеграция RTI Connext DDS с Telegraf и InfluxDB
- RTI Connext 6 теперь доступен: улучшенная производительность, безопасность и унифицированная связность
- Connext DDS в промышленном IoT: 5 ключевых инсайтов для надежности, безопасности и масштабируемости
- Релиз RTI Perftest 2.4: улучшенное тестирование производительности для Connext DDS
- Почему RTI Connext DDS — middleware номер один для автономных автомобилей
- Топ-7 ресурсов для разработчиков Industrial IoT — издание 2017
- Проектирование промышленных IoT систем с RTI DDS Toolkit в LabVIEW 2017
- Создание робота на Raspberry Pi и Python: полное руководство
- Понимание type() и isinstance() в Python: практические примеры