Отчет по научно-исследовательской работе «Базовые механизмы управления мобильным презентационным роботом»

реклама
Отчет по научно-исследовательской работе
«Базовые механизмы управления мобильным
презентационным роботом»
Версия 1.02 от 18.08.2014
Москва 2014
1
Аннотация
В отчете приводятся описание архитектуры системы управления прототипа
презентационного робота. Описаны элементы базового программного обеспечения и
некоторые аспекты аппаратного уровня.
Авторский коллектив
Карпов В.Э., Воробьев В.В., Карпов В.В., Луцкий В.А., Малышев А.А., Чумаченко А.А.
2
Содержание
Введение ................................................................................................................................... 4
1. Архитектура системы ........................................................................................................ 4
2. Сенсорная система ............................................................................................................. 4
Оборудование ....................................................................................................................... 4
Функциональные возможности ........................................................................................... 5
Распознавание маркеров .................................................................................................. 5
Выделение лиц .................................................................................................................. 5
Распознавание голосовых команд................................................................................... 5
Ультразвуковые дальномеры .......................................................................................... 5
3. Эффекторы робота ............................................................................................................. 5
4. Операционная среда системы управления .................................................................... 6
Узлы ....................................................................................................................................... 8
Работа с устройствами ......................................................................................................... 9
Источники видео и карты глубины............................................................................... 10
Топики ................................................................................................................................. 10
Форматы сообщений ...................................................................................................... 11
5. Базовые поведенческие функции .................................................................................. 12
Движение ............................................................................................................................. 12
Механизмы управления движением ............................................................................. 12
Система речевых сообщений............................................................................................. 12
Анализ и принятие решений.............................................................................................. 12
6. Администрирование......................................................................................................... 13
7. Структура программного комплекса ........................................................................... 13
Заключение ............................................................................................................................ 13
Особенности системы ........................................................................................................ 13
Перспективные функциональные возможности .............................................................. 13
Приложения ........................................................................................................................... 15
Приложение 1. Контроллер Arduino ................................................................................. 15
Приложение 2. Контроллеры и вспомогательные компоненты..................................... 16
Перечень компонент контроллера .................................................................................... 16
Структурная схема ......................................................................................................... 17
Приложение 3. Ходовая часть ........................................................................................... 18
Система питания ............................................................................................................. 18
Двигатели ........................................................................................................................ 18
Приложение 4. Скрипты .................................................................................................... 19
Скрипт startroscam .......................................................................................................... 19
Скрипт er ......................................................................................................................... 19
Скрипты автозапуска ..................................................................................................... 23
Приложение 5. Дополнительные документы ................................................................... 24
Приложение 6. Установка пакетов ................................................................................... 24
Приложение 7. Работа с контроллерами Arduino и PololuMaestro ................................ 25
3
Введение
Постановка задачи
Требуется создать базовые механизмы системы управления (программноаппаратное обеспечение) презентационного робота. Робот должен уметь распознавать
информационные маркеры, простые голосовые команды, реагировать на препятствия,
отрабатывать внешние команды оператора, автономно перемещаться в пространстве
как по заданной программе, так и в режиме свободного блуждания.
На этапе научно-исследовательских работ (НИР) требуется проведение работ по
созданию некоторого базового набора механизмов, реализующих заданный
функционал.
Цель работы: Создание базовых механизмов управления презентационного робота.
Были реализованы следующие задачи:
1. Разработана архитектура робота.
2. Разработана архитектура системы управления.
3. Реализована операционная среда системы управления.
4. Реализованы базовые механизмы управления движением.
5. Реализовано множество базовых узлов, решающих задачу сбора и обработки
информации.
6. Создан макет робота на уровне исследовательского прототипа.
Задачи решены на уровне демонстрации возможностей архитектуры робота.
1. Архитектура системы
2. Сенсорная система
Оборудование
1. Kinect
2. Web-камера (*)
4
3. Микрофон
4. Датчики препятствий
 Ультразвуковые дальномеры
 Контактные бамперы
(*)
– опционально.
Функциональные возможности
Распознавание маркеров
Маркеры на основе QR-кода. Формирование соответствующего признака в
сенсорном поле.
Выделение лиц
Реализация алгоритмов распознавания лиц на основе данных с Kinect и/или
камеры. Формирование соответствующего признака в сенсорном поле. Осуществляется
узлом facedetect.
Распознавание голосовых команд
Реализация командного интерфейса на базе Google Speech API. Распознаются
коротки фразы – команды.
Распознанные команды формируют соответствующие признаки в сенсорном
поле.
Ультразвуковые дальномеры
Ультразвуковые дальномеры LV-MaxSonar EZ1, 6 шт.
3. Эффекторы робота
Двигатели.
Система воспроизведения речевых сообщений.
5
Kinect
Web-камера
(опционально)
Бортовая
ЭВМ
УЗД
Бампер
4. Операционная среда системы управления
Бортовая СУ. Linux/KUBUNTU 12.04, ROS Hydro.
Примечание. Система переносима под KUBUNTU 14.04, ROS Indigo Igloo.
Ходовой контроллер Arduino.
При установке системы требуется инсталляция различного рода пакетов.
Перечень требуемых пакетов приводится в программных документах, описывающих
компоненты системы (рабочие отчеты).
Из «общих» пакетов требуются OpenCV и curses. Устанавливать их следует
отдельно, используя либо пакетный менеджер muon, либо в командной строке.
Например, установка curses может быть осуществлена командой
apt-get install libncurses5-dev libncursesw5-dev
6
7
Узлы
Kslot — Сервер щели. Необходим для определения препятствий (датчик
препятствия). В качестве исходных данных узел берет данные из топика
camera/depth/disparity, которые публикуются узлом freenect.launch. Для работы
используется kinect. Узел публикует сообщение формата msg_ans, которое содержит
данные о длине щели и карту ее глубин в топик kslot_topic.
FaceDetect — Сервер выделения лиц. В качестве исходных данных узел берет
данные либо из топика camera/image_raw (с веб-камеры), которые публикуются одним из
узлов, описанных в camera_and_kinect, либо из топика camera/rgb/image_raw (c kinect),
которые публикуются узлом freenect.launch. Для работы используется kinect или вебкамера. Узел публикует сообщение формата msg_ans, которое содержит данные о
координатах центра распознанного лица и временную метку в топик facedetect_topic.
QRCode — Сервер распознавания QR кодов. В качестве исходных данных узел
берет данные либо из топика camera/image_raw (с веб-камеры), которые публикуются
одним из узлов, описанных в camera_and_kinect, либо из топика camera/rgb/image_raw
(c kinect), которые публикуются узлом freenect.launch. Для работы используется kinect
или веб-камера. Узел публикует сообщение формата msg_ans, которое содержит данные
о длине строки распознанного QR кода, саму распознанную строку и временную метку в
топик qrcans_topic.
ArdSrv — Сервер ходовой части. Предназначен для управления ходовой частью и
сбора информации от датчиков Arduino В качестве исходных данных узел принимает
сообщения из топика action_topic формата msg_rsaction с управляющими командами и
публикует данные о заряде батареи и нажатии бампера в топик ardans_topic формата
msg_ans.
PllSrvl — Сервер датчиков Polulu. Предназначен для управления сервоприводами
и получения сенсорной информации. В качестве исходных данных узел берет данные из
топика pllcmd_topic формата msg_pllcmd, которые представляют собой управляющие
команды, с сервоприводов и сенсоров. В системе используется только команда
PLLGETPOSITION, которая позволяет определить положение сервопривода или
показания сенсора. Затем сообщение публикуется в pllans_topic в формате msg_ans.
ManCtlSrv — Ручное управление. Позволяет управлять роботом вручную.
Команды, полученные с клавиатуры отправляются в топик manctl_topic в формате
msg_ans.
Команды:

«0» — Стоп

«1»— Вперед

«2» — Назад

«3» — Налево

«4» — Направо

«5» — Быстро налево

«6» — Быстро направо

«8» — Сигнал

«21» — Вперед на один шаг

«22» — Назад на один шаг

«23» — Налево на один шаг
8



«24» — Направо на один шаг
«25» — Быстро налево на один шаг
«26» — Быстро направо на один шаг
GoogleSp — Сервер распознавания речи. Представляет собой python скрипт.
Записывает звук с микрофона и передает его на google speech для распознавания. Запись
звука с микрофона начинается если громкость звука становится выше определенной
пороговой (переменная THRESHOLD в файле googlesp.py). Публикует данные,
полученные от google speech в топик googlesp с форматом msg_googlesp. В сообщении
находятся две наиболее вероятные версии распознанной записи и величина вероятности
наиболее похожей версии.
Gclient — Обработчик речевых сообщений. Проверяет в принятом сообщении из
топика googlesp наличие управляющей команды. Для этого проверяется наличие в нем
слов из словаря. Если команда была найдена, то она отправляется сообщением формата
msg_ans в топик spans_topic.
ErSenField — Монитор сенсорной информации. Занимается тем, что собирает
данные с топиков и формирует единое сенсорное поле. Кроме того, занимается
распознаванием строки, полученной из топика qrcans_topic. Подписан на следующие
топики:

kslot_topic (формат msg_ans)

facedetect_topic (формат msg_ans)

qrcans_topic (формат msg_ans)

spcans_topic (формат msg_ans)

ardans_topic (формат msg_ans)

pllans_topic (формат msg_ans)

manctl_topic (формат msg_ans)

сmdack_topic (формат msg_ans)
Формирует единый топик сенсорной информации senfield_topic с данными от
вышеперечисленных топиков, куда отправляются сообщения формата msg_senfield.
ErScript — Управляющая программа. Формирует управляющие команды.
Формирование команды зависит от конфигурации сенсорного поля (топик senfield_topic,
формат qrcans_topic) и команд, полученных с ретранслятора команд (топик
scriptctl_topic, формат msg_ans ). Команды с ErScript отправляются сообщениями
формата msg_ans в топик scriptcmd_topic.
ErMain — Ретранслятор команд. Ретранслирует команды, полученные из
senfield_topic и scriptcmd_topic в соответствующие топики: scriptctl_topic (формат
msg_ans), сmdack_topic (формат msg_ans), action_topic (формат msg_rsaction) и топика
pllcmd_topic (формат msg_pllcmd).
Работа с устройствами
Kinect
freenect_launch - узел библиотеки ROS, отвечающий за получение и публикацию данных с
Kinect’a. freenect_launch публикует данные в топик /camera/image_raw
Web-камера
9
gencam_cu или gscam - узел библиотеки ROS, используемый для получения данных с webкамер. Узлы публикуют данные в топик /camera/image_raw.
Источники видео и карты глубины
В текущей версии системы в качестве источника видеоинформации и карты глубин
используется Kinect.
Для этого запускается узел freenect_launcher:
roslaunch freenect_launcher freenect.launcher
В системе запуск требуемых узлов-источников осуществляется скриптом
startroscam, см. Приложение 4.
Проверка. Для вывода данных камеры kinect можно выполнить команду
rosrun image_view image_view image:=/camera/rgb/image_color
Таким образом, источники для узлов обработки видеоинформации определяются
так:
facedetect: camera/rgb/image_raw
QRCode: camera/rgb/image_raw
Топики
Название топика
pllcmd_topic
action_topic
facedetect_topic
qrcans_topic
googlesp_topic
ardans_topic
pllans_topic
manctl_topic
spcans_topic
cmdack_topic
scriptctl_topic
senfield_topic
scriptcmd_topic
Формат
Назначение
сообщения
Частные командные топики
msg_pllcmd
В этот топик приходят команды от
управляющей программы для исполнения
сервером датчиков Pololu.
msg_rsaction Содержит команды для управления роботом
на исполнение сервером ходовой части.
Частные топики сенсорной информации
msg_ans
Получает данные о зарегистрированных
объектах от сервера выделения лиц
msg_ans
В этот топик публикуется информация о
распознанных QR-кодах
msg_googlesp Содержит разобранные фрагменты речи
msg_ans
Содержит данные о заряде батареи и
нажатии бампера
msg_ans
Содержит данные с сенсоров и
сервоприводов
msg_ans
В этот топик отправляются команды для
ручного управления
msg_ans
Содержит команды, разобранные
обработчиком речевых сообщений
msg_ans
Топик подтверждения приема команды
msg_ans
Содержит команды, которые будет
обрабатывать erscript
msg_senfield Интегральный топик. Содержит данные с
топиков kslot_topic, facedetect_topic,
qrcans_topic, spans_topic, ardans_topic,
pllans_topic, manctl_topic и cmdack_topic.
msg_ans
Содержит команды, сформированные erscript
10
kslot_topic
msg_ans
Играет роль датчика препятствий. В этот
топик передаются данные о 640 точках с
карты глубины, принятой с Kinect
Форматы сообщений
Сообщение msg_pllcmd
string command # Идентефикатор команды
int32 arg1
# Аргумент 1
int32 arg2
# Аргумент 2
Сообщение msg_rsaction
uint8 team_id # Идентефикатор команды
uint8 agent_id # Идентефикатор агента
uint8 action
# Команда
int32 arg1 # Аргумент 1
int32 arg2 # Аргумент 2
int32 arg3 # Аргумент 3
Сообщение msg_ans
#
# Универсальное сообщение для приема данных (результат) и отправки команд
#
# Формат ответа (результат)
int32 result #
int32[] data #
string text #
int32 size #
int32 tm
# Маркер времени (сек)
# Эти поля используются для команды
#
int32 cmd # Команда
int32 arg1 # Аргумент 1
int32 arg2 # Аргумент 2
Сообщение msg_senfield
# Sensors Field
# Arduino data
msg_ans/ans arddata
# Arduino registers
msg_ans/ans ardreg
11
# Arduino status
msg_ans/ans ardstatus
# Pololu data
msg_ans/ans pll
# QRcode Data
msg_ans/ans qrc
# Face Detector Data
msg_ans/ans face
# Speech Command
msg_ans/ans spc
# User Command Ctl Data (ManCtl)
msg_ans/ans usrcmd
# Kinect slot
msg_ans/ans kslot
5. Базовые поведенческие функции
Движение



Элементарные движения (вперед, назад, повороты и т.п.).
Рефлекторные реакции.
Случайное блуждание.
Потенциально
система
может
обеспечивать
максимально
безопасное
функционирование при движении за счет реакции на различного рода препятствия,
определения допустимых габаритов (узостей) проходов при движении, определения
опасного рельефа местности (провалы, лестничные пролеты и эскалаторы).
Это достигается наличием расширяемого (масштабируемого) множества датчиков,
включенных в контуры управления как низкого, так и высокого уровней. В частности,
возможно использование УЗ-сонара для определения ограничения скорости движения.
Механизмы управления движением
Реализация протокола команд ходового контроллера.
Используемый протокол rcX2.
Параметры связи:
BAUD_RATE 115200, 8N1
Система речевых сообщений
Текст воспроизводится голосовым синтезатором Festivsl. Источником текста
являются диагностические сообщения системы, а также текстовые файлы.
Анализ и принятие решений
Структура системы управления (СУ) – одноконтурная со сценарным управлением:
Система управления использует множество фиксированных (с жесткой структурой)
сценариев поведения с одноранговой структурой.
12
Запуск рабочего сценария происходит исходя из анализа данных сенсорного поля, а
также состояния основного сценария.
Схема:
Датчики – Сенсорное поле – Анализ – Формирование команд – Отработка.
6. Администрирование
Технические вопросы автозапуска и удаленного доступа описаны в рабочем отчете
[Малышев А.А. Администрирование].
Автозапуск. Стартовый (ersysinit.sh) и заключительный (on_shutdown_script.sh)
скрипты расположены в каталоге scripts системы.
Удаленный доступ. Адрес хоста - 192.168.0.103.
7. Структура программного комплекса
Заключение
Особенности системы
1. Система перегружена. Это – следствие ее универсальности (открытости).
2. Быстродействия бортовой ЭВМ явно недостаточно. Основным узким местом
является обработка видео. Видеообработку необходимо выносить на отдельный
вычислительный модель.
Перспективные функциональные возможности
В перспективе должны быть реализованы следующие функции:
1. Интеграция телеуправления
Камера, микрофон, текстовые сообщения, команды -> сервер -> оператор
2. Реализация функций локализации робота в пространстве. Построение карты помещения
Kinect, энкодеры -> карта, 3D-модель
3. Использование маркеров (QR-кода) и эскизной карты помещения.
13
4. Реализация интерактивного аватара. Визуализация текста (анимация) готовым пакетом
типа Verbot (режим «Микрофон - Текст - Чатбот»)
5. Система воспроизведения звуковых фрагментов
Источниками текста являются:
1. сообщения системы;
2. чатбот;
3. оператор;
4. презентация (опционально).
6. Распознавание лиц
7. Простые действия: поиск маркера, движение вдоль стены; объезд препятствий.
14
Приложения
Приложение 1. Контроллер Arduino
D13
3v3
Ref
A0
A1
A2
A3
A4
A5
A6
A7
5V
RST
GND
VIN
1
2
1
3
1
1
1
0
Arduino nano
9
8
7
6
5
4
3
2
0
1
2
3
4
5
6
7
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
GND
RST
RX0
TX1
Out
Out
Out
Out
Out
Out
Out
In
In
Beep
M2INB
M1INB
M1INA
M1PWM
M2PWM
M2INA
Encoder Left
Encoder Right
15
Приложение 2. Контроллеры и вспомогательные компоненты
Перечень компонент контроллера
Ультразвуковой дальномер LV-MaxSonar EZ1, 6 шт.
Аккумуляторы 14.8V LI-PO 6500, 2 шт.
Arduino Nano
Адаптер 12-19В
Колонки, микрофон, переходник
Модуль ЖК-дисплея I2C
Audio-адаптер
Драйвер моторов двухканальный Pololu на MC33926 (<3А на каждый канал)
Модуль зуммера DFRobot v2 (цифровой)
Понижающий преобразователь напряжения Pololu D15V35F5S3
Сервоконтроллер Pololu Mini Maestro 24-канальный USB
Расположение контроллеров вспомогательных компонент
16
Структурная схема
17
Приложение 3. Ходовая часть
Система питания
Система питания включает:
 Аккумуляторы 14.8V LI-PO 6500, 2 шт.
 Адаптер 12-19В
 Понижающие преобразователи напряжения Pololu D15V35F5S3, 2 шт.
Преобразователь
напряжения 12-19 В
Аккумуляторы
Преобразователь
14-12В
Преобразователь
12-5В
Двигатели
Драйвер моторов двухканальный Pololu на MC33926 (<3А на каждый канал)
Мотор-редуктор IG-42GM
18
Приложение 4. Скрипты
Скрипт startroscam
#!/bin/bash
# Запуск узлов для публикации видео и карты глубин в топики
# Публикуются:
# /camera/image_raw
# /camera/depth/disparity
# /camera/rgb/image_color
# /camera/rgb/image_raw
# и т.п.
# В данном варианте источником является только Kinect
#ROSNAME=hydro
ROSNAME=indigo
echo "Start Camera and Kinect nodes..."
######################################
# Web-камера
# Либо camera_umd (предпочтительно), либо gscam
######################################
#
# Запуск camera_umd (предпочтительно)
#
#echo "Start camros"
#/opt/ros/$ROSNAME/bin/roslaunch camros camros.launch &
#
# Запуск узла gscam
#
#echo "Start gscam"
#roscd gscam
#cd bin
#export GSCAM_CONFIG="v4l2src device=/dev/video0 ! video/x-raw-rgb !
ffmpegcolorspace"
#rosrun gscam gscam
######################################
# Запуск узла для Kinect
######################################
echo "Start freenect"
/opt/ros/$ROSNAME/bin/roslaunch freenect_launch freenect.launch &
Скрипт er
#!/bin/bash
#
# Основной управляющий скрипт системы
#
#CDIR=`pwd`
CDIR=~/ros
#
#
#
#
Источник видео
Вариант 1: Берем с Web-камеры
IMAGE_SOURCE=/camera/image_raw
Вариант 2: Берем с Kinect
19
IMAGE_SOURCE=camera/rgb/image_raw
#######################################################################
# Запуск системы
#######################################################################
StartProc ()
{
echo Start all ER servers
# QRCode server
konsole -p tabtitle="QRCode" -e rosrun qrcode qrcode $IMAGE_SOURCE
# GoogleSpeech server
konsole -p tabtitle="GoogleSpeech" -e rosrun googlesp googlesp.py
# Kinect Slot server
konsole -p tabtitle="KinectSlot" -e rosrun kslot kslot -s
GraphProc
GSpeechProc
MVProc
rosnode list
}
#######################################################################
# Останов системы
#######################################################################
StopProc ()
{
echo Stop all ER servers
rosnode kill ermain
rosnode kill erscript
rosnode kill ersenfield
rosnode kill googlesp
rosnode kill gclient
rosnode kill qrcode
rosnode kill ermanctl
rosnode kill ardsrv
rosnode kill pllsrvl
rosnode kill facedetect
rosnode kill kslot
#
#
kill -9 $(ps -A | grep 'python2' | awk '{print $1}')
kill -9 $(ps -A | grep 'konsole' | awk '{print $1}')
kill -9 $(ps aux | grep -E 'googlesp googlesp.py' | awk '{print $2}')
rosnode list
}
#######################################################################
# Test functions
#######################################################################
TestQRProc ()
{
echo Start Test QR nodes
konsole -p tabtitle="QRCode" -e rosrun qrcode qrcode $IMAGE_SOURCE
20
# SensorField server
konsole -p tabtitle="SensorField" -e rosrun ersenfield ersenfield
$CDIR/etc/er/er.voc
# Main server
konsole -p tabtitle="ER Main Server" -e rosrun ermain ermain
}
TestFaceDetectProc ()
{
# FaceDetect server
konsole -p tabtitle="FaceDetect" -e rosrun facedetect facedetect
$IMAGE_SOURCE
# SensorField server
konsole -p tabtitle="SensorField" -e rosrun ersenfield ersenfield
$CDIR/etc/er/er.voc
# Main server
konsole -p tabtitle="ER Main Server" -e rosrun ermain ermain
}
#######################################################################
#
#######################################################################
GSpeechProc ()
{
echo Start GSpeech nodes
# GoogleSpeech server
konsole -p tabtitle="GoogleSpeech" -e rosrun googlesp googlesp.py
# GoogleSpeech client
konsole -p tabtitle="GClient" -e rosrun gclient gclient
$CDIR/etc/er/gclient.voc
rosnode list
}
GraphProc ()
{
echo Start Graph nodes
# FaceDetect server
konsole -p tabtitle="FaceDetect" -e rosrun facedetect facedetect
$IMAGE_SOURCE
rosnode list
}
MVProc ()
{
echo Start Move nodes
# Arduino server
konsole -p tabtitle="Arduino" -e rosrun ardsrv ardsrv
$CDIR/etc/er/ardsrv.ini
# Pololu server
konsole -p tabtitle="PLL" -e rosrun pllsrvl pllsrvl
$CDIR/etc/er/pllsrvl.ini
# SensorField server
21
konsole -p tabtitle="SensorField" -e rosrun ersenfield ersenfield
$CDIR/etc/er/er.voc
# Main server
konsole -p tabtitle="ER Main Server" -e rosrun ermain ermain
# ManCtl server
konsole -p tabtitle="ManCtl" -e rosrun ermanctl ermanctl
# Main script
konsole -p tabtitle="ER Script" -e rosrun erscript erscript
$CDIR/etc/er/automaton.ini $CDIR/etc/er/sens.descr $CDIR/etc/er/er.voc
rosnode list
}
#######################################################################
usage="\n\
Usage is: $0 command\n\
\n\
command:\n\
\tstart \t start all ER nodes\n\
\tstop \t stop ER nodes\n\
\tgs \t start GoogleSPeech nodes only\n\
\tgr \t start Graph Proc nodes only\n\
\tmv \t start Move ctl nodes only\n\
\tqr \t start Test QR nodes only\n\
\tfd \t start Test Face Detact nodes only\n\
";
if [ $# = 0 ] ; then
echo $usage;
exit
fi
case $1 in
start )
StartProc
exit ;;
stop )
StopProc
exit ;;
gs )
GSpeechProc
exit ;;
gr )
GraphProc
exit ;;
mv )
MVProc
exit ;;
qr )
TestQRProc
exit ;;
fd )
TestFaceDetectProc
exit ;;
esac
echo
echo "Unknown command: $1"
echo $usage;
22
exit
Скрипты автозапуска
ersysinit.sh
#!/bin/bash
#
# Инициализация системы
#
#ROSNAME=hydro
ROSNAME=indigo
source /opt/ros/$ROSNAME/setup.bash
source ~/ros/devel/setup.bash
echo 'Запускаем ROS' | festival --tts --language russian
#konsole --noclose -p tabtitle="roscore" -e roscore
/opt/ros/$ROSNAME/bin/roscore &
echo 'Запускаем сервисы' | festival --tts --language russian
#konsole --noclose -p tabtitle="roscore" -e ~/ros/scripts/startroscam
~/ros/scripts/startroscam
echo 'Готово' | festival --tts --language russian
x11vnc -usepw -display :0 -q -forever &
echo 'Запускаем систему' | festival --tts --language russian
~/ros/er start
echo 'Готово' | festival --tts --language Russian
on_shutdown_script.sh
#!/bin/bash
#
# Завершение работы
#
CDIR=~/ros
echo 'Выключаюсь' | festival --tts --language russian
$CDIR/er stop
echo 'Готово' | festival --tts --language russian
23
Приложение 5. Дополнительные документы
Автозапуск и удаленный доступ
 Малышев А.А. Администрирование ER2014// Рабочий отчет RWR-2014-07-29.3, М.: Robofob Lab, 2014
Описание узлов
 Воробьев В.В., Малышев А.А. Камера и Kinect // Рабочий отчет RWR-2014-07-26.2,
-М.: Robofob Lab, 2014
 Воробьев В.В. Скрипт распознавания голоса googlesp // Рабочий отчет RWR-201406-24.1, -М.: Robofob Lab, 2014
 Луцкий В.А. Программа взаимодействия с сервоконтроллером Pololu Maestro //
Рабочий отчет RWR-2014-06-01.2, -М.: Robofob Lab, 2014
 Луцкий В.А. Программа распознавания QR-кодов QRCode // Рабочий отчет RWR2014-06-01.1, -М.: Robofob Lab, 2014
Протокол связи с Arduino
 Карпов В.Э. Протокол rcX2 // Рабочий отчет RWR-2013-02-01.1, -М.: Robofob Lab,
2013
Прочее
 Чумаченко А.А. Работа с многоязычной системой синтеза речи Festival // Рабочий
отчет RWR-2014-07-22.2, -М.: Robofob Lab, 2014
Приложение 6. Установка пакетов
Ниже приводится сводный перечень пакетов, которые требуется установить для
системы.
1. Curses
sudo apt-get install libncurses5-dev libncursesw5-dev
2. Uvc_camera и OpenCV
sudo apt-get install ros-indigo-camera-umd ros-indigo-cv-bridge ros-indigo-opencv*
3. Festival
sudo apt-get install festival
sudo apt-get install festival-dev
sudo apt-get install festvox-ru
4. Arduino
sudo apt-get install arduino
5. Freenect
sudo apt-get install freenect
sudo apt-get install ros-indigo-freenect-launch
6. GoogleSpeech
sudo apt-get install flac
sudo apt-get install python-pyaudio
24
Прочие особенности, про которые не надо забывать
Для запуска узла обработки речевой команды используется узел
src/googlesp/scripts/googlesp.py
Соответствующий файл необходимо сделать исполняемым:
chmod a+x googlesp.py
Приложение 7. Работа с контроллерами Arduino и PololuMaestro
Для доступа к контроллерам Arduino и PololuMaestro необходимо, чтобы
пользователь принадлежал группе dialout.
Для этого можно выполнить следующие шаги:
1. Установить KUser
2. Запустить утилиту:
sudo kuser
3. Для выбранного пользователя установить требуемую группу dialout.
25
26
Скачать