人工智慧視覺#

介紹#

VEX AIM 編碼機器人的 AI 視覺感測器能夠偵測和追蹤物體、顏色和 AprilTag ID。這使得機器人能夠分析周圍環境、追蹤物體並根據檢測到的視覺數據做出反應。

AI視覺感光元件的解析度為320×240像素。原點(0, 0)位於左上角,感測器中心位於(160, 120),如下圖所示:

圖示為AIM AI視覺感測器的分辨率,座標0,0位於圖的左上角,320,0位於右上角,0,240位於左下角,160,120位於正中心。

以下是所有模組的列表:

操作-控制AI視覺資訊流並捕捉物體資料。

設定 — 調整要存取的已偵測到的物件。

值 — 傳回物件是否存在、分類和屬性。

行動#

螢幕上的AI視覺檢視器#

「螢幕上的 AI 視覺檢視器」堆疊區塊用於啟用或停用機器人螢幕上的即時 AI 視覺畫面。啟用後,螢幕將顯示即時感測器數據,其他影像或文字將無法顯示。若要顯示其他內容,請使用此程式碼區塊隱藏畫面。

顯示或隱藏 AI Vision 儀表板堆疊塊。#
在螢幕上 [顯示 v] AI Vision 檢視器

參數

描述

地位

控制機器人螢幕上資料流的顯示:show 顯示資料流,而 hide 從螢幕移除資料流。

例子

一系列程式碼區塊以一個「開始」程式碼區塊開始,緊接著是一個註解程式碼區塊,內容為「檢視 AI 視覺感測器的資料流五秒鐘」。 「顯示 AI 視覺儀錶板」程式碼區塊顯示資料流,然後一個「等待」程式碼區塊暫停執行五秒鐘。等待結束後,「隱藏 AI 視覺儀錶板」程式碼區塊將資料流從視圖中移除。#
當開始時
[View the AI Vision Sensor's feed for five seconds.]
在螢幕上 [顯示 v] AI Vision 檢視器
等待 [5] 秒
在螢幕上 [隱藏 v] AI Vision 檢視器

取得對象數據#

取得物件資料堆疊區塊將來自 AI 視覺感測器幀的資料過濾為單一簽章—感測器可以識別的事物的保存描述,例如預訓練物件、AprilTag ID 或配置的顏色或顏色代碼。

必須先在 AI Vision Utility 中配置顏色和顏色代碼,然後才能將此模組使用它們。

資料集按寬度從大到小的順序儲存對象,索引從 0 開始。可以使用 AI Vision 物件屬性 程式碼區塊存取每個物件的屬性。如果未偵測到匹配的對象,則報告資料集為空。

取得物件資料堆疊塊。#
從 AI Vision 取得 [運動球 v] 資料

範圍

描述

簽名

筛选数据集,仅包含给定签名的数据。可用签名包括:

  • 运动球
  • 橙色桶
  • 蓝色桶
  • AIM 机器人
  • AprilTag ID 0
  • AprilTag ID 1
  • AprilTag ID 2
  • AprilTag ID 3
  • AprilTag ID 4
  • 所有货物 - 运动球和所有桶
  • 名称 - 颜色或颜色代码,其中名称是在 AI 视觉实用程序中配置的名称

例子

一系列程式碼區塊以一個「啟動時」程式碼區塊開始,後面跟著一個註解程式碼區塊,內容為「如果偵測到運動球,則向前移動」。一個「獲取物件資料」程式碼區塊用於獲取運動球的圖像。接下來,一個「如果」程式碼區塊檢查是否存在AI視覺物件。如果存在,則「向前移動」代碼塊使機器人向前移動10毫米。#
當開始時
[Move forward if a sports ball is detected.]
永遠
從 AI Vision 取得 [運動球 v] 資料
如果 <AI Vision 物件存在?> 則
移動 [前方 v] [10] [mm v] ▶

顏色特徵#

顏色特徵碼是人工智慧視覺感測器可以識別的獨特顏色。這些特徵碼使感測器能夠根據物體的顏色來偵測和追蹤物體。在人工智慧視覺實用程式中配置顏色特徵碼後,感測器即可辨識視野範圍內具有該特定顏色的物體。

顏色簽章在 取得物件資料 區塊中用於即時處理和偵測彩色物件。

AI視覺實用程式顯示連接的視覺感測器正在偵測兩個彩色物體。左側顯示即時相機畫面,左側為藍色方框,右側為紅色方框,每個方框都以白色邊框框出。黑色標籤顯示它們的名稱、座標和尺寸。右側包含顏色特徵設置,紅色和藍色方框均配有色調和飽和度範圍的滑桿。底部有用於添加顏色、凍結影片、複製和保存圖像的按鈕,右下角還有一個關閉按鈕。

例子

當開始時
[Display if any objects matching the Red_Box signature is detected.]
永遠
將游標設定到螢幕第 [1] 列第 [1] 欄
清除螢幕第 [1] 列
[Change the signature to any configured Color Signature.]
從 AI Vision 取得 [Red_Box v] 資料
如果 <AI Vision 物件存在?> 則
在螢幕上列印 [Color signature detected!] ▶

顏色代碼#

顏色代碼是一種結構化的圖案,由 2 到 4 個按特定順序排列的顏色特徵組成。在 AI 視覺實用程式中配置好顏色代碼後,感測器即可識別預先定義的顏色圖案。

顏色代碼對於識別複雜物體、與遊戲元素對齊或為自主導航創建獨特標記特別有用。

AI視覺實用程式介面顯示,連接的視覺感測器偵測到兩個相鄰物體,左側為藍色方框,右側為紅色方框,它們被組合在一個標記為「藍紅」的白色邊界框中。檢測資訊包括角度(A:11°)、座標(X:143,Y:103)、寬度(W:233)和高度(H:108)。右側面板列出了三種顏色特徵:Red_Box、Blue_Box和BlueRed,色調和飽和度範圍可調。 BlueRed特徵結合了Blue_Box和Red_Box的特徵。視訊串流下方是標記為「凍結影片」、「複製影像」、「儲存影像」和「關閉 的按鈕。

例子

當開始時
[Display if any objects matching the BlueRed code is detected.]
永遠
將游標設定到螢幕第 [1] 列第 [1] 欄
清除螢幕第 [1] 列
[Change the signature to any configured Color Code.]
從 AI Vision 取得 [BlueRed v] 資料
如果 <AI Vision 物件存在?> 則
在螢幕上列印 [Color code detected!] ▶

設定#

設定 AI Vision 對象項#

設定 AI Vision 物件項目 堆疊區塊設定要使用資料集中的哪個項目。

設定 AI Vision 物件項堆疊塊。#
設定 AI Vision 物件項目為 (1)

參數

描述

物品

要使用的資料集中的項目編號。

例子

一系列程式碼區塊以一個「開始」程式碼區塊開始,緊接著是一個註解程式碼區塊,內容為「顯示偵測到的最大 AprilTag ID」。在一個無限循環中,「取得物件資料」程式碼區塊會捕捉 AprilTag ID 的影像。一個「如果」程式碼區塊檢查 AI Vision 物件是否存在。如果存在,「設定 AI Vision 物件項」程式碼區塊將物件數量賦值給一個變量,然後一個「列印」程式碼區塊在螢幕上顯示偵測到的物件的標籤 ID。#
當開始時
[Display the width of the smallest detected object.]
永遠
從 AI Vision 取得 [所有貨物 v] 資料
清除螢幕第 [1] 列
將游標設定到螢幕第 [1] 列第 [1] 欄
如果 <AI Vision 物件存在?> 則
設定 AI Vision 物件項目為 (AI Vision 物件數量)
在螢幕上列印 (AI Vision 物件 [寬度 v]) ▶

價值觀#

有對象#

has object 布林區塊報告機器人目前是否偵測到有針對其 Kicker 的物件。

  • 正確 — 機器人已取得該物體。

  • 錯誤 — 機器人沒有該物體。

<有 [運動球 v]? :: custom-ai-vision>

範圍

描述

目的

機器人踢球器要偵測的物體:

  • 運動球
  • 任意桶
  • 橘色桶
  • 藍色桶

例子

一系列程式碼區塊,以一個「開始」程式碼區塊開始,後面跟著一個註解程式碼區塊,內容為「當機器人擁有球時踢」。在一個無限循環中,一個「如果」代碼塊檢查機器人是否擁有運動球。如果為真,則執行一個中等力度的踢球程式碼區塊。#
當開始時
[Kick when the robot has a sports ball.]
永遠
如果 <有 [運動球 v]? :: custom-ai-vision> 則
[中 v] 踢球

AI Vision 物件存在#

AI Vision 物件存在 布林區塊報表資料集中是否偵測到物件。

  • 正確 — 資料集包含偵測到的物件。

  • 錯誤 — 未偵測到任何物體。

AI Vision 物件存在布爾塊。#
<AI Vision 物件存在?>

參數

描述

此程式碼區塊沒有參數。

例子

一系列程式碼區塊以一個「啟動時」程式碼區塊開始,後面跟著一個註解程式碼區塊,內容為「如果偵測到球,則向前移動」。一個「獲取物件資料」程式碼區塊用於獲取運動球的圖像。接下來,一個「如果」程式碼區塊檢查是否存在AI視覺物件。如果存在,則「向前移動」代碼塊使機器人向前移動10毫米。#
當開始時
[Move forward if a sports ball is detected.]
永遠
從 AI Vision 取得 [運動球 v] 資料
如果 <AI Vision 物件存在?> 則
移動 [前方 v] [10] [mm v] ▶

AI視覺物件是#

AI Vision 物件是布林區塊,用於報告偵測到的物件是否與特定分類相符。

  • 正確 — 資料集中的項目是特定物件。

  • 錯誤 — 資料集中的項目不是特定物件。

AI視覺AI分類是一個物件布爾塊。#
<AI Vision 物件為 [運動球 v]?>

範圍

描述

目的

應該將該物品與哪個物體進行比較:

  • 運動球
  • 橙色桶
  • 藍色桶
  • AIM機器人

例子

程式堆疊以一個「開始時」程式碼區塊開始,後面緊跟著一個註解程式碼區塊,內容為「如果偵測到運動球,則顯示」。在一個無限循環中,「獲取物件資料」程式碼區塊使用 AI 分類擷取影像。螢幕被清空,遊標被設定為第 1 行第 1 列。一個「如果」程式碼區塊檢查是否存在 AI 視覺對象,如果存在,則另一個「如果」程式碼區塊驗證分類結果是否為運動球。如果是,則一個“列印”程式碼區塊在螢幕上顯示“偵測到球!”,然後是一個“等待”程式碼區塊暫停 0.5 秒,之後重複上述過程。#
當開始時
[Display if a sports ball is detected.]
永遠
從 AI Vision 取得 [所有貨物 v] 資料
清除螢幕第 [1] 列
將游標設定到螢幕第 [1] 列第 [1] 欄
如果 <AI Vision 物件存在?> 則
如果 <AI Vision 物件為 [運動球 v]?> 則
在螢幕上列印 [Sports ball detected!] ▶
等待 [0.5] 秒

AI Vision 物件是 AprilTag ID#

AI Vision 物件是 AprilTag ID 布爾塊報告偵測到的 AprilTag ID 是否與特定 ID 相符。

  • 正確 — AprilTag ID 就是這個數字。

  • 錯誤 — AprilTag ID 不是數字。

AI視覺偵測到AprilTag ID是一個布爾塊。#
<AI Vision object is AprilTag ID [1] ?>

參數

描述

AprilTag ID

要與偵測到的 AprilTag ID 號碼進行比較的數字。

AI視覺物件計數#

AI Vision 物件計數 報告模組會將資料集中偵測到的物件數量以整數形式報告。

AI Vision 物件數量

參數

描述

此程式碼區塊沒有參數。

例子

當開始時
[Display the amount of sports balls and barrels.]
永遠
清除螢幕第 [1] 列
將游標設定到螢幕第 [1] 列第 [1] 欄
從 AI Vision 取得 [所有貨物 v] 資料
如果 <AI Vision 物件存在?> 則
在螢幕上列印 (AI Vision 物件數量) ▶
結束
等待 [0.5] 秒

AI Vision 物件屬性#

使用 get object data 區塊後,儲存的每個物件都包含九個屬性(如下所示)。

AI視覺物件屬性報告器模組。#
AI Vision 物件 [寬度 v]

除 tagID 外,所有屬性值均描述在呼叫 get object data 模組時偵測到的物件的位置、大小、方向或方位。這些值以像素或度為單位進行測量,基於感測器的 320 x 240 像素解析度。

畫面中央是一個帶有橙色條紋的藍色圓筒,周圍環繞著一個黑色邊框。 x 軸和 y 軸的標籤分別從左到右(上)和從上到下(左)為 0 到 320。

範圍

描述

財產

要使用检测到的对象的哪个属性:

寬度#

width 屬性以像素為單位報告偵測到的物件寬度,數值為 1 到 320 之間的整數。

註:像素值是相對於感測器的座標係而言的。請參閱引言中的圖表以取得參考。

AI Vision 物件屬性堆疊區塊,其參數設定為寬度。#
AI Vision 物件 [寬度 v]

畫面中央是一個帶有橙色條紋的藍色圓筒,周圍環繞著一個黑色邊框。兩條垂直的紅色虛線從畫面頂部向下延伸至邊框的左右邊緣。這兩條線之間的黑色雙箭頭表示寬度測量值。

例子

當開始時
[Move towards a blue barrel until its width is larger than 100 pixels.]
永遠
從 AI Vision 取得 [藍色桶 v] 資料
如果 <AI Vision 物件存在?> 則
如果 <(AI Vision 物件 [寬度 v]) [math_less_than v] [100]> 則
移動 [前方 v]
結束
否則
停止所有動作

高度#

height 屬性以像素為單位報告偵測到的物件的高度,數值為 1 到 240 之間的整數。

註:像素值是相對於感測器的座標係而言的。請參閱引言中的圖表以取得參考。

AI Vision 物件屬性堆疊塊,其參數設定為高度。#
AI Vision 物件 [高度 v]

畫面中央是一個帶有橙色條紋的藍色圓筒,周圍環繞著一個黑色邊框。兩條水平的紅色虛線從畫面左側延伸至邊框的上下邊緣。兩條虛線之間的黑色雙箭頭表示高度測量值。

例子

當開始時
[Move towards a blue barrel until its height is larger than 100 pixels.]
永遠
從 AI Vision 取得 [藍色桶 v] 資料
如果 <AI Vision 物件存在?> 則
如果 <(AI Vision 物件 [高度 v]) [math_less_than v] [100]> 則
移動 [前方 v]
結束
否則
停止所有動作

centerX#

centerX 屬性以像素為單位報告偵測到的物件中心的 x 座標,數值為 0 到 320 之間的整數。

註:像素值是相對於感測器的座標係而言的。請參閱引言中的圖表以取得參考。

AI Vision 物件屬性堆疊區塊,其參數設定為 centerX。#
AI Vision 物件 [centerX v]

畫面中央是一個帶有橙色條紋的藍色圓筒,周圍環繞著一個黑色邊框。一條垂直的紅色虛線從畫面頂部向下延伸到邊框中心,表示圓筒中心的 X 座標。

例子

當開始時
[Turn slowly until a blue barrel is centered in front of the robot.]
設定轉向速度為 [30]%
向 [右 v] 轉
永遠
從 AI Vision 取得 [藍色桶 v] 資料
如果 <AI Vision 物件存在?> 則
如果 <[140] [math_less_than v] (AI Vision 物件 [centerX v]) [math_less_than v] [180]> 則
停止所有動作

中心Y#

centerY 屬性以像素為單位報告偵測到的物件中心的 y 座標,數值為 0 到 240 之間的整數。

註:像素值是相對於感測器的座標係而言的。請參閱引言中的圖表以取得參考。

AI Vision 物件屬性堆疊區塊,其參數設定為 centerY。#
AI Vision 物件 [centerY v]

畫面中央是一個帶有橙色條紋的藍色圓筒,周圍環繞著一個黑色邊框。一條水平的紅色虛線從畫面左側延伸到邊框中心,表示圓筒中心的 Y 座標。

例子

當開始時
[Move towards a blue barrel until its center y-coordinate is more than 140 pixels.]
永遠
從 AI Vision 取得 [藍色桶 v] 資料
如果 <AI Vision 物件存在?> 則
如果 <(AI Vision 物件 [centerY v]) [math_less_than v] [140]> 則
移動 [前方 v]
結束
否則
停止所有動作

originX#

originX 屬性以像素為單位報告偵測到的物件邊界框左上角的 x 座標,數值為 0 到 320 之間的整數。

註:像素值是相對於感測器的座標係而言的。請參閱引言中的圖表以取得參考。

AI Vision 物件屬性堆疊區塊,其參數設定為 originX。#
AI Vision 物件 [originX v]

畫面中央是一個帶有橙色條紋的藍色圓筒,周圍環繞著一個黑色邊框。一條垂直的紅色虛線從畫面頂部延伸到邊框的左邊緣,表示邊框原點的 X 座標。

例子

當開始時
[Display if an orange barrel is to the left or the right.]
永遠
清除螢幕第 [1] 列
將游標設定到螢幕第 [1] 列第 [1] 欄
從 AI Vision 取得 [橙色桶 v] 資料
如果 <AI Vision 物件存在?> 則
如果 <(AI Vision 物件 [originX v]) [math_less_than v] [160]> 則
在螢幕上列印 [To the left!] ▶
否則
在螢幕上列印 [To the right!] ▶
結束
等待 [0.5] 秒

originY#

originY 屬性以像素為單位報告偵測到的物件邊界框左上角的 y 座標,數值為 0 到 240 之間的整數。

註:像素值是相對於感測器的座標係而言的。請參閱引言中的圖表以取得參考。

AI Vision 物件屬性堆疊區塊,其參數設定為 originY。#
AI Vision 物件 [originY v]

畫面中央是一個帶有橙色條紋的藍色圓筒,周圍環繞著一個黑色邊框。一條水平的紅色虛線從畫面左側延伸到邊框的頂部邊緣,表示邊框原點的 Y 座標。

例子

當開始時
[Display if an orange barrel is close or far from the robot.]
永遠
清除螢幕第 [1] 列
將游標設定到螢幕第 [1] 列第 [1] 欄
從 AI Vision 取得 [橙色桶 v] 資料
如果 <AI Vision 物件存在?> 則
如果 <(AI Vision 物件 [originY v]) [math_less_than v] [80]> 則
在螢幕上列印 [Far!] ▶
否則
在螢幕上列印 [Close!] ▶
結束
等待 [0.5] 秒

旋轉#

rotation 屬性以 0 到 359 度的整數表示偵測到的 AprilTag ID 或顏色代碼的方向。

AI Vision 物件屬性堆疊塊,其參數設定為旋轉。#
AI Vision 物件 [旋轉 v]

相機介面顯示一個垂直堆疊的物體,上半部為藍色,下半部為紅色,位於畫面中心。物體下方的標籤顯示“Red_Blue A:270° CX:185 CY:81 W:93 H:150”,分別表示物體的名稱、旋轉角度、中心 X 和 Y 座標、寬度和高度。網格線和數值軸標記影像尺寸,X 軸範圍為 0 到 320,Y 軸範圍為 0 到 240。

例子

當開始時
[Slide left or right depending on how the Color Code is rotated.]
永遠
從 AI Vision 取得 [Red_Blue v] 資料
如果 <AI Vision 物件存在?> 則
如果 <[50] [math_less_than v] (AI Vision 物件 [旋轉 v]) [math_less_than v] [100]> 則
移動 [右 v]
否則如果 <[270] [math_less_than v] (AI Vision 物件 [旋轉 v]) [math_less_than v] [330]> 則
移動 [左 v]
否則
停止所有動作
結束
否則
停止所有動作

軸承#

方位角屬性以度為單位報告物體位於AI視覺感測器視野中心左側或右側的距離。值為0表示物體位於中心,正值表示物體位於右側,負值表示物體位於左側。

一個VEX AIM編程機器人位於場地上,一個運動球斜向前偏左。機器人中心與運動球之間的角度標示為-30度。 一個VEX AIM編程機器人位於場地上,一個運動球斜向前偏右。機器人中心與運動球之間的角度標示為30度。
當開始時
[Keep the blue barrel directly in front of the robot.]
設定轉向速度為 [40]%
永遠
從 AI Vision 取得 [藍色桶 v] 資料
如果 <AI Vision 物件存在?> 則
如果 <(AI Vision 物件 [方位角 v]) [math_greater_than v] [5]> 則
向 [右 v] 轉
否則如果 <(AI Vision 物件 [方位角 v]) [math_less_than v] [-5]> 則
向 [左 v] 轉
否則
停止所有動作

標籤ID#

tagID 屬性以整數形式報告偵測到的 AprilTag ID 的識別號碼。

AI Vision 物件屬性堆疊區塊,其參數設定為 tagID。#
AI Vision 物件 [tagID v]

例子

當開始時
[Move forward when AprilTag ID 0 is detected.]
永遠
從 AI Vision 取得 [AprilTag ID 0 v] 資料
如果 <AI Vision 物件存在?> 則
移動 [前方 v]
結束
停止所有動作