Assicurati di avere Firme colore e Codici colore configurati con il tuo sensore di visione AI in modo che possano essere utilizzati con i tuoi blocchi. Per saperne di più su come configurarli, puoi leggere gli articoli seguenti:
- Configurazione delle firme a colori con la firma AI Vision in VEXcode V5
- Configurazione dei codici colore con la firma AI Vision in VEXcode V5
Il sensore di visione AI può anche rilevare le classificazioni AI e gli AprilTag. Per sapere come abilitare queste modalità di rilevamento, vai qui:
- Utilizzo delle classificazioni AI con il sensore di visione AI
- Utilizzo di AprilTags con il sensore di visione AI
Per saperne di più su questi singoli comandi e su come utilizzarli in VEXcode, visita il sito API.
Ottieni dati visivi con il sensore di visione AI
Ogni comando AI Vision Sensor inizierà con il nome dell'AI Vision Sensor configurato. Per tutti gli esempi in questo articolo, il nome del sensore di visione AI utilizzato sarà AIVision.
scatta un'istantanea
Il metodo takeSnapshot scatta una foto di ciò che il sensore di visione AI sta attualmente vedendo ed estrae dati da tale istantanea che possono poi essere utilizzati in un progetto. Quando si acquisisce un'istantanea, è necessario specificare di quale tipo di oggetto il sensore di visione AI deve raccogliere dati:
- AColore Firma oCodice Colore
- Queste firme visive iniziano con il nome del sensore di visione AI, un doppio trattino basso e poi il nome della firma visiva, ad esempio:
AIVision1__Blue.
- Queste firme visive iniziano con il nome del sensore di visione AI, un doppio trattino basso e poi il nome della firma visiva, ad esempio:
-
Classificazioni AI -
aivision::ALL_AIOBJS -
aprileTags-
aivision::ALL_TAGS
L'acquisizione di uno snapshot creerà una matrice di tutti gli oggetti rilevati specificati. Ad esempio, se si desidera rilevare una firma di colore "Blu" e il sensore di visione AI rileva 3 diversi oggetti blu, i dati di tutti e tre verranno inseriti nell'array.
In questo esempio, viene scattata un'istantanea della firma di colore "Blu" dal sensore di visione AI denominato AIVision1. Visualizza il numero di oggetti rilevati nell'array e cattura una nuova istantanea ogni 0,5 secondi.
while (true) {
// Ottieni un'istantanea di tutti gli oggetti di colore blu.
AIVision.takeSnapshot(AIVision1__Blue);
// Verifica che un oggetto sia stato rilevato nello snapshot prima di estrarre i dati.
se (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}
oggetti
Ogni oggetto di uno snapshot ha proprietà diverse che possono essere utilizzate per segnalare informazioni su quell'oggetto. Il metodo objects consente di accedere a queste proprietà.
Le proprietà disponibili sono le seguenti:
- id
- centroX e centroY
- origineX e origineY
- larghezza
- altezza
- angolo
- esiste
- punto
Per accedere alle proprietà di un oggetto, utilizzare il nome del sensore di visione AI, seguito dal metodo objects e infine dall'indice dell'oggetto.
L'indice dell'oggetto indica quale proprietà specifica dell'oggetto si desidera recuperare. Dopo aver scattato un'istantanea, il sensore di visione AI ordina automaticamente gli oggetti in base alle dimensioni. All'oggetto più grande viene assegnato l'indice 0, mentre agli oggetti più piccoli vengono assegnati numeri di indice più alti.
Ad esempio, la chiamata della larghezza dell'oggetto più grande sarebbe AIVision1.objects[0].width.
id
La proprietà id è disponibile solo per le classificazioni AI AprilTags e
Per un AprilTag, la proprietà rappresenta il numero ID AprilTagrilevato
L'identificazione di specifici AprilTags consente una navigazione selettiva. Puoi programmare il tuo robot in modo che si muova verso determinati tag ignorandone altri, utilizzandoli di fatto come segnali per la navigazione automatizzata.
PerClassificazioni AI, la proprietà id rappresenta il tipo specifico di Classificazione AI rilevata.
L'identificazione di specifiche Classificazioni AIconsente al robot di concentrarsi solo su oggetti specifici, ad esempio volendo navigare solo verso una Buckyball rossa, non verso una blu.
Per maggiori informazioni sulle classificazioni AI di AprilTags e e su come abilitarne il rilevamento in AI Vision Utility, consulta questi articoli.
centroX e centroY
Si tratta delle coordinate centrali dell'oggetto rilevato in pixel.
Le coordinate CenterX e CenterY aiutano nella navigazione e nel posizionamento. Il sensore di visione AI ha una risoluzione di 320 x 240 pixel.
Come puoi vedere, un oggetto più vicino al sensore di visione AI avrà una coordinata CenterY inferiore rispetto a un oggetto più lontano.
In questo esempio, poiché il centro della visuale del sensore di visione AI è (160, 120), il robot girerà a destra finché la coordinata centraleX di un oggetto rilevato non sarà maggiore di 150 pixel, ma minore di 170 pixel.
while (true) {
// Ottieni un'istantanea di tutti gli oggetti di colore blu.
AIVision.takeSnapshot(AIVision__Blue);
// Verifica che un oggetto sia stato rilevato nello snapshot prima di estrarre i dati.
se (AIVision.objectCount > 0) {
se (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
Drivetrain.turn(right);
} altrimenti {
Drivetrain.stop();
}
}
attendi(5, msec);
}
origineX e origineY
OriginX e OriginY sono le coordinate nell'angolo in alto a sinistra dell'oggetto rilevato in pixel.
Le coordinate OriginX e OriginY aiutano nella navigazione e nel posizionamento. Combinando questa coordinata con la larghezza e l'altezza dell'oggetto, è possibile determinare la dimensione del riquadro di delimitazione dell'oggetto. Può essere utile per tracciare oggetti in movimento o per spostarsi tra gli oggetti.
larghezza e altezza
Questa è la larghezza o l'altezza dell'oggetto rilevato in pixel.
Le misure di larghezza e altezza aiutano a identificare i diversi oggetti. Ad esempio, un Buckyball avrà un'altezza maggiore di un Ring.
Larghezza e altezza indicano anche la distanza di un oggetto dal sensore di visione AI. Di solito, misure più piccole indicano che l'oggetto è più lontano, mentre misure più grandi indicano che è più vicino.
In questo esempio, la larghezza dell'oggetto viene utilizzata per la navigazione. Il robot si avvicinerà all'oggetto finché la larghezza non avrà raggiunto una dimensione specifica prima di fermarsi.
while (true) {
// Ottieni un'istantanea di tutti gli oggetti Blue.
AIVision.takeSnapshot(AIVision1__Blue);
// Verifica che un oggetto sia stato rilevato nello snapshot prima di estrarre i dati.
se (AIVision.objectCount > 0) {
se (AIVision.objects[0].width < 250.0) {
Drivetrain.drive(forward);
} altrimenti {
Drivetrain.stop();
}
}
attendi(5, msec);
}
angolo
La proprietà angolo è disponibile solo percodici colore eAprilTags.
Indica se il codice colore o AprilTag rilevato è orientato in modo diverso.
È possibile vedere se il robot è orientato in modo diverso rispetto al codice colore oAprilTag e prendere decisioni di navigazione di conseguenza.
Ad esempio, se un codice colore viene rilevato con l'angolazione corretta, l'oggetto che rappresenta potrebbe non essere rilevato correttamente dal robot.
punto
La proprietà punteggio viene utilizzata quando si rilevanoclassificazioni AI con il sensore di visione AI.
Il punteggio di affidabilità indica il livello di certezza del sensore di visione AI in merito al suo rilevamento. In questa immagine, l'identificazione delle classificazioni AI di questi quattro oggetti è sicura al 99%. Puoi usare questo punteggio per assicurarti che il tuo robot si concentri solo su rilevamenti altamente affidabili.
esiste
La proprietà exists viene utilizzata per rilevare se una specifica Visual Signature è stata rilevata nell'ultimo snapshot acquisito.
Ciò consente di verificare se sono stati rilevati oggetti nello snapshot precedente. Questa proprietà restituirà True quando un oggetto esiste e False quando l'oggetto non esiste.
numero di oggetti
Il metodo objectCount restituisce la quantità di oggetti rilevati nell'ultimo snapshot.
In questo esempio sono stati rilevati due oggetti con la firma di colore "Blu". Entrambi verranno inseriti nell'array quando verrà utilizzato il metodo takeSnapshot.
Questo frammento di codice aggiorna continuamente EXP Brain con il numero di oggetti rilevati. In base all'esempio fornito, invierà ripetutamente il valore 2, indicando che sono stati rilevati due oggetti.
while (true) {
// Ottieni un'istantanea di tutti gli oggetti Blue.
AIVision.takeSnapshot(AIVision__Blue);
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// Verifica che un oggetto sia stato rilevato nello snapshot prima di estrarre i dati.
se (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
attendi(5, msec);
}