Реферат - inf.tsu.ru · opencv, c++, ... Поток распознавания...

44

Upload: vuhanh

Post on 17-Sep-2018

264 views

Category:

Documents


0 download

TRANSCRIPT

Реферат

Бакалаврская работа 43 с., 17 рис., 19 источников, 3 прил., 2 таблицы.OpenCV, C++, КОМПЬЮТЕРНОЕ ЗРЕНИЕ, РОБОТОТЕХНИКА,

АВТОНОМНЫЙ РОБОТОбъект исследования — возможность управления автономным

робототехническим средством на основе компьютерного зрения.Цель работы — разработка программного обеспечения для автономного

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

Методы исследования – аналитический, экспериментальный.Результаты работы — разработано и реализовано программное

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

2

Содержание

Введение.......................................................................................................................51. Архитектура и реализация программного обеспечения....................................10

1.1. Архитектура....................................................................................................101.2. Реализация.......................................................................................................12

1.2.1. Серверный модуль...................................................................................121.2.2. Серверный модуль. Очередь...................................................................121.2.3. Серверный модуль. Поток распознавания разметки дороги...............131.2.4. Серверный модуль. Поток распознавания знаков дорожного движения............................................................................................................131.2.5. Серверный модуль. Поток взаимодействия с модулем Arduino..........141.2.6. Серверный модуль. Поток передачи данных телеметрии на клиентское приложение....................................................................................151.2.7. Серверный модуль. Поток приема команд от клиентского приложения.............................................................................................................................151.2.8. Серверный модуль. Поток захвата изображения с видеокамеры........151.2.9. Серверный модуль. Поток записи видео, полученного с видеокамеры,в файл..................................................................................................................161.2.10. Серверный модуль. Поток расчета параметров движения ТС..........161.2.11. Модуль Arduino......................................................................................171.2.12. Клиентский модуль...............................................................................191.2.13. Клиентский модуль. Очередь...............................................................201.2.14. Клиентский модуль. Поток получения данных от серверного модуля.............................................................................................................................201.2.15. Клиентский модуль. Поток взаимодействия с пользователем..........201.2.16. Клиентский модуль. Поток записи видео в файл...............................20

2. Распознавание объектов........................................................................................222.1. Распознавание разметки дороги....................................................................242.2. Распознавание знаков дорожного движения................................................28

2.2.1. Выделение области интереса.................................................................282.2.2. Приведение цветного изображения к изображению в градациях серого..................................................................................................................292.2.3. Предобработка.........................................................................................302.2.4. Сегментация изображения......................................................................302.2.5. Классификация сегментов......................................................................322.2.6. Точность распознавания знаков.............................................................34

Заключение.................................................................................................................35Литература..................................................................................................................36Приложение А. Пользовательский интерфейс клиентского приложения............38Приложение Б. Установка и калибровка видеокамеры..........................................40

3

Приложение В. Руководство пользователя..............................................................41Серверный модуль.................................................................................................41

Установка............................................................................................................41Запуск..................................................................................................................41

Клиентский модуль................................................................................................41Установка............................................................................................................41Запуск..................................................................................................................42

Модуль Arduino......................................................................................................43Установка............................................................................................................43Запуск..................................................................................................................43

4

ВведениеВ 2010 году в Израиле университетом Технион были разработаны

соревнования «Роботраффик» («Robotraffic») [1]. По состоянию на 2016 год ониявляются международными и проводятся ежегодно на базе Техниона. Роботраффик проводится и в других странах мира, в том числе, начиная с 2014 года в Российской Федерации.

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

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

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

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

Для регулирования движения на трассе присутствуют светофоры, а также знаки дорожного движения «Стоп» и «Пешеходный переход». Каждый знак илисветофор передаёт навстречу движению транспортного средства свой уникальный код в ИК-диапазоне по протоколу IrDA SIR.

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

К модели робоавтомобиля предъявляются следующие требования1:

- длина не более 460 мм, ширина – не более 225 мм, база не менее 240 мм,колея не менее 160 мм;

- модель должна быть колесным транспортным средством;

- модель должна иметь рулевое управление способом поворота

1. РобоТраффик [Электронный ресурс]. URL: http://robolymp.ru/season-2016/rules-and-regulations/robotraffik/ (дата обращения: 30.05.2016)

5

управляемых колёс.

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

В Германии в Мюнхенском техническом университете в настоящее время существует проект “Autonomous Drive” [2]. В рамках этого проекта разрабатывается модель автономного транспортного средства (Рисунок 1), способного передвигаться по черной трассе с белыми линиями разметки, приближенными к реальным линиям разметки дорог. Этот робот оснащен видеокамерой. Он использует её лишь для распознования линий разметки дороги. Знаков дорожного движения и светофоров моделью трассы не предусмотрено. Для распознавания разметки программное обеспечение этого ТС использует модифицированный алгоритм детектора границ Кэнни [3], а для обнаружения препятсвий специальные датчики расстояния, установленные на передней, задней и боковых частях автомобиля. Благодаря этим датчикам транспортное средство способно выполнять безопасную парковку.

Другим примером подобных разработок является робот следования по линии для соревнования “RoboCup Junior” [4], построенный на основе одноплатного компьютера Raspberry Pi . Робот оборудован видеокамерой. Он способен двигаться по черной линии на белом фоне. Трасса содержит повороты,перекрестки и разветвления, а также специальные метки в виде зеленых

6

Рисунок 1: "Autonomous Drive" Car

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

Более далекими аналогами являются системы помощи водителю [5], присутствующие в некоторых современных моделях автомобилей таких производителей, как Audi, BMW, Ford, Opel… Однако на текущем этапе развития эти системы имеют в основном лишь функцию предупреждения водителя о каком-либо событии, например, о появлении в поле зрения определенного знака дорожного движения, и не производят практически никакого контроля над параметрами движения транспортного средства. Системы таких автомобилей взаимодействуют с видеокамерой, установленной на них, и анализируют видеоряд на наличие знаков. Детали реализации таких систем обычно составляют коммерческую тайну.

Примерами научных работ в области распознавания знаков дорожного движения могут служить труды Якимова П.Ю [6] и Чигорина А.А [7]. В первой рассмотрено успешное применение цветовых фильтров и преобразований Хафа [8] к распознаванию запрещающих и предупреждающих знаков (заявлено о точности ~97.3% на тестовой выборке из 9987 изображений). Во второй работе говорится о применении нейросетей, обученных на синтетических данных. Заявленная точность распознавания ~96% .

Роботы, оснащенные набором инфракрасных датчиков, прекрасно справляются с задачей перемещения в пределах модели трассы, описанной в регламенте соревнований «Роботраффик». Однако представленная модель дорожного движения слишком далека от реальности. На практике водитель при движении по трассе не пользуется ИК датчиками, да и знаки дорожного движения не производят вещания каких-либо сигналов. Всё, чем пользуется человек для ориентации на дороге — это его органы чувств, основную роль среди которых исполняет зрительная система. Водитель должен на основе увиденного принять решение о том, как и куда нужно двигаться, при этом соблюдая правила дорожного движения.

Целью данной работы является создание программного обеспечения для автономного робототехнического средства, которое вместо множества ИК

7

датчиков будет использовать цветную веб-камеру для движения по трассе, близкой к модели, используемой для соревнований «Роботраффик». Основное отличие состоит в том, что в рамках модели, используемой в этой работе, знаки дорожного движения представляют собой копии в масштабе 1:10 реальных знаков, установленных на дорогах Российской Федерации, без каких либо ИК-передатчиков. Разрабатываемое ПО должно в реальном времени производить анализ видеопотока, получаемого с видеокамеры, и распознавать разметку трассы, знаки дорожного движения «Стоп» и «Пешеходный переход», а также светофоры. На основе результатов такого анализа программа должна приниматьрешение об изменении скорости и направления движения робоавтомобиля. Для возможности контроля текущего состояния робототехнического средства необходимо обеспечить передачу определенного набора данных по сети Wi-Fi. Эти данные должны включать в себя: изображение с камеры робота, текущий угол поворота колес, скорость движения, информацию о разметке трассы, информацию о найденных знаках и светофорах и их положение на кадре.

В качестве платформы для анализа видеопотока был выбран одноплатный компьютер Firefly-RK3288, т. к. он обладает относительно небольшими размерами и легко помещается на модели ТС, соответствующего регламенту соревнований «Роботраффик». В сочетании с малыми размерами этот компьютер обладает производительностью, достаточной для анализа видео в реальном времени.

Основные характеристики Firefly-RK3288 отражены в таблице 1.

Таблица 1: Характеристики Firefly-RK3288

Процессор ARM Cortex-A17. 1.8GHz. 4 ядра

Оперативная память 2 Гб DDR3

Операционная система Linux Ubuntu 14.04

К одноплатному компьютеру по интерфейсу UART (Universal Asynchronous Receiver-Transmitter) [9] подключен микроконтроллер семейства AVR на плате Arduino UNO. Firefly является вычислительным центром робота, а плата Arduino отвечает за формирование и передачу сигналов моторам.

Модель ТС оборудована двумя моторами:

8

- сервомотор для управления углом поворота передних колес; он способенизменять положение своего вала в пределах [-20,+20] градусов от центрального положения;

- силовой мотор постоянного тока для вращения ведущих колес транспортного средства.

Модель ТС имеет оптический энкодер (устройство, представляющее линейное или угловое перемещение в виде последовательности сигналов, позволяющих определить величину перемещения [10]) для измерения скорости вращения ведущих колес.

Помимо программ, работающих на Firefly и Arduino, необходимо разработать вспомогательное кросплатформенное приложение, функционирующее под управлением операционных систем Windows и Linux. Оно должно принимать данные, отправляемые роботом по сети Wi-Fi, и отображать их в удобном, интуитивно понятном виде.

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

9

1. Архитектура и реализация программногообеспечения

1.1. Архитектура

Реализованное в результате работы программное обеспечение состоит из трех основных модулей, показанных на диаграмме пакетов (Рисунок 2):

1. Серверный модуль – занимается распознованием образов и принимает решения о том, как должен двигаться робот;

2. Клиентский модуль – получает набор данных о состоянии серверного модуля и представляет его пользователю в графическом окне;

3. Модуль Arduino – получает от серверного модуля информацию о том, как должен двигаться робот, и на этом основании управляет моторами транспортного средства.

Серверный модуль работает под управлением операционной системы Linux на одноплатном компьютере Firefly RK3288. Модуль Arduino предназначен для работы на плате Arduino Uno. Клиентский модуль способен функционировать под управлением операционных систем семейства Windows или Linux на персональном компьютере.

Серверный модуль и модуль Arduino соединены между собой по интерфейсу UART и взаимодействуют по протоколу RS-232. Серверный модуль и клиентский соединены между собой по технологии Wi-Fi и используют протоколы TCP/IP для коммуникации.

Физическая модель системы показана на диаграмме развертывания на

10

Рисунок 2: Диаграмма пакетов

рисунке 3.

Серверный модуль отправляет данные на Arduino в виде: Sdirection,speed,angleD,

где

S-начало блока данных,

direction- целое число (0 или 1), направление движения (вперед или назад),

“,” - символ-разделитель, позволяет отделить числа друг от друга при парсинге

speed - целое число, скорость движения в условных единицах,

angle - целое число, угол поворота,

D – конец блока данных.

Модуль Arduino отправляет данные на серверный модуль в виде: FspeedE,где

F-начало блока данных,

11

Рисунок 3: Диаграмма развертывания

speed – число c плавающей точкой, скорость движения в м/c,

E – конец блока данных.

Серверный модуль отправляет данные на клиентский модуль в виде:

<тип данных (4 байта)><размер данных (4 байта)><данные>

Клиентский модуль отправляет данные на серверный модуль в виде:

<тип данных (4 байта)><размер данных (4 байта)><данные>

1.2. Реализация

1.2.1. Серверный модуль

Серверный модуль представляет собой многопоточное приложение, работающее на одноплатном компьютере Firefly-RK3288 под управлением операционной системы Linux. Является основным модулем системы. Здесь производится анализ видеопотока и расчет параметров движения робота. Модуль оперирует следующими потоками:

1. Поток распознавания разметки дороги;

2. Поток распознавания знаков дорожного движения;

3. Поток взаимодействия с модулем Arduino;

4. Поток передачи данных телеметрии на клиентское приложение;

5. Поток приема команд от клиентского приложения;

6. Поток захвата изображения с видеокамеры;

7. Поток записи видео, полученного с видеокамеры, в файл;

8. Поток расчета параметров движения ТС.

Для взаимодействия между потоками используются очереди и разделяемые ресурсы.

1.2.2. Серверный модуль. Очередь

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

12

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

1.2.3. Серверный модуль. Поток распознавания разметки дороги

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

Значение полей LineData (Рисунок 4):onLine – флаг, который установлен в том случае, когда транспортное

средство находится на дороге;stopLine – флаг, который установлен, когда в поле зрения робота

находится элемент разметки “стоп-линия”;centerOfLine – координата на оси X изображения, показывающая, где

находится середина дороги.

1.2.4. Серверный модуль. Поток распознавания знаков дорожногодвижения

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

1. Если знак отсутствует в сохраненных данных, но есть в текущих результатах, то он добавляется к сохраненным знакам. Время с последнего обнаружения этого знака detectTime устанавливается равным нулю.

2. Если знак присутствует в сохраненных данных так же, как и в текущих результатах, то его detectTime устанавливается равным нулю.

13

Рисунок 4: Данные разметки

3. Если знак отсутсвует в текущих результатах, но есть в сохраненных данных, то в том случае, когда его detectTime превышает 500 миллисекунд, этотзнак удаляется из списка, в противном случае detectTime увеличивается на время между вызовами функции распознавания знаков в миллисекундах.

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

Значение полей SignData (Рисунок 5):location — координаты обнаруженного знака на кадре;sign — код обнаруженного знака;state — состояние светофора (поле определено только для светофоров и

хранит код активного сигнала);detectTime — время, прошедшее с последнего обнаружения знака в

миллисекундах.Данные о знаках являются глобально доступными в системе и защищены

мьютексом.

1.2.5. Серверный модуль. Поток взаимодействия с модулем Arduino

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

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

14

Рисунок 5: Данные знаков

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

1.2.6. Серверный модуль. Поток передачи данных телеметрии наклиентское приложение

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

Так как цветное изображение при разрешении 640x360, закодированое в модели BGR с глубиной цвета 24 бита, имеет размер 675 килобайт, то при потоке 30 кадров в секунду на клиентский модуль будет отправляться ~20 мегабайт в секунду. Применение JPEG сжатия к изображению перед отправкой позволят уменьшить объем отправляемых данных до ~2 мегабайт в секунду присохранении хорошего качества картинки.

1.2.7. Серверный модуль. Поток приема команд от клиентскогоприложения

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

1.2.8. Серверный модуль. Поток захвата изображения с видеокамеры

Этот поток взаимодействует с вебкамерой. В начале своей работы он настраивает камеру согласно глобально доступному объекту конфигурации системы, который содержит поля, определяющие необходимое системе разрешение изображений и частоту кадров. После чего он переходит к ожиданию кадров с видеокамеры. Как только в буфере камеры появляется новый кадр, он копируется, преобразуется в модель BGR с глубиной цвета 24 бита и помещается в глобально доступную очередь изображений. Для работы с видеокамерой используется OpenCV.

15

1.2.9. Серверный модуль. Поток записи видео, полученного с видеокамеры,в файл

Этот поток стартует при запуске программы со специальными аргументами командной строки. Он получает изображения из глобальной очереди изображений, сжимает, используя метод видеосжатия MJPEG [11] и записывает в AVI [12] контейнер. Для сжатия и записи видео в контейнер используется OpenCV.

1.2.10. Серверный модуль. Поток расчета параметров движения ТС

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

Для вычисления необходимого угла поворота и скорости транспортного средства был реализован ПИД (пропорционально-интегрально-дифференцирующий) [13] регулятор. Благодаря этому регулятору робот может двигаться по дороге, изменяя свою скорость и угол поворота плавно, без резких рывков. Коэффициенты ПИД регулятора для вычисления угла поворота ТС подбирались экспериментальным путем так, чтобы траектория движения была максимально гладкой. Коэффициент интегральной составляющей был установлен нулю, т.к. его использование усложняет настройку регулятора, но непроизводит значимых улучшений в траекторию движения ТС. Для вычисления угла используется следующая формула ПД регулятора:

angle=ANGLECENTER−delta∗1/6.7−(delta−olddelta)∗0.2 ,

где

angle – угол, на который необходимо повернуть вал сервопривода для удержания транспортного средства на дороге;

ANGLECENTER – положение вала сервопривода, соответствующее положению колес для движения ТС по прямой;

delta – отклонение центра дороги от центра изображения в пикселях;olddelta – отклонение центра дороги от центра изображения в пикселях

на предыдущем кадре;1/6.7 – экспериментально подобранный коэффициент пропорциональной

составляющей регулятора;

16

0.2 – экспериментально подобранный коэффициент дифференциальной составляющей регулятора.

Для управления скоростью движения робота достаточно лишь пропорциональной составляющей регулятора, зависящей от угла поворота:

speed=MAXSPEED−DELTA∗((MAXSPEED−MINSPEED)

ANGLERANGE) ,

где speed – скорость, c которой должен двигаться робот, в условных

единицах;MAXSPEED — максимальная скорость, с которой способен двигаться

робот, в условных единицах;MINSPEED — минимальная скорость, с которой способен двигаться

робот, в условных единицах;ANGLERANGE — максимальное отклонение вала сервомотора от

центрального положения;DELTA — абсолютное значение разницы между углом, на который

необходимо повернуть вал сервопривода для удержания транспортного средства на дороге, и положением вала сервопривода, соответствующем положению колес для движения ТС по прямой.

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

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

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

1.2.11. Модуль Arduino

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

Arduino Uno предоставляет три таймера (Timer0, Timer1, Timer2), каждый из которых имеет по 2 регистра сравнения, т.е. позволяет генерировать два PWM одновременно. Для управления силовым двигателем используется восьмибитный таймер Timer0, работающий в режиме Fast PWM. Fast PWM – это простейший режим работы, при котором значение выходного сигнала

17

устанавливается высоким, пока таймер считает от 0 до значения, хранящегося в регистре сравнения, после чего уровень сигнала устанавливается низким до тех пор, пока таймер не переполнится и не вернется в 0. Используемый таймер имеет значение делителя частоты, равное 64. Так как Arduino UNO использует микроконтроллер ATmega328P, работающий на частоте 16 MHz [14], или 16000000 Hz, то

F=(16000000÷64 )

256=976.5625 ,

где

F - выходная частота PWM в Hz.

Модуль Arduino получает от серверного модуля значение скорости в диапазоне от 0 до 255. Оно записывается в первый регистр сравнения. При значении скорости, равном нулю, сигнал будет всегда оставаться на низком уровне, и, следовательно, двигатель полностью остановится. При значении в 255 двигатель будет работать на 100% своей мощности, при значении 128 – на 50%.

Для управления сервомотором, отвечающим за поворот транспортного средства, используется библиотека Servo. Она использует 16-битный таймер Timer1 для генерации PWM. Для управления сервомотором необходимо генерировать PWM с частотой 50 Hz. Поэтому делитель частоты устанавливается на 8 и в регистр, ограничивающий значение таймера сверху (после достижения этого значения таймер будет сброшен), заносится число 40000, т.к.

t=(16000000÷8)

50=40000 .

Длины импульсов варьируются в диапазоне от 700 до 2300 микросекунд. Значению 700 микросекунд соответствует угол 0 градусов положения вала сервопривода, значению 1500 микросекунд – 90 градусов, а значению 2300 микросекунд – 180 градуов.

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

18

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

Эксперементально было получено среднеее число, которое появлялось в этой переменной в результате поворота колес ТС на 360 градусов и оно равно ~28.6. Радиус колеса модели автомобиля равен 3.5 сантиметра, и, следовательно,

l=2∗Pi∗R=2∗Pi∗3.5≈22 ,

где

l – длина окружности колеса в сантиметрах;

R – радиус колеса в сантиметрах.

Это означает, что

p=28.622

=1.3,

где

p – это коэффициент, умножив на который значение количества изменений состояния, хранящееся в специальной переменной, можно получить пройденное ТС расстояние в сантиметрах.

Каждую секунду значение из этой переменной умножается на коэффициент p, переводится в метры и передается серверному модулю, после чего значение переменной устанавливается равным 0.

1.2.12. Клиентский модуль

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

Модуль оперирует следующими потоками:

1. Поток получения данных от серверного модуля;

2. Поток взаимодействия с пользователем;

3. Поток записи видео в файл.

Для взаимодействия между потоками используются очереди и

19

разделяемые ресурсы.

1.2.13. Клиентский модуль. Очередь

В этом модуле используется очередь, полностью аналогичная очереди, разаработанной для серверного модуля. Благодаря использованию технологий многопоточности, включенных в стандарт C++11 [15], эта очередь может использоваться на любой платформе, для которой существует компилятор, поддерживающий этот стандарт.

1.2.14. Клиентский модуль. Поток получения данных от серверного модуля

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

1.2.15. Клиентский модуль. Поток взаимодействия с пользователем

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

1. Нажата клавиша «ESC» (выход из приложения);

2. Нажата клавиша «u» (сделать скриншот и сохранить его в папку со скриншотами (путь к ней задается в конфигурационном файле приложения), используя в качестве имени текущее время и дату);

3. Нажата клавиша «s» (послать серверному модулю команду экстренной остановки ТС).

Интерфейс программы описан в Приложении А.

1.2.16. Клиентский модуль. Поток записи видео в файл

Этот поток стартует при запуске программы со специальными аргументами командной строки. По своему функционалу он полностью

20

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

Инструкцию по использованию возможностей приложения можно найти вруководстве пользователя в приложении В.

21

2. Распознавание объектовДля того, чтобы корректно выполнять свои задачи, робот должен

распознавать следующие классы объектов:

1. Дорога. Представляет собой черную линию толщиной 50 мм на белом фоне (Рисунок 6);

2. Стоп-линия. Представляет собой черную линию, примыкающую к дороге справа под углом 90* (Рисунок 6);

3. Перекресток. Представляет собой пересечение двух дорог (Рисунок 6).

4. Знак «Стоп» (Рисунок 7);

22

Рисунок 6: Изображение дороги, перекрестка и стоп-линии

5. Знак «Пешеходный переход» (Рисунок 8);

6. Двухцветный светофор (Рисунок 9);

23

Рисунок 7: Знак "Стоп"

Рисунок 8: Знак "Пешеходный переход"

Рисунок 9: Двухцветный светофор

7. Трехцветный светофор (Рисунок 10).

2.1. Распознавание разметки дороги

Под распознаванием разметки дороги понимается определение положения центра черной линии, а также наличия стоп-линии и перекрестка на кадре.

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

Попытка №1.

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

24

Рисунок 10: Трехцветный светофор

center=(∑i=0

n

x i)

n , где

center — номер точки в рассматриваемой строке, соответствующий центру тяжести черных точек;

n — количество черных точек в рассматриваемой строке;

xi — координата i-ой черной точки в рассматриваемой строке.

Черной точка считается, если её B, G и R компоненты в цветовой модели BGR при глубине цвета 24 бита не превышают 50.

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

Этот алгоритм имеет следующие плюсы:

1. Высокая скорость исполнения. (~0.5 ms на целевой платформе);

2. Простота реализации.

Однако он обладает следующими недостатками:

1. Высокая ошибка определения центра дороги при попадании в кадр какого-либо черного объекта помимо линии, и, как следствие, съезд ТС с трассы;

2. Высокая вероятность принять перекресток за стоп-линию, если перекресток попал в кадр под некотором углом.

3. Отклонение ТС от дороги на перекрестках и стоп-линиях из-за смещения центра тяжести.

Попытка №2.

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

25

прилегающих к центру тяжести. Если таких точек было меньше 10, то пятно считалось шумом, и центр этой строки тоже игнорировался при расчете траектории движения ТС. Если же таких точек было более 200, то это считалосьпризнаком наличия на кадре перекрестка или стоп-линии. Для таких строк вычислялась и сохранялась левая и правая границы черной линии. Центры этих строк игнорировались при дальнейших вычислениях, чтобы избежать ошибки вычисления центра дороги из-за стоп-линий и перекрестков. Затем рассчитывался центр дороги как среднее арифметическое среди всех оставшихся центров тяжести. Среди сохраненных левых и правых границ черной линии находились максимально отклоняющиеся от вычисленного центра дороги. Если максимальное левое отклонение превышало 150, то считалось, что в кадре находится перекресток, если же максимальное левое отклонение не превышало 150, а максимальное правое превышало, то считалось, что в кадре стоп-линия.

Этот алгоритм имеет следующие плюсы:

1. ТС меньше отклоняется от дороги на перекрестках и стоп-линиях за счет того, что не учитывает центры строк изображения, содержащие эти объекты разметки дороги;

2. Траектория движения транспортного средства более гладкая по сравнению с предыдущим алгоритмом.

Но, к сожалению, не удалось разрешить следующие проблемы:

1. При попадании в кадр других черных объектов на крутых поворотах ТС съезжало с линии из-за смещения центра тяжести. В частности, на таких поворотах робот «атаковал» другие ТС с черными колесами, принимая их за часть своей линии;

2. Значительно выросло время распознавания разметки дороги по сравнению с предыдущим алгоритмом (~8 ms).

Попытка №3.

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

Третий вариант алгоритма, так же как и первый, работает по одной

26

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

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

1. Если был обнаружен перекресток, то эти значения не изменяются;

2. Если была обнаружена стоп-линия, то сохраненная правая граница дороги не обновляется, а левая граница заменяется вычисленным значением. Новый центр дороги вычисляется следующим образом:

center=centerS+(leftb−leftbS) , где

center — новая позиция центра дороги на кадре;

centerS — сохраненная позиция центра дороги;

leftb — вычисленная левая граница дороги;

leftbS — сохраненная левая граница дороги.

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

27

center=(leftb+rightb)

2,

где

center — новая позиция центра дороги на кадре;

leftb — вычисленная левая граница дороги;

rightb — вычисленная правая граница дороги.

Плюсы алгоритма:

1. Высокая скорость работы (~ 0.5 ms);

2. Четкое следование своей линии (робот больше не реагирует на посторонние черные предметы рядом с трассой, в частности, больше не происходит столкновений с другим ТС на крутых поворотах);

3. Транспортное средство практически не отклоняется от дороги на перекрестках и стоп-линиях.

Минусы:

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

2.2. Распознавание знаков дорожного движения

2.2.1. Выделение области интереса

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

28

2.2.2. Приведение цветного изображения к изображению в градацияхсерого

В данной работе все операции будут производиться над изображениями в градациях серого, так как алгоритмы работы с такими изображениями получаются более простыми и быстрыми. Для приведения полученного с камеры BGR изображения к изображению в градациях серого используется формула c коэффициентами, применяемыми в цветовых пространствах YUV и YIQ [16]. Указанные цветовые пространства используются телевизионными системами PAL и NTSC.

Формула для преобразования цветного изображения в серое:g(x,y) = 0.299*R(x,y) + 0.587*G(x,y) + 0.114*B(x,y)где g(x,y) — это значение яркости изображения в градациях серого в

точке (x,y), а R(x,y), G(x,y) и B(x,y) — это значения яркости исходного

изображения R,G, и B каналов соответственно.На рисунках 12 и 13 приведен пример преобразования цветного

изображения к изображению в градациях серого.

29

Рисунок 11: Кадр с выделенной областью интереса

2.2.3. Предобработка

Изображения с обычной цифровой видеокамеры имеют определенные недостатки, такие как зашумленность и плохой контраст. Поэтому в системах компьютерного зрения перед анализом проводится предобработка изображения с целью его нормализации [17]. Для повышения контраста используется метод эквализации гистограммы [18], а для избавления от шумов фильтр Гаусса [19].

2.2.4. Сегментация изображения

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

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

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

Для разделения изображения на сегменты используется детектор границ

30

Рисунок 12: Цветное изображение Рисунок 13: Изображение в градациях серого

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

На первом этапе метода Кэнни, происходит подавление шумов фильтромГаусса. После чего для вычисления градиента, применяется оператор Собеля, маски которого приведены на рисунках 14 и 15.

I — интенсивность в точке изображения, к которой в данный момент «приклеено» ядро свертки.

Величина градиента вычисляется по формуле:L=√Gx

2+G y

2 ,гдеL — величина градиента;Gx и Gy — результаты наложения масок оператора Собеля на

изображение.

На заключительном этапе алгоритма Кэнни вводятся два порога upper иlower, и производится фильтрация границ по следующим правилам:

1. Если градиент в точке выше, чем upper, то он рассматривается как граница;2. Если градиент в точке ниже lower, то точка игнорируется;3. Если градиент в точке между lower и upper, то точка будет рассматриваться как граница только если она имеет связь с точкой, в которой градиент выше, чемupper.

Ниже на рисунке 16 приведен пример применения оператора Кэнни с параметрами lower=100 и upper=200

31

Рисунок 15: Маска оператора Собеля

Рисунок 14: Маска оператора Собеля

2.2.5. Классификация сегментов

На данном этапе определяется, какой объект представляет собой сегмент, т. е. производится сопоставление сегментов с существующим в базе программы описанием объектов.

Попытка №1Один из самых популярных методов классификации в случае, когда

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

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

n

=jjj IIn=S

1

221/1 ,

гдеS — уровень корреляции;n — количество пикселей одного изображениями;I1j — интенсивность в точке j на первом изображении;I2j — интенсивность в точке j на втором изображении.

32

Рисунок 16: Результат применения оператора Кэнни

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

S=√ 0n=0 ,

а для двух абсолютно разных

S=√(1n)∗n∗Imax2

=Imax ,

где Imax — это максимальная возможная интенсивность пикселей на сравниваемых изображениях (например, Imax = 255 для изображения, где для хранения интенсивности пикселя отводится 1 байт).

Тогда

Sp=S

(Imax100

),

гдеSp — разница между сравниваемыми изображениями в процентах;S — уровень корреляции;Imax — это максимальная возможная интенсивность пикселя на

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

недостатков:1. При большом количестве сегментов и шаблонов процесс

классификации проходит слишком долго;2. Очень высокая зависимость от освещения и угла поворота.

Попытка №2Для устранения второго недостатка необходимо использовать параметры

изображений объектов, которые не зависят от освещения и угла поворота. Такими параметрами являются количество углов, соотношение сторон и соотношение цветов. Например, знак «Пешеходный переход» имеет 4 угла и соотношение сторон 1:1.

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

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

33

2.2.6. Точность распознавания знаков

Тестирование проводилось на CPU RK3288 Cortex-A17 quad core@ 1.8GHz. Выбор изображений для тестирования производился вручную так, чтобы все изображения выборки максимально отличались друг от друга и содержали изображение приемлемого качества, т.е. без пересвета и искажений геометрии. Размер выборки для каждого знака составляет 30 кадров с разрешением 640x480. Среднее время, затраченное на анализ 1 кадра ~20мс.

Результаты тестирования представлены ниже в таблице 2.

Таблица 2: Результаты тестирования

Знак Ошибка 1 рода (%)

Ошибка 2 рода (%)

Общая точность (%)

Стоп 33,3 0 83,3

Пешеходный переход

44,4 3,3 76,65

Светофор 30 6,6 81,7

Ошибка 1 рода – это вероятность не обнаружить объект на изображении,

где он присутствует.Ошибка 2 рода – это вероятность обнаружить объект на изображении, на

котором он отсутствует.

34

Заключение

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

Также было разработано и реализовано вспомогательное кросплатформенное приложение, функционирующее под управлением операционных систем Windows и Linux. Оно способно принимать данные, отправляемые роботом по сети Wi-Fi и отображать их в удобном, интуитивно понятном виде.

Работа была выполнена при поддержке компании ЗАО “Elecard Devices”.

35

Литература1. РобоТраффик [Электронный ресурс]. URL: http://robolymp.ru/rules-and-

regulations/robotraffik/ (дата обращения: 30.03.2016)2. Autonomous Drive [Электронный ресурс]. URL:

http://www.phoenix.tum.de/index.php?id=19 (дата обращения: 31.03.2016)3. Оператор Кэнни [Электронный ресурс]. URL:

https://ru.wikipedia.org/wiki/ Оператор_Кэнни (дата обращения: 31.03.2016)4. An image-processing robot for RoboCup Junior [Электронный ресурс].

URL: https://www.raspberrypi.org/blog/an-image-processing-robot-for-robocup-junior/ (дата обращения: 31.03.2016)

5. Система распознавания дорожных знаков [Электронный ресурс]. URL:http :// systemsauto . ru / active / traffic _ sign _ recognition . html (дата обращения: 31.03.2016)

6. Якимов П.Ю. Информационная технология обнаружения и различениядорожных знаков в мобильных системах технического зрения: диссертация на соискание ученой степени кандидата технических наук. СГАУ, Самара, 2014

7. Чигорин А. А. Эксперименты с обучением методов распознавания дорожных знаков на синтетических данных / А. А. Чигорин, А. С. Конушин // Наука и образование. - 2013. - №ФС77-48211. - с. 315-324.

8. Преобразование Хафа [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/ Преобразование_Хафа (дата обращения: 31.03.2016)

9. Универсальный асинхронный приёмопередатчик [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/Универсальный асинхронный приёмопередатчик (дата обращения: 31.03.2016)

10. Энкодер [Электронный ресурс]. URL: http://robocraft.ru/blog/technology/734.html (дата обращения: 31.03.2016)

11. MJPEG [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/MJPEG (дата обращения: 05.05.2016)

12. Audio Video Interleave [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/Audio_Video_Interleave (дата обращения: 05.05.2016)

13. ПИД-регулятор [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/ ПИД-регулятор (дата обращения: 05.05.2016)

14. Arduino Uno [Электронный ресурс]. URL: http://arduino.ru/Hardware/ArduinoBoardUno (дата обращения: 05.05.2016)

15. C++11 [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/ C++11 (дата обращения: 05.05.2016)

16. Оттенки серого [Электронный ресурс]. URL: https :// ru . wikipedia . org / wiki /Оттенки_серого (дата обращения: 30.11.2015)

17. Normalization [Электронный ресурс]. URL: https://en.wikipedia.org/wiki/Normalization_%28image_processing%29 (дата обращения: 10.09.2015)

18. Горьков А. Эквализация гистограмм для повышения качества

36

изображений [Электронный ресурс]. URL: http://habrahabr.ru/post/244507/ (дата обращения 02.09.2015)

19. Фильтр Гаусса [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/ Фильтр_Гаусса (дата обращения: 05.05.2016)

37

Приложение А. Пользовательский интерфейс клиентского приложения

На рисунке ниже (Рисунок 17) приведен скриншот клиентского приложения.

1. Изображение, полученное с камеры робота.

2. Область поиска знаков дорожного движения.

3. Прямоугольник для выделения положения знака на кадре.

4. Маркер, показывающий центр дороги и желаемое направление движения ТС. Робот будет постоянно стараться повернуть так, чтобы в следующий момент времени линии №4 и №5 совпали.

5. Маркер, показывающий текущее направление движения робота.

6. Информационная панель. Определенная область слева графического окна, где будет отображаться информация о знаках, скорости и направлении движения транспортного средства.

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

8. Реальная скорость передвижения робота в метрах в секунду, полученная на основе данных с энкодера.

38

Рисунок 17: Пользовательский интерфейс клиентского приложения

9. Индикатор направления движения транспортного средства. Может находиться в трех разных состояниях:

1) Зеленый цвет — робот движется вперед;

2) Красный цвет — робот движется назад;

3) Белый цвет — робот стоит на месте.

10. Скорость робота в процентах от максимальной.

39

Приложение Б. Установка и калибровкавидеокамеры

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

2. Запускается робот (без включения двигателя) и клиентское приложение.

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

4. На расстоянии 50 сантиметров от транспортного средства устанавливается знак дорожного движения, например, “Стоп”.

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

40

Приложение В. Руководство пользователя

Серверный модуль

Установка

Для удобства установки и настройки программного обеспечения серверного модуля был разработан специальный установочный скрипт install.sh,который автоматически установит все зависимости, скачает самую последнюю версию исходного кода из интернета, скомпилирует его, настроит автозапуск и сконфигурирует Wi-Fi точку доступа.

Для установки ПО необходимо выполнить следующие шаги:

1. Запустите Firefly RK3288;

2. Подключите его к интернету;

3. Скопируйте файл install.sh в домашнюю директорию;

4. Откройте консоль и выполните следующие команды:

cd ~chmod +x install.shsudo ./install.sh

5. Перейдите в папку ~/RoboMobile/configs/

cd ~/RoboMobile/configs/

6. Отредактируйте файл config.conf, заменив в строке

arduino_port = /dev/ttyS0

ttyS0 на имя устройства, к которому вы подключили Arduino UNO.

7. Перезагрузите Firefly RK3288.

После этого серверный модуль готов к работе.

Запуск

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

Клиентский модуль

Установка

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

41

Запуск

1. Подключитесь к Wi-Fi точке доступа (SSID по умолчанию Firefly), созданной серверным модулем;

2. Откройте консоль и перейдите в директорию с клиентским ПО;

3. Перейдите в папку build;

4. Выполните команду cl;

Таким образом клиентское приложение будет запущено в стандартном режиме и подключится к Wi-Fi точке доступа серверного модуля, используя адрес: 192.168.111.1:1111

Приложение поддерживает следующие аргументы командной строки:

1. -v filename.avi — при использовании этого аргумента клиент будет записывать видео, содержащее окно приложения, такое как показано в Приложении А, в файл filename.avi;

2. -c — применяется только вместе с аргументом -v и позволяет записывать только видео, полученное полученное от серверного модуля и не содержащее других элементов окна клиентского приложения;

3. -s ip — при использовании этого аргумента клиентский модуль будет для подключения к серверному модулю использовать адрес ip вместо 192.168.111.1;

4. -p port — при использовании этого аргумента клиентский модуль будетдля подключения к серверному модулю использовать порт port вместо 1111.

Во время работы клиентское ПО может обрабатывать следующие событияклавиатуры:

1. Нажата клавиша «s» - отправить роботу команду экстренной остановки;

2. Нажата клавиша «u» - сделать снимок окна приложения и сохранить егов папку с клиентом, используя текущее время в UNIX формате в качестве именифайла.

42

Модуль Arduino

Установка

1. Подключите Arduino UNO компьютеру, используя USB.

2. Откройте файл arduino.ino, распространяющийся вместе с ПО, в среде Arduino IDE.

3. В настройках среды выберете плату Arduino UNO и порт, к которому подключена плата.

4. Запустите процесс загрузки кода на плату.

После этого плата готова к использованию.

Запуск

Для запуска программы достаточно лишь включить питание платы.

43

Оригинальность: 97.69%

Заимствования: 2.31%

Цитирование: 0%

Уважаемый пользователь! Обращаем ваше внимание, что система «Антиплагиат» отвечает на вопрос, является ли тот или иной фрагмент текстазаимствованным или нет. Ответ на вопрос, является ли заимствованный фрагмент именно плагиатом, а не законной цитатой, система оставляет на вашеусмотрение.

Отчет о проверке № 1дата выгрузки: 31.05.2016 23:32:58пользователь: [email protected] / ID: 2302391отчет предоставлен сервисом «Антиплагиат»на сайте http://www.antiplagiat.ru

Информация о документе

№ документа: 2Имя исходного файла: diplom.final.docРазмер текста: 1886 кБТип документа: Не указаноСимволов в тексте: 52727Слов в тексте: 6649Число предложений: 292

Информация об отчете

Дата: Отчет от 31.05.2016 23:32:58 - Последний готовый отчетКомментарии: не указаноОценка оригинальности: 97.69%Заимствования: 2.31%Цитирование: 0%

Источники

Доля втексте

Источник Ссылка Дата Найдено в

1.82% [1] Сегментация (обработка изображений) http://ru.wikipedia.org раньше 2011 года Модуль поискаИнтернет

1.79% [2] Реферат - Комаричев Максим Евгеньевич - Исследованиевозможности эффективной реализации алгоритмовсегментации изображений для решения задач распознаванияобъектов на специализированных параллельныхвычислительных системах

http://masters.donntu.edu.ua раньше 2011 года Модуль поискаИнтернет

1.76% [3] Толстых АЛ Разработка специализированнойкомпьютерной системы определения морфологическихизменений при остеосинтезе челюсти

http://masters.donntu.edu.ua раньше 2011 года Модуль поискаИнтернет

Вывод отчета на печать - Антиплагиат http://www.antiplagiat.ru/My/Report/Print/2?sh...

1 of 2 01.06.2016 03:38