Skip to main content

Utilização do Sensor de Visão - C++

Ícone da caixa de ferramentas do professor Caixa de ferramentas do professor - O objetivo desta atividade

A utilização eficaz do Sensor de Visão exige que os alunos sejam capazes de o configurar e ajustar consoante o ambiente em que se encontra. Na atividade seguinte, os alunos vão aprender como fazer as duas coisas.
Para obter mais informações sobre a programação do Sensor de Visão com o VEXcode V5, visite as informações de ajuda para C++ na Biblioteca VEX.

A seguir, é apresentado um esboço do que os seus alunos farão nesta atividade:

  • Abra o projeto de exemplo Detetar Objetos (Vision).

  • Configure o sensor de visão.

  • Execute o projeto de exemplo Detetar Objetos (Vision).

  • Discuta e reflita.

  • Sintonize o sensor de visão.

Ícone de dicas para professores Dicas para professores

Se esta for a primeira vez que o aluno utiliza o VEXcode V5, poderá aceder ajuda artigos na VEX Library.

Ícone de dicas para professores Dicas para professores a utilizando o preenchimento automático

O preenchimento automático é uma funcionalidade do VEXcode V5 que prevê o resto do comando que está a escrever. À medida que os alunos trabalham no VEXcode V5, incentive-os a utilizar a funcionalidade Autocomplete para ajudar com a sintaxe .

VEXcode V5 com a parte Drivetrain de um comando introduzido à esquerda e à direita, é mostrada uma lista de opções de preenchimento automático para esse comando que pode ser percorrida.

Os artigos Autocomplete para C++ abordam a utilização da funcionalidade Autocomplete.

Obtenha o hardware necessário, o seu portátil de engenharia e abra o VEXcode V5.

Materiais necessários:
Quantidade Materiais necessários
1

Kit de iniciação para sala de aula VEX V5

1

VEXcode V5 (versão mais recente, Windows, MacOS)

1

Caderno de Engenharia

1

Configurar um Sensor de Visão (Biblioteca VEX)

1

Ajustar o Sensor de Visão (Biblioteca VEX)

1

Projeto de exemplo de deteção de objetos (Visão)

Esta atividade dar-lhe-á as ferramentas para utilizar o Sensor de Visão.

Pode utilizar as informações Help (C++) dentro do VEXcode V5 para aprender sobre as instruções.

O VEXcode V5 é mostrado com a caixa de ferramentas aberta na extrema esquerda e a Ajuda do comando Drive for aberta na extrema direita. A Ajuda mostra a definição do comando e informação sobre a forma como é utilizado.

 

Passo 1: Abra um projeto de exemplo

O VEXcode V5 contém muitos exemplos de projetos diferentes. Utilizará um deles nesta exploração.

Abra o projeto de exemplo Detecting Objects (Vision) concluindo os seguintes passos:

  • Abra o menu Ficheiro.
  • Selecione Exemplos abertos.

Barra de ferramentas VEXcode V5 com o menu Ficheiro aberto e Abrir exemplos destacados numa caixa vermelha. Abrir Exemplos é o quarto item de menu abaixo de Novo Desenho de Blocos, Novo Desenho de Texto e Abrir.

  • Utilize a barra de filtros na parte superior da aplicação e selecione “Sensing”.

Exemplo de VEXcode V5 Janela de seleção de projeto com o filtro Sensing selecionado na parte superior e destacado numa caixa vermelha. Abaixo encontram-se seis exemplos de ícones de projetos exibidos.

Selecione e abra o projeto de exemplo Detecting Objects (Vision).

O ícone do projeto de exemplo mostra Visão de deteção de objetos na parte inferior e mostra um diagrama azul de um robô com um sensor indicando a deteção de objetos acima.

Guarde o seu projeto como Detetar Objetos.

  • Verifique se o nome do projeto Detecting Objects está agora na janela no centro da barra de ferramentas.

A caixa de diálogo Nome do projeto na barra de ferramentas VEXcode V5 lê Detetar objetos e mostra que o slot 1 está selecionado à esquerda e lê Salvo à direita.

Ícone de dicas para professores Dicas para professores

  • Certifique-se de que os alunos selecionaram Exemplos Abertos no menu Ficheiro.

  • Certifique-se de que os alunos selecionaram o projeto Detetar Objetos (Visão) Exemplo. Pode salientar aos alunos que existem diversas seleções para escolher na página Exemplos Abertos.

  • Pode pedir aos alunos que adicionem as suas iniciais ou o nome do grupo ao nome do projeto. Isto ajudará a diferenciar os programas se pedir aos alunos que os enviem.

  • Como o VEXcode V5 tem auto-save, não há necessidade de guardar o projeto novamente após este ter sido guardado pela primeira vez.

  • Se os alunos precisarem de ajuda para poupar, encaminhe-os para um destes artigos: 

Passo 2: configurar e utilizar o sensor de visão

A janela de configuração do Vision Sensor mostra a imagem de uma mão a segurar um cubo vermelho à esquerda, com uma sobreposição no cubo e as palavras REDBOX e W142 H142 por cima. À direita, estão definidas três assinaturas de cores para BlueBox, Redbox e Greenbox.

Abra o projeto de exemplo de deteção de objetos (Vision) guardado anteriormente.

Como está a ser utilizado o Sensor de Visão neste projeto? Preveja o que acontecerá quando o projeto for executado e anote as previsões no seu caderno de engenharia.

#include "vex.h"

	using namespace vex;
	
	event checkBlue = event();
	event checkRed = event();
	event checkGreen = event();
	
	// Will check to see if there is a blue object in the view of the Vision
	// Sensor and display the results on line 1 of the V5 Brain's screen.
	void has BlueCallback() {
	
	  Brain.Screen.clearLine(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");
	  }
	}
	
	// Will check to see if there is a red object in the view of the Vision
	// Sensor and display the results on line 3 of the V5 Brain's screen.
	void has RedCallback() {
	
	  Brain.Screen.clearLine(3);
	  Brain.Screen.setCursor(3, 1);
	  Vision5.takeSnapshot(Vision5__REDBOX);
	
	  if (Vision5.objectCount > 0) {
		Brain.Screen.print("Red Object Found");
	
	  } else {
		Brain.Screen.print("No Red Object");
	  }
	}
	
	// Will check to see if there is a green object in the view of the Vision
	// Sensor and display the results on line 5 of the V5 Brain's screen.
	void has GreenCallback() {
	
	  Brain.Screen.clearLine(5);
	  Brain.Screen.setCursor(5, 1);
	  Vision5.takeSnapshot(Vision5__GREENBOX);
	
	  if (Vision5.objectCount > 0) {
		Brain.Screen.print("Green Object Found");
	
	  } else {
		Brain.Screen.print("No Green Object");
	  }
	}
	
	// Begin project code
	int main() {
	  // Initializing Robot Configuration. DO NOT REMOVE!
	  vexcodeInit();
	
	  // Register event handlers
	  checkBlue (hasBlueCallback);
	  checkRed (hasRedCallback);
	  checkGreen (hasGreenCallback);
	
	  // Small delay to ensure the event handlers are ready to be used
	  wait(15, msec);
	
	  // Set the print font for all future prints to the V5 screen
	  Brain.Screen.setFont(mono40);
	
	  // Constantly run to check for new sensor data
	  while (true) {
		checkBlue.broadcastAndWait();
		checkRed.broadcastAndWait();
		checkGreen.broadcastAndWait();
		wait(0.1, seconds);
	  }
	}
  • Descarregue e execute o projeto. Coloque objetos de cores diferentes em frente ao Sensor de Visão e observe o comportamento do robô. Registe no seu caderno de engenharia como a sua previsão foi diferente ou correta em comparação com o que realmente observou no projeto.

Ícone de dicas para professores Dicas para professores

Os três objetos coloridos não têm de ser cubos, podem ser qualquer objeto verde, vermelho e azul relativamente pequeno.

Ícone Motivar Discussão Motivar a discussão - respostas

Promova uma discussão em sala de aula para que os alunos partilhem o que previram que este projeto fará nos seus cadernos de engenharia e reflitam também sobre como configurar o Sensor de Visão.
Facilite a discussão colocando as seguintes questões:

  1. Quais são os passos para configurar o Sensor de Visão?

  2. O que faz a estrutura if then else?

  3. O que aconteceria à forma como o Sensor de Visão deteta objetos se mudássemos de quarto?

As respostas irão variar:

  1. Os alunos devem observar que o nome do objeto terá de ser decidido. O objeto deve ser colocado na moldura do Sensor de Visão e imobilizado através do botão “Congelar”. A cor será então selecionada e configurada através do botão "Definir". Os alunos deverão delinear os passos indicados no ponto do presente artigo.

  2. A estrutura if then else executa as instruções dentro da primeira ou segunda parte de if then else com base no valor booleano reportado. Mais informações sobre como utilizar esta instrução podem ser encontradas nas informações de Ajuda.

  3. Se o Sensor de Visão fosse solicitado para detetar objetos num ambiente diferente, a iluminação poderia mudar e as cores dos objetos poderiam parecer diferentes. Isto pode dificultar a deteção de objetos pelo Sensor de Visão.

Ícone Amplie a sua aprendizagem Amplie a sua aprendizagem - Configure mais objetos

Escolha outros dois objetos coloridos para configurar, possivelmente branco, roxo, amarelo, etc...

Janela de configuração do Vision Sensor que mostra o instantâneo à esquerda com uma mão a segurar uma engrenagem amarela. Existe uma sobreposição quadrada na engrenagem amarela e os dados indicam Caixa amarela, X90 y 62, w102, h 98. À direita estão definidas as assinaturas de cor para Bluebox, Redbox, Greenbox e Yellowbox.

Se os alunos precisarem de ajuda, consulte as informações Ajuda ou o artigo Configurar um sensor de visão V5.

Passo 3: Ajustando o Sensor de Visão

Muitas vezes um objeto é configurado para ser reconhecido pelo Sensor de Visão num ambiente, por exemplo, numa sala de aula. Quando o Sensor de Visão for levado para um ambiente diferente, como por exemplo um ambiente de competição, o objeto poderá não ser reconhecido pelo Sensor de Visão. Isto acontece muitas vezes devido a uma alteração na iluminação depois de o Sensor de Visão já ter sido configurado. Para resolver este problema, poderá ser necessário ajustar o seu sensor de visão.

Janela de configuração do Vision Sensor com uma mão segurando um cubo vermelho com uma sobreposição sobre o cubo e texto lendo redbox e x84 y 28 depois w 158 h 166. À direita, as assinaturas de cor Bluebox, Redbox e Greenbox são definidas com um deslizador destacado numa caixa vermelha com o mostrador definido para 4.4.

Abra o projeto de exemplo Detecting Objects (Vision) guardado anteriormente.

Como é que o ajuste do Sensor de Visão afetará a capacidade de deteção de objetos? Leva o Clawbot para uma parte diferente da sala com mais ou menos luz.

V5 Clawbot num campo com o braço para baixo e a garra aberta e à volta de um objeto cubo roxo.

  • Descarregue e execute o projeto. Coloque objetos de cores diferentes em frente ao Sensor de Visão e observe o comportamento do robô. Documente no seu caderno de engenharia o quão bem o Sensor de Visão deteta objetos. O Sensor de Visão necessita de ser ajustado depois de mudar de local?
  • Ajuste o Sensor de Visão conforme necessário. Teste o sensor de visão depois de ajustado para determinar se consegue detetar melhor os objetos e fazer os ajustes necessários.

Ícone Motivar Discussão Motivar a Discussão - Refletir sobre a Atividade

P: O Sensor de Visão detetou os objetos como esperava?
A: As respostas variam; no entanto, o objetivo desta questão é promover o pensamento cognitivo. Os alunos devem notar que a capacidade do Sensor de Visão para detetar objetos pode mudar dependendo do ambiente e da luz.

P: Porque é importante poder ajustar o Sensor de Visão conforme necessário?
A: Embora as respostas possam variar, uma resposta comum deveria ser que se um robô utilizar um Sensor de Visão e for levado para uma competição ou mesmo utilizado num jogo ou desafio, o desempenho do robô dependerá da precisão do Sensor de Visão. Ajustá-lo é importante para a precisão.

Ícone Amplie a sua aprendizagem Amplie a sua aprendizagem - Vários objetos

Peça aos alunos para executarem o projeto Detetar Objetos (Visão) e colocarem mais do que um dos objetos configurados à frente do Sensor de Visão. O que acontece? Peça-lhes que documentem as suas descobertas no seu caderno de engenharia.
Peça agora aos alunos que coloquem um objeto configurado e um objeto desconhecido ou não configurado em frente ao Sensor de Visão. O que acontece? Peça-lhes que documentem as suas descobertas no seu caderno de engenharia.

Pergunte aos alunos antes de o testar, o que aconteceria se colocassem três objetos configurados em frente ao Sensor de Visão? Peça aos alunos que anotem as suas previsões antes de o testarem. Peça-lhes que registem as suas observações após testá-lo.

Interface do Vision Sensor Utility mostrando duas mãos a segurar uma Greenbox e uma Redbox na janela da esquerda. Cada cubo colorido possui uma sobreposição de dados. À direita, as subscrições da Bluebox, Redbox, Greenbox e Yellowbox estão todas definidas.

Promova uma discussão sobre o que os alunos previram e observaram.

Facilite a discussão perguntando:

  • Quais foram as diferenças entre um, dois e três objetos?
  • Ajustaria o projeto de alguma forma para reconhecer vários objetos?