Блоки, специфичные для робота#
Введение#
Робот-герой Flop включает в себя двигатель всасывания, двигатель манипулятора и датчик зрения IQ AI.
Все стандартные блоки VEXcode VR доступны для использования на игровой площадке IQ 26-27 Level Up.
Ниже приведён список всех доступных блоков, разработанных специально для роботов:
Движение – Перемещение и отслеживание двигателей робота.
Действия
вращающий двигатель – Вращает двигатель в одном из направлений бесконечно.
вращение двигателя на – Вращает двигатель на определенное расстояние в градусах или оборотах.
повернуть двигатель в нужное положение – Поворачивает двигатель в заданное положение.
остановить двигатель – Останавливает вращение двигателя.
Настройки
установить скорость вращения двигателя – Указывает двигателю, с какой скоростью он должен вращаться.
установить таймаут двигателя – Задает время, в течение которого двигатель будет пытаться завершить движение.
Позиция
положение двигателя – Сообщает текущее положение двигателя.
установить положение двигателя – Изменяет текущее положение двигателя на новое значение.
Ценности
двигатель завершил работу – Сообщает, завершил ли двигатель работу.
двигатель вращается – Сообщает, вращается ли двигатель.
скорость вращения двигателя – Отображает скорость вращения двигателя в процентах от -100% до 100%.
AI Vision — Захват и анализ объектов с помощью датчика IQ AI Vision.
Действия
получить данные объекта - Захватывает данные для конкретной сигнатуры, например, обнаруженной классификации ИИ.
Настройки
установить элемент объекта - Выбирает конкретный объект из списка.
Ценности
объект существует - Возвращает, была ли обнаружена какая-либо классификация.
объект есть - Возвращает значение, указывающее, обнаружена ли конкретная классификация.
объект является AprilTag - Возвращает значение, указывающее, является ли обнаруженный объект AprilTag, соответствующим определенному идентификатору.
количество объектов - Возвращает количество обнаруженных объектов.
свойство объекта - Возвращает ширину, высоту, centerX, centerY, originX или originY.
В примерах на этой странице используется начальная позиция по умолчанию в игровой зоне.
Движение#
В игре 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]
Параметр |
Описание |
|---|---|
подпись |
Фильтрует набор данных, чтобы включить только данные заданной подписи. Доступные подписи:
|
Пример
при запуске :: 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 возвращает логическое значение, указывающее, обнаружен ли какой-либо объект в наборе данных.
Истина — набор данных содержит обнаруженный объект.
Ложь — набор данных не содержит обнаруженных объектов.
<объект [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.
<объект [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]) ▶
свойство объекта#
После использования блока получить данные объекта каждому объекту, хранящемуся в памяти, присваиваются шесть свойств.
(объект [AIVision v] [ширина v])
Все значения свойств описывают положение и размер обнаруженного объекта в поле зрения датчика IQ AI Vision в момент использования блока получить данные об объекте. Эти значения измеряются в пикселях, исходя из разрешения датчика 320 на 240 пикселей.
Параметр |
Описание |
|---|---|
свойство |
Какое свойство обнаруженного объекта использовать: width, height, centerX, centerY, originX или originY. |
ширина#
Свойство width отображает ширину обнаруженного объекта в пикселях в виде целого числа от 1 до 320.
(объект [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.
(объект [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.
(объект [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.
(объект [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.
(объект [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.
(объект [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]) ▶
конец
конец