ビジョン#
導入#
VEX AIRドローンには、AprilTag IDを検出・追跡する2つのビジョンセンサーが搭載されています。これにより、ドローンは周囲の状況を分析し、物体を追跡し、検出された視覚データに基づいて反応することができます。
以下は利用可能なブロックの一覧です。
操作 — ビジョンフィードを制御し、オブジェクトデータを取得します。
オブジェクトデータを取得 — AprilTag ID のデータをキャプチャします。
設定 — 検出されたオブジェクトのうち、アクセスするオブジェクトを調整します。
ビジョンオブジェクトアイテムを設定 — 検出されたオブジェクトリストから特定のオブジェクトを選択します。
値 — オブジェクトの存在、分類、およびプロパティを取得します。
ビジョンオブジェクトが存在する — オブジェクトが検出されたかどうかを報告します。
Vision オブジェクトは AprilTag ID です — 検出された AprilTag ID が特定の ID と一致するかどうかを確認します。
ビジョンオブジェクト数 — 検出されたオブジェクトの数を報告します。
ビジョンオブジェクトプロパティ — 次のような詳細情報を取得します。
行動#
オブジェクトデータを取得する#
オブジェクトデータ取得スタックブロックは、ビジョンセンサーのフレームからデータをフィルタリングします。ビジョンセンサーは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スタックブロックは、データセット内のどのアイテムを使用するかを設定します。
Vision オブジェクトのアイテムを [1] に設定
パラメータ |
説明 |
|---|---|
アイテム |
データセット内で使用する項目の番号。 |
例
開始したとき
[Display the smallest-appearing AprilTag ID.]
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
コンソールをクリア
もし <Vision オブジェクトあり?> なら
Vision オブジェクトのアイテムを (Vision オブジェクト数) に設定
(Vision オブジェクト [id v]) をコンソールに表示 ▶
価値観#
視覚対象物が存在する#
Visionオブジェクトが存在するブールブロックは、指定された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 は番号ではありません。
<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!] をコンソールに表示 ▶
終わり
視覚対象物数#
ビジョンオブジェクト数レポーターブロックは、データセット内で検出されたオブジェクトの数を整数値で報告します。
(Vision オブジェクト数)
パラメータ |
説明 |
|---|---|
このブロックにはパラメータがありません。 |
例
開始したとき
[Display how many AprilTag IDs are detected.]
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
コンソールをクリア
(Vision オブジェクト数) をコンソールに表示 ▶
[0.2] 秒待つ
ビジョンオブジェクトプロパティ#
オブジェクトデータの取得 ブロックが使用された後に保存される各オブジェクトには、複数のプロパティが含まれています(以下に示すとおり)。
(Vision オブジェクト [幅 v])
idを除くすべてのプロパティ値は、オブジェクトデータ取得ブロックが使用された時点での、検出されたオブジェクトの位置、サイズ、向き、または方位を表します。これらの値はピクセルまたは度で測定されます。各ビジョンセンサーの解像度は異なります。
正面:640 x 480ピクセル
下向き:640 x 400ピクセル
パラメータ |
説明 |
|---|---|
財産 |
検出したオブジェクトのどのプロパティを使用するか: |
幅#
widthプロパティは、検出されたオブジェクトの幅をピクセル単位で、1から640までの整数値で報告します。
(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までの整数値で報告します。
(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までの整数値で報告します。
(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までの整数値で報告します。
(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°)。 |
(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度の整数値で報告します。
(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までの整数値で報告します。
(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までの整数値で報告します。
(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の識別番号を整数として報告します。
(Vision オブジェクト [id v])
例
開始したとき
[Display the detected AprilTag ID.]
ずっと
Vision [前進 v] カメラから [全 AprilTag v] データを取得
コンソールをクリア
もし <Vision オブジェクトあり?> なら
(Vision オブジェクト [id v]) をコンソールに表示 ▶
終わり
[0.2] 秒待つ