Управление подсветкой микрофонного модуля

Модуль ReSpeaker USB Mic Array оснащён кольцом из RGB-светодиодов (Pixel Ring). Подсветку можно настроить через ROS-сервис и параметры конфигурации.


Конфигурация подсветки

Основные настройки находятся в конфигурационном файле respeaker_driver.yaml:

# ~/robohead_ws/src/robohead/robohead_controller/config/respeaker_driver.yaml

led:
  brightness: 10 # 0..31 яркость светодиодной панели
  A_color: # цвет светодиода, указывающего направление свечения
    - 255 # R-red
    - 0 # G-green
    - 0 # B-blue
  B_color: # цвето светодиодов заливки
    - 255 # R-red
    - 255 # G-green
    - 255 # B-blue
  mode: 1
# modes: 
# 0 - off
# 1 - trace
# 2 - listen
# 3 - wait
# 4 - speak
# 5 - spin

Примечание: яркость регулируется значением 0 (минимум) … 31 (максимум), цвета задаются списком из трёх байт (RGB). Сайт на котором можно по палитре получить значения R, G и B ->


ROS-сервисы для управления светодиодами

Пакет respeaker_driver предоставляет несколько сервисов и топиков для тонкой настройки подсветки микрофонного модуля (изменения сохраняются до перезапуска пакета):

1. Сервис SetBrightnessLED

  • Сервис: robohead_controller/respeaker_driver/SetBrightnessLED

  • Описание: устанавливает яркость всей подсветки: (0–31).

  • Пример:

    rosservice call /robohead_controller/respeaker_driver/SetBrightnessLED "brightness: 15"

2. SetColorPaletteLED

  • Сервис: robohead_controller/respeaker_driver/SetColorPaletteLED

  • Описание: задаёт два цвета:

    • colorA — светодиод, следящий за направленим звука;

    • colorB — заливка остальных светодиодов подсветки.

  • Параметры: RGB-списки [0–255,0–255,0–255].

  • Пример:

    rosservice call /robohead_controller/respeaker_driver/SetColorPaletteLED "colorA:
    - 255
    - 0
    - 0
    colorB:
    - 0
    - 123
    - 255"

3. SetModeLED

  • Сервис: robohead_controller/respeaker_driver/SetModeLED

  • Описание: переключает режим работы светодиодного кольца. Ниже перечислены все режимы:

Код
Режим
Поведение и параметры

0

off

Полное отключение подсветки.

1

trace

Режим «слежения»: заливается цветом B_color, а A_color указывает направление звука.

2

listen

Режим «ожидания»: постоянная подсветка всего кольца цветами A_color (указательный LED) и B_color (фон).

3

wait

Переключение между A_color и B_color через заданные интервалы (мигание). Не следит за направлением звука!

4

speak

Чередование: эффекты «бегущей волны» цветами A_color/B_color. Не следит за направлением звука!

5

spin

Анимация: постепенная заливка кольца цветом A_color с эффектом затухания предыдущих светодиодов. Не следит за направлением звука!

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

    rosservice call /robohead_controller/respeaker_driver/SetModeLED "mode: 1"

4. Сервис SetColorAllLED

  • Сервис: robohead_controller/respeaker_driver/SetColorAllLED

  • Описание: заливает все светодиоды одним цветом.

  • Параметры: три отдельных канала r, g, b (0–255).

  • Пример:

    rosservice call /robohead_controller/respeaker_driver/SetColorAllLED "r: 254
    g: 127
    b: 64"

5. Топик SetColorManualLED

  • Топик: robohead_controller/respeaker_driver/SetColorManualLED

  • Тип сообщения: std_msgs/ColorRGBA

  • Описание: позволяет задать индивидуальный цвет для каждого из 12 светодиодов кольца. Цвета задаются массивом из 12 сообщений типа std_msgs/ColorRGBA значений RGB.

  • Пример:

 rostopic pub /robohead_controller/respeaker_driver/SetColorManualLED respeaker_driver/SetColorManualLED "colors:
- {r: 0.0, g: 0.0, b: 255.0, a: 0.0}
- {r: 0.0, g: 255.0, b: 0.0, a: 0.0}
- {r: 255.0, g: 0.0, b: 0.0, a: 0.0}
- {r: 0.0, g: 0.0, b: 255.0, a: 0.0}
- {r: 0.0, g: 255.0, b: 0.0, a: 0.0}
- {r: 255.0, g: 0.0, b: 0.0, a: 0.0}
- {r: 0.0, g: 0.0, b: 255.0, a: 0.0}
- {r: 0.0, g: 255.0, b: 0.0, a: 0.0}
- {r: 255.0, g: 0.0, b: 0.0, a: 0.0}
- {r: 0.0, g: 0.0, b: 255.0, a: 0.0}
- {r: 0.0, g: 255.0, b: 0.0, a: 0.0}
- {r: 255.0, g: 0.0, b: 0.0, a: 0.0}"

Примечания

  • Остальные параметры конфигурационного файла (USB, audio, ROS-топики) отвечают за инициализацию устройства и поток аудио и не влияют на подсветку.

  • Настройки led.A_color и led.B_color из конфигурационного файла используются как значения по умолчанию при старте Робоголовы.

  • После изменения конфигурации перезапустите сервис:

    sudo systemctl restart robohead.service

Last updated