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

Документация: ROS2 пакет robohead_interfaces

Общее описание

Пакет robohead_interfaces содержит пользовательские типы сообщений (messages) и сервисов (services), используемые нодами робоголовы. Пакет не содержит исполняемого кода — только определения интерфейсов.


Структура файлов

robohead_interfaces/
├── CMakeLists.txt
├── msg
│ ├── AudioData.msg
│ ├── ColorArray.msg
│ ├── Color.msg
│ └── TouchEvent.msg
├── package.xml
├── README.md
└── srv
├── ColorPalette.srv
├── Color.srv
├── Move.srv
├── PlayMedia.srv
├── SimpleCommand.srv
└── Speak.srv

Сообщения (Messages)

AudioData.msg

Сырые аудиоданные одного канала (один фрейм / чанк).

int16[] data
ПолеТипОписание
dataint16[]Массив аудиосемплов (16-бит, знаковые). Длина определяется параметром frames_per_buffer

Используется в: respeaker_driver, speech_recognizer


Color.msg

Цвет в формате RGB.

uint8 red
uint8 green
uint8 blue
ПолеТипДиапазонОписание
reduint80–255Красный канал
greenuint80–255Зелёный канал
blueuint80–255Синий канал

Используется в: respeaker_driver (LED-управление), ColorArray.msg, Color.srv, ColorPalette.srv


ColorArray.msg

Массив цветов (для управления каждым светодиодом индивидуально).

Color[] colors
ПолеТипОписание
colorsColor[]Массив цветов. Для ReSpeaker ожидается ровно 12 элементов

Используется в: respeaker_driver (топик set_color_manual)


TouchEvent.msg

Данные о касании с тачскрина.

int32 slot
int32 tracking_id
int32 x
int32 y
string state # "down", "move", "up"
ПолеТипОписание
slotint32Номер текущего касания (от 0 до 9 одновременных касаний)
tracking_idint32Уникальный ID-касания. Остается неизменным, пока палец касается тачскрина, после отрыва и повторного касания увеличивается на 1
xint32Координата X касания. Лежит в диапазоне разрешения тачскрина (может не совпадать с разрешением дисплея)
yint32Координата Y касания. Лежит в диапазоне разрешения тачскрина (может не совпадать с разрешением дисплея)
statestringТекущее состояние касания (см. подробнее таблицу состояний)
СостояниеОписание
downПалец коснулся тачскрина
moveПалец перемещается по тачскрину (публикация при изменении кординаты)
upПалец оторвался от тачскрина

Гарантируется, что в рамках одного tracking_id обязательно будет в самом начале down и в самом конце up. Если между касанием и отрывом произошло перемещение пальца, то между down и up обязательно будут сообщения move.

Используется в: media_driver


Сервисы (Services)

SimpleCommand.srv

Универсальный сервис для передачи одного целочисленного значения. Используется для команд типа «установить режим», «установить яркость», «получить громкость», «проверить idle».

int16 data
---
int16 data

Запрос

ПолеТипОписание
dataint16Команда / значение (смысл зависит от конкретного сервиса)

Ответ

ПолеТипОписание
dataint16Результат / статус (смысл зависит от конкретного сервиса)

Используется в:

НодаСервисЗапрос dataОтвет data
ears_driveris_idleигнорируется1 — idle, 0 — движется
neck_driveris_idleигнорируется1 — idle, 0 — движется
media_driverset_volumeгромкость 0–100установленная громкость или -1
media_driverget_volumeигнорируетсятекущая громкость 0–100
media_driveris_idle/audioигнорируется1 — idle, 0 — играет
media_driveris_idle/displayигнорируется1 — idle, 0 — играет
respeaker_driverset_modeрежим LED 0–50 — успех, -1 — ошибка
respeaker_driverset_brightnessяркость0 — успех, -1 — ошибка
speech_recognizer (KWS)set_mode0 (off) / 1 (on)установленный режим
speech_recognizer (ASR)set_mode0 (off) / 1 (grammar) / 2 (free)установленный режим

Move.srv

Команда перемещения двух осей с заданной длительностью (плавное движение).

int16 angle_a
int16 angle_b
float64 duration
---
int16 data

Запрос

ПолеТипОписание
angle_aint16Целевой угол первой оси (градусы)
angle_bint16Целевой угол второй оси (градусы)
durationfloat64Время движения (секунды). 0.0 — мгновенное перемещение

Ответ

ПолеТипОписание
dataint16Код результата

Коды ответа

КодЗначение
0Успех
-1angle_a вне допустимого диапазона
-2angle_b вне допустимого диапазона
-3duration отрицательный

Используется в:

Нодаangle_aangle_b
ears_driverЛевое ухоПравое ухо
neck_driverВертикальный угол (наклон)Горизонтальный угол (поворот)

PlayMedia.srv

Команда воспроизведения медиаконтента (видео/изображение + аудио).

string path_to_video_file
string path_to_audio_file
bool loop
---
int16 data

Запрос

ПолеТипОписание
path_to_video_filestringПуть к видео/изображению, URL или стоп-команда. Пустая строка — не трогать видеоплеер
path_to_audio_filestringПуть к аудио, URL или стоп-команда. Пустая строка — не трогать аудиоплеер
loopbooltrue — зацикленное воспроизведение, false — однократное

Ответ

ПолеТипОписание
dataint160 — успех, -1 — ошибка

Используется в: media_driver


Color.srv

Установка RGB-цвета (например, для всех светодиодов).

uint8 red
uint8 green
uint8 blue
---
int16 data

Запрос

ПолеТипДиапазонОписание
reduint80–255Красный
greenuint80–255Зелёный
blueuint80–255Синий

Ответ

ПолеТипОписание
dataint160 — успех, -1 — ошибка

Используется в: respeaker_driver (сервис set_color_all)


ColorPalette.srv

Установка двухцветной палитры для анимационных LED-режимов.

Color color_a
Color color_b
---
int16 data

Запрос

ПолеТипОписание
color_aColorПервый цвет палитры
color_bColorВторой цвет палитры

Ответ

ПолеТипОписание
dataint160 — успех, -1 — ошибка

Используется в: respeaker_driver (сервис set_color_palette)


Speak.srv

Синтез и озвучка речи по тексту.

string text
int16 voice
string path_to_save
bool put_accent
bool put_yo
bool play
---
int16 data

Запрос

ПолеТипОписание
textstringТекст для озвучки
voiceint16Выбор голоса
path_to_savestringПуть для сохранения файла с синтезированной речью
put_accentboolДа/Нет расставить ударения автоматически
put_yoboolДа/Нет расставить е/ё автоматически
playboolДа/Нет расставить воспроизвести (через media_driver) синтезированное аудио автоматически

Ответ

ПолеТипОписание
dataint16Код результата

Коды ответа

КодЗначение
0Успех
-1Пустой текст
-2Недопустимый индекс голоса (вне диапазона 0–4)
-3Ошибка синтеза (исключение в Silero)
-4Синтез вернул None (ошибка записи файла или создания директории)
-5play=true, но параметр srv_play_media не настроен
-6Ошибка воспроизведения через media_driver

Используется в: silero_tts


Сводная таблица

Сообщения

ИмяПоляНазначение
AudioDataint16[] dataАудиосемплы одного канала
Coloruint8 red, green, blueRGB-цвет
ColorArrayColor[] colorsМассив цветов (12 LED)
TouchEventint32 slot, int32 tracking_id, int32 x, int32 y, string stateКасания тачскрина

Сервисы

ИмяЗапросОтветНазначение
SimpleCommandint16 dataint16 dataУниверсальная команда
Moveint16 angle_a, angle_b + float64 durationint16 dataПеремещение сервоприводов
PlayMediastring video, audio + bool loopint16 dataВоспроизведение медиа
Coloruint8 r, g, bint16 dataУстановка цвета
ColorPaletteColor a, bint16 dataУстановка палитры
Speakstring text, int16 voice, string path_to_save, bool put_accent, bool put_yo, bool playint16 dataСинтез речи

Сборка

colcon build --symlink-install --packages-select robohead_interfaces

Важно: robohead_interfaces должен быть собран перед всеми пакетами, которые его используют. При использовании colcon build без --packages-select зависимости разрешаются автоматически.