Робо-голова
  • Общая информация
  • Технические характеристики
  • Комплект поставки
  • Полезные ссылки
  • Быстрый старт
  • Настройка и обслуживание
    • Подключение к Робоголове по сети
      • Настройка подключения к Сети
      • Подключение по SSH к Робоголове
      • Подключение по SFTP
      • Подключение через VSCode
    • Смена данных устройства
    • Выключение головы
    • Возврат к заводским настройкам
    • Ubuntu-сервис
    • Подключение аккумулятора
    • Зарядка батареи
    • Подключение сервоприводов к плате расширения
  • Интеграция с роботом TurtleBro
  • Устройство головы
    • Аппаратная конфигурация
    • Программное обеспечение
    • ROS-пакеты
      • robohead_controller
      • display_driver
      • neck_driver
      • ears_driver
      • speakers_driver
      • respeaker_driver
      • voice_recognizer_pocketsphinx
        • ROS-нода ~kws_recognizer
        • ROS-нода ~cmds_recognizer
        • Настройка собственных команд и ключевых слов для распознавания
      • sensor_driver
      • usb_cam
  • Кейсы взаимодействия
    • 1. Смена ресурс-пака стандартных действий
    • 2. Внесение изменений в стандартные действия
    • 3. Написание своего действия для robohead_controller
    • 4. Создание своих сценариев взаимодействия без использования robohead_controller
    • 5. Создание ROS-пакета со своим сценарием взаимодействия и его автозагрузка
Powered by GitBook
On this page
  1. Устройство головы
  2. ROS-пакеты

respeaker_driver

Previousspeakers_driverNextvoice_recognizer_pocketsphinx

Last updated 1 month ago

В Робо-Голове используется - это сборка микрофонов (далее - микрофон), имеющая следующие возможности:

  • фильтровать шумы входного сигнала

  • отсекать звуки, проигрываемые устройством

  • определять направление, откуда идет звук

  • Бонус: управлять светодиодами на плате

Для взаимодействия с этим микрофоном используется пакет respeaker_driver.


Запуск пакета через CLI:

Перед экспериментами отключите все запущенные пакеты. В частности, остановите , чтоб отключить пакеты, запущенные автоматичеси: sudo systemctl stop robohead.service

roslaunch respeaker_driver respeaker_driver.launch

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


ROS-Топики

  • /respeaker_driver/audio/channel_0 Тип сообщения: audio_common_msgs/AudioData Звук, аппаратно-обработанный на микрофоне

  • /respeaker_driver/audio/channel_1 Тип сообщения: audio_common_msgs/AudioData Звук с микрофона №1 из сборки микрофонов

  • /respeaker_driver/audio/channel_2 Тип сообщения: audio_common_msgs/AudioData Звук с микрофона №2 из сборки микрофонов

  • /respeaker_driver/audio/channel_3 Тип сообщения: audio_common_msgs/AudioData Звук с микрофона №3 из сборки микрофонов

  • /respeaker_driver/audio/channel_4 Тип сообщения: audio_common_msgs/AudioData Звук с микрофона №4 из сборки микрофонов

  • /respeaker_driver/audio/channel_5 Тип сообщения: audio_common_msgs/AudioData Звук, подающийся на воспроизведение через динамики

  • /respeaker_driver/audio/main Тип сообщения: audio_common_msgs/AudioData Главный аудио-канал, использующийся для дальнейшей программной обработки (распознавания команд). По факту, дублирует один из каналов 0-5 (По-умолчанию канал 0).

  • /respeaker_driver/doa_angle Тип сообщения: std_msgs/Int16 Содержит направление, откуда пришел звук, единицы измерения - градусы: -180...180 doa - Direction of Arrival. На корпусе красный светодиод указывает направление.

  • Топики/сервисы управления светодиодным кольцом и harware настройками ReSpeaker: coming soon

#TODO: UPDATE PHOTO


Просмотр doa_angle (направление, откуда пришел звук)

rostopic echo /respeaker_driver/doa_angle 

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

Пример работы с топиками аудио на Python (запись звука из топиков в .wav файл):

rosrun respeaker_driver example_recording.py

После записи в терминале будут выведены пути до сохраненных файлов.

Файл примера находится в директории examples этого пакета


Конфигурационный файл respeaker_driver/config/respeaker_driver.yaml:

  • usb/vendor_id - идентификатор вендора ReSpeaker`а (см. офиц. документацию ReSpeaker)

  • usb/product_id - идентификатор устройства ReSpeaker (см. офиц. документацию ReSpeaker)

  • usb/reset_time_sleep - задержка при программном переподключении к ReSpeaker (если случилась ошибка при первичной инициализации)

  • usb/timeout - таймаут при передаче данных с/на ReSpeaker

  • audio/rate — частота дискретизации сигнала с микрофона (см. офиц. документацию ReSpeaker)

  • audio/chunk - количество frame`ов в буфере, то же самое что: period, framebuffer и т.д.

  • led/brightness - стандартная яркость светодиодного кольца

  • led/A_color - цвет А в палитре светодиодного кольца (светодиод, указывающий направление звука, по умолчанию - красный)

  • led/B_color - цвет Б в палитре светодиодного кольца (заливка, по умолчанию - белый)

  • ros/topic_audio_main_name - название топика для 'основного' аудио-канала (по факту, дублирующего какой-то из каналов 0..5)

  • ros/topic_audio_channel_0_name - название топика для аудио-канала №0

  • ros/topic_audio_channel_1_name - название топика для аудио-канала №1

  • ros/topic_audio_channel_2_name - название топика для аудио-канала №2

  • ros/topic_audio_channel_3_name - название топика для аудио-канала №3

  • ros/topic_audio_channel_4_name - название топика для аудио-канала №4

  • ros/topic_audio_channel_5_name - название топика для аудио-канала №5

  • ros/topic_doa_angle_name - название топика для doa_angle

  • ros/main_channel - определяет, какой канал (0..5) будет дублироваться в "основной" main_channel

  • doa_yaw_offset - "поворачивает" приходящий doa_angle на заданное количество градусов (>0 - против часовой стрелки, <0 - по часовой стрелке). Полезно при физическом изменении ориентации ReSpeaker`а

ReSpeaker USB Mic Array
Ubuntu-сервис
Рис. 1 - градуировка направления звука