宏#
介紹#
VEX AIM Python 巨集是預先建立的程式碼區塊,可以拖放到 Python 專案中。每個巨集都是一組 Python 指令,它們協同工作,使機器人完成更複雜的動作。
這些並非可從程式碼中呼叫的單一方法。相反,每個巨集都作為現成的程式碼序列插入,可以直接使用,也可以加入專案後進行編輯。
在此頁面上,每個 Python 程式碼區塊都顯示了使用該巨集時插入的實際程式碼序列。
以下是所有巨集的清單:
情感-讓機器人展現豐富的情感。
act happy— 使機器人表現快樂。act sad— 使機器人表現悲傷。act silly— 使機器人做傻事。act angry— 使機器人生氣。act excited— 使機器人表現興奮。
AI視覺(運動球類)-轉向或收集運動球類。
turn right until sports ball— 向右轉直到偵測到運動球。turn left until sports ball— 向左轉直到偵測到運動球。get sports ball— 移動機器人去收集運動球。
AI視覺(橘色桶)-轉向或收集橘色桶。
turn right until orange barrel— 向右轉直到偵測到橘色路障。turn left until orange barrel— 向左轉直到偵測到橘色桶。get orange barrel— 移動機器人去收集橘色桶。
AI視覺(藍色木桶)-轉向或收集藍色木桶。
turn right until blue barrel— 向右轉直到偵測到藍色桶。turn left until blue barrel— 向左轉直到偵測到藍色桶。get blue barrel— 移動機器人去收集藍色桶子。
人工智慧視覺(AIM機器人)-轉向或向其他AIM機器人移動。
turn right until AIM robot— 向右轉直到偵測到另一個 AIM 機器人。turn left until AIM robot— 向左轉直到偵測到另一個 AIM 機器人。move to AIM robot— 往另一個 AIM 機器人移動。
AI視覺(AprilTag)-轉向或靠近AprilTags。
turn right until AprilTag— 向右轉直到偵測到 AprilTag。turn left until AprilTag— 向左轉直到偵測到 AprilTag。move to AprilTag— 往 AprilTag 移動。
情緒#
act happy#
這個宏可以讓機器人表現得開心,包括顯示笑臉、播放歡快的聲音、變換 LED 燈顏色以及來回移動。當機器人需要以快樂或積極的方式回應時,可以使用它。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# act happy
robot.screen.show_emoji(HAPPY)
wait(.5,SECONDS)
robot.sound.play(ACT_HAPPY)
wait(115, MSEC)
robot.screen.show_emoji(HAPPY, LOOK_RIGHT)
robot.led.on(ALL_LEDS, YELLOW)
robot.turn_for(RIGHT, 4, 100)
robot.led.on(ALL_LEDS, WHITE)
robot.screen.show_emoji(HAPPY, LOOK_LEFT)
robot.turn_for(RIGHT, -8, 100)
robot.led.on(ALL_LEDS, YELLOW)
robot.screen.show_emoji(HAPPY, LOOK_RIGHT)
robot.turn_for(RIGHT, 4, 100)
wait(100,MSEC)
for i in range(3):
robot.screen.show_emoji(QUIET)
robot.led.on(ALL_LEDS, WHITE)
robot.move_for(1,-90)
robot.screen.show_emoji(HAPPY)
robot.led.on(ALL_LEDS, YELLOW)
robot.move_for(1,90)
robot.stop_all_movement()
robot.led.off(ALL_LEDS)
wait(.5,SECONDS)
act sad#
這個宏可以讓機器人表現出悲傷的表情,包括顯示悲傷的表情、播放悲傷的聲音、LED燈逐漸變暗以及緩慢地朝不同方向移動。當機器人需要表現出失望或低落的情緒時,可以使用它。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# act sad
robot.screen.show_emoji(SAD)
wait(.5,SECONDS)
robot.sound.play(ACT_SAD)
wait(115, MSEC)
robot.led.on(ALL_LEDS, Color(0, 0, 250))
robot.screen.show_emoji(SAD, LOOK_RIGHT)
robot.move_for(11, 135, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 100))
robot.screen.show_emoji(SAD, LOOK_FORWARD)
robot.move_for(11, 315, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 50))
robot.screen.show_emoji(SAD, LOOK_LEFT)
robot.move_for(11, 225, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 10))
robot.screen.show_emoji(SAD, LOOK_FORWARD)
robot.move_for(11, 45, 70)
wait(.5,SECONDS)
robot.led.off(ALL_LEDS)
act silly#
這個巨集可以讓機器人做出滑稽的動作,像是旋轉、變換表情和閃爍不同顏色的LED燈。當機器人需要做出俏皮或出乎意料的反應時,可以使用它。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# act silly
robot.screen.show_emoji(SILLY)
wait(.5,SECONDS)
robot.sound.play(ACT_SILLY)
wait(115,MSEC)
robot.turn_for(RIGHT, 360, 100, wait=False)
face_list = [SILLY, HAPPY, EXCITED, PROUD, THRILLED, LAUGHING]
colors = [BLUE, CYAN, GREEN, ORANGE, PURPLE, RED, WHITE, YELLOW]
while robot.is_turn_active():
robot.screen.show_emoji(SILLY)
robot.led.on(ALL_LEDS, random.choice(colors))
wait(110,MSEC)
robot.screen.show_emoji(random.choice(face_list))
wait(110,MSEC)
robot.screen.show_emoji(SILLY)
robot.led.off(ALL_LEDS)
wait(.5,SECONDS)
act angry#
這個巨集可以讓機器人做出生氣的反應,包括顯示憤怒的表情、播放憤怒的聲音、將LED燈變成紅色以及快速移動。當機器人需要表現出沮喪或警告的反應時,可以使用它。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# act angry
robot.screen.show_emoji(ANGRY)
wait(.5,SECONDS)
robot.sound.play(ACT_ANGRY)
wait(115,MSEC)
robot.led.on(ALL_LEDS, RED)
robot.move_for(25, 0, 50)
wait(50,MSEC)
for i in range(5):
robot.screen.show_emoji(ANNOYED)
robot.move_for(5, 180, 50)
robot.screen.show_emoji(ANGRY)
wait(50,MSEC)
wait(.5,SECONDS)
robot.led.off(ALL_LEDS)
act excited#
這個宏可以讓機器人表現得興奮,包括露出興奮的表情、播放興奮的聲音、快速左右移動以及閃爍橙色LED燈。當機器人需要慶祝或做出充滿活力的反應時,可以使用它。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# act excited
robot.screen.show_emoji(EXCITED)
wait(.5,SECONDS)
robot.sound.play(ACT_EXCITED)
wait(115, MSEC)
for angle in [3,-3,2,-2,2,-2,2,-2,1,-1]:
if angle > 0:
robot.screen.show_emoji(EXCITED, LOOK_RIGHT)
robot.led.on(LED4, ORANGE)
robot.led.on(LED5, ORANGE)
robot.led.on(LED6, ORANGE)
robot.led.off(LED1)
else:
robot.screen.show_emoji(EXCITED, LOOK_LEFT)
robot.led.on(LED1, ORANGE)
robot.led.on(LED2, ORANGE)
robot.led.on(LED3, ORANGE)
robot.led.off(LED6)
robot.turn_for(RIGHT, angle)
robot.led.off(ALL_LEDS)
robot.screen.show_emoji(EXCITED, LOOK_FORWARD)
wait(.5,SECONDS)
AI視覺(運動球類)#
turn right until sports ball#
此巨指令會讓機器人向右轉,直到AI視覺感應器偵測到運動球,然後機器人轉向偵測到的物體。當機器人需要在靠近或撿起運動球之前搜尋它時,可以使用此巨集命令。
注意:如果機器人難以偵測到物體,請嘗試使用 set_turn_velocity 降低機器人的轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Turn right until sports ball is detected
robot.turn(RIGHT)
while True:
vision_data = robot.vision.get_data(SPORTS_BALL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
turn left until sports ball#
此宏指令會讓機器人向左轉,直到AI視覺感測器偵測到運動球,然後機器人轉向偵測到的物體。當機器人需要在靠近或撿起運動球之前搜尋它時,可以使用此巨集命令。
注意:如果機器人難以偵測到物體,請嘗試使用 set_turn_velocity 降低機器人的轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Turn left until sports ball is detected
robot.turn(LEFT)
while True:
vision_data = robot.vision.get_data(SPORTS_BALL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
get sports ball#
此宏指令會讓機器人朝偵測到的運動球移動,直到機器人撿起該球為止。請在機器人能夠看到運動球之後,或在使用「轉向直到找到運動球」巨集找到運動球之後使用此巨集指令。
注意:如果機器人難以偵測物體,請嘗試使用 set_move_velocity 和 set_turn_velocity 降低機器人的移動和轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Get sports ball
while True:
vision_data = robot.vision.get_data(SPORTS_BALL)
if vision_data[0].exists:
if robot.has_sports_ball():
robot.stop_all_movement()
break
else:
robot.move_at(vision_data[0].bearing)
else:
robot.move_at(0)
wait(20, MSEC)
AI視覺(橘色桶)#
turn right until orange barrel#
此宏指令會讓機器人向右轉,直到AI視覺感光元件偵測到橘色桶,然後機器人轉向偵測到的物體。當機器人需要在靠近或收集橙色桶之前搜尋它時,可以使用此巨集命令。
注意:如果機器人難以偵測到物體,請嘗試使用 set_turn_velocity 降低機器人的轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Turn right until orange barrel is detected
robot.turn(RIGHT)
while True:
vision_data = robot.vision.get_data(ORANGE_BARREL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
turn left until orange barrel#
此宏指令會讓機器人向左轉,直到AI視覺感測器偵測到橘色桶,然後機器人轉向偵測到的物體。當機器人需要先搜尋橘色桶,然後再靠近或收集它時,可以使用此巨集命令。
注意:如果機器人難以偵測到物體,請嘗試使用 set_turn_velocity 降低機器人的轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Turn left until orange barrel is detected
robot.turn(LEFT)
while True:
vision_data = robot.vision.get_data(ORANGE_BARREL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
get orange barrel#
此宏指令會讓機器人朝著偵測到的橘色桶移動,直到機器人拾取到它為止。請在機器人能夠看到橘色桶之後,或在使用「轉向直到找到橘色桶」巨集找到橘色桶之後使用此巨集。
注意:如果機器人難以偵測物體,請嘗試使用 set_move_velocity 和 set_turn_velocity 降低機器人的移動和轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Get orange barrel
while True:
vision_data = robot.vision.get_data(ORANGE_BARREL)
if vision_data[0].exists:
if robot.has_orange_barrel():
robot.stop_all_movement()
break
else:
robot.move_at(vision_data[0].bearing)
else:
robot.move_at(0)
wait(20, MSEC)
AI視覺(Blue Barrel)#
turn right until blue barrel#
此宏指令會讓機器人向右轉,直到AI視覺感測器偵測到藍色桶,然後機器人轉向偵測到的物體。當機器人需要先搜尋藍色桶,然後再靠近或收集它時,可以使用此巨集命令。
注意:如果機器人難以偵測到物體,請嘗試使用 set_turn_velocity 降低機器人的轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Turn right until blue barrel is detected
robot.turn(RIGHT)
while True:
vision_data = robot.vision.get_data(BLUE_BARREL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
turn left until blue barrel#
此宏指令會讓機器人向左轉,直到AI視覺感測器偵測到藍色桶,然後機器人轉向偵測到的物體。當機器人需要先搜尋藍色桶,然後再靠近或收集它時,可以使用此巨集命令。
注意:如果機器人難以偵測到物體,請嘗試使用 set_turn_velocity 降低機器人的轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Turn left until blue barrel is detected
robot.turn(LEFT)
while True:
vision_data = robot.vision.get_data(BLUE_BARREL)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
get blue barrel#
此宏指令會讓機器人朝著偵測到的藍色桶子移動,直到收集到桶子為止。請在機器人能夠看到藍色桶之後,或在使用“轉向直到找到藍色桶”宏找到藍色桶之後使用此宏。
注意:如果機器人難以偵測物體,請嘗試使用 set_move_velocity 和 set_turn_velocity 降低機器人的移動和轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Get blue barrel
while True:
vision_data = robot.vision.get_data(BLUE_BARREL)
if vision_data[0].exists:
if robot.has_blue_barrel():
robot.stop_all_movement()
break
else:
robot.move_at(vision_data[0].bearing)
else:
robot.move_at(0)
wait(20, MSEC)
AI視覺(AIM機器人)#
turn right until AIM robot#
此宏指令會使機器人向右旋轉,直到AI視覺感測器偵測到另一個VEX AIM編碼機器人,然後機器人轉向該機器人。當機器人需要先搜尋其他機器人才能靠近時,可以使用此巨集命令。
注意:如果機器人難以偵測到物體,請嘗試使用 set_turn_velocity 降低機器人的轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Turn right until AIM robot is detected
robot.turn(RIGHT)
while True:
vision_data = robot.vision.get_data(AIM_ROBOT)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
turn left until AIM robot#
此宏指令會使機器人向左轉,直到AI視覺感測器偵測到另一個VEX AIM編碼機器人,然後機器人轉向該機器人。當機器人需要先搜尋其他機器人才能靠近時,可以使用此巨集命令。
注意:如果機器人難以偵測到物體,請嘗試使用 set_turn_velocity 降低機器人的轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Turn left until AIM robot is detected
robot.turn(LEFT)
while True:
vision_data = robot.vision.get_data(AIM_ROBOT)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
move to AIM robot#
此宏命令使機器人向另一台 VEX AIM 編碼機器人移動,直到距離足夠近可以停止。請在機器人能夠看到另一台機器人之後,或在使用「轉向直到找到 AIM 機器人」巨集找到目標機器人之後使用此巨集指令。
注意:如果機器人難以偵測物體,請嘗試使用 set_move_velocity 和 set_turn_velocity 降低機器人的移動和轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Move to AIM robot
while True:
vision_data = robot.vision.get_data(AIM_ROBOT)
if vision_data[0].exists:
if vision_data[0].width >= 140:
robot.stop_all_movement()
break
else:
robot.move_at(vision_data[0].bearing)
else:
robot.move_at(0)
wait(20, MSEC)
AI視覺(AprilTag)#
turn right until AprilTag#
此巨集會使機器人向右轉,直到 AI 視覺感測器偵測到 AprilTag ID 為 0 的標籤,然後機器人轉向偵測到的 AprilTag。當機器人需要先搜尋 AprilTag 再往其移動時,可以使用此巨集。若要更改機器人轉向的 AprilTag,請將 TAG0 中的 0 替換為 0 到 37 之間的任一數字(AprilTag 5 到 37 可以使用 AIM Printables 中的列印 AprilTag)。
注意:如果機器人難以偵測到物體,請嘗試使用 set_turn_velocity 降低機器人的轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Turn right until AprilTag ID 0 is detected
robot.turn(RIGHT)
while True:
vision_data = robot.vision.get_data(TAG0)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
turn left until AprilTag#
此巨集會使機器人向左轉彎,直到 AI 視覺感測器偵測到 AprilTag ID 為 0 的標籤,然後機器人轉向偵測到的 AprilTag。當機器人需要先搜尋 AprilTag 再往其移動時,可以使用此巨集。若要更改機器人轉向的 AprilTag,請將 TAG0 中的 0 替換為 0 到 37 之間的任一數字(AprilTag 5 到 37 可以使用 AIM Printables 中的列印 AprilTag)。
注意:如果機器人難以偵測到物體,請嘗試使用 set_turn_velocity 降低機器人的轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Turn left until AprilTag ID 0 is detected
robot.turn(LEFT)
while True:
vision_data = robot.vision.get_data(TAG0)
if vision_data[0].exists:
# Turn to the object by adding your current heading and the vision bearing offset
robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
break
wait(20, MSEC)
move to AprilTag#
此宏會將機器人移動到 AprilTag ID 為 0 的位置,直到足夠接近並停止。在機器人能夠看到 AprilTag 之後,或者在使用「轉向直到 AprilTag」巨集找到 AprilTag 之後,可以使用此巨集。若要更改機器人要移動到的 AprilTag,請將 TAG0 中的 0 替換為 0 到 37 之間的任一數字(AprilTag 5 到 37 可以使用 AIM Printables 中的列印 AprilTag)。
注意:如果機器人難以偵測物體,請嘗試使用 set_move_velocity 和 set_turn_velocity 降低機器人的移動和轉彎速度。
以下程式碼展示了從工具箱拖曳此巨集後新增至專案中的 Python 程式碼序列。您可以直接使用此序列,也可以在新增後進行編輯。
# Move to AprilTag ID 0
while True:
vision_data = robot.vision.get_data(TAG0)
if vision_data[0].exists:
if vision_data[0].width >= 60:
robot.stop_all_movement()
break
else:
robot.move_at(vision_data[0].bearing)
else:
robot.move_at(0)
wait(20, MSEC)