機器人專用 Python#

介紹#

英雄機器人 Axel 包含兩種馬達選項、人工智慧視覺感測器、光學感測器、旋轉感測器和遊戲定位系統 (GPS) 感測器。

所有標準的 VEXcode VR 方法都可以在 V5 24-25 高風險 遊樂場中使用。

以下是所有可用的機器人專用方法清單:

驅動系統-控制機器人的移動和轉向。

  • 操作

    • drive — 使機器人無限向前或向後移動。

    • drive_for — 使機器人向前或向後移動指定的距離。

    • turn — 讓機器人永遠向左或向右轉。

    • turn_for — 使機器人向左或向右旋轉指定的度數。

    • turn_to_heading — 將機器人轉向 -359 到 359 度之間的特定航向。

    • turn_to_rotation — 將機器人旋轉到指定的方向。

    • stop — 停止機器人的移動。

  • 變異因子

  • Getters

    • heading — 返回機器人的目前航向,範圍從 0 到 359.99 度。

    • rotation — 返回機器人的目前旋轉角度。

    • is_done — 傳回機器人是否已完成移動,以布林值表示。

    • is_moving — 傳回機器人是否正在移動,以布林值表示。

    • velocity — 返回機器人行駛的速度。

運動控制-移動並追蹤機器人的馬達。

  • 操作

    • spin — 使馬達永遠正轉或反轉。

    • spin_for — 使馬達旋轉指定的距離。

    • spin_to_position — 將馬達旋轉到特定位置。

    • stop — 停止馬達旋轉。

  • 變異因子

  • Getters

    • is_done — 返回馬達是否停止移動,以布林值表示。

    • is_spinning — 返回馬達是否旋轉,以布林值表示。

    • position — 返回馬達的目前位置。

    • velocity — 返回馬達的旋轉速度。

人工智慧視覺 - 使用人工智慧視覺感測器捕捉和分析物體。

  • Getters

    • take_snapshot – 傳回特定簽章偵測到的物件元組。

  • 特性

    • width – 偵測到的物件的寬度(以像素為單位)。

    • height – 偵測到的物體的高度(以像素為單位)。

    • centerX – 物體中心的 X 座標(以像素為單位)。

    • centerY – 物體中心的 Y 座標(以像素為單位)。

    • originX – 物件左上角的 X 座標(以像素為單位)。

    • originY – 物件左上角的 Y 座標(以像素為單位)。

    • id – 物件的分類或標籤 ID。

控制台 – 將資訊列印到控制台並監控數值。

感知-利用機器人的各種感測器。

  • 光學的

    • is_near_object – 返迴光學感測器是否偵測到範圍內的物體。

    • color – 返迴光學感測器偵測到的顏色。

    • brightness – 傳回物體反射的光量。

    • hue – 返迴光學感測器偵測到的色調。

    • object_detected – 註冊一個當光學感測器偵測到物體時要呼叫的函數。

    • object_lost – 註冊一個當光學感測器遺失物體時要呼叫的函數。

  • 旋轉

    • set_position – 將旋轉感測器的目前位置設定為特定值。

    • angle – 返回感測器的目前角度,範圍為 0 到 359.99 度。

    • position – 傳回以度數或圈數表示的總旋轉位置。

  • 全球定位系統

    • x_position – 返回場地中 GPS 感測器的目前 x 座標。

    • y_position – 返回場地中 GPS 感測器的目前 y 座標。

    • heading – 根據 GPS 感測器的讀數(0 到 359 度)返回機器人目前面向的航向。

本頁範例使用 Playground 的預設起始位置。

傳動系統#

動力系統控制VR機器人的駕駛和轉向。動力系統可以前進或後退、左轉或右轉、轉向特定航向並追蹤其旋轉。

行動#

駕駛#

drive 使機器人無限前進或後退。機器人將持續移動,直到收到其他指令,例如轉向或停止。

Usage:
drivetrain.drive(direction)

參數

描述

direction

機器人移動方向: FORWARD 或 REVERSE。

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)

參數

描述

direction

機器人移動方向: FORWARD 或 REVERSE。

distance

機器人行駛的距離。這可以是整數 integerfloat)。

units

可選。距離單位: INCHES (預設)或 MM (毫米)。

wait

可選 wait=True (預設值)表示程式會等待機器人完成轉向後再執行下一行程式碼。 2 wait=False 表示程式會立即執行下一行程式碼。

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)

參數

描述

direction

機器人轉向的方向: LEFT 或 RIGHT。

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)

參數

描述

direction

機器人轉向的方向: LEFT 或 RIGHT。

angle

The number of degrees the robot turns. This can be an integer or decimal (float).

units

可選。旋轉單位: DEGREES (預設值)。

wait

可選 wait=True (預設值)使專案等待機器人完成移動後再執行下一行程式碼。 2 wait=False 使下一行程式碼立即運作。

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)

參數

描述

angle

機器人應面向的方向,以度為單位。可以是 integer 的整數,也可以是 -359 到 359 之間的十進位數(float)。

units

可選。旋轉單位: DEGREES (預設值)。

wait

可選 wait=True (預設值)表示程式會等待機器人完成轉向後再執行下一行程式碼。 2 wait=False 表示程式會立即執行下一行程式碼。

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)

參數

描述

angle

機器人將旋轉到的旋轉值,以度為單位。這可以是整數 integerfloat)。

units

可選。旋轉單位: DEGREES (預設值)。

wait

可選 wait=True (預設值)表示程式會等待機器人完成轉向後再執行下一行程式碼。 2 wait=False 表示程式會立即執行下一行程式碼。

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)

參數

描述

heading

The heading value, in degrees, to set for the robot. This can be an integer or decimal (float).

units

可選。航向單位: DEGREES (預設值)。

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)

參數

描述

rotation

要設定的機器人旋轉值,以度為單位。這可以是整數 integerfloat)。

units

可選。旋轉單位: DEGREES (預設值)。

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)

參數

描述

value

The amount of time the robot can try to finish a movement. This can be a positive integer or decimal (float).

units

時間單位: SECONDS 或 MSEC (毫秒)。

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)

參數

描述

velocity

行駛速度,範圍從 0% 到 100%。可以是整數 integerfloat)。

units

可選。速度單位: PERCENT (預設值)。

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)

參數

描述

velocity

轉彎速度,範圍從 0% 到 100%。可以是整數 integerfloat)。

units

可選。速度單位: PERCENT (預設值)。

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)

參數

描述

units

可選。航向單位: DEGREES (預設值)。

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)

參數

描述

units

可選。旋轉單位: DEGREES (預設值)。

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)

參數

描述

units

可選。速度單位: PERCENT (預設值)。

例子

def main():
    # Display the velocity after driving
    drivetrain.drive_for(FORWARD, 150, MM)
    brain.screen.print("Velocity: ")
    brain.screen.print(drivetrain.velocity(PERCENT))

運動#

Axel 利用機械手臂馬達升降機械手臂,以便將環放置在樁子附近。推桿馬達驅動推桿沿著機械臂向下移動,將環從機械臂上推到樁子上。

每個馬達都有其自身的運動方向。方向描述解釋了每個方向如何使馬達在軸上運動。

行動#

旋轉#

spin 轉或反轉永不停歇。馬達將持續旋轉,直到收到其他指令,例如改變旋轉方向或停止。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.spin(direction) — 機械手臂

pusher_motor

pusher_motor.spin(direction) — 推桿電機

參數

描述

direction

The direction the motor spins:

  • FORWARD — Spins the Arm up or moves the Pusher down the arm.
  • REVERSE — Spins the Arm down or moves the Pusher up the arm.

def main():
    # Lift the Arm up before moving
    arm_motor.spin(FORWARD)
    wait(1, SECONDS)
    arm_motor.stop()

# VR threads — Do not delete
vr_thread(main)

spin_for#

spin_for 會使馬達旋轉指定距離。旋轉距離是相對於馬達目前位置的。程式會等待馬達停止旋轉後才執行下一行程式碼。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.spin_for(direction, distance, units, wait) — 機械手臂

pusher_motor

pusher_motor.spin_for(direction, distance, units, wait) — 推桿電機

參數

描述

direction

The direction the motor spins:

  • FORWARD — Spins the Arm up or moves the Pusher down the arm.
  • REVERSE — Spins the Arm down or moves the Pusher up the arm.

distance

馬達旋轉的距離。 0 度 DEGREES 使用整數)。 2 圈 TURNS 可以使用整數或小數)。

units

可選。距離單位: DEGREES (預設)或 TURNS。

wait

Optional.

  • wait=True (default) — Makes the project wait until the motor is done spinning before the next line of code runs.
  • wait=False — Makes the next line of code run right away.

def main():
    # Lift the Arm up before moving
    arm_motor.spin_for(FORWARD, 400, DEGREES)

# VR threads — Do not delete
vr_thread(main)

自旋至位置#

spin_to_position 將馬達旋轉到特定位置。

馬達的位置是指它旋轉的距離,以 DEGREES 或 TURNS測量。一圈等於 360 度。在專案開始時,馬達位置設定為 0 度。也可以使用 set_position 方法設定馬達位置。

位置值是絕對值。這意味著旋轉方向取決於馬達的當前位置。

例如,如果馬達從0度開始旋轉到720度,它將正轉兩圈。如果它接著旋轉到360度,它將反轉一圈,因為360小於720。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.spin_to_position(angle, units, wait=True) — 機械手臂

pusher_motor

pusher_motor.spin_to_position(angle, units, wait=True) — 推桿電機

參數

描述

angle

馬達旋轉到的位置值。 0 度 DEGREES 使用整數)。 2 圈 TURNS 可以使用整數或小數)。

units

可選。位置單位: DEGREES (預設)或 TURNS。

wait

Optional.

  • wait=True (default) — Makes the project wait until the motor is done spinning before the next line of code runs.
  • wait=False — Makes the next line of code run right away.

def main():
    # Lift the Arm up before moving
    arm_motor.spin_to_position(400, DEGREES)

# VR threads — Do not delete
vr_thread(main)

停止#

stop 停止馬達旋轉。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.stop() — 機械手臂

pusher_motor

pusher_motor.stop() — 推桿電機

參數

描述

此方法沒有參數。

def main():
    # Lift the Arm up before moving
    arm_motor.spin(FORWARD)
    wait(1, SECONDS)
    arm_motor.stop()

# VR threads — Do not delete
vr_thread(main)

變異體#

設定位置#

馬達的位置是指它旋轉的距離,以 DEGREES 或 TURNS測量。 set_position 用於將馬達的目前位置變更為新值。

例如,如果馬達旋轉了 180 度,將位置設為 0 度會將該位置從 180 度重設為 0 度。然後,馬達可以根據這個新值旋轉到其他位置。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.set_position(position, units) — 機械手臂

pusher_motor

pusher_motor.set_position(position, units) — 推桿電機

參數

描述

position

馬達位置值設定。 0 度 DEGREES 使用整數。 2 圈 TURNS 可以使用整數或小數。

units

可選。位置單位: DEGREES (預設)或 TURNS。

def main():
    # Make the raised Arm as the new 0 degrees position
    arm_motor.spin_to_position(400, DEGREES)
    arm_motor.set_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

設定速度#

set_velocity 告訴馬達旋轉的速度。百分比越高,馬達旋轉速度越快;百分比越低,馬達旋轉速度越慢。

每個項目開始時,每個馬達預設以 50% 的速度旋轉。

注意:更高的速度會使馬達轉速更快,但精度可能會降低。更低的速度會使馬達轉速更慢,但精度可能會更高。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.set_velocity(velocity, units) — 機械手臂

pusher_motor

pusher_motor.set_velocity(velocity, units) — 推桿電機

參數

描述

velocity

旋轉速度,範圍從 0% 到 100%。可以是整數 integerfloat)。

units

速度單位: PERCENT。

def main():
    # Lift the Arm up before moving
    arm_motor.set_velocity(100, PERCENT)
    arm_motor.spin_to_position(400, DEGREES)

# VR threads — Do not delete
vr_thread(main)

設定超時#

set_timeout 設定馬達嘗試完成一次動作的逾時時間。如果馬達無法在規定時間內完成,它將停止嘗試並執行下一行程式碼。這可以防止馬達卡在某個運動中。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.set_timeout(value, units) — 機械手臂

pusher_motor

pusher_motor.set_timeout(value, units) — 推桿電機

參數

描述

value

The amount of time the motor can try to finish a movement. This can be a positive integer or decimal (float).

units

時間單位: SECONDS 或 MSEC (毫秒)。

def main():
    # Lift the Arm up before moving
    arm_motor.set_timeout(1, SECONDS)
    arm_motor.spin_for(FORWARD, 1080, DEGREES)

# VR threads — Do not delete
vr_thread(main)

獲取器#

已完成#

is_done 返回馬達是否停止運動,返回值為布林值。這可用於根據馬達的運動狀態控制其他行為的執行時間。

  • True — 馬達停止運轉。

  • False — 馬達仍在運轉。

此方法與以下具有 wait 參數的 Motion 方法搭配使用:spin_for 和 spin_to_position。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.is_done() — 機械手臂

pusher_motor

pusher_motor.is_done() — 推桿電機

參數

描述

此方法沒有參數。

正在旋轉#

is_spinning 傳回馬達是否正在旋轉的布林值。這可用於根據馬達的運動狀態控制其他行為的時序。

  • True — 馬達正在旋轉。

  • False — 馬達不轉動。

此方法與以下具有 wait 參數的 Motion 方法搭配使用:spin_for 和 spin_to_position。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.is_spinning() — 機械手臂電機

pusher_motor

pusher_motor.is_spinning() — 推桿電機

參數

描述

此方法沒有參數。

位置#

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 圈。如果馬達反向旋轉,則位置為負值。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.position(units) — 機械手臂

pusher_motor

pusher_motor.position(units) — 推桿電機

參數

描述

units

將馬達位置恢復到: DEGREES 或 TURNS。

速度#

速度velocity。

正值表示馬達正轉,負值表示馬達反轉。

用法:
此方法可以使用兩種可用的馬達物件之一,如下所示:

引擎

命令

arm_motor

arm_motor.velocity(units) — 機械手臂電機

pusher_motor

pusher_motor.velocity(units) — 推桿電機

參數

描述

units

要回傳的速度單位: PERCENT。

人工智慧視覺#

獲取器#

拍攝快照#

take_snapshot 將來自 AI 視覺感測器幀的資料過濾為單一簽名——感測器可以識別的事物的保存描述,例如場上的遊戲元素——並返回一個元組。

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)

參數

描述

signature

Filters the dataset to only include data of the given signature. Available signatures are:

  • AiVision.ALL_AIOBJS - Detects Mobile Goals, Red Rings, and Blue Rings.

def main():
    # Lift the Arm to not block the AI Vision Sensor's field of view
    arm_motor.spin_for(FORWARD, 350, DEGREES)
    while True:
        brain.screen.clear_screen()

        # Display the data of the largest detected Game Element
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

        if len(ai_objects) is not 0:
            brain.screen.print("Center X: ", ai_objects[0].centerX)
            brain.screen.next_row()

            brain.screen.print("Center Y: ", ai_objects[0].centerY)
            brain.screen.next_row()

        else:
            brain.screen.print("No object detected.")

        wait(0.2, SECONDS)

# VR threads — Do not delete
vr_thread(main)

特性#

使用 take_snapshot 後,儲存在元組中的每個物件都包含七個屬性。

除 .id 外,所有屬性值均描述了在執行 take_snapshot 操作時,AI 視覺感測器視野中偵測到的物體的位置和大小。這些值以像素為單位,基於感測器的 320 x 240 像素解析度。

。寬度#

.width 傳回偵測到的物件在像素中的寬度,該值是 1 到 320 之間的整數。

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the width of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].width)

# VR threads — Do not delete
vr_thread(main)

。高度#

.height 傳回偵測到的物件的高度(以像素為單位),該值是 1 到 240 之間的整數。

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the height of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].height)

# VR threads — Do not delete
vr_thread(main)

.centerX#

.centerX 傳回偵測到的物件中心的 x 座標(以像素為單位),該值是 0 到 320 之間的整數。

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the centerX of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].centerX)

# VR threads — Do not delete
vr_thread(main)

.centerY#

.centerY 傳回偵測到的物件中心的 y 座標(以像素為單位),該值是 0 到 240 之間的整數。

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the centerY of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].centerY)

# VR threads — Do not delete
vr_thread(main)

.originX#

.originX 傳回偵測到的物件邊界框左上角的 x 座標(以像素為單位),該值是 0 到 320 之間的整數。

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the originX of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].originX)

# VR threads — Do not delete
vr_thread(main)

.originY#

.originY 傳回偵測到的物件邊界框左上角的 y 座標(以像素為單位),該值是 0 到 240 之間的整數。

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the originY of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].originY)

# VR threads — Do not delete
vr_thread(main)

。 ID#

.id 傳回偵測到的 AI 分類的 ID,以整數形式表示。

人工智慧分類

ID

簽名

移動目標

0

GameElements.MOBILE_GOAL

紅環

1

GameElements.RED_RING

藍環

2

GameElements.BLUE_RING

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display if a Mobile Goal is detected
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:

        if ai_objects[0].id == GameElements.MOBILE_GOAL:
            brain.screen.print("This is a Mobile Goal.")
        else:
            brain.screen.print("This is not a Mobile Goal.")

# VR threads — Do not delete
vr_thread(main)

安慰#

項目運行時,控制台會顯示文字、數字和變數值。控制台方法還可以將遊標移至新行、清除控制台以及在「監視器」標籤中新增變數或感測器值。

列印#

腦螢幕列印#

brain.screen.print 使用目前遊標位置在控制台中顯示文字、數字或變數值。

當您希望下一個列印值從新行開始時,請使用 brain.screen.next_row。

Usage:
brain.screen.print(value)

參數

描述

value

若要在控制台中顯示的文字、數字或變數值。

def main():
    # Display a message in the Console
    brain.screen.print("Hello, robot!")

# VR threads — Do not delete
vr_thread(main)

VEXcode 控制台,顯示控制台和文字「Hello, robot!」。

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)

VEXcode 控制台,顯示控制台,第一行顯示文字“第 1 行”,第二行顯示文字“第 2 行”。

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”)

參數

描述

variable

要監控的預定義全域變數的名稱,以字串形式給出。若要監控多個變量,請用逗號分隔每個變數名稱。

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”)

參數

描述

sensor

要监测的传感器值,以字符串形式给出。要监测多个传感器值,请用逗号分隔每个传感器值。支持的传感器标识符包括:

  • 大脑
    • brain.timer.time
  • 传动系统
    • drivetrain.is_done
    • drivetrain.is_moving
    • drivetrain.heading
    • drivetrain.rotation
    • drivetrain.velocity
  • 推杆电机
    • pusher_motor.is_done
    • pusher_motor.is_spinning
    • pusher_motor.position
    • pusher_motor.velocity
  • 机械臂电机
    • arm_motor.is_done
    • arm_motor.is_spinning
    • arm_motor.position
    • arm_motor.velocity
  • 前置距离传感器
    • front_distance.is_object_detected
    • front_distance.object_distance_mm
    • front_distance.object_distance_inches
  • 前置光学传感器
    • front_optical.is_near_object
    • front_optical.color
    • front_optical.brightness
    • front_optical.hue
  • GPS传感器
    • gps.position_mm
    • gps.position_inches
    • gps.heading
  • 推杆旋转传感器
    • pusher_rotation.angle
    • pusher_rotation.position
  • AI视觉传感器
    • ai_vision.object_count
    • ai_vision.height
    • ai_vision.width
    • ai_vision.centerX
    • ai_vision.centerY
    • ai_vision.originX
    • ai_vision.originY
    • ai_vision.id

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)

感測#

光學的#

靠近對象#

is_near_object 傳回一個布林值,指示光學感測器是否偵測到範圍內的物體。

  • True – 光學感測器偵測到物體。

  • False – 光學感測器未偵測到物體。

Usage:
front_optical.is_near_object()

參數

描述

此方法沒有參數。

def main():
    # Display if the Optical Sensor is detecting an object
    brain.screen.print(front_optical.is_near_object())

# VR threads — Do not delete
vr_thread(main)

顏色#

color 傳回一個基於偵測到的色調值的 ` Color 類別的實例。這些實例可以與預先定義的 Color 物件進行比較,以建立條件語句。

可選顏色有:

  • NONE

  • RED - 色調值介於 340° 至 20° 之間

  • GREEN - 色調值介於 80° 至 140° 之間

  • BLUE - 色調值介於 200° 至 240° 之間

  • YELLOW - 色調值介於 40° 至 60° 之間

  • ORANGE - 色調值介於 20° 至 40° 之間

  • PURPLE - 色調值介於 240° 至 280° 之間

  • CYAN - 色調值介於 140° 至 200° 之間

注意: 光學感測器正在尋找與指定顏色相符的色調範圍。有關檢測特定色調範圍的信息,請參閱 hue。

Usage:
front_optical.color()

參數

描述

此方法沒有參數。

def main():
    # Display the color of the ring on the Arm
    brain.screen.print(front_optical.color())

# VR threads — Do not delete
vr_thread(main)

亮度#

brightness 傳回物體反射的光量,以百分比表示的十進位數 (float)。

百分比越高,表示反射迴光學感測器的光線越多;百分比越低,表示反射回的光線越少。

Usage:
front_optical.brightness()

參數

描述

此方法沒有參數。

色調#

hue 傳回偵測到的顏色的色調值,以 0 到 359 之間的十進位數 (float) 表示。

色相是用色輪上的數字來描述顏色的一種方法。

一個圓形色輪,顯示完整的色調光譜,邊緣標有度數,從頂部的 0° 到 360°,以 30° 為增量遞增。

Usage:
front_optical.hue()

參數

描述

此方法沒有參數。

def main():
    # Display the hue of the ring on the Arm.
    brain.screen.print("Hue: ", optical.hue())

# VR threads — Do not delete
vr_thread(main)

偵測到目標#

object_detected 註冊一個函數,當光學感測器偵測到新物體時,該函數將會被呼叫。

Usage:
front_optical.object_detected(callback, arg)

參數

描述

callback

先前定義的 函數,當光學感測器偵測到新物體時執行。

arg

可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的函數。

遺失對象#

object_lost 註冊一個函數,當光學感測器遺失偵測到的物件時,該函數將會被呼叫。

Usage:
front_optical.object_lost(callback, arg)

參數

描述

callback

先前定義的 函數,當光學感測器遺失偵測到的物件時執行。

arg

可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的函數。

旋轉#

設定位置#

set_position 將旋轉感測器的目前位置設定為以度為單位的值。

Usage:
pusher_rotation.set_position(position, units)

參數

描述

位置

旋轉感測器的設定位置。

單位

可選。位置單位:DEGREES (預設)或 TURNS

角度#

angle 返回感測器的目前角度(浮點數)。

Usage:
pusher_rotation.angle(units)

參數

描述

單位

可選。角度單位:

  • DEGREES (預設)– 0 至 359.99
  • TURNS

位置#

位置position 返回總旋轉位置。

Usage:
pusher_rotation.position(units)

參數

描述

單位

可選。位置單位:

  • DEGREES (預設)– 0 到 359 的整數
  • TURNS – 浮點數

全球定位系統#

x_position#

x_position 返回場上 GPS(遊戲定位系統™)感測器的目前 x 座標。

Usage:
gps.x_position(units)

參數

描述

單位

偏移值的單位: INCHES 或 MM

y 位置#

y_position 返回場上 GPS(遊戲定位系統™)感測器的目前 y 座標。

Usage:
gps.y_position(units)

參數

描述

單位

偏移值的單位: INCHES 或 MM

標題#

heading 返回機器人目前面向的航向,該航向基於 GPS(遊戲定位系統™)感測器的讀數,範圍為 0 到 359 度。

Usage:
gps.heading()

參數

描述

此方法沒有參數。