Отчет по научно-исследовательской работе «Базовые механизмы управления мобильным презентационным роботом» Версия 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