機器人專用 Python#
介紹#
VR 漫遊車機器人包括驅動系統、距離感應器和 漫遊車救援 遊樂場特有的動作。
所有標準的 VEXcode VR 方法均可在 Rover Rescue Playground 中使用。以下是所有 Playground 特有的可用方法清單:
動力系統 - 移動和監控虛擬實境漫遊車。
操作
變異因子
set_heading– 將 VR 漫遊車的目前航向改為新的航向。set_timeout- 設定 VR 漫遊車嘗試完成一次移動所需的時間。set_drive_velocity– 告訴 VR 漫遊車行駛的速度。set_turn_velocity– 告訴 VR 漫遊車轉彎的速度。
Getters
控制台 – 將資訊列印到控制台並監控數值。
列印
brain.print— 在控制台中顯示文字、數字或變數值。brain.new_line— 將控制台遊標移到下一行的開頭。brain.set_print_color— 設定控制台中列印文字的顏色。brain.clear— 清除控制台中的所有行。
監視器
monitor_variable— 在「監視器」標籤中新增一個或多個預定義變數。monitor_sensor— 在監視器標籤上新增一個或多個感測器值。
感知 - 使用探測車的距離感知器探測附近物體。
距離
found_object- 返回距離感測器是否偵測到物件。get_distance- 返回到最近偵測到的物件的距離。
操作 - 與探測車的資源、敵人和內建人工智慧系統進行互動。
操作
pickup- 拾取礦物。drop- 滴礦物。use- 利用礦物質恢復能量。absorb_radiation- 吸收敵人的輻射。standby- 將 VR Rover 置於待機模式,直到達到電池閾值。
Getters
angle- 傳回物件的方向(以度為單位)。get_distance- 返回到物件的距離,單位為毫米或英吋。location- 傳回物件的 X 或 Y 座標(以毫米或英吋為單位)。battery- 返回 VR 漫遊車的電池電量。minerals_stored- 返回 VR 漫遊車攜帶的礦物數量。storage_capacity- 返回 VR 漫遊車的承載能力。level- 返回 VR 漫遊車的目前等級。exp- 返回 VR 漫遊車的當前經驗值。enemy_level- 傳回偵測到的最近敵人的等級。enemy_radiation- 傳回偵測到的最近敵人的輻射值。detects- 返回 VR 漫遊車在其探測半徑內是否偵測到礦物或敵人。sees- 返回 VR 漫遊車是否在其視野範圍內看到物體。under_attack- 返回 VR 漫遊車目前是否受到攻擊。
回呼函數
on_under_attack- 當 VR 漫遊車受到攻擊時運行回調。on_level_up- 當 VR 漫遊車升級時運行回調。
本頁範例使用 Playground 的預設起始位置。
傳動系統#
動力系統控制虛擬實境漫遊車的行駛和轉向。動力系統可以前進或後退、左轉或右轉、轉向指定方向,並朝著礦物、敵人或基地方向行駛。
行動#
駕駛#
drive 使 VR 漫遊車無限前進或後退。 VR 漫遊車將持續移動,直到收到其他指令,例如轉向或停止。
Usage:
drivetrain.drive(direction)
參數 |
描述 |
|---|---|
|
VR Rover 的移動方向: |
def main():
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
驅動#
drive_for 使 VR 漫遊車向前或向後移動指定距離。程式會等待 VR 漫遊車移動完畢後,才會執行下一行程式碼。
Usage:
drivetrain.drive_for(direction, distance, units, wait=True)
參數 |
描述 |
|---|---|
|
VR Rover 的移動方向: |
|
VR Rover 行駛的距離。這可以是整數 |
|
距離單位: |
|
可選 |
def main():
drivetrain.drive_for(FORWARD, 200, MM)
# VR threads — Do not delete
vr_thread(main)
轉動#
turn 。 VR 漫遊車將持續轉彎,直到收到其他指令,例如行駛或停止。
Usage:
drivetrain.turn(direction)
參數 |
描述 |
|---|---|
|
VR Rover 的方向: |
def main():
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
轉彎#
turn_for 函數使 VR 漫遊車向左或向右旋轉指定角度。旋轉角度相對於 VR 漫遊車的當前位置。程式會等待 VR 漫遊車完成旋轉後,才會執行下一行程式碼。
Usage:
drivetrain.turn_for(direction, angle, units, wait=True)
參數 |
描述 |
|---|---|
|
VR Rover 的方向: |
|
The number of degrees the VR Rover turns. This can be an |
|
旋轉單位: |
|
可選 |
def main():
drivetrain.turn_for(RIGHT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
轉向航向#
航向是指虛擬實境漫遊車的朝向,以度為單位。 0 turn_to_heading 表示將虛擬實境漫遊車轉向 -359 度到 359 度之間的特定航向。虛擬實境漫遊車將沿著最短路徑轉向以達到目標航向。
VR探測車的初始航向為0度。
該專案將等待虛擬實境漫遊車完成轉向後,才會執行下一行程式碼。
Usage:
drivetrain.turn_to_heading(heading, units, wait=True)
參數 |
描述 |
|---|---|
|
VR Rover 的朝向,以度為單位。可以是 |
|
航向單位: |
|
可選 |
def main():
drivetrain.turn_to_heading(90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
驅動到#
drive_to 將 VR 漫遊車直接駛向選定的物體。
Usage:
drivetrain.drive_to(object, wait=True)
參數 |
描述 |
|---|---|
|
VR偵測車將駛向哪個目標:
|
|
可選 |
如果在呼叫 drive_to 時,VR 漫遊車的視野範圍內未偵測到礦物或敵人,則 VR 漫遊車不會行駛。基地始終可以被攻擊。
如果虛擬實境探測車探測到多個礦物或多個敵人,它將向最近的目標駛去。
def main():
drivetrain.drive_to(MINERALS)
# VR threads — Do not delete
vr_thread(main)
轉向#
turn_to 將 VR 漫遊車轉向選定的物件。
Usage:
drivetrain.turn_to(object, wait=True)
參數 |
描述 |
|---|---|
|
VR偵測車將轉向哪個物體:
|
|
Optional.
|
如果在呼叫 turn_to 時,VR 探測車的視野範圍內沒有偵測到礦物或敵人,則 VR 探測車不會轉向。基地始終可以被瞄準。
如果虛擬實境探測車探測到多個礦物或多個敵人,它將轉向距離最近的目標。
def main():
drivetrain.turn_to(MINERALS)
# VR threads — Do not delete
vr_thread(main)
跳到#
go_to 轉向並將 VR 漫遊車駕駛到選定的物體上。
Usage:
drivetrain.go_to(object, wait=True)
參數 |
描述 |
|---|---|
|
VR偵測車將轉向並駛向哪個物體:
|
|
可選 |
如果在呼叫 go_to 時,VR 漫遊車的視野範圍內未偵測到礦物或敵人,則 VR 漫遊車不會行駛。基地始終可以被攻擊。
如果虛擬實境探測車探測到多個礦物或多個敵人,它將移動到距離較近的地點。
def main():
drivetrain.go_to(MINERALS)
# VR threads — Do not delete
vr_thread(main)
停止#
stop 停止 VR 漫遊車的移動。
Usage:
drivetrain.stop()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
變異體#
設定標題#
航向角是指虛擬實境漫遊車的朝向,以度為單位。 0 set_heading set_heading 實境漫遊車的目前航向角變更為新的航向角值。
例如,如果虛擬實境漫遊車已轉向右側,將航向設定為 0 度,則該右側位置將成為新的 0 度。然後,虛擬實境漫遊車可以根據新的航向轉向其他位置。
Usage:
drivetrain.set_heading(heading, units)
參數 |
描述 |
|---|---|
|
若要為 VR 漫遊車設定的航向值(以度為單位)。這可以是整數 |
|
航向單位: |
def main():
drivetrain.set_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
設定超時#
set_timeout 設定 VR 漫遊車嘗試完成一次移動的超時時間。如果 VR 漫遊車無法在規定時間內完成,它將停止嘗試並執行下一行程式碼。這可以防止 VR 漫遊車卡在某個移動步驟。
Usage:
drivetrain.set_timeout(value, units)
參數 |
描述 |
|---|---|
|
The amount of time the VR Rover can try to finish a movement. This can be a positive |
|
時間單位: |
def main():
drivetrain.set_timeout(1, SECONDS)
# VR threads — Do not delete
vr_thread(main)
設定驅動速度#
set_drive_velocity 告訴 VR 漫遊車行駛的速度。百分比越高,VR 漫遊車行駛速度越快;百分比越低,VR 漫遊車行駛速度越慢。
每個項目開始時,VR Rover 預設以 50% 的速度行駛。
注意:速度越高,VR偵測車行駛速度越快,但精度可能越低;速度越低,VR偵測車行駛速度越慢,但精度可能越高。
Usage:
drivetrain.set_drive_velocity(velocity, units)
參數 |
描述 |
|---|---|
|
行駛速度,範圍從 0% 到 100%。可以是整數 |
|
速度單位: |
def main():
drivetrain.set_drive_velocity(50, PERCENT)
# VR threads — Do not delete
vr_thread(main)
設定轉彎速度#
set_turn_velocity 告訴 VR 漫遊車轉彎的速度。百分比越高,VR 漫遊車轉彎越快;百分比越低,VR 漫遊車轉彎越慢。
每個項目開始時,VR Rover 預設以 50% 的速度轉彎。
注意:速度越高,VR漫遊車的轉彎速度越快,但精準度可能越低;速度越低,VR漫遊車的轉彎速度越慢,但精準度可能越高。
Usage:
drivetrain.set_turn_velocity(velocity, units)
參數 |
描述 |
|---|---|
|
轉彎速度,範圍從 0% 到 100%。可以是整數 |
|
速度單位: |
def main():
drivetrain.set_turn_velocity(50, PERCENT)
# VR threads — Do not delete
vr_thread(main)
獲取器#
標題#
航向角是指虛擬實境漫遊車的朝向,以度為單位。 0 航向角 heading 範圍從 0 度到 359.99 度。
VR探測車的初始航向為0度。
Usage:
drivetrain.heading(units)
參數 |
描述 |
|---|---|
|
航向單位: |
def main():
brain.screen.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
已完成#
is_done 返回 VR 漫遊車是否已完成移動,回傳值為布林值。這可用於根據 VR 漫遊車的移動狀態控制其他行為的執行時間。
True— VR 漫遊車已停止移動。False— VR 探測車仍在移動。
此方法与具有 wait 参数的 Drivetrain 方法配合使用,例如 drive_for、turn_for、turn_to_heading、drive_to、turn_to 和 go_to。
Usage:
drivetrain.is_done()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
drivetrain.drive_for(FORWARD, 200, MM, wait=False)
wait(0.1, SECONDS)
if drivetrain.is_done():
brain.screen.print("Drive complete")
# VR threads — Do not delete
vr_thread(main)
正在移動#
is_moving 返回 VR 漫遊車是否正在移動,返回值為布林值。這可用於根據 VR 漫遊車的移動狀態來控制其他行為的執行時機。
True— VR 漫遊車正在移動。False— VR 漫遊車未移動。
Usage:
drivetrain.is_moving()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
drivetrain.drive_for(FORWARD, 200, MM, wait=False)
wait(0.1, SECONDS)
if drivetrain.is_moving():
brain.screen.print("Still moving")
# VR threads — Do not delete
vr_thread(main)
安慰#
項目運行時,控制台會顯示文字、數字和變數值。控制台方法還可以將遊標移至新行、設定更改顏色後列印的文字顏色、清除控制台以及在「監視器」標籤中新增變數或感測器值。
列印#
大腦列印#
brain.print 使用目前遊標位置在控制台中顯示文字、數字或變數值。
當您希望下一個列印值從新的一行開始時,請使用 brain.new_line。
Usage:
brain.print(value)
參數 |
描述 |
|---|---|
|
若要在控制台中顯示的文字、數字或變數值。 |
def main():
# Display a message in the Console
brain.print("Hello, rover!")
# VR threads — Do not delete
vr_thread(main)

大腦.新行#
brain.new_line 將遊標移到控制台下一行的第 1 列。下一個列印的值將顯示在該行。
Usage:
brain.new_line()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Print on two rows
brain.print("Row 1")
brain.new_line()
brain.print("Row 2")
# VR threads — Do not delete
vr_thread(main)

brain.set_print_color#
brain.set_print_color 設定使用此方法後控制台中列印的文字顏色。在專案開始時,控制台文字顏色設定為 BLACK。
Usage:
brain.set_print_color(color)
參數 |
描述 |
|---|---|
|
控制台列印文字的顏色:
|
def main():
# Print text in different colors
brain.print("Default text color")
brain.new_line()
brain.set_print_color(RED)
brain.print("Red text color")
# VR threads — Do not delete
vr_thread(main)

腦清#
brain.clear 清除控制台中的所有行並將遊標移回第 1 行。
Usage:
brain.clear()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Display text, then clear it after two seconds
brain.print("This will disappear...")
wait(2, SECONDS)
brain.clear()
# VR threads — Do not delete
vr_thread(main)
監視器#
監控變數#
monitor_variable 將一個或多個預定義變數新增至 VEXcode 的「監視器」標籤。這樣,您就可以在專案運行時監視變數值的變化。
要成功監控 monitor_variable 變數必須是全域變數。請以字串形式提供每個變數名。
Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)
參數 |
描述 |
|---|---|
|
要監控的預定義全域變數的名稱,以字串形式給出。若要監控多個變量,請用逗號分隔每個變數名稱。 |
def main():
# Monitor the amount of loops
global loops
monitor_variable("loops")
# Drive forward 3 times
for loops in range(3):
drivetrain.drive_for(FORWARD, 200, MM)
# VR threads — Do not delete
vr_thread(main)
監控感測器#
monitor_sensor 將一個或多個感測器值新增至 VEXcode 的「監視器」標籤。這樣,您就可以在專案運行時觀察感測器值的變化。
請以字串形式提供每個感測器的值。
Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)
參數 |
描述 |
|---|---|
|
要监测的传感器值,以字符串形式给出。要监测多个传感器值,请用逗号分隔每个传感器值。支持的传感器标识符包括:
|
def main():
# Monitor the rover's battery
monitor_sensor("rover.battery")
drivetrain.drive_for(FORWARD, 200, MM)
# VR threads — Do not delete
vr_thread(main)
感測#
距離#
找到的對象#
found_object 返回距離感測器是否偵測到物體。
Usage:
distance.found_object()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
if distance.found_object():
brain.screen.print("Object detected")
# VR threads — Do not delete
vr_thread(main)
取得距離#
get_distance 傳回距離感測器偵測到的最近物件的距離。
Usage:
distance.get_distance(units)
參數 |
描述 |
|---|---|
|
距離單位: |
def main():
brain.screen.print(distance.get_distance(MM))
# VR threads — Do not delete
vr_thread(main)
行動#
行動#
撿起#
pickup 拾取礦物。
Usage:
rover.pickup(object)
參數 |
描述 |
|---|---|
|
VR偵測車可拾取的物品:
|
def main():
rover.pickup(MINERALS)
# VR threads — Do not delete
vr_thread(main)
降低#
drop 滴攜帶礦物。
Usage:
rover.drop(object)
參數 |
描述 |
|---|---|
|
VR偵測車可丟棄的物品:
|
def main():
rover.drop(MINERALS)
# VR threads — Do not delete
vr_thread(main)
使用#
use 使用礦物質來恢復能量。礦物質必須存在於地面上才能被利用。
Usage:
rover.use(object)
參數 |
描述 |
|---|---|
|
VR偵測車可使用的物件:
|
def main():
rover.use(MINERALS)
# VR threads — Do not delete
vr_thread(main)
吸收輻射#
absorb_radiation 吸收來自敵人的輻射。
Usage:
rover.absorb_radiation(object)
參數 |
描述 |
|---|---|
|
VR偵測車可以吸收下列物體的輻射:
|
def main():
rover.absorb_radiation(ENEMY)
# VR threads — Do not delete
vr_thread(main)
支援#
standby 將 VR Rover 置於待機模式,直到達到指定的電池閾值。
Usage:
rover.standby(percent)
參數 |
描述 |
|---|---|
|
使 VR Rover 退出待機模式的電池閾值,從 |
如果選定的閾值等於或高於目前電池電量,VR Rover 將不會進入待機模式。
def main():
rover.standby(50)
# VR threads — Do not delete
vr_thread(main)
獲取器#
角度#
angle 傳回所選物件的方向(以度為單位)。
Usage:
rover.angle(object)
參數 |
描述 |
|---|---|
|
報告方向的對象:
|
對於礦物和敵方目標,目標必須位於虛擬實境探測車的視野範圍內,距離在 1000 毫米以內。基地位置始終可以報告。
def main():
brain.screen.print(rover.angle(MINERALS))
# VR threads — Do not delete
vr_thread(main)
取得距離#
get_distance 返回 VR 漫遊車到所選物件的距離。
Usage:
rover.get_distance(object, units=MM)
參數 |
描述 |
|---|---|
|
需報告距離的目標:
|
|
可選。距離單位: |
對於礦物和敵方目標,目標必須位於虛擬實境探測車的視野範圍內,距離在 1000 毫米以內。基地位置始終可以報告。
對於障礙物和危險物,此方法會報告可見物體距離。如果視野內沒有障礙物和危險物,則返回 1000 毫米或 39.37 英吋。
def main():
brain.screen.print(rover.get_distance(MINERALS, MM))
# VR threads — Do not delete
vr_thread(main)
地點#
location 傳回所選物件的 X 或 Y 座標位置。
Usage:
rover.location(object, axis, units)
參數 |
描述 |
|---|---|
|
需要報告以下目標的位置:
|
|
要回傳哪個座標:
|
|
用於報告位置的單位: |
對於礦物和敵方目標,目標必須位於虛擬實境探測車的視野範圍內,距離在 1000 毫米以內。基地位置始終可以報告。
def main():
brain.screen.print(rover.location(MINERALS, X, MM))
# VR threads — Do not delete
vr_thread(main)
電池#
battery 返回 VR Rover 的當前電池電量。
Usage:
rover.battery()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
brain.screen.print(rover.battery())
# VR threads — Do not delete
vr_thread(main)
儲存的礦物#
minerals_stored 傳回 VR Rover 目前儲存的礦物數量。
Usage:
rover.minerals_stored()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
brain.screen.print(rover.minerals_stored())
# VR threads — Do not delete
vr_thread(main)
儲存容量#
storage_capacity 返回 VR 漫遊車的承載能力。
Usage:
rover.storage_capacity()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
brain.screen.print(rover.storage_capacity())
# VR threads — Do not delete
vr_thread(main)
等級#
level 返回 VR 漫遊車的目前等級。
Usage:
rover.level()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
brain.screen.print(rover.level())
# VR threads — Do not delete
vr_thread(main)
經驗#
exp 返回 VR 漫遊車目前等級的經驗值數量。
Usage:
rover.exp()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
brain.screen.print(rover.exp())
# VR threads — Do not delete
vr_thread(main)
敵方等級#
enemy_level 返回 VR Rover 偵測到的最近敵人的等級。
Usage:
rover.enemy_level()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
當探測車的探測半徑內未偵測到敵人時,此方法返回 0。
def main():
brain.screen.print(rover.enemy_level())
# VR threads — Do not delete
vr_thread(main)
敵方輻射#
enemy_radiation 傳回 VR Rover 偵測到的最近敵人的輻射值。
Usage:
rover.enemy_radiation()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
當探測車的探測半徑內未偵測到敵人時,此方法返回 0。
def main():
brain.screen.print(rover.enemy_radiation())
# VR threads — Do not delete
vr_thread(main)
偵測#
detects 返回 VR 探測車在其探測半徑內是否偵測到礦物或敵人。
Usage:
rover.detects(object)
參數 |
描述 |
|---|---|
|
待偵測目標:
|
VR Rover的探測半徑為800毫米。
def main():
if rover.detects(MINERALS):
brain.screen.print("Minerals detected")
# VR threads — Do not delete
vr_thread(main)
看到#
sees VR 漫遊車在其視野範圍內是否看到選定的物體。
Usage:
rover.sees(object)
參數 |
描述 |
|---|---|
|
需要查看的對象:
|
VR Rover 可以看到 1000 毫米範圍內、40 度視野內的物體。
def main():
if rover.sees(MINERALS):
brain.screen.print("Minerals in view")
# VR threads — Do not delete
vr_thread(main)
遭受攻擊#
under_attack 返回 VR 漫遊車目前是否受到敵人的攻擊。
Usage:
rover.under_attack()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
if rover.under_attack():
brain.screen.print("The rover is under attack!")
# VR threads — Do not delete
vr_thread(main)
回呼函數#
遭受攻擊#
on_under_attack 註冊一個回調函數,當 VR 漫遊車受到敵人傷害時運行。
Usage:
rover.on_under_attack(callback)
參數 |
描述 |
|---|---|
|
VR Rover 遭受攻擊時要執行的函數。 |
def under_attack():
brain.screen.print("The rover is under attack!")
def main():
rover.on_under_attack(under_attack)
wait(0.15, SECONDS)
# VR threads — Do not delete
vr_thread(main)
升級#
on_level_up 註冊一個回呼函數,當 VR 漫遊車從一個等級移動到下一個等級時運行該函數。
Usage:
rover.on_level_up(callback)
參數 |
描述 |
|---|---|
|
VR Rover升級時要執行的函數。 |
def level_up():
brain.screen.print("The rover leveled up!")
def main():
rover.on_level_up(level_up)
wait(0.15, SECONDS)
# VR threads — Do not delete
vr_thread(main)