ブロックで使用できるように、AI ビジョン センサーで カラー シグネチャ と カラー コード が設定されていることを確認してください。 設定方法の詳細については、以下の記事をお読みください。
- VEXcode EXP の AI Vision Signature を使用したカラーシグネチャの設定
- VEXcode EXP で AI Vision Signature を使用してカラーコードを構成する
AI ビジョン センサーは、AI 分類と AprilTags も検出できます。 これらの検出モードを有効にする方法については、こちらをご覧ください。
これらの個々のコマンドの詳細と、VEXcode での使用方法については、API サイトをご覧ください。
AIビジョンセンサーで視覚データを取得する
すべての AI ビジョン センサー コマンドは、構成された AI ビジョン センサーの名前で始まります。 この記事のすべての例では、使用される AI ビジョン センサーの名前は ai_vision_1になります。
スナップショット
take_snapshot メソッドは、AI ビジョン センサーが現在見ているものを写真に撮り、そのスナップショットからプロジェクトで使用できるデータを取得します。 スナップショットを撮影するときに、AI ビジョン センサーがどのタイプのオブジェクトのデータを収集するかを指定する必要があります。
-
カラー署名 またはカラーコード
- これらのビジュアル シグネチャは、AI ビジョン センサーの名前、二重アンダースコア、そしてビジュアル シグネチャの名前で始まります (例:
ai_vision_1__Blue。
- これらのビジュアル シグネチャは、AI ビジョン センサーの名前、二重アンダースコア、そしてビジュアル シグネチャの名前で始まります (例:
-
AI分類 -
AiVision.ALL_AIOBJS -
4月タグ-
AiVision.ALL_TAGS
スナップショットを作成すると、指定したすべての検出されたオブジェクトのタプルが作成されます。 たとえば、「青」の カラー シグネチャを検出する場合、AI ビジョン センサーが 3 つの異なる青いオブジェクトを検出したとすると、3 つすべてのデータがタプルに格納されます。
この例では、変数 vision_objects には、 ai_vision_1という名前の AI ビジョン センサーから検出された「紫」のカラー シグネチャ を含むタプルが格納されます。 検出されたオブジェクトの数を表示し、0.5 秒ごとに新しいスナップショットをキャプチャします。
while True:
# すべての紫色のカラーシグネチャのスナップショットを取得し、vision_objectsに保存します
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
# データを取得する前に、スナップショットでオブジェクトが検出されたことを確認します
vision_objects[0].exists == True の場合
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("オブジェクト数:", len(vision_objects))
wait(0.5, SECONDS)
オブジェクトのプロパティ
スナップショットからの各オブジェクトには、そのオブジェクトに関する情報を報告するために使用できるさまざまなプロパティがあります。 使用可能なプロパティは次のとおりです。
- id
- centerXとcenterY
- originXとoriginY
- 幅
- 身長
- 角度
- スコア
- 存在する
オブジェクトのプロパティにアクセスするには、タプルを格納する変数名と、それに続くオブジェクト インデックスを使用します。
オブジェクト インデックスは、取得する特定のオブジェクトのプロパティを示します。 スナップショットを撮影した後、AI ビジョン センサーはオブジェクトをサイズごとに自動的に分類します。 最大のオブジェクトにはインデックス 0 が割り当てられ、小さいオブジェクトにはより大きなインデックス番号が割り当てられます。
たとえば、 vision_objects 変数内で最大のオブジェクトの幅を呼び出す場合は、 vision_objects[0].widthとなります。
id
id プロパティは、 AprilTags および AI 分類でのみ使用できます
AprilTagの場合、 id プロパティは検出されたAprilTag ID番号を表します。
特定の AprilTags を識別すると、選択的なナビゲーションが可能になります。 ロボットを特定のタグに向かって移動し、他のタグを無視するようにプログラムして、それらを自動ナビゲーションの道標として効果的に使用できます。
AI 分類の場合、 id プロパティは検出された AI 分類の特定のタイプを表します
特定の AI 分類を識別することで、ロボットは、青いバッキーボールではなく赤いバッキーボールに向かって移動するなど、特定のオブジェクトにのみ焦点を合わせることができます。
AprilTags および AI 分類 の詳細と、AI Vision Utility でそれらの検出を有効にする方法については、これらの記事をご覧ください。
中心X と 中心Y
これは、検出されたオブジェクトの中心座標(ピクセル単位)です。
CenterX と CenterY 座標は、ナビゲーションと配置に役立ちます。 AI ビジョン センサーの解像度は 320 x 240 ピクセルです。
AI ビジョン センサーに近いオブジェクトは、遠いオブジェクトよりも CenterY 座標が低くなることがわかります。
この例では、AI ビジョン センサーのビューの中心が (160, 120) であるため、検出されたオブジェクトの centerX 座標が 150 ピクセルより大きく 170 ピクセルより小さくなるまでロボットは右に曲がります。
while True:
# すべての青色シグネチャのスナップショットを取得し、vision_objectsに保存します
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# データを取得する前に、スナップショットでオブジェクトが検出されたことを確認します
if vision_objects[0].exists == True
# オブジェクトがAIビジョンセンサーの視野の中央にないかどうかを確認します。
if vision_objects[0].centerX > 150 and 170 > vision_objects[0].centerX:
# オブジェクトがビューの中央に来るまで右に回り続けます
drivetrain.turn(RIGHT)
そうでなければ:
drivetrain.stop()
wait(5, MSEC)
originX と originY
OriginX と OriginY は、検出されたオブジェクトの左上隅の座標 (ピクセル単位) です。
OriginX と OriginY 座標は、ナビゲーションと配置に役立ちます。 この座標をオブジェクトの幅と高さと組み合わせることで、オブジェクトの境界ボックスのサイズを決定できます。 これは、移動するオブジェクトの追跡やオブジェクト間の移動に役立ちます。
幅高さ 、幅 、高さ
これは、検出されたオブジェクトのピクセル単位の幅または高さです。
幅と高さの測定値は、さまざまなオブジェクトを識別するのに役立ちます。 たとえば、バッキーボールはリングよりも高さが高くなります。
幅と高さは、AI ビジョン センサーからの物体の距離も示します。 通常、測定値が小さいほど物体が遠くにあることを意味し、測定値が大きいほど物体が近いことを示唆します。
この例では、オブジェクトの幅がナビゲーションに使用されます。 ロボットは、幅が特定のサイズに達するまで物体に近づき、停止します。
while True:
# すべての青色シグネチャのスナップショットを取得し、vision_objectsに保存します
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# データを取得する前に、スナップショットでオブジェクトが検出されたことを確認します
if vision_objects[0].exists == True
# 最大の物体の幅を測定して、AIビジョンセンサーに近いかどうかを確認します
if vision_objects[0].width < 250:
# オブジェクトの幅が250ピクセルを超えるまで近づきます
drivetrain.drive(FORWARD)
そうでなければ:
drivetrain.stop()
wait(5, MSEC)
角度
角度 プロパティは、カラーコード およびAprilTagsでのみ使用できます
これは、検出された カラー コードまたは AprilTag の向きが異なっているかどうかを表します。
ロボットがカラー コード またはAprilTag に対して異なる方向を向いているかどうかを確認し、それに応じてナビゲーションの決定を行うことができます。
たとえば、カラー コード が適切な角度で検出されない場合、それが表すオブジェクトをロボットが適切に拾うことができない可能性があります。
スコア
スコア プロパティは、AI ビジョン センサーでAI 分類 を検出するときに使用されます。
信頼スコアは、AI ビジョン センサーの検出の確実性を示します。 この画像では、これら 4 つのオブジェクトの AI 分類を 99% の信頼度で識別しています。 このスコアを使用すると、ロボットが信頼性の高い検出のみに集中できるようになります。
存在する
存在 プロパティは、最後に撮影されたスナップショットで指定された ビジュアル シグネチャ が検出されたかどうかを検出するために使用されます。
これにより、検出されたオブジェクトが前のスナップショットで検出されたかどうかを確認できます。 このプロパティは、オブジェクトが存在する場合は True を返し、オブジェクトが存在しない場合には False を返します。