機器人專用模組#
介紹#
英雄機器人 Flop 包含一個進氣馬達、一個機械手臂馬達和一個 IQ AI 視覺感測器。
所有標準 VEXcode VR 模組可在 IQ 26-27 Level Up Playground 中使用。
以下是所有可用的機器人專用模組清單:
運動控制-移動並追蹤機器人的馬達。
操作
旋轉馬達 – 使馬達沿著一個方向永遠旋轉。
spin motor for – 使馬達旋轉指定的角度或圈數。
旋轉馬達到位置 – 將馬達旋轉到指定位置。
停止馬達 – 停止馬達旋轉。
設定
位置
價值觀
AI視覺-使用IQ AI視覺感測器捕捉和分析物體。
操作
取得物件資料 - 擷取特定簽章的數據,例如偵測到的 AI 分類。
設定
設定物件項目 - 從清單中選擇特定物件。
價值觀
物件存在 - 傳回是否偵測到任何分類。
object is - 傳回是否偵測到特定分類。
object is AprilTag - 傳回偵測到的物件是否為與特定 ID 相符的 AprilTag。
物件計數 - 傳回偵測到的物件數量。
物件屬性 - 傳回寬度、高度、centerX、centerY、originX 或 originY。
本頁範例使用 Playground 的預設起始位置。
運動#
Flop 使用進料馬達來收集和彈出遊戲組件。機械臂馬達負責升降機械臂。
每個馬達都有自己的方向選項。方向名稱描述了該馬達在觸發器上的運動方式。
行動#
旋轉馬達#
旋轉馬達 模組可以使馬達沿著兩個方向之一持續旋轉。馬達將持續旋轉,直到收到其他指令,例如改變旋轉方向或停止。
旋轉 [IntakeMotor v] [攝入 v]
參數 |
描述 |
|---|---|
引擎 |
要旋轉的馬達:進氣馬達或臂馬達。 |
方向 |
馬達旋轉方向:
|
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
旋轉 [ArmMotor v] [上升 v] (1) [圈 v] ▶
行駛 [前方 v] (40) [英吋 v] ▶
旋轉 [IntakeMotor v] [排出 v]
用於旋轉馬達#
「旋轉馬達」堆疊模組會使馬達旋轉一段特定距離。旋轉距離是相對於馬達目前位置的。程式會等待馬達旋轉完畢後,才會運作堆疊中的下一個模組。
旋轉 [ArmMotor v] [上升 v] (500) [度 v] ▶
參數 |
描述 |
|---|---|
引擎 |
要旋轉的馬達:進氣馬達或臂馬達。 |
方向 |
馬達旋轉方向:
|
距離 |
馬達旋轉的距離。 角度使用整數。 圈數可以使用整數或小數。 |
單元 |
距離單位:度或圈。 |
不要等待 |
選擇箭頭(▶)展開程式碼區塊,顯示“不要等待”,這樣堆疊中的下一個程式碼區塊就會立即運作。 |
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
旋轉 [ArmMotor v] [上升 v] (1) [圈 v] ▶
行駛 [前方 v] (40) [英吋 v] ▶
旋轉 [IntakeMotor v] [排出 v]
旋轉馬達定位#
旋轉馬達定位 堆疊模組使馬達旋轉到特定位置。
馬達的位置是指它旋轉了多少度,以度或圈數來衡量。一圈等於360度。在專案開始時,馬達位置設定為0度。也可以使用set motor position代碼塊來設定馬達位置。
位置值是絕對值。這意味著旋轉方向取決於馬達的當前位置。
例如,如果馬達從0度開始旋轉到720度,它將正轉兩圈。如果它接著旋轉到360度,它將反轉一圈,因為360小於720。
旋轉 [ArmMotor v] 至位置 (500) [度 v] ▶
參數 |
描述 |
|---|---|
引擎 |
要旋轉的馬達:進氣馬達或臂馬達。 |
位置 |
馬達旋轉到的位置值。 角度使用整數。 圈數可以使用整數或小數。 |
單元 |
位置單位:度或圈。 |
不要等待 |
選擇箭頭(▶)展開程式碼區塊,顯示“不要等待”,這樣堆疊中的下一個程式碼區塊就會立即運作。 |
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
旋轉 [ArmMotor v] 至位置 (1) [圈 v] ▶
行駛 [前方 v] (40) [英吋 v] ▶
旋轉 [IntakeMotor v] [排出 v]
停止馬達#
停止馬達 堆疊塊停止選定的馬達。
停止 [IntakeMotor v]
參數 |
描述 |
|---|---|
引擎 |
要停止的馬達:進氣馬達或臂馬達。 |
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
旋轉 [ArmMotor v] [上升 v] (1) [圈 v] ▶
行駛 [前方 v] (40) [英吋 v] ▶
旋轉 [IntakeMotor v] [排出 v]
等待 (1) 秒
停止 [IntakeMotor v]
設定#
設定馬達轉速#
“設定馬達轉速”模組用於控制馬達的轉速。百分比越高,馬達轉速越快;百分比越低,馬達轉速越慢。
每個項目開始時,每個馬達預設以 50% 的速度旋轉。
注意:更高的速度會使馬達轉速更快,但精度可能會降低。更低的速度會使馬達轉速更慢,但精度可能會更高。
設定 [IntakeMotor v] 速度為 [50] [% v]
參數 |
描述 |
|---|---|
引擎 |
用於設定下列馬達速度的馬達:進氣馬達或臂馬達。 |
速度 |
馬達旋轉的速度。 百分比使用0%到100%之間的整數。 |
單元 |
速度單位:%。 |
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
旋轉 [ArmMotor v] [上升 v] (1) [圈 v] ▶
行駛 [前方 v] (40) [英吋 v] ▶
設定 [IntakeMotor v] 速度為 [100] [% v]
旋轉 [IntakeMotor v] [排出 v]
設定馬達超時#
設定馬達逾時 代碼區塊用於設定馬達嘗試完成一次動作的超時時間。如果馬達無法在規定時間內完成,它將停止嘗試並執行程式碼區塊堆疊中的下一個程式碼區塊。這樣可以防止馬達卡在某個運動中。
設定 [ArmMotor v] 超時為 [1] 秒
參數 |
描述 |
|---|---|
引擎 |
設定超時時間的馬達:IntakeMotor 或 ArmMotor。 |
時間 |
馬達嘗試完成一次運動的秒數。該值可以是整數或小數。 |
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
設定 [ArmMotor v] 超時為 [2] 秒
旋轉 [ArmMotor v] [上升 v] (1) [圈 v] ▶
行駛 [前方 v] (40) [英吋 v] ▶
旋轉 [IntakeMotor v] [排出 v]
位置#
馬達位置#
馬達的位置是指它旋轉的距離,以度或圈數來衡量。一圈等於360度。 馬達位置報告模組會報告馬達的目前位置。
專案開始時,馬達位置設定為 0 度。如果馬達正向旋轉一周,則位置為 360 度或 1 圈。如果馬達反向旋轉,則位置為負值。
([ArmMotor v] 位置([度 v]))
參數 |
描述 |
|---|---|
引擎 |
用於報告以下位置的馬達:進氣馬達或臂馬達。 |
單元 |
報告馬達位置的單位:度或圈。 |
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
當 <([ArmMotor v] 位置([度 v])) [math_less_than v] [360]>
旋轉 [ArmMotor v] [上升 v]
等待 (0.002) 秒
結束
停止 [ArmMotor v]
行駛 [前方 v] (40) [英吋 v] ▶
旋轉 [IntakeMotor v] [排出 v]
設定馬達位置#
馬達的位置是指它旋轉的距離,以度或圈數來衡量。一圈等於360度。 設定馬達位置堆疊塊會將馬達的目前位置變更為新值。
例如,如果馬達旋轉了 180 度,將位置設為 0 度會將該位置從 180 度重設為 0 度。然後,馬達可以根據這個新值旋轉到其他位置。
設定 [ArmMotor v] 位置為 (0) [度 v]
參數 |
描述 |
|---|---|
引擎 |
用於設定以下位置的馬達:進氣馬達或臂馬達。 |
位置 |
要設定的位置值。 度數使用整數。 轉數可以使用整數或小數。 |
單元 |
位置單位:度或圈。 |
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
設定 [ArmMotor v] 位置為 [0] [度 v]
旋轉 [ArmMotor v] [上升 v] (1) [圈 v] ▶
行駛 [前方 v] (40) [英吋 v] ▶
旋轉 [IntakeMotor v] [排出 v]
價值觀#
馬達已完成#
「馬達已完成」布林模組用於報告馬達是否已停止運轉。這可用於根據馬達的運轉狀態來控制其他行為的執行時間。
正確 — 馬達已停止運轉。
錯誤 — 馬達仍在運轉。
此模組與以下具有and don’t wait參數的運動模組配合使用:spin motor for 和 spin motor to position。
<[ArmMotor v] 完成?>
參數 |
描述 |
|---|---|
引擎 |
報告馬達是否停止運轉的參數:IntakeMotor 或 ArmMotor。 |
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
旋轉 [ArmMotor v] 至位置 (1) [圈 v] ◀ 且不等待
等待直到 <[ArmMotor v] 完成?>
行駛 [前方 v] (40) [英吋 v] ▶
旋轉 [IntakeMotor v] [排出 v]
馬達正在旋轉#
「馬達是否旋轉」布林模組用於報告馬達是否正在旋轉。這可以根據馬達的運動狀態來控制其他行為的執行時間。
正確-馬達正在旋轉。
錯誤 — 馬達沒有轉動。
此模組與以下具有and don’t wait參數的運動模組配合使用:spin motor for 和 spin motor to position。
<[IntakeMotor v] 旋轉中?>
參數 |
描述 |
|---|---|
引擎 |
若要報告馬達是否正在旋轉的參數:IntakeMotor 或 ArmMotor。 |
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
旋轉 [ArmMotor v] [上升 v] (1) [圈 v] ▶
行駛 [前方 v] (40) [英吋 v] ▶
旋轉 [IntakeMotor v] [排出 v]
等待直到 <非 <[IntakeMotor v] 旋轉中?>>
停止 [IntakeMotor v]
馬達速度#
馬達速度報告模組以百分比形式報告馬達的旋轉速度,範圍從 -100% 到 100%。
([IntakeMotor v] 速度([% v]) :: custom-motion)
參數 |
描述 |
|---|---|
引擎 |
若要報告以下馬達的速度:IntakeMotor 或 ArmMotor。 |
單元 |
馬達速度的報告單位:%。 |
例子
當開始時
[Score a Bean Bag in a Blue Goal.]
向 [左 v] 轉 (90) 度 ▶
行駛 [前方 v] (35) [英吋 v] ▶
向 [右 v] 轉 (90) 度 ▶
旋轉 [ArmMotor v] [上升 v] (1) [圈 v] ▶
行駛 [前方 v] (40) [英吋 v] ▶
旋轉 [IntakeMotor v] [排出 v]
等待 [0.2] 秒
列印 ([IntakeMotor v] 速度([% v]) :: custom-motion) ▶
人工智慧視覺#
行動#
取得對象數據#
取得物件資料 模組將來自 IQ AI 視覺感測器幀的資料過濾為單一簽章—感測器可以識別的事物的保存描述,例如場上的遊戲元素。
The dataset stores objects ordered from largest to smallest by width, starting at index 0. Each object’s properties can be accessed using the object property block. An empty dataset is returned if no matching objects are detected.
從 [AIVision v] 取得 [AI Classifications v] 資料
範圍 |
描述 |
|---|---|
簽名 |
篩選資料集,僅包含指定簽署的資料。可用簽名包括:
|
例子
當開始時 :: hat events
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Find and face the nearest red Bean Bag.]
設定轉向速度為 (30) [% v]
設定 [object_counter v] 為 [1]
從 [AIVision v] 取得 [AI Classifications v] 資料
重複 ([AIVision v] 物件數量) 次
設定 [AIVision v] 物件項目為 (object_counter)
如果 <[AIVision v] 物件為 [RedBeanBag v]?> 則
if <([AIVision v] 物件 [centerX v]) < (140)> then
向 [左 v] 轉
else if <([AIVision v] object [centerX v]) > (180)> then
向 [右 v] 轉
否則
停止行駛
結束
中斷
結束
將 [object_counter v] 改變 [1]
結束
設定#
設定對象項#
設定物件項目 區塊設定要使用資料集中的哪個項目。
設定 [AIVision v] 物件項目為 [1]
參數 |
描述 |
|---|---|
物品 |
要使用的資料集中的項目編號。 |
例子
當開始時 :: hat events
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Find the index of the nearest red Bean Bag.]
設定 [object_counter v] 為 [1]
從 [AIVision v] 取得 [AI Classifications v] 資料
重複 ([AIVision v] 物件數量) 次
設定 [AIVision v] 物件項目為 (object_counter)
如果 <[AIVision v] 物件為 [RedBeanBag v]?> 則
列印 (連接 [Nearest Red Bean Bag is ] (object_counter)) ▶
中斷
否則
將 [object_counter v] 改變 [1]
結束
結束
價值觀#
對象存在#
物件存在 程式碼區塊傳回布林值,指示是否在資料集中偵測到任何物件。
正確 - 資料集包含偵測到的物件。
錯誤 - 該資料集不包含任何偵測到的物件。
<[AIVision v] 物件存在?>
參數 |
描述 |
|---|---|
此程式碼區塊沒有參數。 |
例子
當開始時 :: hat events
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Turn until a Bean Bag is detected.]
設定轉向速度為 (30) [% v]
向 [右 v] 轉
重複直到 <[AIVision v] 物件存在?>
從 [AIVision v] 取得 [AI Classifications v] 資料
結束
停止行駛
對像是#
object is 區塊傳回布林值,指示偵測到的物件是否與特定分類相符。
正確 - 資料集中的項是特定物件。
錯誤 - 資料集中的項不是特定物件。
<[AIVision v] 物件為 [RedBeanBag v]?>
範圍 |
描述 |
|---|---|
目的 |
若要將該物品與下列哪個物件進行比較:RedBeanBag、BlueBeanBag 或 YellowBeanBag。 |
例子
當開始時 :: hat events
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Find the index of the nearest red Bean Bag.]
設定 [object_counter v] 為 [1]
從 [AIVision v] 取得 [AI Classifications v] 資料
重複 ([AIVision v] 物件數量) 次
設定 [AIVision v] 物件項目為 (object_counter)
如果 <[AIVision v] 物件為 [RedBeanBag v]?> 則
列印 (連接 [Nearest Red Bean Bag is ] (object_counter)) ▶
中斷
否則
將 [object_counter v] 改變 [1]
結束
結束
對像是 AprilTag#
object is AprilTag 區塊傳回布林值,指示偵測到的物件是否是與特定 ID 相符的 AprilTag。
正確 - 偵測到的物件是具有給定 ID 的 AprilTag。
錯誤 - 偵測到的物件不是具有給定 ID 的 AprilTag。
<[AIVision v] 物件為 AprilTag [0]?>
範圍 |
描述 |
|---|---|
AprilTag ID |
要與偵測到的 AprilTag 進行比較的 ID 號碼。 |
例子
當開始時 :: hat events
[Stop when you see the Red Goal!]
設定轉向速度為 (30) [% v]
向 [右 v] 轉
重複直到 <[AIVision v] 物件為 AprilTag [1]?>
從 [AIVision v] 取得 [AprilTags v] 資料
結束
停止行駛
列印 [Found the Red Goal!] ▶
對象計數#
物件計數 模組傳回資料集中偵測到的物件數量,以整數形式表示。
([AIVision v] 物件數量)
參數 |
描述 |
|---|---|
此程式碼區塊沒有參數。 |
例子
當開始時 :: hat events
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Print how many Bean Bags are detected.]
從 [AIVision v] 取得 [AI Classifications v] 資料
列印 ([AIVision v] 物件數量) ▶
物件屬性#
使用 get object data 區塊儲存的每個物件都包含六個屬性。
([AIVision v] 物件 [寬度 v])
所有屬性值均描述了在呼叫「取得物件資料」模組時,IQ AI 視覺感測器視野中偵測到的物件的位置和大小。這些值以像素為單位,基於感測器的 320 x 240 像素解析度。
範圍 |
描述 |
|---|---|
財產 |
要使用偵測到的物件的哪個屬性:寬度、高度、centerX、centerY、originX 或 originY。 |
寬度#
width 屬性以像素為單位報告偵測到的物件寬度,數值為 1 到 320 之間的整數。
([AIVision v] 物件 [寬度 v])
例子
當開始時
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Approach the Bean Bag, then pick it up.]
設定行駛速度為 (30) [% v]
永遠
從 [AIVision v] 取得 [AI Classifications v] 資料
如果 <[AIVision v] 物件存在?> 則
設定 [AIVision v] 物件項目為 [1]
如果 <[AIVision v] 物件為 [RedBeanBag v]?> 則
if <([AIVision v] object [width v]) > (180)> then
行駛 [前方 v] [50] [mm v] ▶
旋轉 [IntakeMotor v] [攝入 v] [90] [度 v] ▶
中斷
否則
行駛 [前方 v]
結束
結束
結束
結束
高度#
height 屬性以像素為單位報告偵測到的物件的高度,數值為 1 到 240 之間的整數。
([AIVision v] 物件 [高度 v])
例子
當開始時
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Approach the Bean Bag, then pick it up.]
設定行駛速度為 (30) [% v]
永遠
從 [AIVision v] 取得 [AI Classifications v] 資料
如果 <[AIVision v] 物件存在?> 則
設定 [AIVision v] 物件項目為 [1]
如果 <[AIVision v] 物件為 [RedBeanBag v]?> 則
if <([AIVision v] object [height v]) > (100)> then
行駛 [前方 v] [50] [mm v] ▶
旋轉 [IntakeMotor v] [攝入 v] [90] [度 v] ▶
中斷
否則
行駛 [前方 v]
結束
結束
結束
結束
centerX#
centerX 屬性以像素為單位報告偵測到的物件中心的 x 座標,數值為 0 到 320 之間的整數。
([AIVision v] 物件 [centerX v])
例子
當開始時
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Steer to keep the Bean Bag centered while approaching.]
設定轉向速度為 (30) [% v]
設定行駛速度為 (30) [% v]
永遠
從 [AIVision v] 取得 [AI Classifications v] 資料
如果 <[AIVision v] 物件存在?> 則
設定 [AIVision v] 物件項目為 [1]
如果 <[AIVision v] 物件為 [RedBeanBag v]?> 則
if <([AIVision v] 物件 [centerX v]) < (140)> then
向 [左 v] 轉 (5) 度 ▶
否則
行駛 [前方 v] (150) [mm v] ▶
旋轉 [IntakeMotor v] [攝入 v]
中斷
結束
結束
結束
結束
中心Y#
centerY 屬性以像素為單位報告偵測到的物件中心的 y 座標,數值為 0 到 240 之間的整數。
([AIVision v] 物件 [centerY v])
例子
當開始時
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Print the y-position of the Bean Bag.]
從 [AIVision v] 取得 [AI Classifications v] 資料
如果 <[AIVision v] 物件存在?> 則
設定 [AIVision v] 物件項目為 [1]
如果 <[AIVision v] 物件為 [RedBeanBag v]?> 則
列印 ([AIVision v] 物件 [centerY v]) ▶
結束
結束
originX#
originX 屬性以像素為單位報告偵測到的物件邊界框左上角的 x 座標,數值為 0 到 320 之間的整數。
([AIVision v] 物件 [originX v])
例子
當開始時
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Steer to keep the left edge centered.]
設定轉向速度為 (30) [% v]
設定行駛速度為 (30) [% v]
永遠
從 [AIVision v] 取得 [AI Classifications v] 資料
如果 <[AIVision v] 物件存在?> 則
設定 [AIVision v] 物件項目為 [1]
如果 <[AIVision v] 物件為 [RedBeanBag v]?> 則
if <([AIVision v] 物件 [originX v]) < (100)> then
向 [左 v] 轉 (5) 度 ▶
否則
行駛 [前方 v] (150) [mm v] ▶
旋轉 [IntakeMotor v] [攝入 v]
中斷
結束
結束
結束
結束
originY#
originY 屬性以像素為單位報告偵測到的物件邊界框左上角的 y 座標,數值為 0 到 240 之間的整數。
([AIVision v] 物件 [originY v])
例子
當開始時
[Drop the preloaded Bean Bag.]
旋轉 [IntakeMotor v] [排出 v] (180) [度 v] ▶
向 [左 v] 轉 (90) 度 ▶
[Print the y-position of the Bean Bag's top edge.]
從 [AIVision v] 取得 [AI Classifications v] 資料
如果 <[AIVision v] 物件存在?> 則
設定 [AIVision v] 物件項目為 [1]
如果 <[AIVision v] 物件為 [RedBeanBag v]?> 則
列印 ([AIVision v] 物件 [originY v]) ▶
結束
結束