Blocos específicos para robôs#
Introdução#
O robô herói, Flop, inclui um motor de admissão, um motor de braço e um sensor de visão de IA IQ.
Todos os blocos VR padrão do VEXcode estão disponíveis para utilização no IQ 26-27 Level Up Playground.
Abaixo está uma lista de todos os blocos específicos para robôs disponíveis:
Movimento – Movimente e acompanhe os motores do robô.
Ações
rodar motor – Roda um motor numa das suas direções para sempre.
rodar motor por – Roda um motor por uma distância específica em graus ou voltas.
rodar motor para posição – Roda um motor para uma posição específica.
parar motor – Impede que um motor gire.
Configurações
definir velocidade do motor – Indica ao motor a velocidade de rotação.
set motor timeout – Define durante quanto tempo um motor tentará terminar um movimento.
Posição
posição do motor – Reporta a posição atual do motor.
definir posição do motor – Altera a posição atual do motor para um novo valor.
Valores
motor is done – Reporta se o motor já terminou de se mover.
motor está a rodar – Reporta se o motor está a rodar.
velocidade do motor – Reporta a velocidade de rotação do motor, em percentagem de -100% a 100%.
Visão com IA - Capte e analise objetos utilizando o sensor de visão com IA IQ.
Ações
obter dados do objeto - Captura dados para uma assinatura específica, como uma classificação de IA detetada.
Configurações
set object item - Seleciona um objeto específico da lista.
Valores
objecto existe - Retorna se foi detectada alguma classificação.
object is - Retorna se foi detetada uma classificação específica.
object is AprilTag - Retorna se o objeto detetado é um AprilTag que corresponde a um ID específico.
contagem de objetos - Retorna quantos objetos foram detetados.
propriedade do objeto - Retorna largura, altura, centroX, centroY, origemX ou origemY.
Os exemplos nesta página utilizam a posição inicial padrão do Playground.
Movimento#
O Flop utiliza o motor de entrada para recolher e ejetar os elementos do jogo. O motor do braço levanta e baixa o braço.
Cada motor tem as suas próprias opções de direção. Os nomes das direções descrevem como este motor se move no Flop.
Ações#
motor de rotação#
O bloco de pilha motor de rotação faz rodar um motor numa de duas direções indefinidamente. O motor continuará a rodar até receber outra ação, como rodar numa direção diferente ou parar.
girar [IntakeMotor v] [ingestão v]
Parâmetros |
Descrição |
|---|---|
motor |
O motor a rodar: IntakeMotor ou ArmMotor. |
direção |
Sentido de rotação do motor:
|
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
girar [ArmMotor v] [subir v] por (1) [voltas v] ▶
conduzir [frente v] por (40) [polegadas v] ▶
girar [IntakeMotor v] [saída v]
motor de rotação para#
O bloco motor de rotação pára acciona um motor por uma distância específica. A rotação é relativa à posição atual do motor. O projeto aguardará até que o motor termine de rodar antes que o próximo bloco da pilha seja acionado.
girar [ArmMotor v] [subir v] por (500) [graus v] ▶
Parâmetros |
Descrição |
|---|---|
motor |
O motor a rodar: IntakeMotor ou ArmMotor. |
direção |
Sentido de rotação do motor:
|
distância |
A distância a que o motor roda. Graus são valores inteiros. As voltas podem ser valores inteiros ou decimais. |
unidade |
A unidade de distância: graus ou voltas. |
e não espere |
Selecione a seta ( ▶ ) para expandir o bloco e apresentar e não esperar, para que o próximo bloco da pilha seja executado imediatamente. |
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
girar [ArmMotor v] [subir v] por (1) [voltas v] ▶
conduzir [frente v] por (40) [polegadas v] ▶
girar [IntakeMotor v] [saída v]
Rode o motor para a posição desejada.#
O bloco de pilha rodar motor para posição roda um motor para uma posição específica.
A posição de um motor é o quanto ele rodou, medida em graus ou voltas. Uma volta é igual a 360 graus. No início de um projeto, a posição do motor é definida para 0 graus. A posição do motor também pode ser definida através do bloco definir posição do motor.
Os valores de posição são absolutos. Isto significa que o sentido de rotação depende da posição atual do motor.
Por exemplo, se o motor arrancar a 0 graus e rodar até uma posição de 720 graus, dará duas voltas para a frente. Se depois rodar até uma posição de 360 graus, dará uma volta para trás, porque 360 é inferior a 720.
girar [ArmMotor v] para a posição (500) [graus v] ▶
Parâmetros |
Descrição |
|---|---|
motor |
O motor a rodar: IntakeMotor ou ArmMotor. |
posição |
O valor da posição para a qual o motor irá rodar. Graus utilizam números inteiros. As voltas podem utilizar números inteiros ou decimais. |
unidade |
A unidade de posição: graus ou voltas. |
e não espere |
Selecione a seta ( ▶ ) para expandir o bloco e apresentar e não esperar, para que o próximo bloco da pilha seja executado imediatamente. |
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
girar [ArmMotor v] para a posição (1) [voltas v] ▶
conduzir [frente v] por (40) [polegadas v] ▶
girar [IntakeMotor v] [saída v]
motor de paragem#
O bloco de pilha parar motor pára o motor selecionado.
parar [IntakeMotor v]
Parâmetros |
Descrição |
|---|---|
motor |
O motor a parar: IntakeMotor ou ArmMotor. |
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
girar [ArmMotor v] [subir v] por (1) [voltas v] ▶
conduzir [frente v] por (40) [polegadas v] ▶
girar [IntakeMotor v] [saída v]
aguardar (1) segundos
parar [IntakeMotor v]
Configurações#
definir velocidade do motor#
O bloco de pilha definir velocidade do motor indica ao motor a velocidade de rotação. Uma percentagem mais elevada faz com que o motor gire mais depressa e uma percentagem mais baixa faz com que o motor gire mais devagar.
Cada projeto começa com cada motor a rodar a 50% da velocidade por defeito.
Nota: Uma velocidade mais elevada faz com que o motor gire mais depressa, mas pode ser menos precisa. Uma velocidade mais baixa faz com que o motor gire mais devagar, mas pode ser mais preciso.
definir velocidade de [IntakeMotor v] para [50] [% v]
Parâmetros |
Descrição |
|---|---|
motor |
O motor para definir a velocidade de: IntakeMotor ou ArmMotor. |
velocidade |
A velocidade de rotação do motor. Percentagem utiliza números inteiros de 0% a 100%. |
unidade |
A unidade de velocidade é: %. |
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
girar [ArmMotor v] [subir v] por (1) [voltas v] ▶
conduzir [frente v] por (40) [polegadas v] ▶
definir velocidade de [IntakeMotor v] para [100] [% v]
girar [IntakeMotor v] [saída v]
definir tempo limite do motor#
O bloco de pilha definir tempo limite do motor define durante quanto tempo um motor tentará completar um movimento. Se o motor não conseguir concluir dentro deste tempo, interromperá a tentativa e passará para o bloco seguinte da pilha. Isto impede que o motor fique preso num movimento.
definir tempo limite de [ArmMotor v] para [1] segundos
Parâmetros |
Descrição |
|---|---|
motor |
O motor para definir o tempo limite de: IntakeMotor ou ArmMotor. |
hora |
O número de segundos que o motor pode tentar para completar um movimento. Pode ser um número inteiro ou decimal. |
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
definir tempo limite de [ArmMotor v] para [2] segundos
girar [ArmMotor v] [subir v] por (1) [voltas v] ▶
conduzir [frente v] por (40) [polegadas v] ▶
girar [IntakeMotor v] [saída v]
Posição#
posição do motor#
A posição de um motor é o quanto ele rodou, medida em graus ou voltas. Uma volta equivale a 360 graus. O bloco de registo da posição do motor informa a posição atual do motor.
No início de um projeto, a posição do motor é definida para 0 graus. Se o motor rodar uma volta completa para a frente, a posição será de 360 graus ou 1 volta. Se o motor rodar no sentido oposto, a posição será negativa.
(posição de [ArmMotor v] em [graus v])
Parâmetros |
Descrição |
|---|---|
motor |
O motor que reporta a posição de: IntakeMotor ou ArmMotor. |
unidade |
A unidade para indicar a posição do motor é: graus ou rotações. |
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
enquanto <(posição de [ArmMotor v] em [graus v]) [math_less_than v] [360]>
girar [ArmMotor v] [subir v]
aguardar (0.002) segundos
fim
parar [ArmMotor v]
conduzir [frente v] por (40) [polegadas v] ▶
girar [IntakeMotor v] [saída v]
definir posição do motor#
A posição de um motor é o quanto ele rodou, medida em graus ou voltas. Uma volta equivale a 360 graus. O bloco de pilha definir posição do motor altera a posição atual do motor para um novo valor.
Por exemplo, se um motor tiver rodado 180 graus, definir a posição para 0 graus irá repor essa posição de 180 para 0 graus. De seguida, o motor poderá rodar para posições baseadas nesse novo valor.
definir posição de [ArmMotor v] para (0) [graus v]
Parâmetros |
Descrição |
|---|---|
motor |
O motor para definir a posição de: IntakeMotor ou ArmMotor. |
posição |
O valor da posição a definir. Graus utilizam números inteiros. As voltas podem utilizar números inteiros ou decimais. |
unidade |
A unidade de posição: graus ou voltas. |
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
definir posição de [ArmMotor v] para [0] [graus v]
girar [ArmMotor v] [subir v] por (1) [voltas v] ▶
conduzir [frente v] por (40) [polegadas v] ▶
girar [IntakeMotor v] [saída v]
Valores#
O motor está pronto.#
O bloco booleano motor is done informa se o motor terminou de se mover. Isto pode ser utilizado para controlar o tempo de outros comportamentos com base no movimento do motor.
Verdadeiro — O motor terminou de trabalhar.
Falso — O motor ainda está em movimento.
Este bloco funciona em conjunto com os seguintes blocos de Movimento que têm o parâmetro e não esperar: rodar motor para e rodar motor para posição.
<[ArmMotor v] concluído?>
Parâmetros |
Descrição |
|---|---|
motor |
O motor que deve informar se terminou de se mover: IntakeMotor ou ArmMotor. |
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
girar [ArmMotor v] para a posição (1) [voltas v] ◀ e não aguardar
aguardar até <[ArmMotor v] concluído?>
conduzir [frente v] por (40) [polegadas v] ▶
girar [IntakeMotor v] [saída v]
O motor está a rodar#
O bloco booleano motor está a rodar informa se o motor está a rodar. Isto pode ser utilizado para controlar o tempo de outros comportamentos com base no movimento do motor.
Verdadeiro — O motor está a rodar.
Falso — O motor não está a rodar.
Este bloco funciona em conjunto com os seguintes blocos de Movimento que têm o parâmetro e não esperar: rodar motor para e rodar motor para posição.
<[IntakeMotor v] girando?>
Parâmetros |
Descrição |
|---|---|
motor |
O motor que deve informar se está a rodar: IntakeMotor ou ArmMotor. |
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
girar [ArmMotor v] [subir v] por (1) [voltas v] ▶
conduzir [frente v] por (40) [polegadas v] ▶
girar [IntakeMotor v] [saída v]
aguardar até <não <[IntakeMotor v] girando?>>
parar [IntakeMotor v]
velocidade do motor#
O bloco de relatório de velocidade do motor indica a velocidade de rotação do motor, em percentagem, de -100% a 100%.
(velocidade de [IntakeMotor v] em [% v] :: custom-motion)
Parâmetros |
Descrição |
|---|---|
motor |
O motor que deve reportar a velocidade de: IntakeMotor ou ArmMotor. |
unidade |
A unidade de medida para reportar a velocidade do motor é: %. |
Exemplo
quando iniciar
[Score a Bean Bag in a Blue Goal.]
virar [esquerda v] por (90) graus ▶
conduzir [frente v] por (35) [polegadas v] ▶
virar [direita v] por (90) graus ▶
girar [ArmMotor v] [subir v] por (1) [voltas v] ▶
conduzir [frente v] por (40) [polegadas v] ▶
girar [IntakeMotor v] [saída v]
aguardar [0.2] segundos
imprimir (velocidade de [IntakeMotor v] em [% v] :: custom-motion) ▶
Visão de IA#
Ações#
obter dados do objeto#
O bloco obter dados do objeto filtra os dados do quadro do sensor de visão IQ AI para uma única assinatura — uma descrição guardada de algo que o sensor pode reconhecer, como um elemento do jogo no campo.
O conjunto de dados armazena os objetos ordenados do maior para o mais pequeno por largura, começando no índice 0. As propriedades de cada objeto podem ser acedidas utilizando o bloco propriedade do objeto. Um conjunto de dados vazio é devolvido se não for detetado nenhum objeto correspondente.
obter dados de [Classificações de IA v] de [AIVision v]
Parâmetro |
Descrição |
|---|---|
assinatura |
Filtra o conjunto de dados para incluir apenas os dados da assinatura fornecida. As assinaturas disponíveis são:
|
Exemplo
quando iniciar :: hat events
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Find and face the nearest red Bean Bag.]
definir velocidade de giro para (30) [% v]
definir [object_counter v] para [1]
obter dados de [Classificações de IA v] de [AIVision v]
repetir (contagem de objetos de [AIVision v])
definir item de objeto de [AIVision v] para (object_counter)
se <objeto de [AIVision v] é [RedBeanBag v]?> então
if <(objeto de [AIVision v] [centroX v]) < (140)> then
virar [esquerda v]
else if <([AIVision v] object [centerX v]) > (180)> then
virar [direita v]
senão
parar de conduzir
fim
interromper
fim
alterar [object_counter v] por [1]
fim
Configurações#
definir item de objeto#
O bloco set object item define qual o item do conjunto de dados que deve ser utilizado.
definir item de objeto de [AIVision v] para [1]
Parâmetros |
Descrição |
|---|---|
artigo |
O número do item no conjunto de dados a utilizar. |
Exemplo
quando iniciar :: hat events
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Find the index of the nearest red Bean Bag.]
definir [object_counter v] para [1]
obter dados de [Classificações de IA v] de [AIVision v]
repetir (contagem de objetos de [AIVision v])
definir item de objeto de [AIVision v] para (object_counter)
se <objeto de [AIVision v] é [RedBeanBag v]?> então
imprimir (juntar [Nearest Red Bean Bag is ] (object_counter)) ▶
interromper
senão
alterar [object_counter v] por [1]
fim
fim
Valores#
objeto existe#
O bloco object exists devolve um valor booleano indicando se foi detetado algum objeto no conjunto de dados.
Verdadeiro - O conjunto de dados inclui um objeto detetado.
Falso - O conjunto de dados não inclui nenhum objeto detetado.
<objeto de [AIVision v] existe?>
Parâmetros |
Descrição |
|---|---|
Este bloco não possui parâmetros. |
Exemplo
quando iniciar :: hat events
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Turn until a Bean Bag is detected.]
definir velocidade de giro para (30) [% v]
virar [direita v]
repetir até <objeto de [AIVision v] existe?>
obter dados de [Classificações de IA v] de [AIVision v]
fim
parar de conduzir
objeto é#
O bloco object is devolve um valor booleano indicando se um objeto detetado corresponde a uma classificação específica.
Verdadeiro - O item no conjunto de dados é o objeto específico.
Falso - O item no conjunto de dados não é o objeto específico.
<objeto de [AIVision v] é [RedBeanBag v]?>
Parâmetro |
Descrição |
|---|---|
objeto |
Que objeto utilizar para comparar o item: RedBeanBag, BlueBeanBag ou YellowBeanBag? |
Exemplo
quando iniciar :: hat events
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Find the index of the nearest red Bean Bag.]
definir [object_counter v] para [1]
obter dados de [Classificações de IA v] de [AIVision v]
repetir (contagem de objetos de [AIVision v])
definir item de objeto de [AIVision v] para (object_counter)
se <objeto de [AIVision v] é [RedBeanBag v]?> então
imprimir (juntar [Nearest Red Bean Bag is ] (object_counter)) ▶
interromper
senão
alterar [object_counter v] por [1]
fim
fim
objeto é AprilTag#
O bloco object is AprilTag devolve um valor booleano indicando se o objeto detetado é um AprilTag que corresponde a um ID específico.
Verdadeiro - O objeto detetado é um AprilTag com o ID fornecido.
Falso - O objeto detetado não é um AprilTag com o ID fornecido.
<objeto de [AIVision v] é AprilTag [0]?>
Parâmetro |
Descrição |
|---|---|
ID da etiqueta de abril |
O número de identificação a comparar com o AprilTag detectado. |
Exemplo
quando iniciar :: hat events
[Stop when you see the Red Goal!]
definir velocidade de giro para (30) [% v]
virar [direita v]
repetir até <objeto de [AIVision v] é AprilTag [1]?>
obter dados de [AprilTags v] de [AIVision v]
fim
parar de conduzir
imprimir [Found the Red Goal!] ▶
contagem de objetos#
O bloco contagem de objetos devolve o número de objetos detetados no conjunto de dados como um número inteiro.
(contagem de objetos de [AIVision v])
Parâmetros |
Descrição |
|---|---|
Este bloco não possui parâmetros. |
Exemplo
quando iniciar :: hat events
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Print how many Bean Bags are detected.]
obter dados de [Classificações de IA v] de [AIVision v]
imprimir (contagem de objetos de [AIVision v]) ▶
propriedade do objeto#
Existem seis propriedades que são incluídas em cada objeto armazenado após a utilização do bloco obter dados do objeto.
(objeto de [AIVision v] [largura v])
Todos os valores de propriedade descrevem a posição e o tamanho do objeto detetado no campo de visão do sensor IQ AI Vision no momento em que o bloco obter dados do objeto foi utilizado. Estes valores são medidos em pixéis, com base na resolução de 320 por 240 pixéis do sensor.
Parâmetro |
Descrição |
|---|---|
propriedade |
Qual a propriedade do objeto detetado a utilizar: largura, altura, centroX, centroY, origemX ou origemY? |
largura#
A propriedade largura indica a largura do objeto detetado em pixéis, como por exemplo um número inteiro de 1 a 320.
(objeto de [AIVision v] [largura v])
Exemplo
quando iniciar
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Approach the Bean Bag, then pick it up.]
definir velocidade de condução para (30) [% v]
para sempre
obter dados de [Classificações de IA v] de [AIVision v]
se <objeto de [AIVision v] existe?> então
definir item de objeto de [AIVision v] para [1]
se <objeto de [AIVision v] é [RedBeanBag v]?> então
if <([AIVision v] object [width v]) > (180)> then
conduzir [frente v] por [50] [mm v] ▶
girar [IntakeMotor v] [ingestão v] por [90] [graus v] ▶
interromper
senão
conduzir [frente v]
fim
fim
fim
fim
altura#
A propriedade altura indica a altura do objeto detetado em pixéis, como por exemplo um número inteiro de 1 a 240.
(objeto de [AIVision v] [altura v])
Exemplo
quando iniciar
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Approach the Bean Bag, then pick it up.]
definir velocidade de condução para (30) [% v]
para sempre
obter dados de [Classificações de IA v] de [AIVision v]
se <objeto de [AIVision v] existe?> então
definir item de objeto de [AIVision v] para [1]
se <objeto de [AIVision v] é [RedBeanBag v]?> então
if <([AIVision v] object [height v]) > (100)> then
conduzir [frente v] por [50] [mm v] ▶
girar [IntakeMotor v] [ingestão v] por [90] [graus v] ▶
interromper
senão
conduzir [frente v]
fim
fim
fim
fim
centroX#
A propriedade centerX indica a coordenada x do centro do objeto detetado em pixéis, como um número inteiro de 0 a 320.
(objeto de [AIVision v] [centroX v])
Exemplo
quando iniciar
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Steer to keep the Bean Bag centered while approaching.]
definir velocidade de giro para (30) [% v]
definir velocidade de condução para (30) [% v]
para sempre
obter dados de [Classificações de IA v] de [AIVision v]
se <objeto de [AIVision v] existe?> então
definir item de objeto de [AIVision v] para [1]
se <objeto de [AIVision v] é [RedBeanBag v]?> então
if <(objeto de [AIVision v] [centroX v]) < (140)> then
virar [esquerda v] por (5) graus ▶
senão
conduzir [frente v] por (150) [mm v] ▶
girar [IntakeMotor v] [ingestão v]
interromper
fim
fim
fim
fim
centroY#
A propriedade centerY reporta a coordenada y do centro do objeto detetado em pixéis, como um número inteiro de 0 a 240.
(objeto de [AIVision v] [centroY v])
Exemplo
quando iniciar
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Print the y-position of the Bean Bag.]
obter dados de [Classificações de IA v] de [AIVision v]
se <objeto de [AIVision v] existe?> então
definir item de objeto de [AIVision v] para [1]
se <objeto de [AIVision v] é [RedBeanBag v]?> então
imprimir (objeto de [AIVision v] [centroY v]) ▶
fim
fim
origemX#
A propriedade originX reporta a coordenada x do canto superior esquerdo da caixa delimitadora do objeto detetado, em pixéis, como um número inteiro de 0 a 320.
(objeto de [AIVision v] [origemX v])
Exemplo
quando iniciar
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Steer to keep the left edge centered.]
definir velocidade de giro para (30) [% v]
definir velocidade de condução para (30) [% v]
para sempre
obter dados de [Classificações de IA v] de [AIVision v]
se <objeto de [AIVision v] existe?> então
definir item de objeto de [AIVision v] para [1]
se <objeto de [AIVision v] é [RedBeanBag v]?> então
if <(objeto de [AIVision v] [origemX v]) < (100)> then
virar [esquerda v] por (5) graus ▶
senão
conduzir [frente v] por (150) [mm v] ▶
girar [IntakeMotor v] [ingestão v]
interromper
fim
fim
fim
fim
origemY#
A propriedade originY reporta a coordenada y do canto superior esquerdo da caixa delimitadora do objeto detetado, em pixéis, como um número inteiro de 0 a 240.
(objeto de [AIVision v] [origemY v])
Exemplo
quando iniciar
[Drop the preloaded Bean Bag.]
girar [IntakeMotor v] [saída v] por (180) [graus v] ▶
virar [esquerda v] por (90) graus ▶
[Print the y-position of the Bean Bag's top edge.]
obter dados de [Classificações de IA v] de [AIVision v]
se <objeto de [AIVision v] existe?> então
definir item de objeto de [AIVision v] para [1]
se <objeto de [AIVision v] é [RedBeanBag v]?> então
imprimir (objeto de [AIVision v] [origemY v]) ▶
fim
fim