РУБРИК · портал

← Ко всем документам

Справочник команд Python

Команд в справочнике: 55

Начало работы

В программе на Python объект robot уже готов: создавать его и подключать модуль робота не нужно. Все команды пишутся как robot.команда(...).

Единицы: расстояние — миллиметры (mm) или сантиметры (cm), угол — градусы, время — секунды, скорость — проценты мощности от 1 до 100. Можно подключать math, random и time: import random.

Пауза в программе — robot.wait(секунды), а не time.sleep.

robot

Главный объект: через него ты управляешь роботом.

robot уже есть в программе: его готовит приложение робота, а для виртуального робота — приложение ученика. Пиши robot. и название команды.

Все команды этого справочника — это команды robot или мотора, который дал robot.motor(...).

robot.forward_cm(20)
robot.turn_left(90)
robot.say("Я приехал!")

robot.configure_drive(wheel_diameter_mm=None, track_width_mm=None, left_motor=None, right_motor=None, forward_sign=None)

Рассказать роботу, как он собран: колёса, расстояние между ними, разъёмы моторов.

Робот считает, на сколько градусов крутить колёса, чтобы проехать нужные сантиметры. Для этого он должен знать диаметр колеса и расстояние между колёсами.

Укажи только то, что отличается от настроек робота. Остальное останется как было.

Левое и правое колесо должны стоять в разных разъёмах.

Пиши каждый параметр с именем, как в примере.

ПараметрТипПо умолчаниюЧто это
wheel_diameter_mmчислоNone

Диаметр колеса, миллиметры. Больше нуля.

track_width_mmчислоNone

Расстояние между колёсами, миллиметры. Больше нуля.

left_motorбуква или числоNone

Разъём левого колеса: "A"–"D" или 1–4.

right_motorбуква или числоNone

Разъём правого колеса: "A"–"D" или 1–4.

forward_signчислоNone

1 — колёса крутятся «вперёд» как обычно. -1 — моторы стоят зеркально, и «вперёд» нужно перевернуть.

robot.configure_drive(wheel_diameter_mm=56, track_width_mm=110, left_motor="D", right_motor="C")
robot.forward_cm(30)

robot.close()

Закрыть связь с модулем робота.

Обычно вызывать не нужно: приложение робота закрывает связь само, когда программа заканчивается.

После close() команды движения больше не работают.

robot.forward_cm(10)
robot.close()

Моторы

Отдельный мотор выбирается по разъёму модуля робота: буквы A, B, C, D или номера 1–4 (1 — это D, 2 — C, 3 — B, 4 — A). Получить мотор: motor = robot.motor("A").

robot.motor(port)

Взять один мотор по разъёму, чтобы им управлять.

Возвращает мотор, которым можно управлять отдельно от колёс: крутить на угол, на время, непрерывно.

Если в разъёме нет мотора, команда мотора остановит программу с ошибкой RobotNoMotorError.

ПараметрТипПо умолчаниюЧто это
portбуква или число—

Разъём мотора: буква "A", "B", "C", "D" (как подписано на модуле робота) или номер от 1 до 4.

Возвращает. Мотор (`Motor`).

arm = robot.motor("A")
arm.run_angle(90)

motor = robot.motor(port)

Один мотор в выбранном разъёме.

Мотор получается командой robot.motor("A"). Сохрани его в переменную и вызывай его команды: run_angle, run_time, run, stop, reset_angle, свойство angle.

Мотор не знает про «лево» и «право»: +90 значит ровно «повернуть вал на 90 градусов в плюс».

lift = robot.motor("B")
lift.run_angle(180, speed=40)
lift.run_angle(-180, speed=40)

motor.port

Номер разъёма этого мотора.

Число от 1 до 4. Разъём D — это 1, C — 2, B — 3, A — 4.

Возвращает. Число от 1 до 4.

m = robot.motor("A")
print(m.port)

motor.run_angle(angle, speed=50, wait=True)

Повернуть вал мотора на заданный угол.

Мотор поворачивается на angle градусов и останавливается сам. Знак угла — направление: 90 в одну сторону, -90 в другую.

Если угол равен нулю, ничего не происходит.

ПараметрТипПо умолчаниюЧто это
angleчисло—

Угол, градусы. Минус — в другую сторону. 360 — полный оборот вала.

speedчисло50

Скорость, проценты мощности от 1 до 100. Чем больше, тем быстрее. Минус здесь не меняет направление: число меньше 1 считается как 1, и движение будет очень медленным. Направление задаёт знак угла, а не скорости.

waitTrue или FalseTrue

True — программа ждёт, пока робот доедет. False — программа сразу идёт дальше, а робот едет. Пока он едет, давай ему время командой robot.wait(секунды): без неё робот остановится меньше чем через секунду, а в конце программы — сразу. Пиши его с именем: wait=False.

m = robot.motor("C")
m.run_angle(90, speed=40)
m.run_angle(-90, speed=40)

motor.run_time(seconds, speed=50)

Крутить мотор заданное число секунд, потом остановить.

Мотор крутится seconds секунд, затем тормозит. Программа ждёт, пока время не выйдет.

Другие моторы эта команда не трогает.

ПараметрТипПо умолчаниюЧто это
secondsчисло—

Сколько секунд крутить.

speedчисло50

Скорость, проценты мощности от −100 до 100. Минус — вращение в другую сторону.

fan = robot.motor("A")
fan.run_time(3, speed=80)

motor.run(speed=50)

Включить мотор и сразу идти дальше.

Мотор крутится, а программа сразу идёт дальше. Мотор крутится, пока программа ждёт в robot.wait(секунды) или даёт новые команды движения. Если программа делает что-то другое без robot.wait, мотор остановится меньше чем через секунду. В цикле пиши robot.wait(0.1). В конце программы мотор останавливается. Остановить раньше: motor.stop().

ПараметрТипПо умолчаниюЧто это
speedчисло50

Скорость, проценты мощности от −100 до 100. Минус — вращение в другую сторону.

fan = robot.motor("A")
fan.run(70)
robot.wait(2)
fan.stop()

motor.stop()

Затормозить моторы.

Тормозит мотор. Внимание: модуль робота тормозит все моторы сразу, а не только этот.

Чтобы остановить только этот мотор, пиши motor.run(0).

fan = robot.motor("A")
fan.run(70)
robot.wait(2)
fan.stop()

motor.angle

На сколько градусов повернулся вал мотора.

Сколько градусов повернулся вал с включения модуля робота или с последнего reset_angle(). Прошлые программы тоже считаются, поэтому в начале программы вызови reset_angle().

Поворот в плюс (как run_angle(90)) — плюс, в другую сторону — минус.

Возвращает. Число — градусы.

m = robot.motor("C")
m.reset_angle()
m.run_angle(90)
print(m.angle)

motor.reset_angle()

Обнулить счётчик угла мотора.

После этого motor.angle снова считает от нуля.

m = robot.motor("C")
m.reset_angle()
print(m.angle)

Движение

Эти команды ездят двумя колёсами сразу. Какие моторы левое и правое колесо, настроено у робота (или в блоке «инициализация движения»).

robot.forward(mm, speed=60, wait=True)

Проехать вперёд на заданное число миллиметров.

Оба колеса крутятся вперёд, пока робот не проедет путь. Отрицательное число поедет назад.

Расстояние робот считает по размеру колёс. Если колёса пробуксовывают, путь будет короче.

ПараметрТипПо умолчаниюЧто это
mmчисло—

Путь, миллиметры. 100 мм — это 10 см.

speedчисло60

Скорость, проценты мощности от 1 до 100. Чем больше, тем быстрее. Минус здесь не меняет направление: число меньше 1 считается как 1, и движение будет очень медленным.

waitTrue или FalseTrue

True — программа ждёт, пока робот доедет. False — программа сразу идёт дальше, а робот едет. Пока он едет, давай ему время командой robot.wait(секунды): без неё робот остановится меньше чем через секунду, а в конце программы — сразу. Пиши его с именем: wait=False.

robot.forward(200)
robot.forward(100, speed=90)

robot.back(mm, speed=60, wait=True)

Проехать назад на заданное число миллиметров.

Как forward, но в другую сторону.

ПараметрТипПо умолчаниюЧто это
mmчисло—

Путь, миллиметры.

speedчисло60

Скорость, проценты мощности от 1 до 100. Чем больше, тем быстрее. Минус здесь не меняет направление: число меньше 1 считается как 1, и движение будет очень медленным.

waitTrue или FalseTrue

True — программа ждёт, пока робот доедет. False — программа сразу идёт дальше, а робот едет. Пока он едет, давай ему время командой robot.wait(секунды): без неё робот остановится меньше чем через секунду, а в конце программы — сразу. Пиши его с именем: wait=False.

robot.back(150)

robot.forward_cm(cm, speed=60, wait=True)

Проехать вперёд на заданное число сантиметров.

То же, что forward, но в сантиметрах. Это команда блока «проехать вперёд».

ПараметрТипПо умолчаниюЧто это
cmчисло—

Путь, сантиметры.

speedчисло60

Скорость, проценты мощности от 1 до 100. Чем больше, тем быстрее. Минус здесь не меняет направление: число меньше 1 считается как 1, и движение будет очень медленным.

waitTrue или FalseTrue

True — программа ждёт, пока робот доедет. False — программа сразу идёт дальше, а робот едет. Пока он едет, давай ему время командой robot.wait(секунды): без неё робот остановится меньше чем через секунду, а в конце программы — сразу. Пиши его с именем: wait=False.

robot.forward_cm(40)
robot.turn_right(90)
robot.forward_cm(40, speed=80)

robot.back_cm(cm, speed=60, wait=True)

Проехать назад на заданное число сантиметров.

То же, что back, но в сантиметрах.

ПараметрТипПо умолчаниюЧто это
cmчисло—

Путь, сантиметры.

speedчисло60

Скорость, проценты мощности от 1 до 100. Чем больше, тем быстрее. Минус здесь не меняет направление: число меньше 1 считается как 1, и движение будет очень медленным.

waitTrue или FalseTrue

True — программа ждёт, пока робот доедет. False — программа сразу идёт дальше, а робот едет. Пока он едет, давай ему время командой robot.wait(секунды): без неё робот остановится меньше чем через секунду, а в конце программы — сразу. Пиши его с именем: wait=False.

robot.back_cm(25)

robot.turn_left(degrees, speed=40, wait=True)

Повернуть на месте налево.

Колёса крутятся в разные стороны, робот разворачивается на месте. Знак числа не важен: налево всегда налево.

ПараметрТипПо умолчаниюЧто это
degreesчисло—

Угол поворота робота, градусы. 90 — четверть круга, 360 — полный оборот.

speedчисло40

Скорость, проценты мощности от 1 до 100. Чем больше, тем быстрее. Минус здесь не меняет направление: число меньше 1 считается как 1, и движение будет очень медленным.

waitTrue или FalseTrue

True — программа ждёт, пока робот доедет. False — программа сразу идёт дальше, а робот едет. Пока он едет, давай ему время командой robot.wait(секунды): без неё робот остановится меньше чем через секунду, а в конце программы — сразу. Пиши его с именем: wait=False.

robot.turn_left(90)

robot.turn_right(degrees, speed=40, wait=True)

Повернуть на месте направо.

Как turn_left, но направо.

ПараметрТипПо умолчаниюЧто это
degreesчисло—

Угол поворота робота, градусы.

speedчисло40

Скорость, проценты мощности от 1 до 100. Чем больше, тем быстрее. Минус здесь не меняет направление: число меньше 1 считается как 1, и движение будет очень медленным.

waitTrue или FalseTrue

True — программа ждёт, пока робот доедет. False — программа сразу идёт дальше, а робот едет. Пока он едет, давай ему время командой robot.wait(секунды): без неё робот остановится меньше чем через секунду, а в конце программы — сразу. Пиши его с именем: wait=False.

robot.turn_right(180)

robot.drive(speed=60)

Ехать вперёд и не ждать конца движения.

Робот едет, а программа сразу идёт дальше. Робот едет, пока программа ждёт в robot.wait(секунды) или даёт новые команды движения. Если программа делает что-то другое без robot.wait, робот остановится меньше чем через секунду. В цикле пиши robot.wait(0.1). В конце программы робот останавливается. Остановить раньше: robot.stop().

Отрицательная скорость — назад.

ПараметрТипПо умолчаниюЧто это
speedчисло60

Скорость, проценты мощности от −100 до 100. Минус — вращение в другую сторону.

robot.drive(50)
robot.wait(2)
robot.stop()

robot.stop()

Остановить робота сразу.

Тормозит все моторы сразу. Останавливает и движение, которое ты запустил с wait=False.

Программа из блоков всегда заканчивается командой robot.stop().

robot.drive(60)
robot.wait(1)
robot.stop()

robot.reset_odometry()

Обнулить счётчики оборотов обоих колёс.

Счётчики угла колёс начинают считать с нуля.

robot.reset_odometry()
robot.forward_cm(10)

robot.last_step_residual

Насколько последнее движение не дотянуло до заказанного угла.

Для проверки точности. Для каждого колеса: requested — сколько градусов заказано, achieved — сколько провернулось, missing — разница, elapsed_s — сколько секунд шло движение.

Пока движений не было, значение — None.

Возвращает. Словарь: ключ — номер разъёма (1 — D, 2 — C, 3 — B, 4 — A), значение — `requested`, `achieved`, `missing`, `elapsed_s`. `None`, пока движений не было. Команды с `wait=False` значение не меняют.

robot.forward_cm(30)
print(robot.last_step_residual)

Звук и речь

robot.say(text)

Робот говорит вслух.

Телефон робота произносит текст голосом. Программа ждёт, пока робот договорит. Грубые слова заменяются на «пи-и-ип».

Если учитель выключил голос робота, фраза не звучит, а печатается в консоль.

ПараметрТипПо умолчаниюЧто это
textтекст—

Что сказать. Текст в кавычках, число или переменная.

robot.say("Привет, я РУБРИК!")
name = "Аня"
robot.say("Привет, " + name)

robot.sound(kind="beep")

Сыграть короткий встроенный звук.

Три звука: "beep" — писк, "error" — сигнал ошибки, "joy" — радостный.

Пиши только эти три слова. С другим словом программа может остановиться с ошибкой ValueError.

ПараметрТипПо умолчаниюЧто это
kindтекст'beep'

"beep", "error" или "joy".

robot.sound("joy")
robot.sound()

robot.play(name, wait=True)

Проиграть звук-файл с телефона робота.

Приложение ученика само отправляет звуки твоего проекта на робота перед запуском. Кроме них у робота есть встроенные: "privet_01", "poka_01", "tanec_01", "ulybka_01" и другие.

Имя пишется маленькими латинскими буквами, цифрами и знаком _, не длиннее 40 знаков. Если звука нет, робот пискнет, напишет в консоль, какие звуки у него есть, и программа пойдёт дальше.

ПараметрТипПо умолчаниюЧто это
nameтекст—

Имя звука без .mp3.

waitTrue или FalseTrue

True — ждать конца звука. False — играть и сразу идти дальше. Следующий звук обрывает прежний.

robot.play("privet_01")
robot.play("tanec_01", wait=False)
robot.turn_left(360)

Слух и голосовые команды

Слушает телефон робота. Приложение робота должно быть открыто на экране телефона: иначе Android не даёт роботу слушать. Виртуальный робот не слышит: команды слуха отвечают «ничего не слышно».

robot.listen_for(phrases)

Научить робота слушать твои фразы.

Добавляет твои фразы в то, что робот узнаёт. Вызови один раз в начале программы. Потом жди фразу командой wait_phrase(): она вернёт твою фразу точно так, как ты её написал.

Можно до 30 фраз, в каждой не больше 6 слов. Если робот не знает слово из фразы, программа остановится с ошибкой VoicePhraseError, и в ней будет сказано, какое слово не подошло.

ПараметрТипПо умолчаниюЧто это
phrasesсписок фраз—

Список текстов, например ["привет", "в чём смысл жизни"]. Одну фразу можно дать просто текстом.

robot.listen_for(["привет", "как дела"])
phrase = robot.wait_phrase(timeout=10)
if phrase == "привет":
    robot.say("Привет!")

robot.wait_phrase(timeout=None)

Ждать, пока кто-то скажет фразу.

Программа стоит и слушает. Если сказали одну из фраз listen_for, вернётся твоя фраза. Если другую — вернётся то, что услышал робот.

Без timeout ждёт сколько нужно: кнопка «Стоп» прервёт ожидание.

ПараметрТипПо умолчаниюЧто это
timeoutчисло или NoneNone

Сколько секунд ждать. None — без ограничения. Не меньше нуля.

Возвращает. Услышанная фраза (текст) или `None`, если за `timeout` секунд была тишина.

robot.listen_for(["поехали", "стоп"])
while True:
    phrase = robot.wait_phrase(timeout=5)
    if phrase == "поехали":
        robot.forward_cm(20)
    elif phrase == "стоп":
        break
    elif phrase is None:
        robot.say("Тихо тут")

robot.heard()

Последняя фраза, которую услышал робот.

Не ждёт: если никто ничего не говорил, сразу возвращает None. Фраза отдаётся один раз, потом забывается — поэтому она не сработает на каждом витке цикла.

Фразу отдаёт так, как услышал робот: без имени и с «е» вместо «ё». Фраза старше 3 секунд забывается.

Возвращает. Фраза (текст) или `None`.

while True:
    phrase = robot.heard()
    if phrase == "стоп":
        break
    if phrase:
        robot.say(phrase)
    robot.wait(0.1)

robot.heard_command(command)

Услышал ли робот голосовую команду.

Команды: "вперёд", "назад", "налево", "направо", "стоп", "привет", "пока", "да", "нет", "танцуй", "крутись", "покажи рожицы", "улыбнись", "в чём смысл жизни", "расскажи о себе", "рупор", "подними руку", "опусти руку".

Можно сказать с именем: «РУБРИК, вперёд». Близкие слова считаются одной командой: «влево» и «налево». Одно сказанное слово срабатывает один раз.

ПараметрТипПо умолчаниюЧто это
commandтекст—

Команда из списка выше.

Возвращает. `True`, если команду только что сказали, иначе `False`.

while True:
    if robot.heard_command("вперёд"):
        robot.forward_cm(10)
    if robot.heard_command("стоп"):
        break
    robot.wait(0.1)

robot.hear_level()

Насколько громко вокруг.

Число от 0 (тихо) до 100 (очень громко).

Возвращает. Число от 0 до 100.

while robot.hear_level() < 60:
    robot.wait(0.1)
robot.say("Ого, как шумно!")

robot.heard_clap()

Был ли хлопок.

Каждый хлопок отдаётся один раз: сразу после True следующий вызов вернёт False.

Пока крутятся моторы, хлопки не считаются.

Возвращает. `True`, если хлопнули, иначе `False`.

while not robot.heard_clap():
    robot.wait(0.1)
robot.forward_cm(20)

Экран и лицо

robot.face(emotion="happy")

Показать эмоцию на лице робота.

Лицо рисуется на экране телефона. Эмоции: "happy" — радость, "sad" — грусть, "angry" — злость, "surprised" — удивление, "sleepy" — сон, "neutral" — спокойствие, "wink" — подмигивание.

Незнакомое слово покажет спокойное лицо.

ПараметрТипПо умолчаниюЧто это
emotionтекст'happy'

Название эмоции из списка выше.

robot.face("surprised")
robot.wait(1)
robot.face("happy")

robot.screen_text(text)

Показать надпись на экране робота.

Грубые слова заменяются так же, как в say.

Надпись длиннее 120 знаков обрежется, в конце будет «…». После конца программы лицо и надпись видны ещё 10 секунд.

ПараметрТипПо умолчаниюЧто это
textтекст—

Что написать на экране.

robot.screen_text("Привет!")

robot.flash(on=True)

Включить или выключить фонарик телефона.

Фонарик светит, пока ты его не выключишь командой robot.flash(False).

Сам фонарик не гаснет даже после конца программы — выключи его в конце.

ПараметрТипПо умолчаниюЧто это
onTrue или FalseTrue

True — включить, False — выключить.

robot.flash(True)
robot.wait(2)
robot.flash(False)

Зрение

Камера телефона узнаёт предметы, которым ты научил робота. Незнакомое слово или предмет вне кадра робот одинаково считает «не вижу». Камера включается при первом вопросе и начинает видеть не сразу. В начале программы спроси один раз и подожди секунду: robot.see("мяч"), потом robot.wait(1). Виртуальный робот не видит: see отвечает False, see_where и see_distance — None.

robot.watch(*objects)

Сейчас ничего не делает.

Писать watch не нужно: камера включается сама при первом вопросе see, see_where или see_distance, а микрофон — при первой команде слуха. Команда только печатает строку в консоль.

ПараметрТипПо умолчаниюЧто это
*objectsтексты—

Названия предметов через запятую: robot.watch("мяч", "чашка").

robot.watch("мяч")
robot.wait(2)
robot.watch_stop()

robot.watch_stop()

Сейчас ничего не делает.

Камера и микрофон выключаются сами, когда программа заканчивается.

robot.see("мяч")
robot.wait(5)
robot.watch_stop()

robot.see(label)

Видит ли робот предмет прямо сейчас.

Если камеры нет или предмет вне кадра, ответ False.

ПараметрТипПо умолчаниюЧто это
labelтекст—

Название предмета, которому ты научил робота, например "мяч".

Возвращает. `True`, если предмет виден, иначе `False`.

for i in range(24):
    if robot.see("мяч"):
        robot.say("Вижу мяч!")
        break
    robot.turn_right(15)
    robot.wait(0.3)

robot.see_where(label)

Где предмет: слева, по центру или справа.

Слова русские: так их удобно сравнивать: robot.see_where("мяч") == "слева".

ПараметрТипПо умолчаниюЧто это
labelтекст—

Название предмета, которому ты научил робота, например "мяч".

Возвращает. `"слева"`, `"по центру"` или `"справа"`. `None`, если предмета не видно.

robot.see("мяч")
robot.wait(1)
where = robot.see_where("мяч")
if where == "слева":
    robot.turn_left(10)
elif where == "справа":
    robot.turn_right(10)

robot.see_distance(label)

Примерно сколько сантиметров до предмета.

Это оценка по камере, а не линейка: точность пока не измерена.

ПараметрТипПо умолчаниюЧто это
labelтекст—

Название предмета, которому ты научил робота, например "мяч".

Возвращает. Число от 5 до 200 — примерные сантиметры. `None`, если предмета не видно.

robot.see("мяч")
robot.wait(1)
d = robot.see_distance("мяч")
if d is not None and d < 30:
    robot.say("Мяч совсем рядом")

robot.turn_to(label, speed=35, timeout=10.0)

Повернуться к предмету, чтобы он оказался в центре кадра.

Робот поворачивается небольшими шагами и после каждого смотрит в камеру. Если предмета не видно, он осматривается, поворачивая направо.

Если за timeout секунд не получилось, робот останавливается и отвечает False.

ПараметрТипПо умолчаниюЧто это
labelтекст—

Название предмета, которому ты научил робота, например "мяч".

speedчисло35

Скорость, проценты мощности от 1 до 100. Чем больше, тем быстрее. Минус здесь не меняет направление: число меньше 1 считается как 1, и движение будет очень медленным.

timeoutчисло10.0

Сколько секунд искать. Не меньше одной.

Возвращает. `True`, если робот смотрит на предмет, иначе `False`.

if robot.turn_to("мяч"):
    robot.say("Нашёл!")
else:
    robot.say("Не вижу мяч")

robot.approach(label, cm=20, speed=45, timeout=20.0)

Подъехать к предмету.

Робот едет короткими отрезками и между ними снова смотрит, где предмет. Если предмет потерялся, робот ищет его 3 секунды. Не нашёл — отвечает False.

Ближе 5 сантиметров робот не подъезжает.

ПараметрТипПо умолчаниюЧто это
labelтекст—

Название предмета, которому ты научил робота, например "мяч".

cmчисло20

Примерно на каком расстоянии от предмета остановиться, сантиметры. Расстояние робот оценивает по камере.

speedчисло45

Скорость, проценты мощности от 1 до 100. Чем больше, тем быстрее. Минус здесь не меняет направление: число меньше 1 считается как 1, и движение будет очень медленным.

timeoutчисло20.0

Сколько секунд пытаться. Не меньше одной.

Возвращает. `True`, если робот доехал, иначе `False`.

if robot.approach("мяч", cm=15):
    robot.say("Я рядом")

robot.record_start()

Начать запись видео «глазами робота».

Пишет камера телефона, без звука. Видео остаётся на телефоне робота. Камере нужно время, чтобы включиться: в начале программы сначала спроси robot.see(...) и подожди секунду. Запись заканчивается командой robot.record_stop() или сама, когда программа закончится.

robot.see("мяч")
robot.wait(1)
robot.record_start()
robot.forward_cm(50)
robot.record_stop()

robot.record_stop()

Остановить запись видео.

Если запись не начиналась, ошибки нет.

robot.record_start()
robot.wait(5)
robot.record_stop()

Ожидание и время

robot.wait(seconds)

Подождать заданное число секунд.

Программа стоит, а мотор, который работает непрерывно (drive, run), продолжает крутиться. Кнопка «Стоп» прерывает ожидание.

Для пауз используй именно robot.wait. После time.sleep моторы остановятся примерно через 0,8 секунды.

ПараметрТипПо умолчаниюЧто это
secondsчисло—

Сколько секунд ждать. Можно дробное: 0.5.

robot.drive(50)
robot.wait(2)
robot.stop()

Ошибки

Ошибки робота можно ловить: import rubrick, потом except rubrick.RobotNoMotorError:. Все они наследуют rubrick.RubrickError. Неверное значение в команде (разъём "E", timeout=-1, wheel_diameter_mm=0) — это ошибка программы ValueError, а не ошибка робота. RubrickError её не ловит: исправь значение.

rubrick.RubrickError

Любая ошибка робота.

Все ошибки робота — потомки этой. except rubrick.RubrickError: поймает любую из них.

import rubrick

try:
    robot.forward_cm(30)
except rubrick.RubrickError:
    robot.say("Что-то пошло не так")

rubrick.RobotNotFoundError

Сейчас не используется: модуль робота не найден.

Сейчас робот эту ошибку не выдаёт. Если модуль робота не подключён, придёт RobotConnectionError.

import rubrick

try:
    robot.forward_cm(30)
except (rubrick.RobotConnectionError, rubrick.RobotNotFoundError):
    print("Модуль робота не подключён")

rubrick.RobotConnectionError

Модуль робота не подключён или связь оборвалась.

Так бывает, если модуль не подключён к телефону, кабель выдернули или модуль выключился. Проверь кабель между телефоном и модулем робота и питание модуля.

import rubrick

try:
    robot.forward_cm(30)
except rubrick.RobotConnectionError:
    print("Связь оборвалась")

rubrick.RobotTimeoutError

Сейчас не используется: модуль робота не ответил вовремя.

Сейчас робот эту ошибку не выдаёт. Если модуль робота не подключён, придёт RobotConnectionError.

import rubrick

try:
    robot.forward_cm(30)
except (rubrick.RobotConnectionError, rubrick.RobotTimeoutError):
    print("Модуль молчит")

rubrick.RobotProtocolError

Ошибка связи с модулем робота. Сейчас приходит только её потомок — «не доехал вовремя».

Сама по себе сейчас не приходит. Её потомок — RobotMotionTimeoutError: except rubrick.RobotProtocolError: поймает и его.

import rubrick

try:
    robot.forward_cm(100)
except rubrick.RobotProtocolError:
    print("Робот не доехал")

rubrick.RobotMotionTimeoutError

Движение не закончилось за отведённое время.

Часто так бывает, если колесо кто-то держит или робот упёрся в стену.

import rubrick

try:
    robot.forward_cm(100)
except rubrick.RobotMotionTimeoutError:
    robot.say("Я застрял")

rubrick.RobotMotionInterrupted

Движение прервали командой `robot.stop()` из другого потока.

Движение прервали командой robot.stop() из другого потока программы. В обычной программе эта ошибка не приходит: кнопка «Стоп» просто заканчивает программу.

import rubrick

try:
    robot.forward_cm(100)
except rubrick.RobotMotionInterrupted:
    # Сюда программа попадёт, только если другой поток вызвал robot.stop()
    pass

rubrick.RobotNoMotorError

В разъёме нет мотора.

В разъёме нет мотора, или вал не сдвинулся за 2 секунды. Обычно в сообщении названа буква разъёма. Проверь, что мотор вставлен, разъём выбран верно и колесо ничто не держит.

import rubrick

try:
    robot.motor("A").run_angle(90)
except rubrick.RobotNoMotorError:
    robot.say("В разъёме A нет мотора")

rubrick.VoicePhraseError

Робот не может слушать такую фразу.

Бывает, если слова нет в словаре робота, фраз больше 30, фраза пустая или длиннее 6 слов.

В сообщении сказано, что не так.

import rubrick

try:
    robot.listen_for(["раз два три четыре пять шесть семь"])
except rubrick.VoicePhraseError:
    print("Такую фразу робот не услышит")