Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Интернет вещей

Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer

Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer

Год назад мы начали IV технический челлендж ETSIIT (видео). Кто мы? Мы — четверо студентов электротехники и информатики в Университете Гранады, Испания.

Наша команда Prometheus одержала победу в Tech Challenge, спонсируемом RTI. Команды из четырех-пяти студентов должны были создать продукт, решающий реальную проблему, поставленную внешним партнером. Тема этого года — «Мульти-агентная распределенная видеосистема».

Мы участвовали, чтобы получить практический опыт. Год спустя, все еще обучаясь, мы выявили коммерческую возможность, спроектировали конкурентный продукт Locaviewer, разработали рыночную стратегию и построили работающий прототип — всё это параллельно с учебой.

Locaviewer

Многие родители беспокоятся о здоровье и прогрессе своих детей в детских садах. Locaviewer дает родителям видимость их ребенка в реальном времени. Мы выпустили промо-видео для демонстрации решения, а исходный код доступен под лицензией MIT на GitHub.

Организация команды и график

Проект потребовал примерно 250 часов. Мы встречались еженедельно минимум на четыре часа, увеличивая до 20 часов в неделю в последний месяц. Для максимальной эффективности мы разделились на две подкоманды: одна фокусировалась на алгоритме внутренней Bluetooth-локализации, другая — на видеозахвате, кодировании/декодировании и распространении через RTI Connext DDS.

Алгоритм локализации

Ключевым элементом нашего решения было определение местоположения каждого ребенка внутри детского сада. Каждый ребенок носил браслет с Bluetooth-сенсором, который постоянно сообщал индикатор мощности принятого сигнала (RSSI) к стационарным донглам на стенах комнаты. Мы сопоставили значения RSSI с расстоянием, установив надежную зависимость.

Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer
Рисунок 2. Эмпирическое измерение Bluetooth-сигналов по углам и расстоянию.
Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer
Рисунок 3. Носимый прибор Locaviewer.

Показания RSSI передавались на мини-компьютер (Raspberry Pi или MK802 III) с алгоритмом триангуляции для определения местоположения каждого ребенка. Зная позиции камер, мы могли выбирать оптимальную камеру для каждого ребенка.

Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer
Рисунок 4. Внутренняя триангуляция.

Приложение видеозаписи

Мы использовали GStreamer для Java для обработки видеозахвата, кодирования, декодирования и отображения в реальном времени. Альтернативы вроде vlcj не поддерживали Raspberry Pi или не соответствовали нашим требованиям по задержке. После обширного исследования GStreamer оказался подходящим, позволяя получать доступ к закодированным видеобуферам через элементы AppSink и AppSource и публиковать их в DDS-топик.

Мы выбрали кодировщик VP8 (WebM). Из-за совместимости Java-обертки с GStreamer 0.10 нам пришлось снизить разрешение под ограничения платформы. Наша тестовая конфигурация использовала Raspberry Pi, с планами миграции на MK802 III для большей вычислительной мощности при сохранении стоимости.

Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer
Рисунок 5. Конвейер GStreamer для записи, кодирования и получения видео.

Следующий фрагмент Java создает кодировщик VP8:

Element codec = ElementFactory.make("vp8enc", null); codec.set("threads", 5); codec.set("max-keyframe-distance", 20); codec.set("speed", 5); Element capsDst = ElementFactory.make("capsfilter", null); capsDst.setCaps(Caps.fromString("video/x-vp8 profile=(string)2"));

На стороне клиента мы настроили конвейер следующим образом:

Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer
Рисунок 6. Конвейер GStreamer для настройки, декодирования и воспроизведения видео.

Java-код для декодера VP8:

String caps = "video/x-vp8, width=(int)320, height=(int)240, framerate=15/1"; Element capsSrc = ElementFactory.make("capsfilter", null); capsSrc.setCaps(Caps.fromString(caps)); Element queue = ElementFactory.make("queue2", null); Element codec = ElementFactory.make("vp8dec", null); Element convert = ElementFactory.make("ffmpegcolorspace", null);

Мы экспериментировали с JPEG-кодированием, но его больший размер пакетов делал потоковую передачу в реальном времени непрактичной.

Архитектура DDS

Модель publish-subscribe была центральна для нашего решения, устраняя необходимость управлять сокет-соединениями вручную. Мы абстрагировали взаимодействие с DDS через собственную обертку DDStheus.

Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer
Рисунок 7. Общая DDS-архитектура системы.

Наша итоговая система состояла из шести программ, использующих три топика, реализованных на трех языках:

  1. Python для низкоуровневой работы с Bluetooth.
  2. MATLAB/Octave для скриптов триангуляции.
  3. Java для интеграции с RTI Connext DDS и разработки GUI.

Нам требовались все значения RSSI из комнаты, поэтому мы написали скрипт для настройки донглов и сбора данных RSSI. Эти значения передавались в Java-программу через локальный сокет. Java-приложение публиковало данные в топик Sensor Data, включая ID ребенка (MAC сенсора), ID донгла, позицию, текущую комнату (как ключ для фильтрации), значение RSSI и время истечения.

Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer
Рисунок 8. Блок-схема программы сенсоров.

После видеозахвата и кодирования Java-программа Gava передавала поток через топик Video Data, помечая каждый пакет ID камеры и информации о комнате. Мы использовали ContentFilteredTopic для фильтрации потоков по позиции камеры и комнате.

Метаданные камеры — ID, комната и позиция — хранились в поле USER_DATA QoS каждого издателя. Мини-компьютер триангуляции мог обнаруживать все камеры в комнате, определять новые или оффлайн-камеры в реальном времени и корректировать алгоритм выбора камеры соответственно.

Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer
Рисунок 9. Блок-схема видеопрограммы.

Финальный этап включал агрегацию сенсорных и видеоданных в топик Child Data. Комнатный сервер — реализованный на Raspberry Pi или MK802 III — триангулировал местоположение ребенка и выбирал лучшую камеру. Он фильтровал сенсоры по комнате, получал информацию о камерах, запускал Octave-скрипт для вычисления позиции ребенка и оптимальной камеры, и публиковал результат в облако. ID ребенка и качество видео использовались как ключи фильтра для эффективной подписки.

Для оптимизации ресурсов комнатный сервер запускал скрипт триангуляции только когда подписчик запрашивал данные для конкретного ребенка, определенного через обнаружение подписчиков и фильтры ContentFilteredTopic.

Мы также реализовали механизм отказоустойчивости: каждый мини-компьютер публиковал приоритетный ID в USER_DATA. Узел с наименьшим ID становился активным сервером до присоединения нового узла с еще меньшим ID.

Технический челлендж ETSIIT: от студентов к предпринимателям с Locaviewer
Рисунок 10. Блок-схема программы комнатного сервера.

[1] [2]  >

Интернет вещей

  1. FAQ вебинара по удаленному доступу — Полные ответы
  2. GBCC запускает утренние занятия по композитам для сменных работников
  3. Ливанский клиент проходит обучение на ЧПУ, плазменном и лазерном оборудовании на нашем заводе
  4. Клиенты из Иордании посетили завод для знакомства с 3-осевыми деревообрабатывающими станками
  5. Канадские клиенты на заводе Blue Elephant: инспекция 1530 пневматического 3-шпиндельного фрезера
  6. Эксперт-инженер проводит передовое обучение в Дубае на ATC-фрезере ELE2140 с карусельным магазином
  7. Катарский клиент посетил завод: демонстрация 1530 двухшпиндельного ЧПУ-фрезера
  8. Клиент из Бенгалии посетил завод для приемки нового ЧПУ-деревообрабатывающего фрезера
  9. Индийские клиенты инспектировали завод и заказали кастомный ELE1325 ЧПУ-фрезер
  10. Корейский промышленный посетитель осмотрел производство ЧПУ-фрезеров на нашем заводе