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

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

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

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


スナップショットを撮る

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

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

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

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

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

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

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

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

AI ビジョン センサーは、その後に続くブロックに対して最後に撮影したスナップショットを使用することに注意してください。 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 の場合、ロボットは前進し、そうでない場合は走行を停止します。 ブロックは積み重ねられ、モジュール式コーディング環境におけるプログラムの流れを示します。

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

センターXとセンターY

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

コンピューター ビジョン システムによって追跡されている青いバッキーボール。 オブジェクトの輪郭は白い四角で囲まれており、輪郭の内側には中央の白い十字を囲む小さな赤い四角があります。 画像の左上隅のラベルには、オブジェクトが青色で、座標が 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 Vision Utility インターフェース。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 を返します。4
このブロックは
潜在的に空のスナップショットからデータを取得しようとしていないことを確認するために常に使用するがあります。

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

たとえば、ここではロボットが AI ビジョン センサーを使用して継続的にスナップショットを撮影します。 「青」のカラーシグネチャ を持つ特定すると、前進します。


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


オブジェクト数

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

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

左側に 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 検出モード がオンになっている場合にのみ使用できます。4
このブロックは
指定されたオブジェクトが特定の 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: