Skip to main content
Teacher Portal

What is a Vision Sensor? - C++

Teacher Toolbox icon Teacher Toolbox - The Purpose of this Page

This page will introduce students to what a Vision Sensor is and some of its capabilities. The students will then analyze a partial image of an example project to view how the Vision Sensor can be used with VEXcode V5.
The Motivate Discussion questions at the bottom of the page can be completed as a class discussion or individually in the students' engineering notebooks.

Motivate Discussion icon Motivate Discussion

Q: What types of human jobs would benefit from having the help of a robot with a vision sensor?
A: Listen for human jobs that would benefit from the ability to see into environments and/or manipulate surroundings from remote distances (e.g., observing animals in the wild, disarming explosives, or performing robot-assisted surgery).

Q: Name a device and describe how it uses input, output, and process.
A: A possible answer could be a calculator that takes the sequences of numbers and mathematical operators a person inputs, processes those numbers and operations to calculate a result, and then outputs that result on a screen for the person.

Q: Why do you think a forever loop was used in the project shown above?
A: A forever loop was used so that the Vision Sensor continuously checks the multiple snapshots taken to see if a red object comes into view of the sensor.

Description

The Vision Sensor allows your robot to collect visual data from a live feed. A live feed is a streaming transmission of what a video camera is capturing. The Vision Sensor is like a smart camera that can observe, select, adjust, and store colors and objects that appear in its visual field.

VEX Vision Sensor with the top of the sensor shown to the left and the bottom of the sensor, with ports for connections shown to the right.
Vision Sensor 276-4850

Capabilities:

  • This sensor can be used for recognizing colors and color patterns.
  • This sensor can be used to follow an object.
  • This sensor can be used to collect information about the environment.

The Vision Sensor allows the robot to use visual input data from its environment. The project can then determine how the visual input data should affect the robot's behavior. For example, the robot could perform actions (output) such as spinning motors or displaying results on the LCD screen.

The Vision Sensor can also capture a snapshot of what is in front of it and analyze it according to what the user is asking. For example, a user can gather data from the snapshot such as, what color is the object? Is there an object detected at all? How large is the object (width and height)?

The robot can then make decisions based off of this data. The partial example project below shows how this is done. Three colors are being checked repeatedly after the project is started, and each color check is a different event. Only the event that checks for Blue is shown below. This stack has the robot print "Blue Object Found" if a blue object is detected or "No Blue Object" otherwise. The checkRed and checkGreen events not shown below have similar stacks for deciding what to print on the screen.

#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);
  }
}