ビジョン#

導入#

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

以下は利用可能なブロックの一覧です。

操作 — ビジョンフィードを制御し、オブジェクトデータを取得します。

設定 — 検出されたオブジェクトのうち、アクセスするオブジェクトを調整します。

値 — オブジェクトの存在、分類、およびプロパティを取得します。

行動#

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

オブジェクトデータ取得スタックブロックは、ビジョンセンサーのフレームからデータをフィルタリングします。ビジョンセンサーはAprilTag IDを検出できます。

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

オブジェクトデータ取得スタックブロック。#
Vision [前進 v] カメラから [全 AprilTag v] データを取得

パラメータ

説明

サイン

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

カメラ

ビジョンセンサーは、前方または下方のいずれかからデータを取得します。

例

開始したとき
[Climb upward when an AprilTag ID is detected.]
[300] [mm v] の高さへ離陸 ▶
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
もし <Vision オブジェクトあり?> なら
[上 v] へ [200] [mm v] 上昇 ▶

設定#

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

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

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

パラメータ

説明

アイテム

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

例

開始したとき
[Display the smallest-appearing AprilTag ID.]
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
コンソールをクリア
もし <Vision オブジェクトあり?> なら
Vision オブジェクトのアイテムを (Vision オブジェクト数) に設定
(Vision オブジェクト [id v]) をコンソールに表示 ▶

価値観#

視覚対象物が存在する#

Visionオブジェクトが存在するブールブロックは、指定されたVisionセンサーが現在オブジェクトを検出しているかどうかを報告します。

  • 真 — 指定されたビジョンセンサーが物体を検出します。

  • 誤り — 指定されたビジョンセンサーは物体を検出しません。

AI Visionダッシュボードのスタックブロックの表示/非表示を切り替える。#
<Vision オブジェクトあり?>

パラメータ

説明

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

例

開始したとき
[Climb upward when an AprilTag ID is detected.]
[300] [mm v] の高さへ離陸 ▶
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
もし <Vision オブジェクトあり?> なら
[上 v] へ [200] [mm v] 上昇 ▶

ビジョン対象はAprilTag IDです#

Vision オブジェクトは AprilTag ID です ブールブロックは、AprilTag ID が特定の ID 番号であるかどうかを報告します。

  • 真 — AprilTag ID は番号です。

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

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

パラメータ

説明

AprilTag ID番号

検出されたAprilTag ID番号(0~37)と比較する数値。

例

開始したとき
[Display when the target AprilTag ID is detected.]
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
コンソールをクリア
もし <Vision オブジェクトあり?> なら
もし <Vision object is AprilTag ID [21]> なら
[Target found!] をコンソールに表示 ▶
終わり

視覚対象物数#

ビジョンオブジェクト数レポーターブロックは、データセット内で検出されたオブジェクトの数を整数値で報告します。

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

パラメータ

説明

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

例

開始したとき
[Display how many AprilTag IDs are detected.]
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
コンソールをクリア
(Vision オブジェクト数) をコンソールに表示 ▶
[0.2] 秒待つ

ビジョンオブジェクトプロパティ#

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

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

idを除くすべてのプロパティ値は、オブジェクトデータ取得ブロックが使用された時点での、検出されたオブジェクトの位置、サイズ、向き、または方位を表します。これらの値はピクセルまたは度で測定されます。各ビジョンセンサーの解像度は異なります。

  • 正面:640 x 480ピクセル

  • 下向き:640 x 400ピクセル

パラメータ

説明

財産

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

幅#

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

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

例

開始したとき
[Show if the AprilTag ID appears large or small.]
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
コンソールをクリア
もし <Vision オブジェクトあり?> なら
もし <(Vision オブジェクト [幅 v]) [math_greater_than v] [100]> なら
[Large] をコンソールに表示 ▶
でなければ
[Small] をコンソールに表示 ▶
終わり
終わり
[0.2] 秒待つ

身長#

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

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

例

開始したとき
[Show if the AprilTag ID appears large or small.]
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
コンソールをクリア
もし <Vision オブジェクトあり?> なら
もし <(Vision オブジェクト [高さ v]) [math_greater_than v] [100]> なら
[Large] をコンソールに表示 ▶
でなければ
[Small] をコンソールに表示 ▶
終わり
終わり
[0.2] 秒待つ

センターX#

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

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

例

開始したとき
[Show if an AprilTag ID is to the left or the right of the camera.]
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
コンソールをクリア
もし <Vision オブジェクトあり?> なら
もし <(Vision オブジェクト [centerX v]) [math_less_than v] [320]> なら
[To the left] をコンソールに表示 ▶
でなければ
[To the right] をコンソールに表示 ▶
終わり
終わり
[0.2] 秒待つ

センターY#

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

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

例

開始したとき
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
[800] [mm v] の高さへ離陸 ▶
Vision [前進 v] カメラから [全 AprilTag v] データを取得
もし <Vision オブジェクトあり?> なら
もし <(Vision オブジェクト [centerY v]) [math_less_than v] [240]> なら
[Below the target!] をコンソールに表示 ▶
でなければ
[Above the target!] をコンソールに表示 ▶
終わり
でなければ
[No target found!] をコンソールに表示 ▶

ベアリング#

bearingプロパティは、ドローンに対する物体の位置を示す角度を報告します。動作は、使用するビジョンセンサーによって異なります。

0°の値は、物体の中心とセンサーの中心が一致していることを示します。正の値は物体が右側にあることを意味し、負の値は物体が左側にあることを意味します。

センサー

返品

下向き

ドローンの機首を対象物の中心に合わせるために回転させる角度(-180度から180度まで)。

フォワード

対象物がビジョンセンサーの中心から左右にずれている角度(-180°~180°)。

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

例

開始したとき
[Align the front of the drone to an AprilTag ID.]
旋回速度を (15)% に設定
[500] [mm v] の高さへ離陸 ▶
ずっと
Vision [下方向 v] カメラから [全 AprilTag v] データを取得
もし <Vision オブジェクトあり?> なら
もし <[-20] [math_less_than v] (Vision オブジェクト [方位角 v]) [math_less_than v] [20]> なら
[Hover once sensor is centered on the AprilTag ID.]
ホバリング
音 [成功 v] を再生 ▶
もし <(Vision オブジェクト [方位角 v]) [math_less_than v] [-21]> なら(続き)
[左 v] へ旋回
でなければ
[右 v] へ旋回

回転#

rotationプロパティは、検出されたAprilTag IDの向きを1~359度の整数値で報告します。

AI Visionオブジェクトのプロパティスタックブロック。パラメータは回転に設定されている。#
(Vision オブジェクト [回転 v])

例

開始したとき
[Turn left or right based on the rotation of an AprilTag ID.]
[1000] [mm v] の高さへ離陸 ▶
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
もし <Vision オブジェクトあり?> なら
もし <[240] [math_less_than v] (Vision オブジェクト [回転 v]) [math_less_than v] [300]> なら
[左 v] へ [90] 度旋回 ▶
もし <[60] [math_less_than v] (Vision オブジェクト [回転 v]) [math_less_than v] [120]> なら(続き)
[右 v] へ [90] 度旋回 ▶
でなければ
ホバリング

オリジネーション#

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

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

例

開始したとき
[Draw lines to the AprilTag ID origin from all corners.]
ずっと
スクリーンをクリア
get [all AprilTags v] data from vision [forward v] camera
もし <Vision オブジェクトあり?> なら
スクリーンに直線 [0] [0] (Vision オブジェクト [originX v]) (Vision オブジェクト [originY v]) を描画
スクリーンに直線 [0] [480] (Vision オブジェクト [originX v]) (Vision オブジェクト [originY v]) を描画
スクリーンに直線 [640] [0] (Vision オブジェクト [originX v]) (Vision オブジェクト [originY v]) を描画
スクリーンに直線 [640] [480] (Vision オブジェクト [originX v]) (Vision オブジェクト [originY v]) を描画
終わり
[0.2] 秒待つ

起源Y#

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

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

例

開始したとき
[Draw lines to the AprilTag ID origin from all corners.]
ずっと
スクリーンをクリア
get [all AprilTags v] data from vision [forward v] camera
もし <Vision オブジェクトあり?> なら
スクリーンに直線 [0] [0] (Vision オブジェクト [originX v]) (Vision オブジェクト [originY v]) を描画
スクリーンに直線 [0] [480] (Vision オブジェクト [originX v]) (Vision オブジェクト [originY v]) を描画
スクリーンに直線 [640] [0] (Vision オブジェクト [originX v]) (Vision オブジェクト [originY v]) を描画
スクリーンに直線 [640] [480] (Vision オブジェクト [originX v]) (Vision オブジェクト [originY v]) を描画
終わり
[0.2] 秒待つ

ID#

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

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

例

開始したとき
[Display the detected AprilTag ID.]
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
コンソールをクリア
もし <Vision オブジェクトあり?> なら
(Vision オブジェクト [id v]) をコンソールに表示 ▶
終わり
[0.2] 秒待つ