การเคลื่อนไหว#
การแนะนำ#
หุ่นยนต์เขียนโปรแกรม VEX AIM ใช้ระบบขับเคลื่อนแบบโฮโลโนมิกในการเคลื่อนที่ไปข้างหน้า ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา หรือทำมุมต่างๆ รวมถึงสามารถหมุนได้อย่างอิสระ วิธีการควบคุมการเคลื่อนที่ควบคุมวิธีการเคลื่อนที่และการหมุนของหุ่นยนต์ ความเร็วในการเคลื่อนที่ และวิธีการติดตามตำแหน่ง x และ y ของหุ่นยนต์

ด้านล่างนี้คือรายการวิธีการที่มีให้เลือกใช้:
การกระทำ — ขยับและหมุนหุ่นยนต์
move_at— เคลื่อนหุ่นยนต์ด้วยมุมที่กำหนดตลอดไปmove_for— เคลื่อนหุ่นยนต์ด้วยมุมที่กำหนดและระยะทางที่กำหนดmove_with_vectors— เคลื่อนย้ายหุ่นยนต์โดยใช้ค่า x, y และการหมุนตามเวกเตอร์turn— หมุนหุ่นยนต์ไปทางซ้ายหรือขวาตลอดไปturn_for— หมุนหุ่นยนต์ไปทางซ้ายหรือขวาตามจำนวนองศาที่กำหนดturn_to— หมุนหุ่นยนต์ให้หันหน้าไปยังทิศทางที่กำหนดstop_all_movement— หยุดการเคลื่อนไหวทั้งหมดของหุ่นยนต์
ตัวปรับแต่ง — กำหนดค่าการเคลื่อนที่ของหุ่นยนต์
set_move_velocity— บอกหุ่นยนต์ว่าจะเคลื่อนที่เร็วแค่ไหนset_turn_velocity— บอกหุ่นยนต์ว่าจะเลี้ยวเร็วแค่ไหนset_xy_position— เปลี่ยนตำแหน่ง x และ y ปัจจุบันของหุ่นยนต์เป็นค่าใหม่
เมธอด Getter — ส่งคืนสถานะและตำแหน่งของหุ่นยนต์
get_x_position— ส่งคืนพิกัด x ปัจจุบันของหุ่นยนต์get_y_position— ส่งคืนพิกัด y ปัจจุบันของหุ่นยนต์is_move_active— คืนค่าว่าหุ่นยนต์กำลังเคลื่อนที่อยู่หรือไม่is_turn_active— คืนค่าว่าหุ่นยนต์กำลังเลี้ยวอยู่หรือไม่is_stopped— คืนค่าว่าหุ่นยนต์ไม่ได้เคลื่อนที่หรือหมุนหรือไม่
การกระทำ#
move_at#
คำสั่ง move_at จะเคลื่อนหุ่นยนต์ไปเรื่อยๆ ในมุมที่กำหนด มุมนี้จะสัมพันธ์กับตำแหน่งปัจจุบันของหุ่นยนต์ หุ่นยนต์จะเคลื่อนที่ต่อไปจนกว่าจะได้รับคำสั่งอื่น เช่น การเคลื่อนที่ในมุมที่แตกต่างกัน การเลี้ยว หรือการหยุด
วิธีใช้:
robot.move_at(angle, velocity, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
มุมที่หุ่นยนต์เคลื่อนที่ (หน่วยเป็นองศา) สามารถเป็นจำนวนเต็มหรือทศนิยมตั้งแต่ -360 ถึง 360 ได้ |
|
ตัวเลือกเสริม ความเร็วในการเคลื่อนที่สามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
เลือกได้ หน่วยความเร็ว: |
# Move right, then move forward and stop.
robot.move_at(90)
wait(1,SECONDS)
robot.move_at(0)
wait(1,SECONDS)
robot.stop_all_movement()
# Move right slowly, move in reverse quickly and stop.
robot.move_at(90, 25)
wait(2, SECONDS)
robot.move_at(180, 100, PERCENT)
wait(1, SECONDS)
robot.stop_all_movement()
# Move diagonally to the right and stop.
robot.move_at(45.33)
wait(1,SECONDS)
robot.stop_all_movement()
move_for#
คำสั่ง move_for จะเคลื่อนหุ่นยนต์ด้วยมุมที่กำหนดและระยะทางที่กำหนด โดยมุมดังกล่าวสัมพันธ์กับตำแหน่งปัจจุบันของหุ่นยนต์ โปรแกรมจะรอจนกว่าหุ่นยนต์จะเคลื่อนที่เสร็จก่อนที่โค้ดบรรทัดถัดไปจะทำงาน
วิธีใช้:
robot.move_for(distance, angle, velocity, units, wait)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ระยะทางที่หุ่นยนต์เคลื่อนที่ หน่วยเป็นมิลลิเมตร (มม.) ค่านี้อาจเป็นจำนวนเต็มหรือทศนิยม (float) ก็ได้ |
|
มุมที่หุ่นยนต์เคลื่อนที่ (หน่วยเป็นองศา) สามารถเป็นจำนวนเต็มหรือทศนิยมตั้งแต่ -360 ถึง 360 ได้ |
|
ตัวเลือกเสริม ความเร็วในการเคลื่อนที่สามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
เลือกได้ หน่วยความเร็ว: |
|
ตัวเลือกเสริม |
# Move right, then move forward.
robot.move_for(50, 90)
robot.move_for(100, 0)
# Move in reverse slowly, then move forward quickly.
robot.move_for(100, 180, 25)
robot.move_for(100, 0, 100, PERCENT)
# Drive forward and blink all LEDs red.
robot.move_for(100, 0, wait=False)
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLACK)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLACK)
move_with_vectors#
เวกเตอร์เป็นวิธีอธิบายความเร็วในการเคลื่อนที่และทิศทางการเคลื่อนที่ของวัตถุ คำสั่ง move_with_vectors จะเคลื่อนหุ่นยนต์โดยใช้การเคลื่อนที่แบบเวกเตอร์ หุ่นยนต์จะรวมค่าความเร็วในการเคลื่อนที่ไปข้างหน้า ไปทางขวา และการหมุน เพื่อสร้างการเคลื่อนไหวที่ราบรื่น หุ่นยนต์จะเคลื่อนที่ต่อไปโดยใช้เวกเตอร์นี้จนกว่าจะได้รับคำสั่งอื่น เช่น การเคลื่อนที่ในมุมที่แตกต่างกัน การเลี้ยว หรือการหยุด
หมายเหตุ: วิธีนี้ตั้งค่าความเร็วในการเคลื่อนที่และการหมุนโดยตรง ดังนั้นจึงไม่ใช้ set_move_velocity หรือ set_turn_velocity
วิธีใช้:
robot.move_with_vectors(forward, rightward, rotation)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ความเร็วของหุ่นยนต์ตามแนวแกน y มีค่าตั้งแต่ -100% ถึง 100% ค่าลบหมายถึงหุ่นยนต์เคลื่อนที่ถอยหลัง และค่าบวกหมายถึงหุ่นยนต์เคลื่อนที่ไปข้างหน้า |
|
ความเร็วของหุ่นยนต์ตามแนวแกน x มีค่าตั้งแต่ -100% ถึง 100% ค่าลบหมายถึงหุ่นยนต์เคลื่อนที่ไปทางซ้าย และค่าบวกหมายถึงหุ่นยนต์เคลื่อนที่ไปทางขวา |
|
ความเร็วในการหมุนของหุ่นยนต์ มีค่าตั้งแต่ -100% ถึง 100% ค่าลบจะทำให้หุ่นยนต์หมุนทวนเข็มนาฬิกา และค่าบวกจะทำให้หุ่นยนต์หมุนตามเข็มนาฬิกา |
# Move at 15°
robot.move_with_vectors(48.3, 12.95, 0)
wait(2, SECONDS)
robot.stop_all_movement()
# Move at 45° while turning counterclockwise.
robot.move_with_vectors(50, 50, -30)
wait(2, SECONDS)
robot.stop_all_movement()
# Scaling movement using the controller joystick
while True:
# Move forward (and backwards) slower than axis1 input
forward = controller.axis1.position() * 0.7
# Move right (and left) faster than axis2 input
rightward = controller.axis2.position() * 1.5
robot.move_with_vectors(forward, rightward, 0)
wait(5, MSEC)
turn#
turn จะหมุนหุ่นยนต์ไปทางซ้ายหรือขวาเรื่อยๆ จนกว่าจะได้รับคำสั่งอื่น เช่น การเคลื่อนที่หรือการหยุด
วิธีใช้:
robot.turn(direction, velocity, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางที่หุ่นยนต์หมุน: |
|
ตัวเลือกเสริม ความเร็วในการหมุนสามารถระบุได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
# Turn left, then stop.
robot.turn(LEFT)
wait(1, SECONDS)
robot.stop_all_movement()
# Turn left quickly, turn right slowly, then stop.
robot.turn(LEFT, 80)
wait(2, SECONDS)
robot.turn(RIGHT, 20, PERCENT)
wait(3, SECONDS)
robot.stop_all_movement()
turn_for#
turn_for จะหมุนหุ่นยนต์ไปทางซ้ายหรือขวาเป็นจำนวนองศาที่กำหนด การหมุนจะสัมพันธ์กับทิศทางปัจจุบันที่หุ่นยนต์หันหน้าไป โครงการจะรอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่โค้ดบรรทัดถัดไปจะทำงาน
วิธีใช้:
robot.turn_for(direction, angle, velocity, units, wait)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางที่หุ่นยนต์หมุน: |
|
จำนวนองศาที่หุ่นยนต์หมุน โดยมีค่าตั้งแต่ -360 ถึง 360 องศา ค่านี้สามารถเป็นจำนวนเต็มหรือทศนิยม (float) ก็ได้ |
|
ตัวเลือกเสริม ความเร็วในการหมุนสามารถระบุได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
|
ตัวเลือกเสริม |
# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)
# Turn left quickly, then turn right slowly.
robot.turn_for(LEFT, 90, 100)
robot.turn_for(RIGHT, 180, 15, PERCENT)
# Turn right and blink all LEDs blue.
robot.turn_for(RIGHT, 180, wait=False)
robot.led.on(ALL_LEDS, BLUE)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLUE)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
turn_to#
ทิศทาง (Heading) คือทิศทางที่หุ่นยนต์หันหน้าไป โดยวัดเป็นองศา คำสั่ง turn_to จะหมุนหุ่นยนต์ให้หันหน้าไปในทิศทางที่กำหนด หุ่นยนต์จะหมุนไปในทิศทางที่สั้นที่สุดเพื่อไปยังทิศทางเป้าหมาย
ทิศทางเริ่มต้นของหุ่นยนต์คือ 0 องศา
โปรเจ็กต์จะรอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่จะรันโค้ดบรรทัดถัดไป
วิธีใช้:
robot.turn_to(heading, velocity, units, wait)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางที่หุ่นยนต์ควรหันไปนั้นอยู่ระหว่าง -360 ถึง 360 องศา |
|
ตัวเลือกเสริม ความเร็วในการหมุนสามารถระบุได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
|
ตัวเลือกเสริม |
# Turn to face each cardinal directions.
robot.turn_to(90)
wait(2, SECONDS)
robot.turn_to(180)
wait(2, SECONDS)
robot.turn_to(270)
wait(2, SECONDS)
robot.turn_to(0)
# Turn to face backward slowly, then face forward quickly.
robot.turn_to(180, 25)
wait(1, SECONDS)
robot.turn_to(0, 90, PERCENT)
# Turn around quickly and blink all LEDs green.
robot.turn_to(180, 100, wait=False)
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
stop_all_movement#
stop_all_movement หยุดการเคลื่อนไหวทั้งหมดของหุ่นยนต์
วิธีใช้:
robot.stop_all_movement()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# Turn right, then stop moving
robot.turn(RIGHT)
wait(1, SECONDS)
robot.stop_all_movement()
ตัวกลายพันธุ์#
set_move_velocity#
คำสั่ง set_move_velocity จะบอกหุ่นยนต์ว่าควรเคลื่อนที่เร็วแค่ไหน ค่าเปอร์เซ็นต์ที่สูงขึ้นจะทำให้หุ่นยนต์เคลื่อนที่เร็วขึ้น และค่าเปอร์เซ็นต์ที่ต่ำลงจะทำให้หุ่นยนต์เคลื่อนที่ช้าลง
ทุกโครงการเริ่มต้นด้วยการที่หุ่นยนต์เคลื่อนที่ด้วยความเร็ว 50% เป็นค่าเริ่มต้น
ความเร็วในการเคลื่อนที่ 100% เทียบเท่ากับ 200 มิลลิเมตรต่อวินาที
วิธีใช้:
robot.set_move_velocity(velocity, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ความเร็วที่ต้องการเคลื่อนที่ ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
เลือกได้ หน่วยความเร็ว: |
# Move forward at the default velocity,
robot.set_move_velocity(50)
robot.move_for(100, 0)
wait(1, SECONDS)
# Move slower than the default velocity
robot.set_move_velocity(20)
robot.move_for(100, 0)
wait(1, SECONDS)
# Move faster than the default velocity
robot.set_move_velocity(100)
robot.move_for(100, 0)
set_turn_velocity#
set_turn_velocity จะบอกหุ่นยนต์ว่าควรเลี้ยวเร็วแค่ไหน เปอร์เซ็นต์ที่สูงขึ้นจะทำให้หุ่นยนต์เลี้ยวเร็วขึ้น และเปอร์เซ็นต์ที่ต่ำลงจะทำให้หุ่นยนต์เลี้ยวช้าลง
โดยค่าเริ่มต้น ทุกโปรเจกต์จะเริ่มต้นด้วยการที่หุ่นยนต์หมุนด้วยความเร็ว 50% (75 องศาต่อวินาที)
วิธีใช้:
robot.set_turn_velocity(velocity, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ความเร็วในการหมุนตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
# Turn around at default velocity
robot.set_turn_velocity(50)
robot.turn_for(RIGHT, 180)
wait(1, SECONDS)
# Turn around slower than the default velocity
robot.set_turn_velocity(20)
robot.turn_for(RIGHT, 180)
wait(1, SECONDS)
# Turn around faster than the default velocity
robot.set_turn_velocity(100)
robot.turn_for(RIGHT, 180)
set_xy_position#
คำสั่ง set_xy_position จะเปลี่ยนตำแหน่ง x และ y ปัจจุบันของหุ่นยนต์เป็นค่าใหม่
ตัวอย่างเช่น หากหุ่นยนต์เคลื่อนที่ออกจากจุดเริ่มต้น การตั้งค่า x เป็น 0 และ y เป็น 0 จะทำให้ตำแหน่งปัจจุบันของหุ่นยนต์กลายเป็นตำแหน่ง 0, 0 ใหม่ จากนั้นหุ่นยนต์สามารถติดตามตำแหน่งในอนาคตโดยอิงจากค่าใหม่นั้นได้
วิธีใช้:
robot.set_xy_position(x, y)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าตำแหน่งแกน x ที่จะตั้งค่าให้กับหุ่นยนต์ หน่วยเป็นมิลลิเมตร ค่านี้สามารถเป็นจำนวนเต็มหรือทศนิยม (float) ก็ได้ |
|
ค่าตำแหน่งแกน y ที่จะตั้งค่าสำหรับหุ่นยนต์ หน่วยเป็นมิลลิเมตร ค่านี้สามารถเป็นจำนวนเต็มหรือทศนิยม (float) ก็ได้ |
# Set the robot's current position
# Move forward and print the new coordinate
robot.set_xy_position(100, 50)
robot.move_for(150, 0)
robot.screen.print("X:", robot.get_x_position())
robot.screen.next_row()
robot.screen.print("Y:", robot.get_y_position())
ผู้รับ#
get_x_position#
get_x_position ส่งคืนพิกัด x ปัจจุบันของหุ่นยนต์ในหน่วยมิลลิเมตร
เมื่อเริ่มโครงการ ตำแหน่ง x ของหุ่นยนต์จะถูกตั้งค่าเป็น 0 ตำแหน่ง x จะเปลี่ยนแปลงเมื่อหุ่นยนต์เคลื่อนที่ไปทางซ้ายหรือขวา และสามารถตั้งค่าได้โดยใช้เมธอด set_xy_position
วิธีใช้:
robot.get_x_position()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# Print the start and end x-value
# of the robot's position after moving
robot.screen.print("Start X:", robot.get_x_position())
robot.move_for(200, 90)
robot.screen.next_row()
robot.screen.print("End X:", robot.get_x_position())
get_y_position#
get_y_position จะส่งคืนค่าพิกัด y ปัจจุบันของหุ่นยนต์ในหน่วยมิลลิเมตร
เมื่อเริ่มโครงการ ตำแหน่ง y ของหุ่นยนต์จะถูกตั้งค่าเป็น 0 ตำแหน่ง y จะเปลี่ยนแปลงเมื่อหุ่นยนต์เคลื่อนที่ไปข้างหน้าหรือถอยหลัง และสามารถตั้งค่าได้โดยใช้เมธอด set_xy_position
วิธีใช้:
robot.get_y_position()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# Print the start and end y-value
# of the robot's position after moving
robot.screen.print("Start Y:", robot.get_y_position())
robot.move_for(200, 0)
robot.screen.next_row()
robot.screen.print("End Y:", robot.get_y_position())
is_move_active#
is_move_active จะส่งคืนค่าบูลีนว่าหุ่นยนต์กำลังเคลื่อนที่หรือไม่ ค่านี้สามารถใช้ควบคุมจังหวะเวลาของพฤติกรรมอื่นๆ โดยอิงจากการเคลื่อนที่ของหุ่นยนต์ได้
True— หุ่นยนต์กำลังเคลื่อนที่False— หุ่นยนต์ไม่เคลื่อนที่
วิธีนี้ทำงานร่วมกับเมธอด Motion ที่มีพารามิเตอร์ wait เช่น move_for
วิธีใช้:
robot.is_move_active()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# Blink all the LEDs when the robot is moving.
robot.move_for(200, 0, wait=False)
while robot.is_move_active():
robot.led.on(ALL_LEDS, ORANGE)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, CYAN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
is_turn_active#
is_turn_active จะส่งคืนค่าบูลีนว่าหุ่นยนต์กำลังเลี้ยวอยู่หรือไม่ ค่านี้สามารถใช้ควบคุมจังหวะเวลาของพฤติกรรมอื่นๆ โดยอิงจากการเคลื่อนที่ของหุ่นยนต์ได้
True— หุ่นยนต์กำลังหมุนตัวFalse— หุ่นยนต์ไม่หมุน
วิธีนี้ทำงานร่วมกับเมธอด Motion ที่มีพารามิเตอร์ wait เช่น turn_for และ turn_to
วิธีใช้:
robot.is_turn_active()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# Blink all the LEDs while the robot is turning
robot.turn_for(RIGHT, 180, wait=False)
while robot.is_turn_active():
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, CYAN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
is_stopped#
is_stopped จะส่งคืนค่าบูลีนว่าหุ่นยนต์หยุดเคลื่อนที่หรือหมุนหรือไม่ ค่านี้สามารถใช้ควบคุมจังหวะเวลาของพฤติกรรมอื่นๆ โดยอิงจากการเคลื่อนที่ของหุ่นยนต์ได้
True— หุ่นยนต์ไม่เคลื่อนที่หรือหมุนFalse— หุ่นยนต์กำลังเคลื่อนที่หรือหมุนอยู่
วิธีใช้:
robot.is_stopped()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# Blink all the LEDs while the robot is moving or turning
def light_show():
# Flash LEDs while the robot is moving or turning
while not robot.is_stopped():
robot.led.on(ALL_LEDS, GREEN)
wait(.5, SECONDS)
robot.led.on(ALL_LEDS, PURPLE)
wait(.5, SECONDS)
robot.led.off(ALL_LEDS)
robot.move_for(200, 0, wait=False)
light_show()
robot.turn_for(RIGHT, 180, wait=False)
light_show()