Блоки, специфичные для робота#

Введение#

Робот-герой Flop включает в себя двигатель всасывания, двигатель манипулятора и датчик зрения IQ AI.

Все стандартные блоки VEXcode VR доступны для использования на игровой площадке IQ 26-27 Level Up.

Ниже приведён список всех доступных блоков, разработанных специально для роботов:

Движение – Перемещение и отслеживание двигателей робота.

AI Vision — Захват и анализ объектов с помощью датчика IQ AI Vision.

В примерах на этой странице используется начальная позиция по умолчанию в игровой зоне.

Движение#

В игре Flop используется двигатель всасывания для сбора и выброса игровых элементов. Двигатель манипулятора поднимает и опускает манипулятор.

Каждый двигатель имеет свои собственные параметры направления. Названия направлений описывают, как этот двигатель движется на Flop.

Действия#

вращающийся двигатель#

Блок вращающийся двигатель позволяет бесконечно вращать двигатель в одном из двух направлений. Двигатель будет продолжать вращаться до тех пор, пока ему не будет дано другое действие, например, изменение направления вращения или остановка.

вращать [IntakeMotor v] [потребление v]

Параметры

Описание

мотор

Для вращения используется двигатель: впускной двигатель или двигатель манипулятора.

направление

Направление вращения двигателя:

  • Впускной двигатель — впуск или выпуск
  • Двигатель рычага — вверх или вниз

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
вращение [ArmMotor v] [вверх v] на (1) [обороты v] ▶
движение [вперёд v] на (40) [дюймы v] ▶
вращать [IntakeMotor v] [отвод v]

вращающийся двигатель для#

Блок spin motor for stack запускает двигатель на определенное расстояние. Скорость вращения зависит от текущего положения двигателя. Проект будет ждать, пока двигатель не закончит вращение, прежде чем запустится следующий блок в стеке.

вращение [ArmMotor v] [вверх v] на (500) [градусы v] ▶

Параметры

Описание

мотор

Для вращения используется двигатель: впускной двигатель или двигатель манипулятора.

направление

Направление вращения двигателя:

  • Впускной двигатель — впуск или выпуск
  • Двигатель рычага — вверх или вниз

расстояние

Расстояние, на которое вращается двигатель. Градусы указываются целыми числами. Обороты могут указываться целыми числами или десятичными дробями.

единица

Единица измерения расстояния: градусы или обороты.

и не ждите

Выберите стрелку ( ▶ ), чтобы развернуть блок, например, и не ждите, чтобы следующий блок в стеке выполнился немедленно.

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
вращение [ArmMotor v] [вверх v] на (1) [обороты v] ▶
движение [вперёд v] на (40) [дюймы v] ▶
вращать [IntakeMotor v] [отвод v]

поверните двигатель в нужное положение#

Блок spin motor to position вращает двигатель до заданного положения.

Положение двигателя — это расстояние, на которое он повернулся, измеряемое в градусах или оборотах. Один оборот равен 360 градусам. В начале проекта положение двигателя устанавливается на 0 градусов. Положение двигателя также можно установить с помощью блока установить положение двигателя.

Значения положения являются абсолютными. Это означает, что направление вращения зависит от текущего положения двигателя.

Например, если двигатель начинает вращаться с 0 градусов и достигает положения 720 градусов, он совершит два оборота вперед. Если же он затем достигнет положения 360 градусов, он совершит один оборот в обратном направлении, поскольку 360 меньше 720.

вращать [ArmMotor v] в положение (500) [градусы v] ▶

Параметры

Описание

мотор

Для вращения используется двигатель: впускной двигатель или двигатель манипулятора.

позиция

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

единица

Единица измерения положения: градусы или обороты.

и не ждите

Выберите стрелку ( ▶ ), чтобы развернуть блок, например, и не ждите, чтобы следующий блок в стеке выполнился немедленно.

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
вращать [ArmMotor v] в положение (1) [обороты v] ▶
движение [вперёд v] на (40) [дюймы v] ▶
вращать [IntakeMotor v] [отвод v]

остановить двигатель#

Блок остановки двигателя останавливает выбранный двигатель.

остановить [IntakeMotor v]

Параметры

Описание

мотор

Остановить нужно двигатель: IntakeMotor или ArmMotor.

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
вращение [ArmMotor v] [вверх v] на (1) [обороты v] ▶
движение [вперёд v] на (40) [дюймы v] ▶
вращать [IntakeMotor v] [отвод v]
ждать (1) секунд
остановить [IntakeMotor v]

Настройки#

установить скорость двигателя#

Блок установки скорости вращения двигателя определяет скорость вращения двигателя. Более высокое значение в процентах приводит к более быстрому вращению двигателя, а более низкое — к более медленному.

Каждый проект начинается с того, что по умолчанию каждый двигатель вращается со скоростью, составляющей 50% от обычной.

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

установить скорость [IntakeMotor v] на [50] [% v]

Параметры

Описание

мотор

Двигатель, регулирующий скорость: Двигатель всасывания или Двигатель манипулятора.

скорость

Скорость вращения двигателя. Проценты обозначаются целыми числами от 0% до 100%.

единица

Единица измерения скорости: %.

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
вращение [ArmMotor v] [вверх v] на (1) [обороты v] ▶
движение [вперёд v] на (40) [дюймы v] ▶
установить скорость [IntakeMotor v] на [100] [% v]
вращать [IntakeMotor v] [отвод v]

установить тайм-аут двигателя#

Блок set motor timeout в стеке задает время, в течение которого двигатель будет пытаться завершить движение. Если двигатель не сможет завершить движение за это время, он прекратит попытки и перейдет к следующему блоку в стеке. Это предотвращает застревание двигателя на определенном этапе движения.

установить таймаут [ArmMotor v] [1] секунд

Параметры

Описание

мотор

Для установки тайм-аута используется двигатель: IntakeMotor или ArmMotor.

время

Количество секунд, в течение которых двигатель может попытаться завершить движение. Это может быть целое число или десятичная дробь.

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
установить таймаут [ArmMotor v] [2] секунд
вращение [ArmMotor v] [вверх v] на (1) [обороты v] ▶
движение [вперёд v] на (40) [дюймы v] ▶
вращать [IntakeMotor v] [отвод v]

Позиция#

положение двигателя#

Положение двигателя — это расстояние, на которое он повернулся, измеряемое в градусах или оборотах. Один оборот равен 360 градусам. Блок регистрации положения двигателя сообщает о текущем положении двигателя.

В начале проекта положение двигателя устанавливается на 0 градусов. Если двигатель вращается на один полный оборот вперед, положение будет равно 360 градусам или 1 обороту. Если двигатель вращается в другом направлении, положение будет отрицательным.

(положение [ArmMotor v] в [градусы v])

Параметры

Описание

мотор

Двигатель, передающий информацию о положении: IntakeMotor или ArmMotor.

единица

Единица измерения положения двигателя: градусы или обороты.

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
пока <(положение [ArmMotor v] в [градусы v]) [math_less_than v] [360]>
вращать [ArmMotor v] [вверх v]
ждать (0.002) секунд
конец
остановить [ArmMotor v]
движение [вперёд v] на (40) [дюймы v] ▶
вращать [IntakeMotor v] [отвод v]

установить положение двигателя#

Положение двигателя — это расстояние, на которое он повернулся, измеряемое в градусах или оборотах. Один оборот равен 360 градусам. Блок установка положения двигателя изменяет текущее положение двигателя на новое значение.

Например, если двигатель повернулся на 180 градусов, установка положения на 0 градусов сбросит это положение со 180 до 0 градусов. Затем двигатель сможет вращаться в положениях, соответствующих этому новому значению.

установить положение [ArmMotor v] (0) [градусы v]

Параметры

Описание

мотор

Для установки положения используется двигатель: IntakeMotor или ArmMotor.

позиция

Значение положения для установки. Градусы указываются целыми числами. Повороты могут указываться целыми числами или десятичными дробями.

единица

Единица измерения положения: градусы или обороты.

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
установить положение [ArmMotor v] [0] [градусы v]
вращение [ArmMotor v] [вверх v] на (1) [обороты v] ▶
движение [вперёд v] на (40) [дюймы v] ▶
вращать [IntakeMotor v] [отвод v]

Ценности#

двигатель готов#

Логический блок двигатель завершил работу сообщает, закончил ли двигатель движение. Это можно использовать для управления временем выполнения других действий в зависимости от движения двигателя.

  • Верно — Двигатель завершил движение.

  • Неверно — Двигатель всё ещё вращается.

Этот блок работает совместно со следующими блоками Motion, имеющими параметр и не ожидающими: вращение двигателя в течение и вращение двигателя в положение.

<[ArmMotor v] завершён?>

Параметры

Описание

мотор

Для определения завершения движения используется двигатель IntakeMotor или ArmMotor.

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
вращать [ArmMotor v] в положение (1) [обороты v] ◀ и не ждать
ждать пока <[ArmMotor v] завершён?>
движение [вперёд v] на (40) [дюймы v] ▶
вращать [IntakeMotor v] [отвод v]

Двигатель вращается#

Логический блок двигатель вращается сообщает, вращается ли двигатель. Это можно использовать для управления временем выполнения других действий в зависимости от движения двигателя.

  • Верно — Мотор вращается.

  • Неверно — Двигатель не вращается.

Этот блок работает совместно со следующими блоками Motion, имеющими параметр и не ожидающими: вращение двигателя в течение и вращение двигателя в положение.

<[IntakeMotor v] вращается?>

Параметры

Описание

мотор

Для определения того, вращается ли двигатель: IntakeMotor или ArmMotor.

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
вращение [ArmMotor v] [вверх v] на (1) [обороты v] ▶
движение [вперёд v] на (40) [дюймы v] ▶
вращать [IntakeMotor v] [отвод v]
ждать пока <не <[IntakeMotor v] вращается?>>
остановить [IntakeMotor v]

скорость двигателя#

Блок регистрации скорости вращения двигателя отображает скорость вращения двигателя в процентах от -100% до 100%.

(скорость [IntakeMotor v] в [% v] :: custom-motion)

Параметры

Описание

мотор

Двигатель, передающий данные о скорости: IntakeMotor или ArmMotor.

единица

Единица измерения скорости вращения двигателя: %.

Пример

при запуске
[Score a Bean Bag in a Blue Goal.]
поворот [влево v] на (90) градусов ▶
движение [вперёд v] на (35) [дюймы v] ▶
поворот [вправо v] на (90) градусов ▶
вращение [ArmMotor v] [вверх v] на (1) [обороты v] ▶
движение [вперёд v] на (40) [дюймы v] ▶
вращать [IntakeMotor v] [отвод v]
ждать [0.2] секунд
вывести (скорость [IntakeMotor v] в [% v] :: custom-motion) ▶

ИИ-зрение#

Действия#

получить данные объекта#

Блок получить данные об объекте фильтрует данные из кадра датчика IQ AI Vision, сохраняя их в виде единой сигнатуры — сохраненного описания объекта, который датчик может распознать, например, игрового элемента на поле.

В наборе данных хранятся объекты, упорядоченные по ширине от наибольшего к наименьшему, начиная с индекса 0. Доступ к свойствам каждого объекта осуществляется с помощью блока свойство объекта. Если соответствующие объекты не обнаружены, возвращается пустой набор данных.

Блок стека для получения данных объекта.#
получить данные [AI Classifications v] из [AIVision v]

Параметр

Описание

подпись

Фильтрует набор данных, чтобы включить только данные заданной подписи. Доступные подписи:

  • Классификация ИИ — Обнаруживает красный, синий и желтый мешочки с фасолью.
  • AprilTags — Обнаруживает идентификаторы AprilTag, найденные на боковых сторонах ворот.

Пример

при запуске :: hat events
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Find and face the nearest red Bean Bag.]
установить скорость поворота (30) [% v]
установить цвет [object_counter v] [1]
получить данные [AI Classifications v] из [AIVision v]
повторить (количество объектов [AIVision v])
установить элемент объекта [AIVision v] (object_counter)
если <объект [AIVision v] — [RedBeanBag v]?> то
if <(объект [AIVision v] [centerX v]) < (140)> then
поворот [влево v]
else if <([AIVision v] object [centerX v]) > (180)> then
поворот [вправо v]
иначе
остановить движение
конец
прервать
конец
изменить [object_counter v] на [1]
конец

Настройки#

установить элемент объекта#

Блок set object item задает, какой элемент из набора данных следует использовать.

Блок стека элементов объекта.#
установить элемент объекта [AIVision v] [1]

Параметры

Описание

элемент

Номер элемента в наборе данных, который следует использовать.

Пример

при запуске :: hat events
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Find the index of the nearest red Bean Bag.]
установить цвет [object_counter v] [1]
получить данные [AI Classifications v] из [AIVision v]
повторить (количество объектов [AIVision v])
установить элемент объекта [AIVision v] (object_counter)
если <объект [AIVision v] — [RedBeanBag v]?> то
вывести (объединить [Nearest Red Bean Bag is ] (object_counter)) ▶
прервать
иначе
изменить [object_counter v] на [1]
конец
конец

Ценности#

объект существует#

Блок object exists возвращает логическое значение, указывающее, обнаружен ли какой-либо объект в наборе данных.

  • Истина — набор данных содержит обнаруженный объект.

  • Ложь — набор данных не содержит обнаруженных объектов.

Логический блок “Объект AI Vision существует”.#
<объект [AIVision v] существует?>

Параметры

Описание

Этот блок не имеет параметров.

Пример

при запуске :: hat events
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Turn until a Bean Bag is detected.]
установить скорость поворота (30) [% v]
поворот [вправо v]
повторять пока <объект [AIVision v] существует?>
получить данные [AI Classifications v] из [AIVision v]
конец
остановить движение

объект#

Блок object is возвращает логическое значение, указывающее, соответствует ли обнаруженный объект определенной классификации.

  • Истина — элемент в наборе данных является конкретным объектом.

  • Ложь — элемент в наборе данных не является конкретным объектом.

Объект представляет собой логический блок.#
<объект [AIVision v] — [RedBeanBag v]?>

Параметр

Описание

объект

С каким объектом сравнивать данный предмет: Красный мешок с фасолью, Синий мешок с фасолью или Желтый мешок с фасолью.

Пример

при запуске :: hat events
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Find the index of the nearest red Bean Bag.]
установить цвет [object_counter v] [1]
получить данные [AI Classifications v] из [AIVision v]
повторить (количество объектов [AIVision v])
установить элемент объекта [AIVision v] (object_counter)
если <объект [AIVision v] — [RedBeanBag v]?> то
вывести (объединить [Nearest Red Bean Bag is ] (object_counter)) ▶
прервать
иначе
изменить [object_counter v] на [1]
конец
конец

объект называется AprilTag#

Блок object is AprilTag возвращает логическое значение, указывающее, является ли обнаруженный объект тегом AprilTag, соответствующим определенному идентификатору.

  • True - Обнаруженный объект является AprilTag с указанным ID.

  • Ложь — Обнаруженный объект не является AprilTag с указанным ID.

Объект представляет собой логический блок AprilTag.#
<объект [AIVision v] является AprilTag [0]?>

Параметр

Описание

Идентификатор AprilTag

Идентификационный номер для сравнения с обнаруженным AprilTag.

Пример

при запуске :: hat events
[Stop when you see the Red Goal!]
установить скорость поворота (30) [% v]
поворот [вправо v]
повторять пока <объект [AIVision v] является AprilTag [1]?>
получить данные [AprilTags v] из [AIVision v]
конец
остановить движение
вывести [Found the Red Goal!] ▶

количество объектов#

Блок подсчета объектов возвращает количество обнаруженных объектов в наборе данных в виде целого числа.

Блок подсчета количества объектов.#
(количество объектов [AIVision v])

Параметры

Описание

Этот блок не имеет параметров.

Пример

при запуске :: hat events
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Print how many Bean Bags are detected.]
получить данные [AI Classifications v] из [AIVision v]
вывести (количество объектов [AIVision v]) ▶

свойство объекта#

После использования блока получить данные объекта каждому объекту, хранящемуся в памяти, присваиваются шесть свойств.

Блок «Отчет о свойствах объекта AI Vision».#
(объект [AIVision v] [ширина v])

Все значения свойств описывают положение и размер обнаруженного объекта в поле зрения датчика IQ AI Vision в момент использования блока получить данные об объекте. Эти значения измеряются в пикселях, исходя из разрешения датчика 320 на 240 пикселей.

Параметр

Описание

свойство

Какое свойство обнаруженного объекта использовать: width, height, centerX, centerY, originX или originY.

ширина#

Свойство width отображает ширину обнаруженного объекта в пикселях в виде целого числа от 1 до 320.

Блок отображения свойств объекта AI Vision с выбранной шириной.#
(объект [AIVision v] [ширина v])

Пример

при запуске
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Approach the Bean Bag, then pick it up.]
установить скорость движения (30) [% v]
вечно
получить данные [AI Classifications v] из [AIVision v]
если <объект [AIVision v] существует?> то
установить элемент объекта [AIVision v] [1]
если <объект [AIVision v] — [RedBeanBag v]?> то
if <([AIVision v] object [width v]) > (180)> then
движение [вперёд v] на [50] [мм v] ▶
вращение [IntakeMotor v] [потребление v] на [90] [градусы v] ▶
прервать
иначе
движение [вперёд v]
конец
конец
конец
конец
высота#

Свойство height отображает высоту обнаруженного объекта в пикселях в виде целого числа от 1 до 240.

Блок отображения свойств объекта AI Vision с выбранной высотой.#
(объект [AIVision v] [высота v])

Пример

при запуске
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Approach the Bean Bag, then pick it up.]
установить скорость движения (30) [% v]
вечно
получить данные [AI Classifications v] из [AIVision v]
если <объект [AIVision v] существует?> то
установить элемент объекта [AIVision v] [1]
если <объект [AIVision v] — [RedBeanBag v]?> то
if <([AIVision v] object [height v]) > (100)> then
движение [вперёд v] на [50] [мм v] ▶
вращение [IntakeMotor v] [потребление v] на [90] [градусы v] ▶
прервать
иначе
движение [вперёд v]
конец
конец
конец
конец
центрX#

Свойство centerX отображает x-координату центра обнаруженного объекта в пикселях в виде целого числа от 0 до 320.

Блок отображения свойств объекта AI Vision с выбранным параметром centerX.#
(объект [AIVision v] [centerX v])

Пример

при запуске
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Steer to keep the Bean Bag centered while approaching.]
установить скорость поворота (30) [% v]
установить скорость движения (30) [% v]
вечно
получить данные [AI Classifications v] из [AIVision v]
если <объект [AIVision v] существует?> то
установить элемент объекта [AIVision v] [1]
если <объект [AIVision v] — [RedBeanBag v]?> то
if <(объект [AIVision v] [centerX v]) < (140)> then
поворот [влево v] на (5) градусов ▶
иначе
движение [вперёд v] на (150) [мм v] ▶
вращать [IntakeMotor v] [потребление v]
прервать
конец
конец
конец
конец
центрY#

Свойство centerY отображает y-координату центра обнаруженного объекта в пикселях в виде целого числа от 0 до 240.

Блок отображения свойств объекта AI Vision с выбранным параметром centerY.#
(объект [AIVision v] [centerY v])

Пример

при запуске
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Print the y-position of the Bean Bag.]
получить данные [AI Classifications v] из [AIVision v]
если <объект [AIVision v] существует?> то
установить элемент объекта [AIVision v] [1]
если <объект [AIVision v] — [RedBeanBag v]?> то
вывести (объект [AIVision v] [centerY v]) ▶
конец
конец
originX#

Свойство originX отображает координату x верхнего левого угла ограничивающего прямоугольника обнаруженного объекта в пикселях в виде целого числа от 0 до 320.

Блок отображения свойств объекта AI Vision с выбранным originX.#
(объект [AIVision v] [originX v])

Пример

при запуске
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Steer to keep the left edge centered.]
установить скорость поворота (30) [% v]
установить скорость движения (30) [% v]
вечно
получить данные [AI Classifications v] из [AIVision v]
если <объект [AIVision v] существует?> то
установить элемент объекта [AIVision v] [1]
если <объект [AIVision v] — [RedBeanBag v]?> то
if <(объект [AIVision v] [originX v]) < (100)> then
поворот [влево v] на (5) градусов ▶
иначе
движение [вперёд v] на (150) [мм v] ▶
вращать [IntakeMotor v] [потребление v]
прервать
конец
конец
конец
конец
происхождениеY#

Свойство originY отображает Y-координату верхнего левого угла ограничивающего прямоугольника обнаруженного объекта в пикселях в виде целого числа от 0 до 240.

Блок отображения свойств объекта AI Vision с выбранным параметром originY.#
(объект [AIVision v] [originY v])

Пример

при запуске
[Drop the preloaded Bean Bag.]
вращение [IntakeMotor v] [отвод v] на (180) [градусы v] ▶
поворот [влево v] на (90) градусов ▶
[Print the y-position of the Bean Bag's top edge.]
получить данные [AI Classifications v] из [AIVision v]
если <объект [AIVision v] существует?> то
установить элемент объекта [AIVision v] [1]
если <объект [AIVision v] — [RedBeanBag v]?> то
вывести (объект [AIVision v] [originY v]) ▶
конец
конец