機器人專用 Python#
介紹#
英雄機器人 Huey 包含兩種馬達選項、IQ AI 視覺感測器、光學感測器和觸控 LED。
所有標準的 VEXcode VR 方法都可以在 IQ 25-26 Mix & Match Playground 中使用。
以下是所有可用的機器人專用方法清單:
驅動系統-控制機器人的移動和轉向。
操作
drive— 使機器人無限向前或向後移動。drive_for— 使機器人向前或向後移動指定的距離。turn— 讓機器人永遠向左或向右轉。turn_for— 使機器人向左或向右旋轉指定的度數。turn_to_heading— 將機器人轉向 -359 到 359 度之間的特定航向。turn_to_rotation— 將機器人旋轉到指定的方向。stop— 停止機器人的移動。
變異因子
set_heading— 將機器人的目前航向改為新的航向。set_rotation— 將機器人的目前旋轉改為新的旋轉。set_timeout— 設定機器人嘗試完成一次動作的時間。set_drive_velocity— 告訴機器人以多快的速度行駛。set_turn_velocity— 告訴機器人轉彎的速度。
Getters
運動控制 - 控制機器人馬達的移動和追蹤。
操作
spin— 使馬達永遠正轉或反轉。spin_for— 使馬達旋轉特定距離。spin_to_position— 將馬達旋轉到特定位置。stop— 停止馬達旋轉。
變異因子
set_position— 將馬達的目前位置改為新值。set_velocity— 告訴馬達旋轉的速度。set_timeout— 設定馬達嘗試完成一次運動的時間。
Getters
is_done— 返回馬達是否停止移動,以布林值表示。is_spinning— 返回馬達是否旋轉,以布林值表示。position— 返回馬達的目前位置。velocity— 返回馬達的旋轉速度。
AI視覺-使用IQ AI視覺感測器捕捉和分析物體。
Getters
take_snapshot- 傳回特定簽章偵測到的物件元組。
特性
控制台 – 將資訊列印到控制台並監控數值。
列印
brain.screen.print— 在控制台中顯示文字、數字或變數值。brain.screen.next_row— 將控制台遊標移到下一行的開頭。brain.screen.clear_screen— 清除控制台中的所有行。
監視器
monitor_variable— 在「監視器」標籤中新增一個或多個預定義變數。monitor_sensor— 在監視器標籤上新增一個或多個感測器值。
感知-利用機器人的各種感測器。
觸控式LED燈
set_color- 將觸控 LED 設定為選取的顏色。
光學的
is_near_object– 返迴光學感測器是否偵測到範圍內的物體。color– 返迴光學感測器偵測到的顏色。brightness– 傳回物體反射的光量。hue– 返迴光學感測器偵測到的色調。object_detected– 註冊一個當光學感測器偵測到物體時要呼叫的函數。object_lost– 註冊一個當光學感測器遺失物體時要呼叫的函數。
本頁範例使用 Playground 的預設起始位置。
傳動系統#
動力系統控制VR機器人的駕駛和轉向。動力系統可以前進或後退、左轉或右轉、轉向特定航向並追蹤其旋轉。
行動#
駕駛#
drive 使機器人無限前進或後退。機器人將持續移動,直到收到其他指令,例如轉向或停止。
Usage:
drivetrain.drive(direction)
參數 |
描述 |
|---|---|
|
機器人移動方向: |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
驅動#
drive_for 使機器人前進或後退指定距離。程式會等待機器人完成移動後才執行下一行程式碼。
Usage:
drivetrain.drive_for(direction, distance, units, wait)
參數 |
描述 |
|---|---|
|
機器人移動方向: |
|
機器人行駛的距離。這可以是整數 |
|
可選。距離單位: |
|
可選 |
def main():
# Drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)
# VR threads — Do not delete
vr_thread(main)
轉動#
turn 表示機器人無限向左或向右轉向。機器人將持續轉向,直到收到其他指令,例如行駛或停止。
Usage:
drivetrain.turn(direction)
參數 |
描述 |
|---|---|
|
機器人轉向的方向: |
def main():
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
轉彎#
turn_for 參數使機器人向左或向右旋轉指定角度。旋轉角度是相對於機器人目前位置的。程式會等待機器人完成旋轉後才執行下一行程式碼。
Usage:
drivetrain.turn_for(direction, angle, units, wait)
參數 |
描述 |
|---|---|
|
機器人轉向的方向: |
|
The number of degrees the robot turns. This can be an |
|
可選。旋轉單位: |
|
可選 |
def main():
# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
轉向航向#
航向角是指機器人朝向的方向,以度為單位。 `turn_to_heading 將機器人轉向 -359 度到 359 度之間的特定航向角。機器人將沿著最短路徑轉向以達到目標航向角。
機器人的初始航向角為0度。
程式會等到機器人完成轉向後才執行下一行程式碼。
Usage:
drivetrain.turn_to_heading(angle, units, wait)
參數 |
描述 |
|---|---|
|
機器人應面向的方向,以度為單位。可以是 |
|
可選。旋轉單位: |
|
可選 |
def main():
# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
轉向旋轉#
turn_to_rotation 將機器人旋轉到指定角度。
旋轉角度是指機器人轉動的程度,以度為單位。在專案開始時,旋轉角度值設定為 0 度。也可以使用 set_rotation 方法設定旋轉角度。
旋轉角度是絕對值。這意味著轉彎方向取決於機器人目前的旋轉角度。向右轉會增加旋轉角度,向左轉彎會減少旋轉角度。
例如,如果機器人從0度開始,你將其旋轉720度,它會向右轉兩次。如果你再將其旋轉360度,它會向左轉一次,因為360小於720。
程式會等到機器人完成轉向後才執行下一行程式碼。
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
參數 |
描述 |
|---|---|
|
機器人將旋轉到的旋轉值,以度為單位。這可以是整數 |
|
可選。旋轉單位: |
|
可選 |
def main():
# Turn left, then spin in a circle
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
停止#
stop 停止機器人的移動。
Usage:
drivetrain.stop()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
變異體#
設定標題#
航向角是指機器人面向的方向,以度為單位。 0 set_heading 將機器人的目前航向角變更為新的航向角值。
例如,如果機器人轉向右側,將航向設定為 0 度,則該右側位置將成為新的 0 度航向。然後,機器人可以根據新的航向轉向其他位置。
Usage:
drivetrain.set_heading(heading, units)
參數 |
描述 |
|---|---|
|
The heading value, in degrees, to set for the robot. This can be an |
|
可選。航向單位: |
def main():
# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
設定旋轉#
旋轉角度是指機器人轉動的程度,以度為單位。專案開始時,旋轉角度值設定為 0 度。 `set_rotation 會將機器人的目前旋轉角度變更為新值。
例如,如果機器人向右轉了兩圈,它的旋轉角度將為 720 度。將旋轉角度設為 0 度會將旋轉角度從 720 度重設為 0 度。然後,機器人可以根據這個新的旋轉角度進行旋轉。
Usage:
drivetrain.set_rotation(rotation, units)
參數 |
描述 |
|---|---|
|
要設定的機器人旋轉值,以度為單位。這可以是整數 |
|
可選。旋轉單位: |
def main():
# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
設定超時#
set_timeout 設定機器人嘗試完成一個動作的超時時間。如果機器人無法在規定時間內完成,它將停止嘗試並執行下一行程式碼。這可以防止機器人卡在某個動作上。
Usage:
drivetrain.set_timeout(value, units)
參數 |
描述 |
|---|---|
|
The amount of time the robot can try to finish a movement. This can be a positive |
|
時間單位: |
def main():
# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
# VR threads — Do not delete
vr_thread(main)
設定驅動速度#
set_drive_velocity 告訴機器人行駛速度。百分比越高,機器人行駛速度越快;百分比越低,機器人行駛速度越慢。
每個專案開始時,機器人預設以 50% 的速度行駛。
注意:速度越高,機器人行駛速度越快,但精度可能越低;速度越低,機器人行駛速度越慢,但精度可能越高。
Usage:
drivetrain.set_drive_velocity(velocity, units)
參數 |
描述 |
|---|---|
|
行駛速度,範圍從 0% 到 100%。可以是整數 |
|
可選。速度單位: |
def main():
# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
# VR threads — Do not delete
vr_thread(main)
設定轉彎速度#
set_turn_velocity 告訴機器人轉彎的速度。百分比越高,機器人轉彎越快;百分比越低,機器人轉彎越慢。
每個專案開始時,機器人預設以 50% 的速度旋轉。
注意:速度越高,機器人轉彎越快,但精度可能越低;速度越低,機器人轉彎越慢,但精度可能越高。
Usage:
drivetrain.set_turn_velocity(velocity, units)
參數 |
描述 |
|---|---|
|
轉彎速度,範圍從 0% 到 100%。可以是整數 |
|
可選。速度單位: |
def main():
# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
# VR threads — Do not delete
vr_thread(main)
獲取器#
標題#
A heading is the direction the robot is facing, measured in degrees. heading returns the robot’s current heading from 0 to 359.99 degrees.
機器人的初始航向角為0度。
Usage:
drivetrain.heading(units)
參數 |
描述 |
|---|---|
|
可選。航向單位: |
def main():
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
旋轉#
Rotation is how much the robot has turned, measured in degrees. At the beginning of a project, the rotation value is set to 0 degrees. rotation returns the robot’s current rotation.
向右轉會增加旋轉角度,向左轉會減少旋轉角度。例如,向右轉兩圈將得到 720 度的旋轉角度。
Usage:
drivetrain.rotation(units)
參數 |
描述 |
|---|---|
|
可選。旋轉單位: |
def main():
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
已完成#
is_done 傳回機器人是否已完成移動,回傳值為布林值。這可用於根據機器人的移動狀態控制其他行為的執行時間。
True— 機器人已停止移動。False— 機器人仍在移動。
此方法與以下具有 wait 參數的傳動系統方法搭配使用:drive_for, turn_for, turn_to_heading, 和 turn_to_rotation。
Usage:
drivetrain.is_done()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
正在移動#
is_moving 返回機器人是否正在移動,返回值為布林值。這可用於根據機器人的移動狀態控制其他行為的執行時間。
True— 機器人正在移動。False— 機器人沒有移動。
Usage:
drivetrain.is_moving()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
速度#
velocity 返回機器人行駛的速度,以 -100% 到 100% 的百分比表示。
Usage:
drivetrain.velocity(units)
參數 |
描述 |
|---|---|
|
可選。速度單位: |
例子
def main():
# Display the velocity after driving
drivetrain.drive_for(FORWARD, 150, MM)
brain.screen.print("Velocity: ")
brain.screen.print(drivetrain.velocity(PERCENT))
運動#
休伊利用爪式馬達來打開和關閉爪子,以便抓取或放下銷釘和梁。升降馬達則負責升降銷釘或梁,使它們能夠相互連接。
每個馬達都有其自身的運動方向。方向描述解釋了休伊直升機上的每個馬達如何朝特定方向移動。
行動#
旋轉#
spin 轉或反轉永不停歇。馬達將持續旋轉,直到收到其他指令,例如改變旋轉方向或停止。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
|
The direction the motor spins:
|
def main():
# Raise the lift, drive forward, then open the claw.
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
spin_for#
spin_for 會使馬達旋轉指定距離。旋轉距離是相對於馬達目前位置的。程式會等待馬達停止旋轉後才執行下一行程式碼。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
|
The direction the motor spins:
|
|
馬達旋轉的距離。 0 度 |
|
可選。距離單位: |
|
Optional.
|
def main():
# Raise the lift, drive forward, then open the claw.
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
自旋至位置#
spin_to_position 將馬達旋轉到特定位置。
馬達的位置是指它旋轉的距離,以 DEGREES 或 TURNS測量。一圈等於 360 度。在專案開始時,馬達位置設定為 0 度。也可以使用 set_position 方法設定馬達位置。
位置值是絕對值。這意味著旋轉方向取決於馬達的當前位置。
例如,如果馬達從0度開始旋轉到720度,它將正轉兩圈。如果它接著旋轉到360度,它將反轉一圈,因為360小於720。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
|
馬達旋轉到的位置值。 0 度 |
|
可選。位置單位: |
|
Optional.
|
def main():
# Raise the lift to a known position, drive, then open the claw
lift_motor.spin_to_position(-720, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
停止馬達#
stop 停止馬達旋轉。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Raise the lift for 2 seconds, then stop
lift_motor.spin(REVERSE)
wait(2, SECONDS)
lift_motor.stop()
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
變異體#
設定位置#
馬達的位置是指它旋轉的距離,以 DEGREES 或 TURNS測量。 set_position 用於將馬達的目前位置變更為新值。
例如,如果馬達旋轉了 180 度,將位置設為 0 度會將該位置從 180 度重設為 0 度。然後,馬達可以根據這個新值旋轉到其他位置。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
|
馬達位置值設定。 0 度 |
|
可選。位置單位: |
def main():
# Reset the lift position, then move to a new target.
lift_motor.set_position(100, DEGREES)
lift_motor.spin_to_position(-500, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
設定速度#
set_velocity 告訴馬達旋轉的速度。百分比越高,馬達旋轉速度越快;百分比越低,馬達旋轉速度越慢。
每個項目開始時,每個馬達預設以 50% 的速度旋轉。
注意:更高的速度會使馬達轉速更快,但精度可能會降低。更低的速度會使馬達轉速更慢,但精度可能會更高。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
|
旋轉速度,範圍從 0% 到 100%。可以是整數 |
|
速度單位: |
def main():
# Set lift speed, then raise it.
lift_motor.set_velocity(100, PERCENT)
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
設定超時#
set_timeout 設定馬達嘗試完成一次動作的逾時時間。如果馬達無法在規定時間內完成,它將停止嘗試並執行下一行程式碼。這可以防止馬達卡在某個運動中。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
|
The amount of time the motor can try to finish a movement. This can be a positive |
|
時間單位: |
def main():
# Limit how long the lift waits to reach its target.
lift_motor.set_timeout(2, SECONDS)
lift_motor.spin_for(REVERSE, 1800, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
獲取器#
已完成#
is_done 返回馬達是否停止運動,返回值為布林值。這可用於根據馬達的運動狀態控制其他行為的執行時間。
True— 馬達停止運轉。False— 馬達仍在運轉。
此方法與以下具有 wait 參數的 Motion 方法搭配使用:spin_for 和 spin_to_position。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Flash the Touch LED while the lift is moving.
lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
wait(0.1, SECONDS)
while not lift_motor.is_done():
touchled.set_color(RED)
wait(0.5, SECONDS)
touchled.set_color(NONE)
wait(0.5, SECONDS)
# VR threads — Do not delete
vr_thread(main)
正在旋轉#
is_spinning 傳回馬達是否正在旋轉的布林值。這可用於根據馬達的運動狀態控制其他行為的時序。
True— 馬達正在旋轉。False— 馬達不轉動。
此方法與以下具有 wait 參數的 Motion 方法搭配使用:spin_for 和 spin_to_position。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Flash the Touch LED while the lift is spinning.
lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
wait(0.1, SECONDS)
while lift_motor.is_spinning():
touchled.set_color(RED)
wait(0.5, SECONDS)
touchled.set_color(NONE)
wait(0.5, SECONDS)
# VR threads — Do not delete
vr_thread(main)
位置#
A motor’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. position returns the motor’s current position.
專案開始時,馬達位置設定為 0 度。如果馬達正向旋轉一周,則位置為 360 度或 1 圈。如果馬達反向旋轉,則位置為負值。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
|
將馬達位置恢復到: |
def main():
# Raise the lift until it reaches roughly 600 degrees.
lift_motor.spin(REVERSE)
while not lift_motor.position(DEGREES) <= -600:
wait(2, MSEC)
lift_motor.stop()
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
速度#
velocity 返回馬達旋轉的速度。
正值表示馬達正轉,負值表示馬達反轉。
用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:
引擎 |
命令 |
|---|---|
|
|
|
|
參數 |
描述 |
|---|---|
|
要回傳的速度單位: |
def main():
# Print the lift velocity while it is moving.
lift_motor.set_velocity(100, PERCENT)
lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
wait(0.5, SECONDS)
brain.screen.print(lift_motor.velocity(PERCENT))
# VR threads — Do not delete
vr_thread(main)
人工智慧視覺#
獲取器#
拍攝快照#
take_snapshot 將 IQ AI Vision Sensor 影格中的資料過濾為單一簽章(感應器可以辨識的事物的保存描述,例如場上的遊戲元素),並傳回一個元組。
The tuple stores objects ordered from largest to smallest by width, starting at index 0. Each object’s properties can be accessed using its index. An empty tuple is returned if no matching objects are detected.
Usage:
ai_vision.take_snapshot(signature)
參數 |
描述 |
|---|---|
|
Filters the dataset to only include data of the given signature. Available signatures are:
|
def main():
# Place the Red Pin on the top-left Blue Pin.
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.turn_for(LEFT, 38, DEGREES)
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
while not ai_objects[0].width > 48:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
drivetrain.drive(FORWARD)
drivetrain.drive_for(FORWARD, 160, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
特性#
使用 take_snapshot 後,儲存在元組中的每個物件都包含七個屬性。
除 .id 外,所有屬性值均描述了在執行 take_snapshot 操作時,IQ AI 視覺感測器視野中偵測到的物體的位置和大小。這些值以像素為單位進行測量,基於感測器的 320 x 240 像素解析度。
。寬度#
.width 傳回偵測到的物件在像素中的寬度,該值是 1 到 320 之間的整數。
def main():
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if len(ai_objects) > 0:
brain.screen.print(ai_objects[0].width)
# VR threads — Do not delete
vr_thread(main)
。高度#
.height 傳回偵測到的物件的高度(以像素為單位),該值是 1 到 240 之間的整數。
def main():
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if len(ai_objects) > 0:
brain.screen.print(ai_objects[0].height)
# VR threads — Do not delete
vr_thread(main)
.centerX#
.centerX 傳回偵測到的物件中心的 x 座標(以像素為單位),該值是 0 到 320 之間的整數。
def main():
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if len(ai_objects) > 0:
brain.screen.print(ai_objects[0].centerX)
# VR threads — Do not delete
vr_thread(main)
.centerY#
.centerY 傳回偵測到的物件中心的 y 座標(以像素為單位),該值是 0 到 240 之間的整數。
def main():
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if len(ai_objects) > 0:
brain.screen.print(ai_objects[0].centerY)
# VR threads — Do not delete
vr_thread(main)
.originX#
.originX 傳回偵測到的物件邊界框左上角的 x 座標(以像素為單位),該值是 0 到 320 之間的整數。
def main():
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if len(ai_objects) > 0:
brain.screen.print(ai_objects[0].originX)
# VR threads — Do not delete
vr_thread(main)
.originY#
.originY 傳回偵測到的物件邊界框左上角的 y 座標(以像素為單位),該值是 0 到 240 之間的整數。
def main():
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if len(ai_objects) > 0:
brain.screen.print(ai_objects[0].originY)
# VR threads — Do not delete
vr_thread(main)
。 ID#
.id 傳回偵測到的 AI 分類的 ID,以整數形式表示。
人工智慧分類 |
ID |
簽名 |
|---|---|---|
光束 |
0 |
|
藍色別針 |
1 |
|
紅針 |
2 |
|
橘色別針 |
3 |
|
def main():
# Find the nearest Blue Pin in the current snapshot.
lift_motor.spin_for(REVERSE, 600, DEGREES)
object_count = 1
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if len(ai_objects) > 0:
for repeat_count in range(len(ai_objects)):
if ai_objects[repeat_count].id == GameElements.BLUE_PIN:
brain.screen.print(str("Closest Blue Pin is ") + str(object_count))
break
object_count = object_count + 1
# VR threads — Do not delete
vr_thread(main)
安慰#
項目運行時,控制台會顯示文字、數字和變數值。控制台方法還可以將遊標移至新行、清除控制台以及在「監視器」標籤中新增變數或感測器值。
列印#
腦螢幕列印#
brain.screen.print 使用目前遊標位置在控制台中顯示文字、數字或變數值。它的行為類似於控制台 API 頁面上的 print。
當您希望下一個列印值從新行開始時,請使用 brain.screen.next_row。
Usage:
brain.screen.print(value)
參數 |
描述 |
|---|---|
|
若要在控制台中顯示的文字、數字或變數值。 |
def main():
# Display a message in the Console
brain.screen.print("Hello, robot!")
# VR threads — Do not delete
vr_thread(main)

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

brain.screen.clear_screen#
brain.screen.clear_screen 清除控制台中的所有行並將遊標移回第 1 行。
Usage:
brain.screen.clear_screen()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Display text, then clear it after two seconds
brain.screen.print("This will disappear...")
wait(2, SECONDS)
brain.screen.clear_screen()
# 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 in a square 3 times
for loops in range(12):
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 150, MM)
# VR threads — Do not delete
vr_thread(main)
監控感測器#
monitor_sensor 將一個或多個感測器值新增至 VEXcode 的「監視器」標籤。這樣,您就可以在專案運行時觀察感測器值的變化。
請以字串形式提供每個感測器的值。
Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)
參數 |
描述 |
|---|---|
|
要监测的传感器值,以字符串形式给出。要监测多个传感器值,请用逗号分隔每个传感器值。支持的传感器标识符包括:
|
def main():
# Monitor the robot's heading
monitor_sensor("drivetrain.heading")
drivetrain.turn_for(RIGHT, 450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
感測#
觸摸 LED#
設定顏色#
set_color 設定觸控 LED 的顏色。
Usage:
touchled.set_color(color)
參數 |
描述 |
|---|---|
|
The color to set the Touch LED to:
|
def main():
# Light the Touch LED while placing a Pin.
touchled.set_color(RED)
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
touchled.set_color(NONE)
# VR threads — Do not delete
vr_thread(main)
光學的#
靠近對象#
is_near_object 傳回一個布林值,指示光學感測器是否偵測到範圍內的物體。
True– 光學感測器偵測到物體。False– 光學感測器未偵測到物體。
Usage:
optical.is_near_object()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Wait until the claw no longer detects an object, then lower the lift.
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
while optical.is_near_object():
wait(2, MSEC)
lift_motor.spin_to_position(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
顏色#
color 傳回一個基於偵測到的色調值的 ` Color 類別的實例。這些實例可以與預先定義的 Color 物件進行比較,以建立條件語句。
可選顏色有:
NONERED- 色調值介於 340° 至 20° 之間GREEN- 色調值介於 80° 至 140° 之間BLUE- 色調值介於 200° 至 240° 之間YELLOW- 色調值介於 40° 至 60° 之間ORANGE- 色調值介於 20° 至 40° 之間PURPLE- 色調值介於 240° 至 280° 之間CYAN- 色調值介於 140° 至 200° 之間
注意: 光學感測器正在尋找與指定顏色相符的色調範圍。有關檢測特定色調範圍的信息,請參閱 hue。
Usage:
optical.color()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Wait until the Optical Sensor detects red, then lower the lift.
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
while not optical.color() == RED:
wait(5, MSEC)
lift_motor.spin_to_position(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
亮度#
brightness 傳回物體反射的光量,以百分比表示的十進位數 (float)。
百分比越高,表示反射迴光學感測器的光線越多;百分比越低,表示反射回的光線越少。
Usage:
optical.brightness()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Lower the lift once the claw sees a darker object.
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
while not 30 > optical.brightness():
wait(5, MSEC)
lift_motor.spin_to_position(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
色調#
hue 傳回偵測到的顏色的色調值,以 0 到 359 之間的十進位數 (float) 表示。
色相是用色輪上的數字來描述顏色的一種方法。

Usage:
optical.hue()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
def main():
# Lower the lift once the Optical Sensor reports a hue value.
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
while not optical.hue() > 0:
wait(5, MSEC)
lift_motor.spin_to_position(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
偵測到目標#
object_detected 註冊一個函數,當光學感測器偵測到新物體時,該函數將會被呼叫。
Usage:
optical.object_detected(callback, arg)
參數 |
描述 |
|---|---|
|
先前定義的 函數,當光學感測器偵測到新物體時執行。 |
|
def pin_in_claw():
touchled.set_color(RED)
def main():
# Change the Touch LED color when the claw detects an object.
optical.object_detected(pin_in_claw)
touchled.set_color(GREEN)
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)
遺失對象#
object_lost 註冊一個函數,當光學感測器遺失偵測到的物件時,該函數將會被呼叫。
Usage:
optical.object_lost(callback, arg)
參數 |
描述 |
|---|---|
|
先前定義的 函數,當光學感測器遺失偵測到的物件時執行。 |
|
def lower_lift():
# Lower the lift when the claw no longer holds an object.
lift_motor.spin_to_position(0, DEGREES)
def main():
optical.object_lost(lower_lift)
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
# VR threads — Do not delete
vr_thread(main)