VEXcode V5ブロックでAIビジョンセンサーを使ったコーディング

ブロックで使用できるように、AI ビジョン センサーで カラー シグネチャカラー コード が設定されていることを確認してください。 設定方法の詳細については、以下の記事をお読みください。

AI ビジョン センサーは、AI 分類と AprilTags も検出できます。 これらの検出モードを有効にする方法については、こちらをご覧ください。

これらの個々のブロックの詳細と、VEXcode での使用方法については、API サイトをご覧ください。


スナップショットを撮る

ドロップダウンの選択肢が 2 つあり、1 つは AIVision1、もう 1 つは COL1 というラベルが付いたスナップショットを撮るコマンドを含むブロック。 このブロックは、AI ビジョン センサーからスナップショットを取得し、ビジュアル コーディング環境内の指定された変数から特定のオブジェクトまたは色を参照するように設計されています。 ブロックの形状は、ブロックベースのコーディング インターフェースに典型的な、端がわずかに湾曲しています。

Take Snapshot ブロックは、AI ビジョン センサーが現在見ているものを写真に撮り、そのスナップショットからプロジェクトで使用できるデータを取得します。 スナップショットを撮影するときに、AI ビジョン センサーがどのタイプのオブジェクトのデータを収集するかを指定する必要があります。

  • カラーシグネチャー
  • カラーコード
  • AI分類
  • 4月のタグ

スナップショットを撮ると、指定したすべての検出されたオブジェクトの配列が作成されます。 たとえば、「赤」のカラー シグネチャを検出する場合、AI ビジョン センサーが 3 つの異なる赤いオブジェクトを検出すると、3 つすべてのデータが配列に格納されます

異なるオブジェクト間で指定する方法の詳細については、この記事の「オブジェクト項目の設定」セクションを参照してください。

オブジェクトまたは色のスナップショットを撮るコマンドを含む、水色のコーディング ブロック。 ドロップダウン オプションは 2 つあります。1 つは AIVision2 というラベルが付いており、もう 1 つは Blue というラベルが付いています。 このブロックは、ブロックベースのコーディング環境で使用するために設計されており、AI ビジョン センサーからスナップショットをキャプチャし、青として定義されたオブジェクトまたは色を追跡します。 ブロックには、モジュラー ブロックを使用するコーディング インターフェイスに典型的な、わずかな曲線があります。

この例では、設定された「青」 カラー シグネチャ に一致するオブジェクトのみを検出し、それ以外のオブジェクトは検出しません。

スナップショットから取得したデータ

AI ビジョン センサーは、その後に続くすべてのブロックに最後に撮影したスナップショットを使用することに注意してください。 AI ビジョン センサーから常に最新の情報を確実に取得するには、データを取得するたびにスナップショットを再撮影してください。 

解決

AI ビジョンセンサーの解像度を理解することは、正確なデータ解釈に不可欠です。 センサーの解像度は 320 x 240 ピクセルで、正確な中心は座標 (160, 120) にあります。

X 座標が 160 未満の場合、センサーの視野の左半分に相当し、160 を超える場合、右半分に相当します。 同様に、Y 座標が 120 未満の場合、ビューの上半分が示され、120 を超える場合、ビューの下半分が示されます

AI ビジョン センサーを使用してオブジェクトを測定する方法の詳細については、「 VEXcode V5 の AI ビジョン ユーティリティのデータの理解」を参照してください。

幅と高さ

これは、検出されたオブジェクトのピクセル単位の幅または高さです。

画像には、白い四角い輪郭で追跡されている青いバッキーボールが示されています。 左上隅には、座標 X:176、Y:117、寸法 W:80、H:78 の青いオブジェクトであることを示すラベルがあります。 赤い矢印はオブジェクトの幅と高さを強調表示します。

幅と高さの測定値は、さまざまなオブジェクトを識別するのに役立ちます。 たとえば、バッキーボールはリングよりも高さが高くなります。

視覚認識システムによって追跡されている 2 つの青い立方体オブジェクト。 上の立方体には白い輪郭があり、その位置は X:215、Y:70、寸法は W:73、H:84 と示すラベルが付いています。 下の立方体には同様の白い輪郭があり、ラベルには X:188、Y:184、寸法 W:144、H:113 が表示されています。 各立方体の中央には白い十字があり、追跡の焦点を示していると考えられます。 ラベルには、各オブジェクトの測定値と追跡データが強調表示されます。

幅と高さは、AI ビジョン センサーからの物体の距離も示します。 通常、測定値が小さいほど物体が遠くにあることを意味し、測定値が大きいほど物体が近いことを示唆します。

プログラムは開始時にブロックから始まり、その後に永久ループが続きます。 ループ内では、プログラムは AI ビジョン センサー (AIVision1) を使用してスナップショットを撮り、青いオブジェクトを検出します。 オブジェクトが存在する場合、プログラムはオブジェクトの幅が 250 ピクセル未満かどうかを確認します。 true の場合、ロボットは前進し、そうでない場合は走行を停止します。 ブロックは積み重ねられ、モジュール型コーディング環境におけるプログラムの流れを示します。

この例では、オブジェクトの幅がナビゲーションに使用されます。 ロボットは、幅が特定のサイズに達するまで物体に近づき、停止します。

CenterXとCenterY

これは、検出されたオブジェクトの中心座標(ピクセル単位)です。

コンピューター ビジョン システムによって追跡されている青いバッキーボール。 オブジェクトは白い四角で囲まれており、その輪郭の内側には、中央の白い十字を囲む小さな赤い四角があります。 画像の左上隅のラベルには、オブジェクトが青で、座標が X:176、Y:117、寸法が W:80、H:78 であることがわかります。

CenterX と CenterY 座標は、ナビゲーションと配置に役立ちます。 AI ビジョン センサーの解像度は 320 x 240 ピクセルです。

ビジョン システムによって追跡される 2 つの青い立方体オブジェクト。 上のオブジェクトには、座標 X:215、Y:70、寸法 W:73、H:84 のラベルが付けられ、白いアウトラインと中央に白い十字が付いています。 下のオブジェクトには、座標 X:188、Y:184、寸法 W:144、H:113 のラベルが付けられており、これも白の輪郭と中央の白い十字で囲まれています。

AI ビジョン センサーに近いオブジェクトは、遠いオブジェクトよりも CenterY 座標が低くなることがわかります。

when started から始まり、その後に永久ループが続くブロックベースのコーディング シーケンス。 ループ内では、プログラムは AIVision1 を使用してスナップショットを撮り、青いオブジェクトを検出します。 オブジェクトが存在する場合、プログラムはオブジェクトが AI ビジョン センサーのビューの中央に来るまで回転します。 オブジェクトは、centerX 値が 150 〜 170 の場合に中央に配置されているとみなされます。 オブジェクトが中央にない場合、ロボットは右に曲がります。それ以外の場合は、運転を停止します。 ブロックはビジュアル プログラムのフローとロジックを示します。

この例では、AI ビジョン センサーのビューの中心が (160, 120) であるため、検出されたオブジェクトの centerX 座標が 150 ピクセルより大きく 170 ピクセルより小さくなるまでロボットは右に曲がります。

角度

角度は、カラー コード およびAprilTagsでのみ使用可能なプロパティです。 これは、検出されたカラー コードまたは AprilTag の向きが異なっているかどうかを表します。

ビジョン システムによって追跡されている、上部に緑色の立方体、下部に青色の立方体 2 個が積み重ねられています。 両方の立方体の周囲に白い輪郭があり、緑の立方体の中央に白い十字があります。 画像の下部のラベルには Green_Blue A:87° と表示され、検出された色と角度の測定値が示されます。 その下には、座標が X:117、Y:186、寸法が W:137、H:172 と記載されており、フレーム内に積み重ねられた立方体の位置とサイズを表しています。

ロボットがカラー コード またはAprilTag に対して異なる方向を向いているかどうかを確認し、それに応じてナビゲーションの決定を行うことができます。

緑と青の 2 つの立方体が並んで配置され、視覚システムによって追跡されます。 両方の立方体の周囲に白い輪郭があり、中央に白い十字があります。 左上のラベルは Green_Blue A:0° を示しており、検出された色と角度の測定値を参照しています。 その下には、座標が X:150、Y:102、寸法が W:179、H:109 と表示され、フレーム内の立方体の位置とサイズを表しています。

たとえば、カラー コード が適切な角度で検出されない場合、それが表すオブジェクトをロボットが適切に拾うことができない可能性があります。

OriginXとOriginY

OriginX と OriginY は、検出されたオブジェクトの左上隅の座標 (ピクセル単位) です。

視覚システムによって追跡されている青いバッキーボール。 オブジェクトは白いアウトラインで囲まれ、アウトラインの中央には白い十字が表示されます。 左上のラベルには、オブジェクトの色が青であること、座標が X:176、Y:117、寸法が W:80、H:78 であることが示されています。 小さな赤い四角でオブジェクトの左上隅が強調表示されます。

OriginX と OriginY 座標は、ナビゲーションと配置に役立ちます。 この座標をオブジェクトの幅と高さと組み合わせることで、オブジェクトの境界ボックスのサイズを決定できます。 これは、移動するオブジェクトの追跡やオブジェクト間の移動に役立ちます。

when started で始まり、その後に永久ループが続くブロックベースのコーディング シーケンス。 ループ内では、プログラムは AIVision1 を使用してスナップショットを撮り、青いオブジェクトを検出します。 オブジェクトが存在する場合、プログラムはオブジェクトの位置とサイズに基づいて、Brain 画面上に四角形を描画します。 四角形は、AIVision1 センサーによって提供されるオブジェクトの originX、originY、幅、高さの値を使用して描画されます。 このプログラムは、検出されたオブジェクトを視覚的に追跡し、Brain 画面上で強調表示します。

この例では、原点、幅、高さの正確な座標を使用して、Brain 上に四角形が描画されます。

タグID

tagID はAprilTagsでのみ使用できます。 これは指定されたAprilTagの ID 番号です。

AprilTags が付いた 3 枚の正方形カードがビジョン システムによって追跡されています。 各カードには ID 番号と関連する追跡データがラベル付けされています。 左側のカードには ID:0 というラベルが付いており、座標は A:350°、X:110、Y:96、W:41、H:41 です。 中央のカード(ID:3)の座標は、A:1°、X:187、Y:180、W:57、H:57です。 右側のカードには ID:9 のラベルが付いており、座標は A:3°、X:237、Y:89、W:38、H:38 です。 各カードには白い輪郭があり、システムはカードの位置と向きを追跡しています。

特定の AprilTags を識別すると、選択的なナビゲーションが可能になります。 ロボットを特定のタグに向かって移動し、他のタグを無視するようにプログラムして、それらを自動ナビゲーションの道標として効果的に使用できます。

スコア

スコア プロパティは、AI ビジョン センサーでAI 分類 を検出するときに使用されます。

この画像は、ビジョン システムによって追跡されている 4 つのオブジェクト (ボール 2 個とリング 2 個) を示しています。 赤いボールには、座標 X:122、Y:84、W:67、H:66、スコア 99% のラベルが付けられています。 青いボールのX:228、Y:86、W:70、H:68、スコアは99%です。 緑のリングの座標は X:109、Y:186、W:98、H:92、スコアは 99% です。 赤いリングには、X:259、Y:187、W:89、H:91 のラベルが付けられ、スコアは 99% です。 各オブジェクトは白で囲まれ、追跡の精度を示します。

信頼スコアは、AI ビジョン センサーの検出の確実性を示します。 この画像では、これら 4 つのオブジェクトの AI 分類を 99% の信頼度で識別しています。 このスコアを使用すると、ロボットが信頼性の高い検出のみに集中できるようになります。


オブジェクト項目の設定

AI ビジョン センサーによってオブジェクトが検出されると、そのオブジェクトは配列に格納されます。 デフォルトでは、AI ビジョン センサーは配列の最初のオブジェクト、つまりインデックスが 1 のオブジェクトからデータを取得します。 AIビジョンセンサーが1つのオブジェクトのみを検出した場合、そのオブジェクトがデフォルトで選択されます

ただし、AI ビジョン センサーが一度に複数のオブジェクトを検出した場合は、オブジェクト項目の設定 ブロックを使用して、データを取得するオブジェクトを指定する必要があります。

水色のコーディングブロック。 AIVision1のオブジェクト項目を1に設定するコマンドが含まれています。 このブロックはブロックベースのコーディング環境の一部であり、通常は AI ビジョン センサーが焦点を合わせるか追跡するオブジェクトまたは項目を定義するために使用されます。 ブロックの形状はわずかに湾曲しており、ビジュアル コーディング プラットフォームのモジュール性に適合しています。

AI ビジョンセンサーによって複数のオブジェクトが検出されると、それらは最大のものから最小のものの順に配列されます。 つまり、検出された最大のオブジェクトは常にオブジェクト インデックス 1 に設定され、最小のオブジェクトは常に最高番号に設定されます。

AI Vision Utility インターフェース。左側に 2 つの青い立方体が検出され、それぞれに X 座標と Y 座標および寸法がマークされています。 システムは接続されており、AprilTags はオンになっていますが、AI 分類はオフになっています。 右側には、青色の設定が表示されており、色相と彩度の範囲を調整でき、それぞれ 22 と 0.34 に設定されています。 色を追加または設定したり、ビデオをフリーズしたりするオプションがあります。 ファームウェアは最新で、バージョン 1.0.0.b16 が実行されており、下部に閉じるボタンがあります。

この例では、カラー シグネチャ 「青」で 2 つのオブジェクトが検出されました。 Take Snapshot ブロックが使用されると、これら両方が配列に配置されます。

AI ビジョン ユーティリティ インターフェース。X、Y、寸法データがラベル付けされた 2 つの青い立方体を追跡します。 左の立方体の座標は X:127、Y:179、寸法は W:136、H:123 です。一方、右の立方体の座標は X:233、Y:74、寸法は W:78、H:87 です。 システムは接続されており、AprilTags はオンになっており、AI 分類はオフになっています。 青色の設定では、色相範囲は 22、彩度は 0.34 です。 下部に「ビデオをフリーズ」ボタンとファームウェア情報(バージョン 1.0.0.b16)が表示されます。

ここで、最前面のオブジェクトは最大のオブジェクトなのでオブジェクト インデックス 1 になり、最小のオブジェクトはオブジェクト インデックス 2 になります。


オブジェクトが存在する

スナップショットからデータを取得する前に、 AI ビジョン センサーがそのスナップショットからオブジェクトを検出したことを確認することがです。 ここで、「Object Exists ブロックが役立ちます。

AIVision1 オブジェクトというテキストを含む、水色の六角形のコーディング ブロックが存在しますか? このブロックはブロックベースのコーディング環境の一部であり、通常は AIVision1 というラベルの付いた AI ビジョン センサーによってオブジェクトが検出されたかどうかを確認するために使用されます。 ブロックは、そのような環境に特徴的なわずかな曲線と形状を備え、モジュラーコーディング構造内に収まるように設計されています。

このブロックは、最後に撮影されたスナップショットにオブジェクトが検出されたかどうかに応じて、True またはFalse 値を返します

このブロックは 潜在的に空のスナップショットからデータを取得しようとしていないことを確認するために使用する必要があります。

when started で始まり、その後に永久ループが続くブロックベースのコーディング シーケンス。 ループ内では、AI ビジョン センサー (AIVision2) がスナップショットを撮り、青色を検出します。 青色の視覚的特徴を持つ物体が検出されると、ロボットは前進します。 物体が検出されない場合、ロボットは運転を停止します。 ブロックは積み重ねられてプログラムの条件付きロジックを表し、検出されたオブジェクトの存在によってロボットの動きが制御されます。

たとえば、ここではロボットが AI ビジョン センサーを使用して継続的にスナップショットを撮影します。 いずれかの オブジェクトが「青」 カラー シグネチャであると識別された場合、前進します。


スナップショットに「青」 カラー シグネチャがない場合、ロボットは動きを停止します。


オブジェクト数

「AIVision1 オブジェクト数」というラベルが付いた、水色の丸いコーディング ブロック。 このブロックは、ブロックベースのコーディング環境で、AIVision1 というラベルの付いた AI ビジョン センサーによって検出されたオブジェクトの数を取得するために使用されます。 このブロックは、ロボットやビジョン システムのビジュアル プログラミング インターフェイスでよく使用されるモジュラー構造に適合します。

オブジェクト数 ブロックを使用すると、AI ビジョン センサーが最後のスナップショットで認識できる特定の カラー シグネチャ のオブジェクトの数を確認できます。 

左側に 2 つの青い立方体が検出された AI Vision Utility インターフェース。 システムが接続され、AprilTags が有効になり、AI 分類がオフになっています。 インターフェイスには、色相を 22、彩度を 0.34 に設定して青色を検出するための設定が表示されます。 ビデオをフリーズしたり、色を追加または設定したりするためのボタンがあります。 ファームウェアは最新であり、バージョン 1.0.0.b16 が実行されていることが示されています。 接続を切断したりユーティリティを閉じたりするためのボタンもあります。

ここでは、AI ビジョン センサーに カラー シグネチャ 「青」が設定されており、2 つのオブジェクトを検出していることがわかります。

when started から始まり、その後に永久ループが続くブロックベースのコーディング シーケンス。 ループ内では、プログラムは AIVision2 を使用してスナップショットを撮り、青色の視覚的特徴を検出します。 青いオブジェクトが検出されたかどうかを確認する前に、コンソールをクリアしてリセットします。 青いオブジェクトが存在する場合、オブジェクトの数がコンソールに出力されます。 その後、プログラムは 2 秒間待機してからプロセスを繰り返します。 ブロックは青いオブジェクトの継続的なチェックを視覚的に表し、結果をコンソールに表示します。数字 2 が印刷されたコンソール出力。 コンソールは、ブロックベースのコーディング環境で実行されているプログラムの結果を表示する可能性のある、より大きなインターフェースの一部です。 コンソールの上部には追加のアクションやコントロール用のボタンがあり、ここで実行されているプログラムは Print Console にデータを出力し、画面に結果 2 を表示します。

このコードでは、AI ビジョン センサーはスナップショットを取得し、VEXcode コンソールに「2」を出力します。これは、「青」 カラー シグネチャを 2 つだけ検出したためです。


物体

AIVision1 に関連するオブジェクトのプロパティを選択するためのドロップダウン メニュー。 選択されたオプションは幅で、メニューには高さ、centerX、centerY、角度、originX、originY、tagID、スコアなどの他のオプションがリストされます。 これらのオプションを使用すると、ユーザーは AI ビジョン センサーによって検出されたオブジェクトから特定のデータ ポイントを取得できるため、オブジェクトのさまざまな属性を柔軟に追跡または測定できます。

オブジェクト ブロックを使用すると、指定したオブジェクトのプロパティをレポートできます。 これにより、最後に取得したスナップショットから取得した利用可能なデータをすべて使用できるようになります。

取得したスナップショットから取得できるオブジェクト プロパティは次のとおりです。

  • 身長
  • センターX
  • 中心Y
  • 角度
  • オリジンX
  • 起源Y
  • タグID
  • スコア

これらのプロパティの詳細については、この記事の「スナップショットから取得されたデータ」セクションをお読みください。


検出されたAprilTagは

コーディング インターフェイスからの明るい青色の六角形ブロック。 AIVision1 によって検出された AprilTag が値 1 と一致するかどうかを確認するコマンドが含まれています。 このブロックはブロックベースのコーディング環境で使用され、特定の AprilTag が存在するかどうかを評価するように設計されています。 その形状と構造により、他のロジック ブロック内に収まり、通常はロボット工学や AI ビジョン タスクのビジュアル プログラミングで使用されます。

検出された AprilTag ブロックは、AprilTag 検出モード オンになっている場合にのみ使用できます

このブロックは、指定されたオブジェクトが特定の AprilTag であるかどうかに応じて True または False を報告します。

ビジョン システムによって追跡されている 3 つの AprilTag。 各タグには ID と関連付けられた座標があります。 左のタグには ID:0 というラベルが付けられ、座標は X:110、Y:96、W:41、H:41 です。 中央のタグのラベルは ID:3、座標は X:187、Y:180、W:57、H:57 です。 右のタグのラベルは ID:9、座標は X:237、Y:89、W:38、H:38 です。

1 つのスナップショットで複数の AprilTag が検出された場合、それらはサイズではなく識別された ID に基づいて配列に配置されます

この画像では、ID 0、3、9 の 3 つの AprilTag が検出されています。 配列内では ID の昇順に整理されます。 インデックス 1 のオブジェクトは ID 0 の AprilTag に対応し、インデックス 2 のオブジェクトは ID 3 の AprilTag に対応し、インデックス 3 のオブジェクトは ID 9 の AprilTag に対応します。

AprilTags とは何か、また AI ビジョン センサーで AprilTags の検出を有効にする方法の詳細については、この記事をお読みください。


AI分類は

ブロックベースのコーディング環境からの水色の六角形ブロック。 ブロックにはコマンド AIVision1 AI 分類は BlueBall ですか? が含まれています。 このブロックは、AI ビジョン センサー (AIVision1) が検出されたオブジェクトを BlueBall として分類したかどうかを確認します。 このブロックにはドロップダウン オプションがあり、ユーザーはビジュアル プログラミング インターフェイスで追跡や意思決定を行うためにさまざまなオブジェクトまたは AI 分類を選択できます。

AI 分類 ブロックは、AI 分類検出モード オンの場合にのみ使用できます。

 

このブロックは、指定されたオブジェクトが特定の AI 分類であるかどうかに応じて True または False を報告します。

AI ビジョン センサーで検出できる AI 分類は、使用しているモデルによって異なります。 利用可能なAI分類と、AIビジョンセンサーでそれらの検出を有効にする方法の詳細については、この記事お読みください

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: