AIビジョンセンサー#

導入#

VEX IQ AIビジョンセンサーは、物体、色、AprilTag IDを検出・追跡できます。これにより、ロボットは周囲の状況を分析し、物体を追跡し、検出された視覚データに基づいて反応することができます。

AI Visionのサンプルは、VEX IQ AI Visionセンサーを搭載したBasebotで使用することを想定して設計されています。これらのサンプルでは、​​センサーはAIVision1という名前で設定されており、ブロック内にもその名前が表示されます。

以下はすべてのブロックのリストです。

アクション — 選択したシグネチャに関するデータをVEX IQ AIビジョンセンサーから取得します。

  • オブジェクトデータの取得 — 設定された色、事前学習済みのオブジェクト、AprilTag ID など、特定の署名のデータをキャプチャします。

設定 — 操作するオブジェクトを選択してください。

  • set AI Vision object item — 検出されたオブジェクトリストから特定のオブジェクトを選択します。

値 — 取得したデータにアクセスして使用する。

行動#

オブジェクトデータを取得する#

オブジェクトデータ取得スタックブロックは、VEX IQ AIビジョンセンサーフレームからのデータを単一のシグネチャ(センサーが認識できるもの、例えば事前学習済みのオブジェクト、AprilTag ID、設定済みの色またはカラーコードなどの保存された説明)にフィルタリングします。

このブロックで使用する前に、AI Vision Utilityで色とカラーコードを設定しておく必要があります。

データセットには、インデックス0から始まり、幅の大きい順から小さい順にオブジェクトが格納されます。各オブジェクトのプロパティには、AI Visionオブジェクトプロパティブロックを使用してアクセスできます。一致するオブジェクトが検出されない場合は、空のデータセットが報告されます。

オブジェクトデータ取得スタックブロック。#
[AIVision1 v] から [SELECT_A_SIG v] データを取得

パラメータ

説明

サイン

指定された署名のデータのみを含むようにデータセットをフィルタリングします。使用可能な署名は次のとおりです。

  • AprilTag IDs
  • AI Classifications — 利用可能性は、AI Vision Utility で構成されたモデルによって異なります。
  • NAME — Color Signature または Color Code。NAME は AI Vision Utility で構成された名前です

注: AprilTag ID または AI 分類オプションを表示するには、AI Vision Utility でそれらの検出を有効にする必要があります。

例

開始したとき
[Drive forward if an AprilTag ID is detected.]
ずっと
[AIVision1 v] から [AprilTag IDs v] データを取得
もし <[AIVIsion1 v] オブジェクトあり?> なら
[前進 v] へ [10] [mm v] 走行 ▶

AI分類#

VEX IQ AIビジョンセンサーは、特定のAI分類に基づいてさまざまな物体を検出できます。デバイスウィンドウでVEX IQ AIビジョンセンサーを設定する際に選択したAI分類モデルに応じて、検出される物体が異なります。現在利用可能なモデルは以下のとおりです。

教室で使用する物品

  • ブルーボール

  • グリーンボール

  • レッドボール

  • ブルーリング

  • グリーンリング

  • レッドリング

  • ブルーキューブ

  • グリーンキューブ

  • レッドキューブ

VEX IQロボティクス競技会 ミックス&マッチ

  • ビーム

  • レッドピン

  • ブルーピン

  • オレンジピン

VEX IQロボティクス競技会レベルアップ

  • ブルービーンバッグ

  • レッドビーンバッグ

  • イエロービーンバッグ

カラーシグネチャー#

カラーシグネチャとは、VEX IQ AIビジョンセンサーが認識できる固有の色のことです。このシグネチャにより、センサーは物体の色に基づいて物体を検出および追跡できます。カラーシグネチャが設定されると、センサーは視野内のその特定の色を持つ物体を識別できるようになります。

カラーシグネチャは、オブジェクトデータ取得ブロックで使用され、色付きオブジェクトをリアルタイムで処理および検出します。一度に最大7つのカラーシグネチャを設定できます。

AI Vision Utility は、接続されたビジョンセンサーが 2 つの色の物体を検出している様子を示しています。左側にはライブカメラの映像が表示され、左側に青いボックス、右側に赤いボックスが表示され、それぞれ白い境界ボックスで囲まれています。黒いラベルには、それぞれの名前、座標、寸法が表示されます。右側には、赤と青のボックスの色相と彩度範囲のスライダーを備えたカラーシグネチャ設定があります。下部には、色の追加、ビデオのフリーズ、画像のコピー、画像の保存を行うボタンがあり、右下隅には閉じるボタンがあります。

例

開始したとき
[Display if any objects matching the RED_BOX signature is detected.]
ずっと
スクリーンのカーソルを行 [1] 列 [1] に設定
スクリーンの行 [1] をクリア
[Change the signature to any configured Color Signature.]
[AIVision1 v] から [RED_BOX v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
[Color detected!] をスクリーンに表示 ▶

カラーコード#

カラーコードとは、2~4個のカラーシグネチャを特定の順序で配置した構造化されたパターンです。これらのコードにより、VEX IQ AIビジョンセンサーは、あらかじめ定義された色のパターンを認識することができます。

カラーコードは、複雑な物体を識別したり、ゲーム要素と位置合わせしたり、自律航行用の固有マーカーを作成したりするのに特に役立ちます。一度に最大8つのカラーコードを設定できます。

AI Vision Utility インターフェースには、接続されたビジョンセンサーが隣接する 2 つのオブジェクト (左側の青いボックスと右側の赤いボックス) を検出し、それらを BlueRed というラベルの付いた単一の白い境界ボックスにまとめて表示しています。検出情報には、角度 (A:11°)、座標 (X:143、Y:103)、幅 (W:233)、高さ (H:108) が含まれます。右側のパネルには、調整可能な色相と彩度範囲を持つ Red_Box、Blue_Box、BlueRed の 3 つのカラーシグネチャが表示されます。BlueRed シグネチャは Blue_Box と Red_Box を組み合わせたものです。ビデオフィードの下には、Freeze Video、Copy Image、Save Image、Close というラベルの付いたボタンがあります。

例

開始したとき
[Display if any objects matching the RED_BLUE code is detected.]
ずっと
スクリーンのカーソルを行 [1] 列 [1] に設定
スクリーンの行 [1] をクリア
[Change the signature to any configured Color Code.]
[AIVision1 v] から [RED_BLUE v] データを取得
もし <[AIVIsion1 v] オブジェクトあり?> なら
[Code detected!] をスクリーンに表示 ▶

設定#

AI Visionオブジェクトアイテムを設定します#

set AI Vision object itemスタックブロックは、データセット内のどのアイテムを使用するかを設定します。

Set AI Visionオブジェクトアイテムスタックブロック。#
[AIVision1 v] オブジェクトのアイテムを (1) に設定

パラメータ

説明

アイテム

データセット内で使用する項目の番号。

例

開始時ブロックから始まり、続いて「検出された最大の AprilTag ID を表示する」というコメントブロックが続くブロックのスタック。無限ループ内で、AI Vision スナップショット取得ブロックが AprilTag ID の画像をキャプチャします。if ブロックは、AI Vision オブジェクトが存在するかどうかを確認します。存在する場合は、AI Vision オブジェクトアイテム設定ブロックがオブジェクトの数を変数に割り当て、印刷ブロックが検出されたオブジェクトのタグ ID を画面に表示します。#
開始したとき
[Display the largest detected AprilTag ID.]
ずっと
[AIVision1 v] から [AprilTag IDs v] データを取得
スクリーンの行 [1] をクリア
スクリーンのカーソルを行 [1] 列 [1] に設定
もし <[AIVision1 v] オブジェクトあり?> なら
[AIVision1 v] オブジェクトのアイテムを ([AIVision1 v] オブジェクト数) に設定
([AIVision1 v] オブジェクト [tagID v]) をスクリーンに表示 ▶

価値観#

AIビジョンオブジェクトが存在する#

AI Visionオブジェクトが存在するブールブロックは、データセット内でオブジェクトが検出されたかどうかを報告します。

  • 真 — データセットには検出されたオブジェクトが含まれています。

  • 誤り — データセットには検出されたオブジェクトが含まれていません。

AI Visionオブジェクトはブールブロックを保有しています。#
<[AIVision1 v] オブジェクトあり?>

パラメータ

説明

このブロックにはパラメータがありません。

例

開始したとき
[Drive forward if an object is detected.]
ずっと
[AIVision1 v] から [AI 分類 v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
[前進 v] へ [10] [mm v] 走行 ▶

AIビジョンオブジェクト数#

AI Visionオブジェクトカウントレポーターブロックは、データセット内で検出されたオブジェクトの数を整数として報告します。

Set AI Visionオブジェクトアイテムスタックブロック。#
([AIVision1 v] オブジェクト数)

パラメータ

説明

このブロックにはパラメータがありません。

例

開始したとき
[Display the total amount of cubes, rings, and balls.]
ずっと
スクリーンの行 [1] をクリア
スクリーンのカーソルを行 [1] 列 [1] に設定
[AIVision1 v] から [AI 分類 v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
([AIVision1 v] オブジェクト数) をスクリーンに表示 ▶
終わり
[0.5] 秒待つ

AI Visionオブジェクトプロパティ#

オブジェクトデータの取得 ブロックが使用された後に保存される各オブジェクトには、以下に示す 9 つのプロパティが含まれています。

AI Visionオブジェクトプロパティレポーターブロック。#
([AIVision1 v] オブジェクト [幅 v])

tagIDを除くすべてのプロパティ値は、get object dataブロックが使用された時点での、VEX IQ AI Vision Sensorの視野内における検出されたオブジェクトの位置とサイズを表します。これらの値は、センサーの320×240ピクセルの解像度に基づいて、ピクセル単位で測定されます。

パラメータ

説明

財産

検出されたオブジェクトのどのプロパティを使用するか:

幅#

widthプロパティは、検出されたオブジェクトの幅をピクセル単位で、1から320までの整数値で報告します。

パラメータが幅に設定されたAI Visionオブジェクトのプロパティスタックブロック。#
([AIVision1 v] オブジェクト [幅 v])

例

開始したとき
[Drive towards an object until its width is larger than 100 pixels.]
ずっと
[AIVision1 v] から [AI 分類 v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
もし <([AIVision1 v] オブジェクト [幅 v]) [math_less_than v] [100]> なら
[前進 v] へ走行
終わり
でなければ
走行停止

身長#

heightプロパティは、検出されたオブジェクトの高さをピクセル単位で、1から240までの整数値で報告します。

パラメータが高さに設定されたAI Visionオブジェクトのプロパティスタックブロック。#
([AIVision1 v] オブジェクト [高さ v])

例

開始したとき
[Drive towards an object until its height is larger than 100 pixels.]
ずっと
[AIVision1 v] から [AI 分類 v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
もし <([AIVision1 v] オブジェクト [高さ v]) [math_less_than v] [100]> なら
[前進 v] へ走行
終わり
でなければ
走行停止

センターX#

centerXプロパティは、検出されたオブジェクトの中心のx座標をピクセル単位で、0から320までの整数値で報告します。

パラメータがcenterXに設定されたAI Visionオブジェクトプロパティスタックブロック。#
([AIVision1 v] オブジェクト [centerX v])

例

開始したとき
[Turn slowly until an object is centered in front of the robot.]
旋回速度を [30] [% v] に設定
[右 v] へ旋回
ずっと
[AIVision1 v] から [AI 分類 v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
もし <[140] [math_less_than v] ([AIVision1 v] オブジェクト [centerX v]) [math_less_than v] [180]> なら
走行停止

センターY#

centerYプロパティは、検出されたオブジェクトの中心のy座標をピクセル単位で、0から240までの整数値で報告します。

パラメータがcenterYに設定されたAI Visionオブジェクトプロパティスタックブロック。#
([AIVision1 v] オブジェクト [centerY v])

例

開始したとき
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
ずっと
[AIVision1 v] から [AI 分類 v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
もし <([AIVision1 v] オブジェクト [centerY v]) [math_less_than v] [140]> なら
[前進 v] へ走行
終わり
でなければ
走行停止

角度#

angleプロパティは、検出されたカラーコードまたはAprilTag IDの向きを、0~359度の整数値で報告します。

パラメータが角度に設定されたAI Visionオブジェクトプロパティスタックブロック。#
([AIVision1 v] オブジェクト [角度 v])

例

開始したとき
[Slide left or right depending on how the Color Code is rotated.]
ずっと
[AIVision1 v] から [RED_BLUE v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
もし <[50] [math_less_than v] ([AIVision1 v] オブジェクト [角度 v]) [math_less_than v] [100]> なら
[右 v] へ走行
もし <[270] [math_less_than v] ([AIVision1 v] オブジェクト [角度 v]) [math_less_than v] [330]> なら(続き)
[左 v] へ走行
でなければ
走行停止
終わり
でなければ
走行停止

オリジネーション#

originXプロパティは、検出されたオブジェクトのバウンディングボックスの左上隅のx座標をピクセル単位で、0から320までの整数値で報告します。

パラメータがoriginXに設定されたAI Visionオブジェクトプロパティスタックブロック。#
([AIVision1 v] オブジェクト [originX v])

例

開始したとき
[Display if an object is to the left or the right.]
ずっと
スクリーンの行 [1] をクリア
スクリーンのカーソルを行 [1] 列 [1] に設定
[AIVision1 v] から [AI 分類 v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
もし <([AIVision1 v] オブジェクト [originX v]) [math_less_than v] [160]> なら
[To the left!] をスクリーンに表示 ▶
でなければ
[To the right!] をスクリーンに表示 ▶
終わり
[0.5] 秒待つ

起源Y#

originYプロパティは、検出されたオブジェクトのバウンディングボックスの左上隅のy座標をピクセル単位で、0から240までの整数値として報告します。

パラメータがoriginYに設定されたAI Visionオブジェクトプロパティスタックブロック。#
([AIVision1 v] オブジェクト [originY v])

例

開始したとき
[Display if an object is close or far from the robot.]
ずっと
スクリーンの行 [1] をクリア
スクリーンのカーソルを行 [1] 列 [1] に設定
[AIVision1 v] から [AI 分類 v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
もし <([AIVision1 v] オブジェクト [originY v]) [math_less_than v] [80]> なら
[Far!] をスクリーンに表示 ▶
でなければ
[Close!] をスクリーンに表示 ▶
終わり
[0.5] 秒待つ

タグID#

tagIDプロパティは、検出されたAprilTag IDの識別番号を整数として報告します。

パラメータがtagIDに設定されたAI Visionオブジェクトプロパティスタックブロック。#
([AIVision1 v] オブジェクト [tagID v])

例

開始したとき
[Drive forward when AprilTag ID 0 is detected.]
ずっと
[AIVision1 v] から [AprilTag IDs v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
もし <([AIVision1 v] オブジェクト [tagID v]) [math_equal v] [0]> なら
[前進 v] へ走行
でなければ
走行停止
終わり
[0.5] 秒待つ

AIビジョンのオブジェクトとは?#

AI Vision object is? ブロックは、検出されたオブジェクトが特定の分類に一致するかどうかを示すブール値を報告します。

  • 真 — データセット内の項目は特定のオブジェクトです。

  • 誤り — データセット内の項目は、特定のオブジェクトではありません。

AIビジョンAI分類は、オブジェクトのブールブロックです。#
<[AIVision1 v] オブジェクトは [BlueBall v]?>

パラメータ

説明

物体

アイテムをどのAI分類と比較するか。

例

開始したとき
[Display if a Blue Cube is detected.]
ずっと
[AIVision1 v] から [AI 分類 v] データを取得
スクリーンの行 [1] をクリア
スクリーンのカーソルを行 [1] 列 [1] に設定
もし <[AIVision1 v] オブジェクトあり?> なら
もし <[AIVision1 v] オブジェクトは [BlueCube v]?> なら
[Cube detected!] をスクリーンに表示 ▶
[0.5] 秒待つ

AI VisionオブジェクトはAprilTagですか?#

AI VisionオブジェクトはAprilTagですか?ブロックは、検出されたオブジェクトが特定のIDに一致するAprilTagであるかどうかを示すブール値を報告します。

  • 正解 — 検出されたオブジェクトは、指定されたIDを持つAprilTagです。

  • 偽 — 検出されたオブジェクトは、指定されたIDを持つAprilTagではありません。

AI VisionオブジェクトはAprilTagブールブロックです。#
<[AIVision1 v] オブジェクトは AprilTag [0]?>

パラメータ

説明

AprilタグID

検出されたAprilTagと比較するためのID番号。

例

開始したとき
[Report if AprilTag 3 is detected.]
ずっと
スクリーンをクリア
スクリーンのカーソルを行 [1] 列 [1] に設定
[AIVision1 v] から [AprilTag IDs v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
もし <[AIVision1 v] オブジェクトは AprilTag [3]?> なら
[That is 3!] をスクリーンに表示 ▶
でなければ
[That isn't 3!] をスクリーンに表示 ▶
終わり
終わり
[0.1] 秒待つ

AI VisionオブジェクトはAprilTag IDですか?#

AI Vision オブジェクトは AprilTag ID ですか? ブロックは、検出された AprilTag ID が特定の ID と一致するかどうかを示すブール値を報告します。

  • 確かに — AprilTag ID は番号です。

  • 誤り — AprilTag ID は番号ではありません。

AI Visionが検出したAprilTag IDはブールブロックです。#
<[AIVision1 v] object is AprilTag ID [1] ?>

パラメータ

説明

AprilTag ID番号

検出されたAprilTag ID番号と比較する番号。

例:

開始したとき
[Report if AprilTag ID 3 is detected.]
ずっと
スクリーンをクリア
スクリーンのカーソルを行 [1] 列 [1] に設定
[AIVision1 v] から [AprilTag IDs v] データを取得
もし <[AIVision1 v] オブジェクトあり?> なら
もし <[AIVision1 v] object is AprilTag ID [3] ?> なら
[That is 3!] をスクリーンに表示 ▶
でなければ
[That isn't 3!] をスクリーンに表示 ▶
終わり
終わり
[0.1] 秒待つ