Skip to main content

Wat is een visionsensor? - C++

Icoon Toolbox voor docenten Toolbox voor leraren - Het doel van deze pagina

Op deze pagina maken leerlingen kennis met wat een Vision Sensor is en wat de mogelijkheden ervan zijn. De studenten analyseren vervolgens een gedeeltelijke afbeelding van een voorbeeldproject om te bekijken hoe de Vision Sensor kan worden gebruikt met VEXcode V5.
De Motivate Discussion-vragen onderaan de pagina kunnen worden beantwoord als een klassikale discussie of individueel in de technische notitieboekjes van de studenten.

Motiveer discussie-icoon Motiveer discussie

V:Voor welke soorten menselijke banen zou de hulp van een robot met een visuele sensor nuttig zijn?
A:Luister naar menselijke banen die nuttig zouden zijn als ze in de omgeving zouden kunnen kijken en/of de omgeving op grote afstand zouden kunnen manipuleren (bijvoorbeeld het observeren van dieren in het wild, het onschadelijk maken van explosieven of het uitvoeren van robotondersteunde operaties).

V:Noem een apparaat en beschrijf hoe het invoer, uitvoer en verwerking gebruikt.
A:Een mogelijk antwoord zou een rekenmachine kunnen zijn die de reeksen getallen en wiskundige bewerkingen die een persoon invoert, verwerkt, deze getallen en bewerkingen verwerkt om een resultaat te berekenen en dit resultaat vervolgens op een scherm voor de gebruiker weergeeft.

V:Waarom denk je dat er in het hierboven getoonde project een oneindige lus is gebruikt?
A:Er is een oneindige lus gebruikt zodat de Vision Sensor continu de verschillende momentopnamen controleert om te zien of er een rood object in het zicht van de sensor komt.

Omschrijving

Met de Vision Sensor kan uw robot visuele gegevens verzamelen van een live feed. Een live feed is een streaming transmissie van wat een videocamera vastlegt. De Vision Sensor is als een slimme camera die kleuren en objecten die in het gezichtsveld verschijnen kan observeren, selecteren, aanpassen en opslaan.

VEX Vision Sensor met de bovenkant van de sensor links en de onderkant van de sensor, met poorten voor aansluitingen rechts.
Zichtsensor 276-4850

Mogelijkheden:

  • Deze sensor kan worden gebruikt voor het herkennen van kleuren en kleurpatronen.
  • Deze sensor kan worden gebruikt om een object te volgen.
  • Deze sensor kan worden gebruikt om informatie over de omgeving te verzamelen.

Met de Vision-sensor kan de robot visuele invoergegevens uit zijn omgeving gebruiken. Het project kan dan bepalen hoe de visuele invoergegevens het gedrag van de robot moeten beïnvloeden. De robot kan bijvoorbeeld handelingen (output) uitvoeren, zoals motoren laten draaien of resultaten weergeven op het LCD-scherm.

De Vision Sensor kan ook een momentopname maken van wat zich voor hem bevindt en deze analyseren op basis van wat de gebruiker vraagt. Een gebruiker kan bijvoorbeeld gegevens verzamelen uit de momentopname, zoals, welke kleur heeft het object? Is er überhaupt een object gedetecteerd? Hoe groot is het object (breedte en hoogte)?

De robot kan vervolgens beslissingen nemen op basis van deze gegevens. Het onderstaande gedeeltelijke voorbeeldproject laat zien hoe dit wordt gedaan. Drie kleuren worden herhaaldelijk gecontroleerd nadat het project is gestart en elke kleurcontrole is een andere gebeurtenis. Alleen de gebeurtenis die op blauw controleert, wordt hieronder weergegeven. Deze stapel laat de robot "Blue Object Found" afdrukken als een blauw object wordt gedetecteerd of anders "No Blue Object". De checkRed- en checkGreen-gebeurtenissen die hieronder niet worden weergegeven, hebben vergelijkbare stapels om te beslissen wat er op het scherm moet worden afgedrukt.

#include "vex.h"

met 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 code
INT Main() {
  // Initializing Robot Configuration. NIET VERWIJDEREN!
  vexcodeInit();

  checkBlue (hasBlueCallback);

  while (true) {
    checkBlue.broadcast();
    checkRed.broadcast();
    checkGreen.broadcast();
    wait(1, seconds);
  }
}