Скрипты позволяют программировать робота на выполнение определенных действий. Путь к папке со скриптами: /opt/promobot/share/promobot_scripts/scripts/3.1/
Скрипт представляет собой текстовый файл json формата, который может содержать в себе следующие модули:
- arms
- neck
- torso
- drive
- eyes
- led
- play
- play_motion
- promo
- bash
Запуск модулей происходит параллельно. У каждой команды (command) должен быть уникальный id в рамках одного модуля
Модуль arms:
Команда на движение руки представляет собой:
"arms": [{"command": "x0 x1 x2 x3 x4 x5 x6 x7 x8", "id": 0}]
x0 - left или right (какая рука будет двигаться)
x1 - скорость движения (int)
x2 - направление движения руки вдоль туловища робота (int)
x3 - направление движения руки от туловища робота (int)
x4 - разворот руки в плече (int)
x5 - сгибание локтя (int)
x6 - разворот руки в локте (int)
x7 - движение кисти (int)
x8 - движение пальцев (int)
Модуль arms не имеет встроенного ограничения. При выполнении скрипта робот может ударить сам себя. Для выполнения скриптов с использованием рук рекомендуется использовать сервис MSS
Модуль neck:
Команда на движение головы представляет собой:
"neck": [{"command": "angle x0 x1 x2", "id": 0}]
x0 - скорость движения (int)
x1 - поворот головы вправо / влево (int)
x2 - поворот головы вверх / вниз (int)
Модуль torso:
Команда на движение торсом представляет собой:
"torso": [{"command": "angle x0 x1 x2 x3", "id": 0}]
x0 - скорость движения (int)
x1 - наклон вперед / назад (int)
x2 - наклон влево / вправо (int)
x3 - движение вверх / вниз (int)
Модуль drive:
Команда на езду представляет собой:
"drive": [{"command": "x0 x1", "id": 0}, {"command": "sleep x2", "id": 1}]
x0 - направление движение: forward, back, right, left (left, right - поворт вокруг своей оси)
x1 - скорость движения (int)
x2- время в секундах (int)
Линейная скорость для команд forward и back задаются в пределах от 0 - 1.0 (где 0.5 сопоставимо со скоростью с зажатой кнопкой B на джойстике, а 1.0 сопоставимо со скоростью с зажатой кнопкой A).
Угловая скорость для команд left и right задаются в пределах от 0 - 5.0 (где 2.5 сопоставимо со скоростью с зажатой кнопкой B на джойстике, а 5.0 сопоставимо со скоростью с зажатой кнопкой A).
Модуль eyes:
Команда на отправку эмоции представляет собой:
"eyes": [{"command": "pub x0", "id": 0}]
x0 - anger.gif, default.gif, heart.gif, laugh.gif, sad_wave.gif, scan.gif, smile.gif, sorrow.gif, surprise.gif, wink.gif
Модуль led:
Команда на изменение подсветки представляет собой:
"led": [{"command": "pub head x0 x1 x2 x3 x4 x5", "id": 0}]
x0 - sharp_blink – резкое мигание, sharp_on – резкое зажечь, sharp_off – резкое погасить, smooth_blink – плавное мигание, smooth_on – плавно зажечь, smooth_off – плавно погасить
x1 - время включения/отключения (не более 65 секунд) (int)
x2 - кол-во циклов (для sharp_blink и smooth_blink) (int)
x3 - RGB цвет подсветки (в формате HEX, например, #FFFFFF)
x4 - сектор (всего 9 доступно секторов) (int) (при передаче 0 горят все)
x5 - сохранять сектор подсвеченным в следующей итерации, или нет (boolean)
Модуль play:
Команда на воспроизведение аудиофайла представляет собой:
"play": [{"command": "play x0", "id": 0}, {"command": "sleep x1", "id": 1}, {"command": "stop", "id": 2}]
x0 - название аудиофайла с расширением (song.mp3)
x1 - время воспроизведения в секундах (int)
Для корректного воспроизведения аудиофайла он должен находиться в /home/promobot/Music
Модуль play_motion:
Команда на запуск скрипта MSS:
"play_motion": [{"command": "play x0", "id": 0}, {"command": "sleep x1", "id": 1}]
x0 - название скрипта с расширением .yaml (script.yaml)
x1 - время в секундах (int)
Модуль promo:
Команда на запуск промо-материала:
"promo": [{"command": "url x0", "id": 0}, {"command": "sleep x1", "id": 1}]
x0 - название изображения с расширением (image.jpg), либо ссылка на сайт (https://google.com)
x1 - время в секундах (int)
Промо-материал отобразится, если робот будет запущен (нажата кнопка Play). Файл с изображением должен находится в /home/promobot/Pictures
Модуль bash:
Команда на запуск сторонних скриптов:
"bash": [{"command": x0, "id": 0}]
x0 - путь к bash скрипту, например, "opt/promobot/share/promobot_scripts/scripts/3.1/UpVolume.sh"
Скрипт должен быть исполняемым
Пример использования нескольких модулей в скрипте:
{ "parts": [{ "arms": [{ "command": "right 50 45 0 0 0 0 0 0", "id": 0 }, { "command": "left 50 0 0 0 45 0 0 0", "id": 1 }, { "command": "sleep 3.0", "id": 3 }, { "command": "right 50 0 0 0 0 0 0 0", "id": 4 }, { "command": "left 50 0 0 0 0 0 0 0", "id": 5 }] } #левая и правая руки примут заданное положение (правая поднимется вдоль корпуса на 45 градусов, левая согнется в локте на 45 градусов), подождет 3 секунды, вернет в исходное положение , { "neck": [{ "command": "angle 20 0 20", "id": 0 }, { "command": "sleep 3.0", "id": 1 }, { "command": "angle 20 0 0", "id": 2 }] } #робот наклонит голову вниз, подождет три секунды, вернет в исходное положение , { "torso": [{ "command": "angle 20 20 0 0", "id": 0 }, { "command": "sleep 3.0", "id": 1 }, { "command": "angle 20 0 0 0", "id": 2 }] } #робот наклонится вперед, подождет три секунды, вернется в исходное положение , { "play": [{ "command": "play song.mp3", "id": 0 }, { "command": "sleep 30", "id": 1 }, { "command": "stop", "id": 2 }] }, { "led": [{ "command": "pub head sharp_on 65 1 #c51111 0 false", "id": 0 }, { "command": "sleep 0.2", "id": 1 }] }, { "bash": [{ "command": "/opt/promobot/share/promobot_scripts/scripts/3.1/UpVolume.sh", "id": 0 }] }, { "drive": [{ "command": "forward 0.5", "id": 0 }, { "command": "sleep 1.0", "id": 1 }, { "command": "left 0.5", "id": 2 }, { "command": "sleep 1.0", "id": 3 }] }, { "play_motion": [{ "command": "play script.yaml", "id": 0 }, { "command": "sleep 60", "id": 1 }] }, { "eyes": [{ "command": "pub heart.gif", "id": 0 }, { "command": "sleep 3.0", "id": 1 }] }, { "promo": [{ "command": "url Image.jpg", "id": 0 }, { "command": "sleep 5", "id": 1 }, { "command": "url https://google.com", "id": 2 }, { "command": "sleep 5", "id": 3 }] }] }