Разработка системы поддержки водителя на основе одноплатного компьютера в связке с мобильным устройством под операционную систему Android

Тип:
Добавлен:

Оглавление

Введение

. Анализ поведения водителя за рулём

. Обзор и анализ существующих систем

.1 Бортовые компьютеры

.2 Система помощи водителю на базе регистратора

. Системная реализация проекта

.1 Выбор типа устройства для реализации проекта

.1.1 Бортовой компьютер

.1.2 Видеорегистратор

.1.3 Одноплатный компьютер

.2 Выбор одноплатного компьютера

.2.1 Raspberry Pi

.2.2 Cubieboard

.2.3 BeagleBone

.3 Операционная система

.3.1 Cubieboard

.3.2 Сubian

.3.3 Debian

. Установка операционной системы Debian

.1 Настройка системных служб

.2 Разработка области системного приложения

.2.1 Общая схема системы

.3 Подключение видеокамер

.4 Создание локальной Wi-Fi сети

.5 Разработка серверного приложения

.5.1 Распознавание знаков и библиотека OpenCV

.6 Программная реализация приложения системы

. Потоковое видео в Android

.1 Конвертация видео

.2 Раздача видео

.2.1 Progressive streaming

5.2.2 Pseudo streaming

.2.3 Live streaming

.2.4 Real Time Streaming Protocol (RTSP)

5.2.5 Multicast

.3 Выбор протокола

.4 Обзор и анализ инструментов разработки

.4.1 Eclipse

.4.2 Intellij

.4.3 Android Studio

. Разработка мобильного приложения

Заключение

Список литературы

Приложения

Введение

Современное общество все чаще сталкивается с проблемами автоматизированного регулирования дорожного движения и транспорта. Важным вкладом в решение этой проблемы могут быть интеллектуальные системы поддержки водителя.

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

На данный момент существует множество интеллектуальных систем помощи водителю. Большинство из них специализируются на определенной марке автомобиля, как правило сегмента премиум класса. Также существуют системы, которые являются независимыми от марки автомобиля и могут интегрироваться в любой автомобиль. Обычно эти системы имеют один большой недостаток - это дороговизна. Цель данной работы, разработать систему поддержки водителя на основе одноплатного компьютера в связке с мобильным устройством под ОС Android, которая будет состоять из четырех камер, расположенных по периметру автомобиля, одноплатного компьютера, который будет получать входные потоки со всех камер и обрабатывать их, и мобильного устройства, которое будет получать от одноплатного компьютера видео потоки и отображать их. Для достижения цели, были решены задачи:

-Исследовать состояние водителя в процессе вождения;

-Провести обзор и анализ существующих систем поддержки водителя, выявить их недостатки и преимущества при взаимодействии с водителем;

-Провести обзор и выбор инструментальных средств для решения поставленной цели;

-Разработать способ взаимодействия водителя с мобильным устройством;

-Проектирование интерфейса приложения;

-Разработать прототип системы, базирущийся на одноплатном компьютере.

Инструментальные и программные средства, которые будут использованы в процессе разработки системы:

-Android Studio, для разработки мобильного приложения;

-Мобильное устройство на ОС Android, для тестирования и отладки приложения;

-Одноплатный компьютер Cubieboard 3 [1];

-Web-камера Z-Star.

В результате проделанной работы получен полностью работоспособный и отлаженный прототип системы.

1. Анализ поведения водителя за рулём

Бодрое состояние водителя за рулём очень важно для процесса безопасного вождения. В наше время водители проводят довольно много времени в поездках или пробках. В это время следует быть максимально бодрым и сосредоточенным, что бы качественно контролировать ситуацию на дороге и избегать аварийных случаев. К сожалению, в процессе длительной деятельности возникает закономерный процесс временного снижения работоспособности - утомление. На первых стадиях утомления водитель способен усилиями воли вернуть себе прежнюю работоспособность, тем самым даже в состоянии утомления водитель находится в состоянии избежать ошибок, связанных с резко изменившейся ситуацией на дороге. При таких обстоятельствах организм тратит больше энергии на поддержание работоспособности мозга и это способствует прогрессированию утомления.

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

Работоспособность очень важна для водителя. При её снижении водитель становиться невнимательным и имеет возможность попасть в дорожно-транспортное происшествие.

Самое большое воздействие при утомлении получают клетки головного мозга, затем мышцы и потом нервы. Из-за этого происходит ухудшение восприятия, мышления и внимания. При этом снижается острота зрения, ухудшается координация движений, увеличивается время реакции, теряется чувство скорости и, главное, водитель становится не готов к неожиданным действиям, связанными с резким изменением ситуации на дороге.

Зрительное утомление зависит от продолжительности активного состояния водителя. При напряжении на глаза в течении восьми часов, зрение водителя падает примерно на 20%, т.е. после восьмичасового рабочего дня водитель увидит дорожный знак не за 100 метров до него, а за 80 [2].

Навыки, которые доведены до автоматизма, в состоянии даже глубокой усталости сохраняются, но время реакции при этом замедляется и есть возможность, что водитель не успеет вовремя отреагировать на изменение. Проведённые учёными исследования смогли доказать, что при нахождении за рулём на протяжении 7-12 часов степень попадания в ДТП возрастает в 2 раза. При нахождении за рулём свыше 12 часов - в 9 раз чаще, чем при вождении менее 7 часов.

Различают умственное, эмоциональное и физическое утомление. При разных видах работы наступают разные его виды. При вождении человек подвержен всем трём видам, что делает длительное вождение одним из самых затратных, с точки зрения ресурсов организма, занятием. В некоторых случаях от водителя требуется совершение действий, находящихся на грани психофизических возможностей. Это вызывает переутомление. Физическое утомление связано с малоподвижностью за рулём, что вызывает застой мышц. Водители машинально стараются размять руки находясь за рулём, что может привести к отклонению автомобиля от заданного курса и привести к трудной ситуации на дороге. Для того, чтобы оградить себя и ближних водителей от этого следует каждые 2 часа делать перерыв на 15-20 минут для приведения мышц в состояние тонуса.

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

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

Таким образом состояние водителя непосредственно влияет на дорожную ситуацию и своевременное реагирование на непредвиденные обстоятельства помогут избежать аварийных ситуаций. К сожалению, люди не могут быть идеальными и часто попадают в такие ситуации. Было сделано много разработок, которые были призваны повысить внимательность водителей за рулём. Например, во Франции было изобретено устройство, которое фиксирует электрические активности мозга, и когда они уменьшаются, подавало предупреждающий сигнал. Так же были разработаны очки, которые реагировали на моргание. Если водитель не моргал в течении 20 секунд, то срабатывает звуковой сигнал, а после него выключается зажигание.

Система, речь о которой пойдёт в этой работе, будет частично предлагать решение проблем с внимательностью водителя. Она возьмёт на себя часть работы по визуальному контролю предупреждающих знаков, что поможет повысить осведомлённость водителя на дороге и даст возможность быть более внимательным. Ещё одной функцией системы станет предупреждение о резком приближении или возможном столкновении с другими участниками дорожного движения. Это поможет избежать ДТП или минимизировать ущерб от него.

2. Обзор и анализ существующих систем

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

2.1 Бортовые компьютеры

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

В настоящее время все автомобили оборудованы бортовыми компьютерами, правда обычно их функционал ограничен довольно скудным функционалом, таким как:

-Контроль расхода топлива;

-Вывод показания датчиков;

-Отображение напряжения бортовой сети.

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

-Система контроля слепых зон;

-Система контроля давления в шинах;

-Система самодиагностики всех элементов автомобиля;

-Система полного привода.

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

Главным минусом данной системы является отсутствие контроля за антропогенными факторами. Система отлично справляется с техническими неисправностями и отлично защищает водителя с этой стороны, но сам водитель имеет возможность ошибаться, что может привести к нежелательному исходу. С точки зрения исследования, данная система может стать интеграцией для разрабатываемой системы, чем мы можем серьёзно расширить её функционал.

2.2 Система помощи водителю на базе регистратора

В последнее время получила довольно широкое распространение система помощи водителю интегрированная в видеорегистратор Advanced Driver Assistance Systems(ADAS) [3]. Регистраторы стали неотъемлемой частью любого автомобиля. Они получили довольно хорошее развитие в последнее время и расширили свой функционал для помощи водителю на дороге.

ADAS является встроенной в видеорегистратор системой, которая значительно расширяет функционал устройства. Такая система стоит намного меньше, чем встроенная в автомобиль. Главной её целью является пассивно оповестить водителя о ситуации на дороге. ADAS состоит из нескольких подсистем, которые хотелось бы рассмотреть ниже:

-LDWS (Lane Departure Warning) - данная подсистема оповещает водителя о пересечении сплошной полосы. Это очень полезно, когда водитель находится в состоянии сильной усталости и не в состоянии контролировать равномерное движение автомобиля по проезжей полосе. Сигнал оградит водителя от аварийной ситуации.

-FCWS (Forward Collision Warning) - система оповещения о столкновении с автомобилем, идущем спереди. Система оповещает водителя, если считает, что есть возможность столкновения. Возможность рассчитывается исходя из скоростей автомобилей и расстояния между ними. Если водитель отвлёкся или не заметил снижения скорости впереди идущего автомобиля, то система поможет избежать столкновения звуковым сигналом, который привлечёт внимание водителя к дорожной ситуации (рис.1).

Рис 1. Система FCWS - оповещение о столкновении с автомобилем, идущим спереди

-FCMD - система, оповещающая о начале движения впереди стоящего автомобиля. Система пригодиться тем, кто мало сосредоточен стоя в пробках. Она подаст сигнал, если автомобиль спереди начнёт движение вперёд.

-BSD (Blind Spot Detection) - система, которая ведёт наблюдение за слепыми зонами автомобиля. Если в слепой зоне на определённом расстоянии находиться объект(автомобиль), то система обращает внимание водителя на эту ситуацию (рис.2).

Рис.2. Обнаружение слепых зон

-LCA (Lane Change Assistance) - обнаруживает препятствия при смене полосы. Очень полезная функция при загруженном потоке на дороге. Водитель не всегда имеет возможность оценить всю дорожную ситуацию, но данная система оценит ситуацию в слепых зонах вместо его.

-PCW - система распознавания пешеходов (Рис.3). Пешеходные переходы - места, где сталкиваются пешеходы с автомобилями, и любая авария в этом месте несёт максимальную опасность для жизни человека. Система оповещает водителя о возможных переходах, которых сложно заметить.

Рис.3 Распознавание пешеходов

Данная система завязана непосредственно с воздействием на водителя, что значительно увеличивает безопасность на дороге, так как водитель постоянно получает актуальную информацию о движении, при этом дополнительно сам анализирует её. Система распространена в видеорегистраторах таких фирм, как Xiaomi и DEXP. Минусом данных регистраторов с установленной системой является полное отсутствие информации о состоянии автомобиля, чтобы действовать не только на основании видео данных. Информация доноситься до пользователя только звуковыми сигналами и не имеет другой формы оповещения, что может затруднять или просто сливаться с другими звуковыми оповещениями.

Разрабатываемая система по сравнению с аналогами имеет большую вычислительную мощность, более удобное представление информации в виде воздействия на водителя не только звуком, но ещё и визуально, не отвлекая его от процесса вождения. Часть функционала заимствована из аналогичных систем, так как они являются базовыми, без которых система не имеет достаточный смысл.

3. Системная реализация проекта

3.1 Выбор типа устройства для реализации проекта

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

-Бортовой компьютер автомобиля;

-Видеорегистратор;

-Одноплатный компьютер.

3.1.1 Бортовой компьютер

Реализовать систему можно внутри бортового компьютера, встроенного в автомобиль. Плюсом данного решения является полный доступ к технической информации об автомобиле, но при этом столкнёмся со следующими проблемами:

-Проблема с подключением устройств видеонаблюдения;

-Проблема с отображением информации для водителя;

-Малая вычислительная мощность бортового компьютера;

-Закрытость системы большинства бортовых компьютеров

3.1.2 Видеорегистратор

Реализация системы на базе видеорегистратора (рис. 4) решает много проблем, связанных с интеграцией с видеокамерой и устройствами вывода, так как они уже автоматически предусмотрены в данном устройстве. Так же плюсом будет малый размер и быстрый доступ к файлам, поскольку они обычно хранятся на съёмных носителях, которые очень легко заполучить. Однако такой подход к решению проблемы обладает следующими минусами:

-Система будет полностью изолирована от автомобиля и работает сама по себе;

-Не имеет возможности подключения дополнительного оборудования;

-Для разработки ПО для системы нужно запросить разрешения у производителя устройства;

-Только звуковой канал оповещения водителя.

Рис. 4 Система на базе видеорегистратора.

Таким образом данная реализация так же не является оптимальной из-за изолированности системы.

3.1.3 Одноплатный компьютер

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

-Устанавливается, как отдельный модуль, требует места;

-Требует постоянный источник питания;

-Помимо одноплатного компьютера требуется установка и наличие дополнительных устройств, таких как видеокамеры и мобильный смартфон.

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

Таким образом, рассмотрев все возможные варианты было принято решение о реализации системы на базе одноплатного компьютера.

3.2 Выбор одноплатного компьютера

Для реализации системы в первую очередь необходимо выбрать системную её часть. Основой системы, как было написано выше, станет одноплатный компьютер. Современный рынок предлагает обширное количество вариантов в различных ценовых диапазонах, начиная с 20$ и заканчивая моделями с высокой производительностью для решения нетривиальных задач стоимостью более 1000$.

Было решено рассмотреть возможные варианты в ценовом диапазоне от 9000 до 12000 рублей. Лидирующие позиции в данной категории занимают следующие устройства:

-Raspberry Pi [4];

-Cubieboard;

-BeagleBone [5].

Рассмотрим технические характеристики и поддерживаемый функционал устройств.

Raspberry Pi был первым общедоступным одноплатным компьютером (Рис. 5). У пользователей появилась возможность по доступной цене получить минимальный функционал, который в дальнейшем только совершенствовался. Популярность он получил из-за возможности поддерживать операционные системы семейства Linux. На данный момент это лидирующая по распространению плата, которую можно приспособить под любую задачу.

Рис. 5. Одноплатный компьютер Raspberry Pi

На данной плате мы можем найти следующие комплектующие:

-GPIO - универсальные порты для работы с любыми устройствами;

-композитный видеовыход;

-аудиовыход 3.5 мм;

-USB;

-Ethernet;

-HDMI;

-microUSB (питание);

-слот для карты памяти;

-Рабочая частота: 869.0 МГц / 868.42 МГц;

-Версия SDK: 4.54+;

-Процессор: ARM 700 MHz;

-Оперативная память: 512 Мб оперативной памяти;

-Хранение данных: Карта SD 4 Гб.

Крайне широкий функционал и поддержка большого спектра систем делаем Raspberry Pi хорошим вариантом, но недостаток оперативной памяти и возможность работать только с SD картами не очень подходит для нашего проекта.

3.2.2 Cubieboard

Cubieboard были представлены пользователям сразу после Raspberry Pi, при этом их компьютеры довольно сильно отставали от конкурентов в 2012 году. На данный момент существует несколько актуальных версий данного компьютера, но под ценовую категорию подходит только Cubieboard 3 (Рис. 6).

Рис. 6. Одноплатный компьютер Cubieboard 3.

Рассмотрим его технические характеристики:

-Процессор: SoC AllWinner A20, двухъядерный Cortex-A7, 1ГГЦ;

-Графический процессор: Mali400MP2, OpenGL ES 2.0/1.1, HDMI 1080p@30fps или 720p@60fps;

-Оперативная память: 2ГБ DDR3 480MHz;

-Пользовательская память: NAND 8ГБ + MicroSD;

-SATA: поддержка дисков до 2.5ТБ размером 2.5";

-Питание: 5В постоянного тока (2.5A при подключенном жестком диске), поддержка Li-ion батареи и RTC;

-Сеть: 10/100/1000 Ethernet, Wi-Fi+BT с антенной на плате;

-Разъемы: 2хUSB 2.0 HOST, USB 2.0 OTG, SPDIF, IR, 4хLED 3.5мм Jack;

-54 контакта подключения: I2S, I2C, SPI, CVBS, LRADC x2,UART, PS2, PWMx2, TS/CSI, IRDA, LINEIN&FMIN&MICIN, TVINx4;

По техническим характеристикам Cubieboard 3 намного превзошёл Raspberry Pi. Он оснащён NAND памятью, имеет возможность работать с SATA диском и обладает требуемым запасом оперативной памяти. Wi-Fi модуль так же находится на плате, что значительно поможет в работе с интегрированными устройствами. Компьютер обладает собственной linux-системой Cubian, которая позиционируется как система, поддерживающая полный функционал данного одноплатного компьютера.

3.2.3 BeagleBone

Из всех рассматриваемых устройств данная линейка вышла намного позже своих конкурентов. Главным функциональным акцентом данных одноплатный компьютеров (Рис. 7) является работа с большим количеством устройств. Это достригается за счёт большого количества универсальных портов. Процессор - 1 ГГц Cortex-A8, 512 мб оперативной памяти, Wi-Fi модуль отсутствует. Компьютер подойдёт отлично для выполнения простых систематических действий с большим количеством подключаемых устройств, но для разрабатываемого проекта его технических характеристик не хватит.

Рис. 7. Одноплатный компьютер BeagleBone

Из всех предложенных устройств был выбран Cubieboard 3, как устройство с самыми сильными техническими характеристиками. Есть возможность подключения дополнительного хранилища в виде SATA диска и интеграция с другими элементами системы посредством Wi-Fi [6] канала.

3.3 Операционная система

Самыми популярными системами для одноплатных компьютеров сейчас являются Linux-системы. Это открытые системы, из которых можно получить доступ к любой части устройства. Нет смысла использовать сторонние и платные системы, функционал которых ограничен производителем. Для сравнения было выбрано несколько систем, которые будут рассмотрены ниже.

3.3.1 Cubieboard

Cubieboard 3 в продаже имеет предустановленную систему Android 4.2 (рис 8.)

Рис. 8 Android 4.2 на Cubieboard 3

Компания создала специализированную систему для одноплатного компьютера, но в чистом виде установлена именно Android система. Это связано с тем, что в начале Cubieboard 3 использовался в основном как более продвинутый смартфон и данная система полностью обеспечивала его функционал. Со временем функционал расширился и система не затрагивает нововведения. Таким образом много функций, которые появились на 3 версии компьютера эта система не поддерживает. Android рассчитан на пользование предустановленными приложениями и функциями, но для разработки он не походит. Таким образом данная система не подходит в качестве системы серверного приложения.

3.3.2 Сubian

Linux-образная система, которая была разработана специально для данного одноплатного компьютера (Рис. 6). Имеет простой и понятный пользовательский интерфейс, поддерживает весь технический функционал одноплатного компьютера и имеет все функции, присущие семейству Linux. К сожалению, данная система представлена в виде «пустой» системы, которая не имеет возможности поддерживать устройства по умолчанию. Таким образом могут возникнуть проблемы при интеграции с новыми устройствами, такими как мобильные телефоны или видеокамеры.

Рис.9 Система Cubian.

3.3.3 Debian

Одна из самых распространённых систем семейства GNU\Linux. Получила применения как в виде серверной операционной системы, так и пользовательской. Debian имеет самое большой хранилище пакетов среди всех систем семейства, что делает его максимально комфортной для пользователя. Поддерживает все типы архитектур, такие как IBM, Intel, AMD. Для работы с хранилищем используется Advanced Packaging Tool (APT). APT это программа для работы с пакетами в операционной системе. Она помогает устанавливать обновления, скачивать и удалять приложения и утилиты, которые берутся из специального списка, который расположен в интернет репозитории.

На основе данной системы были сформированы такие популярные системы, как Linux mint и Ubuntu (табл.1), таким образом операционная система имеет базовый функционал и возможность интеграции с любыми системами своего семейства.

Табл.1 Дистрибутивы, основанные на Debian.

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

4. Установка операционной системы Debian

Debian - это организация добровольцев, которые посвятили себя разработке свободного программного обеспечения. Эта организация ещё с 1993 года работает над своим проектом - программным дистрибутивом, основанным на ядре linux.

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

Для того, что бы получить дистрибутив Debian следует перейти на страницу распространения (#"justify">Как уже говорилось, Debian поддерживает почти все архитектуры. Список всех поддерживаемых архитектур можно увидеть на Табл.2.

регистратор серверный приложение android

Табл.2 Список поддерживаемых архитектур.

Для установки Debian необходим установочный носитель, которым может быть:

-CD-ROM/DVD-ROM/BD-ROM - установка поддерживается для большинства архитектур;

-Сеть - может быть использована для получения требуемых файлов, работает по HTTP или FTP;

-Жёсткий диск - данный метод предусматривает уже установленную другу систему, которая и будет загружать программу установки;

-Система семейства Debian с помощью команды «Debian-installer».

В рамках использования одноплатного компьютера, многие варианты нам просто не подходят. Поэтому решено создавать дистрибутив с операционной системой Debian и загрузчиком для неё на SD карте.

Официальное сообщество Debian предлагает следующий алгоритм для установки системы (Рис.10).

Рис.10 Алгоритм для установки системы.

Так как на съёмном носителе SD-карте данных до этого не было, мы пропускаем первые шаги. Для создания загрузочного носителя используем программу Win32 Disk Imager (Рис. 11). Данное программное обеспечение предоставляется бесплатно и для его использования требуется операционная система семейства Windows. Создание загрузочного носителя происходит в операционной системе Windows 10.

Рис. 11 Программа для создания загрузочного носителя Win32 Disk Imager.

С помощью программы создаём установочный дистрибутив системы Debian на SD-карте.

Следующий шаг - установка системы во внутреннюю память одноплатного устройства. Для реализации этого шага потребуется устройство с операционной системой Windows, программа PhoenixSuit, SD-карта и кабель для подключения Cubieboard 3.

Подключаем одноплатный компьютер, предварительно переведя его в FEL режим, и запускаем программу PhoenixSuit (Рис. 12). Проверяем соединение, выбираем архитектуру на одноплатном компьютере и запускаем.

Рис. 12 Программа PhoenixSuit.

Таким образом формируются загрузочный разделы в NAND памяти на одноплатном компьютере. Теперь внутренняя память готова к установке операционной системы.

Одноплатный компьютер готов к установке операционной системы. Вставляем SD-карту с дистрибутивом в Cubieboard и запускаем его.

Если всё было сделано правильно, система выведет начальный экран установки операционной системы (Рис. 13).

Рис. 13 Начальный экран установки Debian.

Проходим установку Debian и на выходе получаем установленную систему на одноплатный компьютер. Следующим шагом будет настройка системных служб.

4.1 Настройка системных служб

Для корректного функционирования операционной системы потребуется сделать несколько важных настроек:

-Настройка сети

Для стабильного функционирования сети в системе необходимо подгрузить сетевой модуль. Это можно сделать следующим списком команд (Рис. 14).

Рис. 14 Копирование каталога /lib/modules с SD-карты

После этого надо воспользоваться командой «modprobe sunxi_gmac» и сетевой модуль подгрузится и начнёт работать.

-Настройка Wi-Fi соединения

Wi-Fi соединение очень важно для интеграций в проекте. Для его настройки потребуется скопировать файл /mnt/mmc/etc/modules.conf с SD-карты в NAND и перезаписать его. Теперь все необходимые модули подгружаются автоматически. Затем остаётся только воспользоваться командой «modprobe bcmdhd» и Wi-Fi Сеть настроена.

4.2 Разработка области системного приложения

4.2.1 Общая схема системы

Для реализации разрабатываемой системы требуется чёткая схема устройств и их интеграций. На рисунке 15 представлено схематичное представление системы.

Рис. 15 Схематическое представление системы

На данной схеме представлен одноплатный компьютер Cubieboard 3, как центральное устройство всей системы. На нём располагается серверное приложение, которое обрабатывает приходящие данные с видеокамер, результат передаётся по Wi-Fi на мобильное устройство.

В системе действует две основные интеграции:

-Интеграция видеопотока в одноплатный компьютер

-Интеграция потока видео в мобильное приложение

Для реализации первой интеграции потребуется подключить видеокамеры по USB. Приём потока будет осуществляться путём средств библиотеки OpenCV [7]. Вторая интеграция будет осуществляться при помощи API запросов по локальной сети от мобильного приложения на смартфоне к серверному приложению на одноплатном компьютере. Разберём все по порядку.

4.3 Подключение видеокамер

Для корректной работы подключенных видеокамер требуется установка пакета следующих драйверов:

-V4l-conf

-Libv4l-0

-V4l2ucp

-V4l-conf

-V4l-utils

Список подключенный видеоустройств находится в каталоге «/dev/video*». Для каждой подключённой видеокамеры формируется файл конфигураций, который определяет используемые драйвера и протоколы передачи для этой камеры.

Для установки всех драйверов, которые необходимы для работы видеоустройств, выполнятся одна команда:

«sudo apt-get install V4l-conf Libv4l-0 V4l2ucp V4l-conf V4l-utils»

После установки пакетов, необходимые драйвера автоматически подтягиваются для работы с видеоустройствами.

Для считывания информации с любого видеоустройства мы используем следующую программу (Приложение 1).

Блок «Open device» отвечает за открытие системных функций видеокамер. Параметр O_RDWR регулирует считывание и запись. При ошибке функция возвращает значение «-1».

Функция «Read Params From Device» выполняет чтение параметров с устройства и заполняет ими структуру «Device_params» (Рис. 16). При возникновении ошибки, функция вернёт «-1».

Рис. 16 Состав структуры device_params.

Таким образом осуществляется передача данных с видеокамер на одноплатный компьютер.

4.4 Создание локальной Wi-Fi сети

Для связи одноплатного компьютера с мобильным устройством было принято решение создать локальную сеть посредством Wi-Fi. Источником сети является одноплатный компьютер, оснащённый Wi-Fi модулем.

Для этого потребуется пакет драйверов wireless. Делается это командой « apt-get install wireless-tools bridge-utils hostapd iw».

Теперь необходимо настроить сетевые интерфейсы. Конфигурация Wi-Fi адаптера содержится в папке /etc/network/interfaces. Настройки конфигурации можно увидеть в приложении 2.

Затем необходимо настроить файл hostapd, который отвечает за конфигурацию раздаваемой Wi-Fi сети. Его можно найти по пути /etc/default/hostapd.conf. Файл конфигураций со всеми настройками сети можно увидеть в приложении 3. Теперь для запуска локальной Wi-Fi сети следует запустить сервис командой «hostapd -d /etc/hostapd/hostapd.conf». Поскольку система работает без воздействия внешней сети, дополнительные настройки не потребуются. Все устройства, подключившиеся к сети, состоят в локальной связи и могут обмениться пакетами.

4.5 Разработка серверного приложения

4.5.1 Распознавание знаков и библиотека OpenCV

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

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

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

Как правило, дорожные знаки предоставляют водителю разнообразную информацию для безопасной и эффективной навигации. Поэтому автоматическое распознавание дорожных знаков важно для автоматизированного интеллектуального вождения или системы помощи водителю. Однако идентификация дорожных знаков в зависимости от различных естественных условий по-прежнему остается сложной задачей. Системы распознавания дорожных знаков обычно разрабатываются в две конкретные фазы. Первая фаза обычно связана с обнаружением дорожных знаков в видеопоследовательности или на обработанном изображении. Второй связан с распознаванием тех обнаруженных признаков, которые связаны с представлениями в искусственной нейронной сети. Алгоритмы обнаружения обычно основаны на форме знака или цветовой сегментации. Сегментированные области идентифицируются как входные данные на этапе распознавания. Эффективность и скорость обнаружения играют важную роль в системе. Для распознавания дорожных знаков были разработаны различные методы автоматической идентификации. Нейронные сети безусловно представляют собой технологию, которую можно использовать для распознавания дорожных знаков.

Одной из конкретных областей, в которых было разработано множество приложений нейронной сети, является автоматическое распознавание знаков. Рисунок 17 иллюстрирует концепцию автоматизированного интеллектуального вождения или системы помощи водителю.

Рис. 17. Концепция автоматизированного интеллектуального вождения или системы помощи водителю

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

В последнее время обнаружение и распознавание дорожных знаков исследуется во многих исследовательских центрах. В рамках европейского исследовательского проекта PROMETHEUS в Исследовательском центре DAIMLER-BENZ была разработана система видения распознавания дорожных знаков и интегрированного автономного транспортного средства. Кроме того, было разработано много методов распознавания дорожных знаков. Например, использовались специальные цветные штриховые коды под дорожными знаками для обнаружения дорожных знаков в системе на основе видения, однако для этого требуется много времени и ресурсов. Генетический алгоритм был также предложен Aoyagi и Askura для определения дорожного знака из изображений серого уровня.

Для обеспечения необходимой точности распознавания дорожных знаков требуется мощный и быстрый интеллектуальный алгоритм. На этапе обнаружения получаемое изображение предварительно обрабатывается, улучшается и сегментируется в соответствии со свойствами знака цвета и формы. Изображения дорожных знаков обрабатываются для выявления областей пикселей, которые могут быть признаны возможными дорожными знаками со сложного фона. Обработанные объекты затем нормализуются до заданного размера и вводятся в фазу распознавания. В этой работе исследуются только объекты круглой и гексагональной формы, поскольку эти формы обычно присутствуют во многих типах дорожных знаков. Многослойный перцептрон в алгоритме обучения обратного распространения является альтернативным методом для решения проблемы распознавания знаков в этой работе. Инструмент обработки изображений, используемый в этой работе, является бесплатной и не коммерческой системой Intel® Open Source Computer Vision Library (OpenCV) [7].

Этапы обработки изображений:

-Обнаружение знаков;

-Извлечение.

Видеоизображения снимаются видеокамерой, а блок «Извлечение изображений» отвечает за создание изображений. Этап обнаружения и удаления знака извлекает все дорожные знаки, содержащиеся в каждом изображении, и генерирует небольшие изображения, кадры. Каждый кадр выделяется на этапе распознавания форм, который поступает в нейронную сеть на этапе распознавания, который является заключительным. Рисунок 18 иллюстрирует конфигурацию системы. Затем представлен результат распознавания дорожных знаков. Системы распознавания дорожных знаков содержит этап предварительной обработки дорожных знаков и этап распознавания. Этапа предварительной обработки дорожных знаков разделен на две части: «Распознавание знака и извлечение» и «Распознавания формы».

Рис.18. Конфигурация системы

Рис.19. Диаграмма описания системы

Этап предварительной обработки

Обнаружение и извлечение знака: на этом этапе выполняется процедура обработки изображения. В систему подается входной видеосигнал из видеопоследовательности. Изображения читаются как в цвете, так и в черно-белом режиме (Рис.20 (a) и (b).

Рис. 20. (a) Цветное изображение, (b) Изображения в режиме черно-белого режима, (c) Гауссовский фильтр с гладким изображением и (d) двоичное изображение результата после использования фильтра Гауссовского фильтра и метода обнаружения края.

В черно-белом режиме изображение - это базовое изображение, используемое для определения предела этого изображения. Это предельное значение является критерием для изменения изображения с черного и белого на двоичное. Кроме того, двоичное изображение используется для поиска контуров. Прежде чем черно-белое изображение будет изменено на двоичное, используется технология сглаживания изображения и обнаружением края, как показано на Рисунке 20 (c) и (d). Таким образом, это показывает, что использование сглаживания может улучшить изображение, чтобы получить необходимую область.

Благодаря полученному двоичному изображению и обработки для извлечения контуров путем поиска функции контура возвращается число извлеченных контуров, которые хранятся в формате цепочки. Библиотека OpenCV [7] использует два метода для представления контуров. Первый метод называется методом Фримена или методом цепного кода. Для любого пикселя все его соседние пиксели нумеруются цифрами от 0 до 7 как на Рисунке 21 (а). Выбирается начальная точка и в зависимости от последующей формируется цепочка, то есть код (от 0 до 7) определяет местоположение следующей точки относительно текущей. Рисунок 21 (b) иллюстрирует пример кодирования Фримана.

Рис. 21. (а) Контурное представление в методе Фримана, (б) Кодирование Фримана

Затем вывод значений функции Контурного поиска передается для вычисления эллипса, который лучше всего подходит для набора двумерных точек. Функция OpenCV, используемая в этой задаче, - 'cvFitEllipse', основная задача в распознавании образов и компьютерном видении. Размеры двух эллипсовых осей и точки центра эллипса, которые являются выходом этой функции, используются для нахождения точной окружности знака на изображении. Рисунок 22 отображает структуру предсказанной линии из функции Fit Ellipse.

Рис. 22. Структура предсказанной линии из функции Fit Ellipse

Размеры двух осей эллипса являются параметрами, определяющими область знака на изображении. Программа проверяет, не различаются ли размеры по вертикали и горизонтали не более, чем граница эллипса. Если размеры двух осей эллипса проходят по размеру, так что при преобразовании получается круг дорожного знака, то точка центра эллипса используется как центр изображения обрезки. Алгоритм изображения обрезки разработан в соответствии со структурой изображения в пикселях. Для того чтобы охватить все области дорожных знаков, должен быть установлен инкрементный параметр пикселя.

Рис. 23. Обрезка изображение из фотографии дорожного знака

Кроме того, изображение обрезается до 30x30 пикселей в каждом слое RGB, так что для каждой области с измененным размером остается всего 2700 пикселей. Затем область обрезки преобразуется из трех каналов (R, G и B) в один канал оттенков серого. Однослойное изображение в серой шкале поступает на вход нейронной сети. Рисунок 23 показывает процесс обрезки изображения из фотографии дорожного знака, а на Рисунке 24 представлен весь этап предварительной обработки.

Рис. 24. Предварительная обработка изображения

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

4.6 Программная реализация приложения системы

Серверное приложение разрабатывается на языке программирования С++ и основывается на библиотеке по обработке видеопотока OpenCV. Приложение состоит из 4х частей, каждая их которых отвечает за свой функционал:

-Распознавание полос (прил. 4);

-Оповещение в случаи возможного столкновения (прил. 4);

-Контроль слепых зон автомобиля (прил. 4);

-Распознавание пешеходов на проезжей части (прил. 4).

Таким образом была разработана схема системы, подключены и настроены видеокамеры и разработано серверное приложение с помощью библиотеки OpenCV [7], которое обрабатывает видеопотоки с камер и транслирует их на мобильное устройство. Приложение содержит такие функции, как распознавание полос движения, оповещение в случаях возможного столкновения с автомобилями, идущими спереди и сзади, контроль слепых зон автомобиля и распознавание пешеходов, находящихся на проезжей части.

5. Потоковое видео в Android

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

-Конвертации видео к поддерживаемому формату на мобильном устройстве;

-Получение и воспроизведение видео с одноплатного компьютера.

5.1 Конвертация видео

Перед тем как воспроизвести видео на мобильном устройстве, необходимо перекодировать его в поддерживаемый формат. Список поддерживаемых форматов обозначен в документации к Android [8].

Для того чтобы перекодировать видео, которое загружается на сервер с четырех камер, потребуется использовать утилиту ffmpeg.

Наиболее распространенным способом хранения видео является использование кодека H. 264 AVC. Однако Android поддерживает не все возможности данного кодека, а только определенный профиль, который называется Baseline Profile, в который не входят такие полезные инструменты как CAMAC или B-frames. Это значит, что если использовать кодек H.264 AVC нет гарантии, что мобильное устройство воспроизведёт видео, если нет поддержки дополнительных кодеков.

Для того чтобы сжать видео, необходимо выполнить последовательность команд:

-ffmpeg -i in.3gp -f mp4

-vcodec libx264 -vprofile baseline -b:v 1500K

-acodec libfaac -b:a 128k -ar 44100 -ac 2

-y out.mp4

Рассмотрим подробно данные команды:

--i src берется перекодируемый файл;

--f mp4 использование видеоконтейнера;

--vcodec libx264 использование кодека;

--vprofile baseline использование профиля, который поддерживает Android;

--b:v 1500K битрейт;

--acodec libfaac использование аудиокодека;

--b:a 128K битрейт аудио;

--ar 44100 частота звука;

--ac 2 количество аудиопотоков;

--y флаг перезаписи выходного файла;

5.2 Раздача видео

В данной задаче требуется воспроизвести видео с сервера - скачать его во временное хранилище и воспроизвести локально, но в виду размеров видеозаписей этот метод отпадает.

Платформа Android предлагает поддержку следующих протоколов:

-HTTP(S) progressive streaming;

-HTTP(S) live streaming;

-RTSP (SDP, RTP).

5.2.1 Progressive streaming

Самый простой способ передачи видео с помощью web-сервера, сводится к скачиванию файла по протоколу HTTP/HTTPS протоколу. Как только будет скачано достаточно данных, воспроизведение файла начнется, но при использовании контейнера MP4, файл должен быть сформирован таким образом, чтобы перед видеоданными располагались метаданные о видео потоке.

Воспроизведение видео с помощью технологии progressive streaming нативно поддерживается Android, таким образом можно без проблем воспроизвести видео с использованием стандартного класса MediaPlayer.

5.2.2 Pseudo streaming

Технология pseudo streaming является расширением предыдущей технологии, и главным ее отличием является перемотка видео еще не к скаченному фрагменту. В таком случае на сервере должны быть учтены временные метки, и с помощью GET-запроса, приложение получало нужный фрагмент видео.

5.2.3 Live streaming

Основная суть протокола заключается в том, что получаемый файл разбивается на небольшие части и объединяются специальным файлом playlist формата m3u8. Передача данных осуществляется также по протоколу HTTP/HTTPS.

При использовании этой технологии не возникает проблем со свободным местом и перемоткой видео, а также появляется возможность выбора качества видео.

Поддержка Live Streaming присутствует в Android на нативном уровне начиная с версии 3.0.

5.2.4 Real Time Streaming Protocol (RTSP)

Протокол прикладного уровня, предназначенный для работы с мультимедийными данными, который предоставляет возможность удаленно управлять потоком данных с сервера, предоставляет выполнять команды таких как запуск (start), приостановку (pause), и остановку (stop), а также появляется возможность доступа по времени к расположенным на сервере файлам.не требует разбиения файлов на части и формирование файла playlist, в отличии от HTTP Live Streaming,. Все необходимые файлы генерируется и отдаются клиенту на лету. Однако протокол RTSP не может определять способ передачи данных, а делегирует эту обязанность другим протоколам, например RTP.

Для передачи файла по протоколу RTP нужно запустить VLC со следующими параметрами:

vlc -vvv /path/to/имя файла.mp4

-sout '#rtp{dst=localhost,port=1234,sdp=rtsp://localhost:8080/имя файла.sdp}'

Однако, организовывать отдельный процесс для каждого файла не целесообразно, поэтому можно использовать воспроизведение видео по требованию. Для того чтобы использовать VLC в качестве RTSP сервера для воспроизведения Video On Demand необходимо запустить VLC, с указанием атрибутов Telnet интерфейса и RTSP сервера:

vlc -vvv -I telnet --telnet-password 123 --rtsp-host 127.0.0.1 --rtsp-port 5554

После запуска сервера необходимо произвести его настройку. Удобнее всего это делать с помощью telneta, так как это помогает настраивать на лету:

new video vod enabledvideo input /path/to/Имя файла

Для воспроизведения видео необходимо запросить его по URL rtsp://localhost:5554/Имя файла

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

Воспроизведение видео с использованием данной технологии поддерживается Android нативно. Например с помощью стандартного класса MediaPlayer.

5.2.5 Multicast

Multicast - это форма широковещания, при которой адресом назначения видео является группа.

Некоторые устройства Android не поддерживают Multicast. Большинство устройств поддерживают однако чаще всего он поддерживается, но отключен по умолчанию, чтобы не грузить ресурсы девайса лишней работой.

5.3 Выбор протокола

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

5.4 Обзор и анализ инструментов разработки

В разработке под Android существует 2 основных IDE:среда Intellij IDEA, разработанная компанией JetBrains, и Eclipse.

5.4.1 Eclipse

Eclipse - интегрированная среда разработки кроссплатформенных модульных приложений. Поддерживается и развивается Eclipse Foundation. Инструментом сборки проекта является Ant. Eclipse легко настраивается и интегрируется с необходимыми для разработки компонентами, такими как NDK, SDK Android и Java машиной.

5.4.2 Intellij

Более серьезным инструментом разработки является Intellij. Первая версия появилась в 2001 году и сразу обрела популярность, так как это была первая среда для Java с большим набором интегрированных инструментов для рефакторинга, позволяющими программистам быстро реорганизовывать исходные тексты программ. Дизайн среды предоставляет возможность для продуктивной работы программистов, позволяя сконцентрироваться на разработке функциональности, в то время как IDEA берет на себя выполнение р

Copyright © 2018 WorldReferat.ru All rights reserved.