Перейти к основному содержимому
Версия: Bbrain 1.0

Пакет speakers_driver

Назначение: Пакет speakers_driver обеспечивает вывод звука на внешние динамики: воспроизведение аудио, установку громкости.


Содержание пакета

speakers_driver/
├── CMakeLists.txt
├── package.xml
├── launch/
│ └── speakers_driver.launch
├── config/
│ └── speakers_driver.yaml
├── scripts/
│ └── main.py
├── srv/
│ └── GetVolume.srv
│ └── PlayAudio.srv
│ └── SetVolume.srv
└── examples/
└── example_file.py
└── file.mp3

Запуск пакета

  • Пакет speakers_driver запускается автоматически при старте устройства.
  • Запуск инициируется через launch-файл robohead_controller_py.launch из пакета robohead_controller.

Основные возможности

Пакет speakers_driver предоставляет следующие функции для работы с внешними динамиками:

  1. Воспроизведение аудио-файлов

    • Сервис: robohead_controller/speakers_driver/PlayAudio

    • Параметр:

      АргументОписание
      path_to_fileПуть к MP3/WAV на устройстве. :::tip Вместо аудио-файла можно указать путь до любого стримингового аудио-потока в Интернете (например, онлайн-радио). Если оставить пустым, то произойдет принудительная остановка текущего воспроизводимого аудио.:::
      is_blocking1 — дождаться окончания; 0 — неблокирующий вызов
      is_cycled1 — зациклить воспроизведение; 0 — разовое воспроизведение
    • Пример:

    rosservice call robohead_controller/speakers_driver/PlayAudio "path_to_file: '/home/pi/robohead_ws/src/robohead/speakers_driver/examples/file.mp3'
    is_blocking: 1
    is_cycled: 0"
    • Коды возврата:

      КодОписание
      0Успех
      -1Файл не найден
  2. Установка уровня громкости

    • Сервис: robohead_controller/speakers_driver/SetVolume

    • Параметр:

      АргументОписание
      volumeГромкость в процентах (0–100)
    • Пример:

      rosservice call robohead_controller/speakers_driver/SetVolume "volume: 70"
    • Коды возврата:

      КодОписание
      0Успех
      -1Значение вне диапазона 0–100
  3. Получение текущего уровня громкости

    • Сервис: robohead_controller/speakers_driver/GetVolume

    • Описание: не требует аргументов

    • Пример:

      rosservice call robohead_controller/speakers_driver/GetVolume "{}"
    • Возвращаемое значение: текущее значение громкости (0–100 %)

Подробнее о настройке громкости динамиков: ->

Режим отладки

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

Шаг 1. Остановка всех запущенных пакетов

Остановите фоновый Linux-сервис:

sudo systemctl stop robohead.service

Шаг 2. Запуск пакета вручную

Запустите пакет отдельно через launch-файл:

roslaunch speakers_driver speakers_driver.launch 

Шаг 3. Особенности работы в режиме отладки

  • Пространство имен: сервисы пакета не имеют приставки /robohead_controller/. Используется /speakers_driver/... вместо /robohead_controller/speakers_driver/...

  • Файл конфигурации: настройки берутся из speakers_driver/config/speakers_driver.yaml вместо robohead_controller/config/speakers_driver.yaml


Шаг 4. Возможности тестирования

Воспроизведение аудиофайлов

Форматы: .mp3, .wav, путь до любого стримингового аудио-потока в Интернете (например, онлайн-радио).

Сервис: speakers_driver/PlayAudio

Параметры:

  • path_to_file — путь к файлу (оставьте пустым для остановки аудио).
  • is_blocking — блокирующий вызов (0 — нет, 1 — да). При блокирующем вызове сервиса в терминале, он будет висеть, пока воспроизведение не завершится.
  • is_cycled — зацикленное воспроизведение (0 — нет, 1 — да).

Пример вызова сервиса:

Воспроизведение файла находящегося по пути ~/robohead_ws/src/robohead/speakers_driver/examples/file.mp3

# Запустите в отдельном терминале
rosservice call /speakers_driver/PlayAudio "path_to_file: '/home/pi/robohead_ws/src/robohead/speakers_driver/examples/file.mp3'
is_blocking: 1
is_cycled: 0"

Установка уровня громкости

Сервис: speakers_driver/SetVolume

Параметр:volume — громкость в процентах (0–100)

Пример вызова сервиса:

Пример установки громкости 30%

rosservice call /speakers_driver/SetVolume "volume: 30"

Получение текущего уровня громкости

Сервис: /speakers_driver/GetVolume

Описание: не требует аргументов Пример вызова сервиса:

rosservice call /speakers_driver/GetVolume "{}" 

Возвращаемое значение: текущее значение громкости (0–100 %)

Пример работы с пакетом на Python

Команда для запуска примера с использованием пакета speakers_driver в Python:

# Запустите в отдельном терминале
rosrun speakers_driver example_file.py