Skip to main content

O que é um sensor de visão? -Píton

Í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 loop para sempre no projeto apresentado?
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

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 check_red e check_green não apresentados abaixo têm stacks semelhantes para decidir o que imprimir no ecrã.

# Library imports
  from vex import *
  
  # Begin project code
  
  check_red = Event()
  check_blue = Event()
  check_green = Event()
  
  def check_blue_callback(): 
      brain.screen.set_font(FontType.MONO40)
      brain.screen.clear_row(1)
      brain.screen.set_cursor(1, 1)
  
      # Take a snapshot with the Vision Sensor and store vision data into a variable
      vision_5_objects = vision_5.take_snapshot(vision_5__BLUEBOX)
      # Check the variable to see if the snapshot detected any blue objects
      if (vision_5_objects):
          brain.screen.print("Blue Object Found")
      else: 
          brain.screen.print("No Blue Object")
  
  # System Event Handlers
  check_blue(check_blue_callback)
  
  #add 15ms delay to make sure events are registered correctly
  wait(15, MSEC)
  
  while True: 
      check_blue.broadcast_and_wait()
      check_red.broadcast_and_wait()
      check_green.broadcast_and_wait()
      wait(0.1,SECONDS)
      wait(5, MSEC)