Набор используемого оборудования:
- Raspberry Pi B+ (желательно, с Raspbian OS)
- радиоуправляемая модель автомобиля
- датчик расстояния HC-SR04
- наличие ПК с микрофоном
- Power Bank 5V.
Устанавливается ssh между ПК и Raspberry, запускается соответственно client и server, пользователь произносит нужную команду (отмечая начало и конец записи), после чего, в зависимости от результатов распознавания речи и адекватности команды автомобиль начинает движение. В определенные промежутки времени с заданной в коде периодичностью на стороне клиента происходит опрос датчика HC-SR04, и в случае, если расстояние до препятствия меньше, чем заданная величина, происходит снятие напряжения с определенных RPIO, вследствие чего происходит остановка движения.
- Стоит учитывать инертность вашего устройства. В нашем случае, соотношение масс оборудования и автомобиля было примерно равным, из за чего тормозной путь получался относительно продолжительным.
- Датчик HC-SR04. Учитывая физическую природу звука, стоит учитывать, что звуковая волна имеет свойство отражения, а соответственно, при приближении автомобиля к наклонным препятствиям, датчик, ввиду вышеперечисленного, может показывать неожиданные значения.
- Качество распознавания речи. В нашем проекте использовался Yandex Speech Kit. Иногда приходится сталкиваться с неточностью распознания (обычно такое происходит ввиду нечеткого произношения). Следует учитывать, что на отправку - распознавание - прием уходит некоторое время, поэтому реакция не мгновенная
Об используемых инструментах Python 2.7: В нашем проекте задействовались такие модули, как:
- ast - для преобразования строки в tuple
- datetime - таймер (например, для вызова опроса HC-SR04 через определенные промежутки времени)
- RPIO - для подачи / снятия напряжение на RPIO Raspberry
- signal - модуль для работы таймера
- socket - клиент - серверное взаимодействие
- xml.etree.ElementTree - для парсинга XML документа, приходящего с Yandex сервера
- requests - для запросов POST
- random - для генерации произвольных чисел, на основе которых формируются строки(для отправки на сервер Yandex)
- pyaudio, wave, os - для записи, сохранения, добавления, удаления записанных звуковых элементов