Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Комментарий: Добавлен перевод на англ


{ "parts": [{
Блок кода
languagejs
Russian

Скрипты позволяют программировать робота на выполнение определенных действий. Путь к папке со скриптами: /opt/promobot/share/promobot_scripts/scripts/3.1/

Скрипт представляет собой текстовый файл json формата, который может содержать в себе следующие модули:

  • arms
  • neck
  • torso
  • drive
  • eyes
  • led
  • play
  • play_motion
  • promo
  • bash
Подсказка

Запуск модулей происходит параллельно. У каждой команды (command) должен быть уникальный id в рамках одного модуля 

Модуль arms:

Предупреждение

Модуль arms не имеет встроенного ограничения. При выполнении скрипта робот может ударить сам себя. Для выполнения скриптов с использованием рук рекомендуется использовать сервис MSS



Команда на движение руки представляет собой:

Блок кода
"arms": [{
"command": "
left
x0 
50
x1 
20
x2 
30
x3 
60
x4 
50
x5 
0
x6 
0
x7 
0
x8", 
"id": 0
}, {
}]


ПараметрОписаниеЗначение
x0какая рука будет двигатьсяleft или right
x1скорость движенияint
x2направление движения руки вдоль туловища роботаint
x3направление движения руки от туловища роботаint
x4разворот руки в плечеint
x5сгибание локтяint
x6разворот руки в локтеint
x7движение кистиint
x8движение пальцевint

Модуль neck:

Команда на движение головы представляет собой:

Блок кода
"neck": [{"command": "
right
angle 
50
x0 
20 30 60 50 0 0 0
x1 x2", 
"id": 
1 },{
0}]


ПараметрОписаниеЗначение
x0скорость движенияint
x1поворот головы вправо / влевоint
x2поворот головы вверх / внизint

Модуль torso:

Команда на движение торсом представляет собой:

Блок кода
"torso": [{"command": "
sleep 2
angle x0 x1 x2 x3", 
"id": 
2 },{
0}]


ПараметрОписаниеЗначение
x0скорость движенияint
x1наклон вперед / назадint
x2наклон влево / вправоint
x3движение вверх / внизint

Модуль drive:

Команда на езду представляет собой:

Блок кода
"drive": [{"command": "
left 50 0 0 0 0 0 0 0
x0 x1", 
"id": 
3
0}, {
"command": "
right
sleep 
50 100 50 0 50 70 0 0", "id": 4 },{
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": "
sleep
pub 
1
x0", 
"id": 
5 },{
0}]


ПараметрЗначение
x0anger.gif
default.gif
heart.gif
laugh.gif
sad_wave.gif
scan.gif
smile.gif
sorrow.gif
surprise.gif
wink.gif

Модуль led:

Команда на изменение подсветки представляет собой:

Блок кода
"led": [{"command": "
right
pub 
50
head 
100
x0 
50
x1 
30
x2 
50
x3 
70
x4 
0 0
x5", 
"id": 
6 },{
0}]


ПараметрОписаниеЗначение
x0

sharp_blink – резкое мигание

sharp_on – резкое зажечь

sharp_off – резкое погасить

smooth_blink – плавное мигание

smooth_on – плавно зажечь

smooth_off – плавно погасить

x1время включения / отключения (не более 65 секунд)int
x2кол-во циклов (для sharp_blink и smooth_blink)int
x3RGB цвет подсветкив формате HEX, например, #FFFFFF
x4

сектор

(всего 9 секторов доступно)

int

при передаче 0 горят все

x5сохранять сектор подсвеченным в следующей итерации, или нетboolean

Модуль play:

Команда на воспроизведение аудиофайла представляет собой:

Блок кода
"play": [{"command": "
sleep
play 
1
x0", 
"id": 
7
0}, {
"command": "
right 50 100 50 -10 50 70 0 0
sleep x1", 
"id": 
8
1}, {
"command": "
sleep 1
stop", 
"id": 
9 },{
2}]


ПараметрОписаниеЗначение
x0название аудиофайла с расширениемнапример, song.mp3
x1время воспроизведения в секундахint


Предупреждение

Для корректного воспроизведения аудиофайла он должен находиться в /home/promobot/Music

Модуль play_motion:

Команда на запуск скрипта MSS:

Блок кода
"play_motion": [{"command": "
right 50 100 50 30 50 70 0 0
play x0", 
"id": 
10
0}, {
"command": "sleep 
1
x1", 
"id": 
11 },{
1}]


ПараметрОписаниеЗначение
x0название скрипта с расширением .yamlнапример, script.yaml
x1время в секундахint

Модуль promo:

Команда на запуск промо-материала:

Блок кода
"promo": [{"command": "
right 50 100 50 -10 50 70 0 0
url x0", 
"id": 
12
0}, {
"command": "sleep 
1
x1", 
"id": 
13 },{ "command": "right 50 0 0 0 0 0 0 0", "id": 12 },{ "command": "sleep 1", "id": 13 },
1}]


ПараметрОписаниеЗначение
x0название изображения с расширением (image.jpg), либо ссылка на сайт (https://google.com)

например, image.jpg

x1время в секундахint


Предупреждение

Промо-материал отобразится, если робот будет запущен (нажата кнопка Play). Файл с изображением должен находиться в /home/promobot/Pictures

Модуль bash:

Команда на запуск сторонних скриптов:

Блок кода
"bash": [{"command": x0, "id": 0}]


ПараметрОписаниеЗначение
x0путь к bash скриптунапример, "opt/promobot/share/promobot_scripts/scripts/3.1/UpVolume.sh"


Предупреждение

Скрипт должен быть исполняемым


Пример использования нескольких модулей в скрипте:

Блок кода
languagebash
{
	"parts": [{
		"arms": [{
			"command": "
left
right 50 
40
45 
30
0 
60
0 
50
0 0 0 0",
			"id": 
14
0
		}, {
			"command": "
right
left 50 
40
0 
30
0 
60
0 
50
45 0 0 0",
			"id": 
15
1
		}, {
			"command": "sleep 
2
3.0",
			"id": 
16
3
		}, {
			"command": "
left
right 50 
80
0 
100
0 
-30
0 
50
0 
80
0 0 0",
			"id": 
17
4
		}, {
			"command": "
right
left 50 
80
0 
100
0 
-30
0 
50
0 
80
0 0 0",
			"id": 
18
5
		}
,{
]
	}
	
"command": "sleep 2", "id": 19 },
#левая и правая руки примут заданное положение
	# робот подождет 3 секунды, вернет руки в исходное положение 
	, {
		"neck": [{
			"command": "
left
angle 
50 80 100 -30 50 80
20 0 
0
20",
			"id": 
20
0
		}, {
			"command": "
right 50 80 100 -30 0 80 0 0
sleep 3.0",
			"id": 
21
1
		}, {
			"command": "
sleep 2
angle 20 0 0",
			"id": 
22
2
		}
,{
]
	
"command": "left 50 80 100 -30 0 80 0 0", "id": 23 },
}
	#робот наклонит голову вниз, подождет 3 секунды, вернет в исходное положение
	, {
		"torso": [{
			"command": "
right
angle 
50
20 
80 100 -30 50 80
20 0 0",
			"id": 
24
0
		}, {
			"command": "sleep 
2
3.0",
			"id": 
25
1
		}, {
			"command": "
left
angle 
50
20 0 0 0
0 0 0 0
",
			"id": 
100
2
		}
,
]
{
	}
	
"command": "right 50 0 0 0 0 0 0 0", "id": 101 },
#робот наклонится вперед, подождет 3 секунды, вернется в исходное положение
	, {
		"drive": [{
			"command": "
left 50 20 30 60 50 0 0 0
forward 0.5",
			"id": 
102
0
		}, {
			"command": "
right 50 20 30 60 50 0 0 0
sleep 1.0",
			"id": 
103
1
		}, {
			"command": "
sleep
left 
2
0.5",
			"id": 
104
2
		}, {
			"command": "
left
sleep 
50 0 0 0 0 0 0 0
1.0",
			"id": 
105
3
		}
,{
]
	
"command": "right 50 100 50 0 50 70 0 0", "id": 106 },
}
	#робот поедет вперед в течение 1 секунды, в течение 1 секунды начнет крутиться против часовой стрелки
	, {
		"eyes": [{
			"command": "
sleep
pub 
1
heart.gif",
			"id": 
107
0
		}, {
			"command": "
right 50 100 50 30 50 70 0 0
sleep 3.0",
			"id": 
108
1
		}
,{
]
	
"command": "sleep 1", "id": 109 },
}
	#на лице робота отобразятся сердечки
	, {
		"led": [{
			"command": "
right
pub 
50
head 
100
sharp_on 
50
65 
-10
1 
50
#c51111 
70
0 
0
false",
			"id": 
110
0
		}, {
			"command": "sleep 
1
3.0",
			"id": 
110
1
		}
,{
]
	
"command": "right 50 100 50 30 50 70 0 0", "id": 111 },
}
	#уши робота загорятся красным цветом на 3 секунды
	, {
		"play": [{
			"command": "
sleep
play 
1
song.mp3",
			"id": 
112
0
		}, {
			"command": "
right 50 100 50 -10 50 70 0 0
sleep 30",
			"id": 
113
1
		}, {
			"command": "
sleep 1
stop",
			"id": 
114
2
		}
,{
]
	
"command": "right 50 0 0 0 0 0 0 0", "id": 115 },
}
	#начнет воспроизводиться мелодия в течение 30 секунд
	, {
		"play_motion": [{
			"command": "
sleep
play 
1
script.yaml",
			"id": 
116
0
		}, {
			"command": "
left 50 40 30 60 50 0 0 0
sleep 60.0",
			"id": 
117
1
		}
,
]
{
	}
	
"command": "right 50 40 30 60 50 0 0 0", "id": 118 },
#запустится скрипт MSS, который будет выполняться 60 секунд
	, {
		"promo": [{
			"command": "
sleep
url 
2
Image.jpg",
			"id": 
119
0
		}, {
			"command": "
left 50 80 0 -30 50 80 0 0
sleep 5",
			"id": 
120
1
		}, {
			"command": "
right 50 80 0 -30 50 80 0 0
url https://google.com",
			"id": 
121
2
		}, {
			"command": "sleep 
2
5",
			"id": 
122
3
		}
,{
]
	
"command": "left 50 80 100 -30 50 80 0 0", "id": 123 },
}
	#на экране отобразится картинка, через 5 секунд отобразится сайт
	, {
		"bash": [{
			"command": "
right 50 80 100 -30 0 80 0 0
/opt/promobot/share/promobot_scripts/scripts/3.1/UpVolume.sh",
			"id": 
124
0
		}
,{
]
	
"command": "sleep 2", "id": 125 },{
#выполнится скрипт UpVolume.sh
	}]
}



English

Pagetitle
Robot scripts
Robot scripts

Scripts allow you to program a robot to perform specific actions. Scripts folder path: /opt/promobot/share/promobot_scripts/scripts/3.1/

The script is a json text file that can contain the following modules:

  • arms
  • neck
  • torso
  • drive
  • eyes
  • led
  • play
  • play_motion
  • promo
  • bash
Подсказка

The launch of modules happens in parallel. Each command should have a unique id in module scope.

Arms module:

Предупреждение

Модуль arms не имеет встроенного ограничения. При выполнении скрипта робот может ударить сам себя. Для выполнения скриптов с использованием рук рекомендуется использовать сервис MSS


A hand movement command is:

Блок кода
"arms": [{"command": "
left
x0 
50
x1 
80
x2 
100
x3 
-30
x4 
0
x5 
80
x6 
0
x7 
0
x8", 
"id": 
126 }, {
0}]


ParameterDescriptionValue
x0which hand to moveleft or right
x1speed of movementint
x2direction of movement of the arm along the body of the robotint
x3direction of movement of the arm from the body of the robotint
x4turn of the arm in the shoulderint
x5elbow flexionint
x6turn of the arm at the elbowint
x7hand movementint
x8finger movementint

Neck module:

A neck movement command is:


Блок кода
"neck": [{"command": "
right
angle 
50
x0 
80 100 -30 50 80 0 0
x1 x2", 
"id": 
127 },{
0}]


ParameterDescriptionValue
x0speed of movementint
x1head turning right / leftint
x2head turning up / downint

Torso module:

A torso movement command is:


Блок кода
"torso": [{"command": "
sleep 2
angle x0 x1 x2 x3", 
"id": 
128 },{
0}]


ParameterDescriptionValue
x0speed of movementint
x1tilt forward / backwardint
x2tilt left / rightint
x3movement up / downint

Drive module:

A drive command is:

Блок кода
"drive": [{"command": "
left 50 0 0 0 0 0 0 0
x0 x1", 
"id": 
129
0}, {
"command": "
right
sleep 
50 0 0 0 0 0 0 0", "id": 130 }, {
x2", "id": 1}]


ParameterDescriptionValue
x0direction of movement

forward, back, right, left

(left, right - turn around its axis)

x1speed of movementint
x2time in secondsint


Предупреждение

Linear velocity for forward and back commands is set in the range: 0 - 1.0

(where 0.5 is comparable to the speed with the B button held down on the controller (gamepad), and 1.0 is comparable to the speed with the A button held down).

The angular velocity for the left and right commands is set in the range: 0 - 5.0

(where 2.5 is comparable to the speed with the B button held down on the controller (gamepad), and 5.0 is comparable to the speed with the A button held down).

Eyes module:

An eyes command is:


Блок кода
"eyes": [{"command": "
sleep
pub 
2
x0", "id": 0}]


ParameterDescription
x0anger.gif
default.gif
heart.gif
laugh.gif
sad_wave.gif
scan.gif
smile.gif
sorrow.gif
surprise.gif
wink.gif

Led module:

A led command is:


Блок кода
"led": [{"command": "pub head x0 x1 x2 x3 x4 
x5", "id": 
131 }] }, { "torso
0}]


ParameterDescriptionValue
x0

sharp_blink

sharp_on

sharp_off

smooth_blink

smooth_on

smooth_off

x1switch-on / switch-off time (no more than 65 seconds)int
x2кол-во циклов (для sharp_blink и smooth_blink)int
x3RGB-color of illuminationHEX-format, e.g., #FFFFFF
x4

sector

(total 9 sectors available)

int

0 - all on

x5whether to keep the sector light on in the next iteration or notboolean

Play module:

A play command is:


Блок кода
"play": [{
"command": "
sleep
play 
2
x0", 
"id": 0
}, {
"command": "
angle 5000 -15 0 0
sleep x1", 
"id": 1
}, {
"command": "
sleep 0.7
stop", 
"id": 2
}, {
}]


ParameterDescriptionValue
x0audio file name with extensione.g., song.mp3
x1time in secondsint


Предупреждение

For correct playback of the audio file, it must be located in /home/promobot/Music

Play_motion module:

A play_motion command is:

Блок кода
"play_motion": [{"command": "
angle 5000 0 0 0
play x0", 
"id": 
3
0}, {
"command": "sleep 
0.7
x1", 
"id": 
4 },{
1}]


ParameterDescriptionValue
x0script name with the .yaml extensione.g., script.yaml
x1time in secondsint

Promo module:

A promo command is:

Блок кода
"promo": [{"command": "
angle 5000 -15 0 0
url x0", 
"id": 
5
0}, {
"command": "sleep 
0.7
x1", 
"id": 
6 }, {
1}]


ParameterDescriptionValue
x0image name with extension, or a link to the site

e.g., image.jpg

x1time in secondsint


Предупреждение

Promotional material will be displayed only if the robot is launched (Play button is pressed).

The image file must be located in /home/promobot/Pictures

Bash module:

A bash command is:


Блок кода
"bash": [{"command": 
"angle 5000 0 0 0", "id": 7 },
x0, "id": 0}]


ParameterDescriptionValue
x0bash script pathe.g., "opt/promobot/share/promobot_scripts/scripts/3.1/UpVolume.sh"


Предупреждение

Script must be executable

Example of using several modules in a script:

Блок кода
languagebash
{
	"parts": [{
		"arms": [{
			"command": "
sleep
right 
0.7
50 45 0 0 0 0 0 0",
			"id": 
8
0
		}, {
			"command": "
angle
left 
5000
50 
-15
0 0 0 45 0 0 0",
			"id": 
9
1
		}, {
			"command": "sleep 3.0
.7
",
			"id": 
10
3
		}, {
			"command": "
angle
right 
5000
50 0 0 0 0 0 0 0",
			"id": 
11
4
		}, {
			"command": "
sleep 3
left 50 0 0 0 0 0 0 0",
			"id": 
12
5
		}
,
]
{
	}
	
"command": "angle 5000 0 0 80", "id": 13 }, { "command": "sleep 4", "id": 14 },
# left and right hands will take the preset position
	# robot will wait for 3 seconds, then return the arms to their original position 
	, {
		"neck": [{
			"command": "angle 
5000
20 0 
0 -80
20",
			"id": 
15
0
		}, {
			"command": "sleep 3.0",
			"id": 
16
1
		}, {
			"command": "angle 
5000
20 0 0
0
",
			"id": 
17
2
		}
,
]
{
	}
	
"command": "sleep 4", "id": 18 }] }
# robot will tilt its head down, wait for 3 seconds, then return to its original position
	, {
		"
play
torso": [{
			"command": "
play pmf1.mp3
angle 20 20 0 0",
			"id": 0
		}, {
			"command": "sleep 
36
3.0",
			"id": 1
		}, {
			"command": "
stop
angle 20 0 0 0",
			"id": 2
		}]
	}
	# robot will tilt forward, 
{ "neck": [{ "command": "sleep 4", "id": 0 },
wait 3 seconds, then return to its original position
	, {
		"drive": [{
			"command": "
angle
forward 
30 100
0.5",
			"id": 
4
0
		}, {
			"command": "sleep 1.0",
			"id": 
5
1
		}, {
			"command": "
angle
left 
30 -100
0.5",
			"id": 
6
2
		}, {
			"command": "sleep 1.0",
			"id": 
7
3
		}
,
]
{
	}
	
"command": "angle 30 100 0", "id": 8 },
# robot will move forward for 1 second, then will rotate counterclockwise for 1 second
	, {
		"eyes": [{
			"command": "
sleep
pub 
1
heart.gif",
			"id": 
9
0
		}, {
			"command": "
angle 30 -100
sleep 3.0",
			"id": 
10
1
		}
,
]
{
	}
	
"command": "sleep 1", "id": 11 },
# hearts will appear on the robot's face
	, {
		"led": [{
			"command": "
angle
pub 
30
head 
100 0
sharp_on 65 1 #c51111 0 false",
			"id": 
12
0
		}, {
			"command": "sleep 
1
3.0",
			"id": 
13
1
		}
,
]
{
	}
	
"command": "angle 30 -100 0", "id": 14 },
# the ears of the robot will light up red for 3 seconds
	, {
		"play": [{
			"command": "
sleep
play 
1
song.mp3",
			"id": 
15
0
		}, {
			"command": "
angle
sleep 30
100 0
",
			"id": 
16
1
		}, {
			"command": "
sleep 1
stop",
			"id": 
17
2
		}
,
]
{
	}
	
"command": "angle 30 -100 0", "id": 18 },
# melody will start playing for 30 seconds
	, {
		"play_motion": [{
			"command": "
sleep
play 
1
script.yaml",
			"id": 
19
0
		}, {
			"command": "
angle
sleep 
30
60.0
0
",
			"id": 
20
1
		}
,
]
{
	}
	
"command": "sleep 1", "id": 21 },
# MSS script will start and run for 60 seconds
	, {
		"promo": [{
			"command": "
angle 30 0 0
url Image.jpg",
			"id": 
22
0
		}, {
			"command": "sleep 
1
5",
			"id": 
23
1
		}, {
			"command": "
angle 500 0 0
url https://google.com",
			"id": 
24
2
		}, {
			"command": "sleep 
1
5",
			"id": 
25
3
		}
,
]
{ "command": "angle 500 0 0", "id": 26 }, { "command": "sleep 1", "id": 27 }] }] }
	}
	# picture will be displayed on the screen and the website will be displayed 5 seconds later
	, {
		"bash": [{
			"command": "/opt/promobot/share/promobot_scripts/scripts/3.1/UpVolume.sh",
			"id": 0
		}]
	# UpVolume.sh script will run
	}]
}