Skip to main content

O que é um sensor de visão? -C++

Ícone da caixa de ferramentas do professor Caixa de ferramentas do professor - O objetivo desta página

Esta página irá apresentar aos alunos o que é um sensor de visão e algumas das suas características. Os alunos irão então analisar uma imagem parcial de um projeto de exemplo para ver como o Sensor de Visão pode ser utilizado com o VEXcode V5.
As questões Motivar Discussão na parte inferior da página podem ser respondidas como uma discussão em turma ou individualmente nos cadernos de engenharia dos alunos.

Ícone Motivar Discussão Motivar a discussão

P: Que tipos de trabalhos humanos beneficiariam da ajuda de um robô com sensor de visão?
A: Preste atenção a trabalhos humanos que beneficiariam da capacidade de ver ambientes e/ou manipular ambientes a distâncias remotas (por exemplo, observar animais na natureza, desarmar explosivos ou realizar cirurgias assistidas por robôs).

Q: Nomeie um dispositivo e descreva como utiliza a entrada, a saída e o processo.
A: Uma resposta possível pode ser uma calculadora que recebe as sequências de números e operadores matemáticos que uma pessoa introduz, processa esses números e operações para calcular um resultado e, em seguida, exibe esse resultado num ecrã para a pessoa.

P: Porque é que acha que foi utilizado um ciclo para sempre no projeto mostrado acima?
A: Foi utilizado um loop para sempre para que o Sensor de Visão verifique continuamente os vários instantâneos tirados para ver se um objeto vermelho aparece no campo de visão do sensor.

Descrição

O Sensor de Visão permite que o seu robô recolha dados visuais de uma transmissão em direto. Uma transmissão em direto é uma transmissão em streaming do que uma câmara de vídeo está a captar. O Sensor de Visão é como uma câmara inteligente que pode observar, selecionar, ajustar e armazenar cores e objetos que aparecem no seu campo visual.

Sensor de visão VEX com a parte superior do sensor apresentada à esquerda e a parte inferior do sensor, com as portas para ligações apresentadas à direita.
Sensor de visão 276-4850

Capacidades:

  • Este sensor pode ser utilizado para reconhecer cores e padrões de cor.
  • Este sensor pode ser utilizado para seguir um objeto.
  • Este sensor pode ser utilizado para recolher informações sobre o ambiente.

O Sensor de Visão permite que o robô utilize dados de entrada visuais do seu ambiente. O projeto pode então determinar como os dados visuais de entrada devem afetar o comportamento do robô. Por exemplo, o robô poderia realizar ações (saída), como rodar motores ou exibir resultados no ecrã LCD.

O Sensor de Visão também pode capturar um instantâneo do que está à sua frente e analisá-lo de acordo com o que o utilizador está a perguntar. Por exemplo, um utilizador pode recolher dados do instantâneo, como por exemplo qual é a cor do objeto? Existe algum objeto detetado? Qual é o tamanho do objeto (largura e altura)?

O robô pode então tomar decisões com base nesses dados. O exemplo de projeto parcial abaixo mostra como é feito. Três cores são verificadas repetidamente após o início do projeto e cada verificação de cor é um evento diferente. Apenas o evento que verifica Azul é mostrado abaixo. Esta pilha faz com que o robô imprima "Objeto Azul Encontrado" se for detetado um objeto azul ou "Nenhum Objeto Azul" caso contrário. Os eventos checkRed e checkGreen não apresentados abaixo têm pilhas semelhantes para decidir o que imprimir no ecrã.

#include "vex.h"

  using namespace vex;
  
  event checkBlue = event();
  event checkRed = event();
  event checkGreen = event();
  
  void has BlueCallback() {
  
    Brain.Screen.setFont(mono20);
    Brain.Screen.clearLine(1, black);
    Brain.Screen.setCursor(Brain.Screen.row(), 1);
    Brain.Screen.setCursor(1, 1);
    Vision5.takeSnapshot(Vision5__BLUEBOX);
  
    if (Vision5.objectCount > 0) {
      Brain.Screen.print("Blue Object Found");
  
    } else {
      Brain.Screen.print("No Blue Object");
    }
  }
  
  // Begin project code
  int main() {
    // Initializing Robot Configuration. DO NOT REMOVE!
    vexcodeInit();
  
    checkBlue (hasBlueCallback);
  
    while (true) {
      checkBlue.broadcast();
      checkRed.broadcast();
      checkGreen.broadcast();
      wait(1, seconds);
    }
  }