Cử động#
Giới thiệu#
Robot lập trình VEX AIM sử dụng hệ thống truyền động toàn phương để di chuyển tiến, lùi, sang trái, sang phải hoặc theo góc độ, đồng thời có khả năng xoay độc lập. Các phương pháp điều khiển chuyển động kiểm soát cách robot di chuyển và xoay, tốc độ di chuyển và cách theo dõi vị trí x và y của nó.

Dưới đây là danh sách các phương pháp có sẵn:
Thao tác — Di chuyển và xoay robot.
move_at— Di chuyển robot ở một góc cụ thể mãi mãi.move_for— Di chuyển robot ở một góc cụ thể trong một khoảng cách cụ thể.move_with_vectors— Di chuyển robot bằng cách sử dụng các giá trị x, y và xoay dựa trên vectơ.turn— Xoay robot sang trái hoặc phải mãi mãi.turn_for— Xoay robot sang trái hoặc phải một số độ cụ thể.turn_to— Xoay robot để hướng về một hướng cụ thể.stop_all_movement— Dừng tất cả chuyển động của robot.
Bộ điều chỉnh — Thiết lập các giá trị chuyển động của robot.
set_move_velocity— Cho robot biết tốc độ di chuyển.set_turn_velocity— Cho robot biết tốc độ quay.set_xy_position— Thay đổi vị trí x và y hiện tại của robot thành các giá trị mới.
Getters — Trả về trạng thái và vị trí của robot.
get_x_position— Trả về tọa độ x hiện tại của robot.get_y_position— Trả về tọa độ y hiện tại của robot.is_move_active— Trả về trạng thái robot đang di chuyển.is_turn_active— Trả về trạng thái robot đang quay.is_stopped— Trả về liệu robot có đang không di chuyển cũng không quay hay không.
Hành động#
move_at#
Lệnh move_at di chuyển robot liên tục ở một góc cụ thể. Góc này được tính tương đối so với vị trí hiện tại của robot. Robot sẽ tiếp tục di chuyển cho đến khi nhận được lệnh khác, chẳng hạn như di chuyển ở góc khác, quay đầu hoặc dừng lại.
Cách sử dụng:
robot.move_at(angle, velocity, units)
Thông số |
Sự miêu tả |
|---|---|
|
Góc quay của robot, tính bằng độ. Giá trị này có thể là số nguyên hoặc số thập phân từ -360 đến 360. |
|
Tùy chọn. Vận tốc di chuyển từ 0% đến 100% khi sử dụng |
|
Tùy chọn. Đơn vị vận tốc: |
# 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#
Lệnh move_for di chuyển robot theo một góc cụ thể trong một khoảng cách cụ thể. Góc này được tính tương đối so với vị trí hiện tại của robot. Chương trình sẽ chờ cho đến khi robot hoàn thành việc di chuyển trước khi dòng mã tiếp theo được thực thi.
Cách sử dụng:
robot.move_for(distance, angle, velocity, units, wait)
Thông số |
Sự miêu tả |
|---|---|
|
Khoảng cách robot di chuyển, tính bằng milimét (mm). Giá trị này có thể là số nguyên hoặc số thập phân (float). |
|
Góc quay của robot, tính bằng độ. Giá trị này có thể là số nguyên hoặc số thập phân từ -360 đến 360. |
|
Tùy chọn. Vận tốc di chuyển từ 0% đến 100% khi sử dụng |
|
Tùy chọn. Đơn vị vận tốc: |
|
Tùy chọn. |
# 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#
Vectơ là một cách để mô tả tốc độ và hướng di chuyển của một vật thể. move_with_vectors điều khiển robot di chuyển bằng chuyển động dựa trên vectơ. Robot kết hợp các giá trị vận tốc tiến, sang phải và xoay để tạo ra chuyển động mượt mà. Robot sẽ tiếp tục di chuyển bằng vectơ này cho đến khi nhận được lệnh khác, chẳng hạn như di chuyển ở góc độ khác, rẽ hoặc dừng lại.
Lưu ý: Phương pháp này đặt trực tiếp các giá trị vận tốc di chuyển và xoay, do đó nó không sử dụng set_move_velocity hoặc set_turn_velocity.
Cách sử dụng:
robot.move_with_vectors(forward, rightward, rotation)
Thông số |
Sự miêu tả |
|---|---|
|
Vận tốc của robot dọc theo trục y, từ -100% đến 100%. Giá trị âm làm cho robot di chuyển lùi và giá trị dương làm cho robot di chuyển tiến. |
|
Vận tốc của robot dọc theo trục x, từ -100% đến 100%. Giá trị âm làm cho robot di chuyển sang trái và giá trị dương làm cho robot di chuyển sang phải. |
|
Tốc độ quay của robot, từ -100% đến 100%. Giá trị âm làm cho robot quay ngược chiều kim đồng hồ và giá trị dương làm cho robot quay theo chiều kim đồng hồ. |
# 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 sẽ khiến robot quay sang trái hoặc phải liên tục. Robot sẽ tiếp tục quay cho đến khi nhận được lệnh thực hiện hành động khác, chẳng hạn như di chuyển hoặc dừng lại.
Cách sử dụng:
robot.turn(direction, velocity, units)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng quay của robot: |
|
Tùy chọn. Vận tốc quay từ 0% đến 100% khi sử dụng |
|
Tùy chọn. Đơn vị vận tốc: |
# 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#
Lệnh turn_for cho phép robot quay sang trái hoặc phải một số độ nhất định. Góc quay này tương đối so với hướng hiện tại mà robot đang đối mặt. Chương trình sẽ chờ cho đến khi robot quay xong trước khi thực thi dòng mã tiếp theo.
Cách sử dụng:
robot.turn_for(direction, angle, velocity, units, wait)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng quay của robot: |
|
Số độ mà robot quay, nằm trong khoảng từ -360 đến 360 độ. Giá trị này có thể là số nguyên hoặc số thập phân (float). |
|
Tùy chọn. Vận tốc quay từ 0% đến 100% khi sử dụng |
|
Tùy chọn. Đơn vị vận tốc: |
|
Tùy chọn. |
# 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#
Hướng quay là hướng mà robot đang đối mặt, được đo bằng độ. Lệnh turn_to sẽ xoay robot để hướng về một hướng cụ thể. Robot sẽ quay theo hướng ngắn nhất để đạt được hướng mục tiêu.
Hướng di chuyển ban đầu của robot là 0 độ.
Dự án sẽ chờ cho đến khi robot hoàn thành việc quay trước khi dòng mã tiếp theo được thực thi.
Cách sử dụng:
robot.turn_to(heading, velocity, units, wait)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng mà robot nên quay, từ -360 đến 360 độ. |
|
Tùy chọn. Vận tốc quay từ 0% đến 100% khi sử dụng |
|
Tùy chọn. Đơn vị vận tốc: |
|
Tùy chọn. |
# 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 dừng mọi chuyển động của robot.
Cách sử dụng:
robot.stop_all_movement()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Turn right, then stop moving
robot.turn(RIGHT)
wait(1, SECONDS)
robot.stop_all_movement()
Biến đổi#
set_move_velocity#
set_move_velocity cho robot biết tốc độ di chuyển. Tỷ lệ phần trăm càng cao thì robot càng di chuyển nhanh hơn và tỷ lệ phần trăm càng thấp thì robot càng di chuyển chậm hơn.
Mỗi dự án đều bắt đầu với robot di chuyển ở tốc độ mặc định là 50%.
Tốc độ di chuyển 100% tương đương với 200 milimét mỗi giây.
Cách sử dụng:
robot.set_move_velocity(velocity, units)
Thông số |
Sự miêu tả |
|---|---|
|
Tốc độ di chuyển từ 0% đến 100% khi sử dụng |
|
Tùy chọn. Đơn vị vận tốc: |
# 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 cho robot biết tốc độ quay. Tỷ lệ phần trăm càng cao thì robot quay càng nhanh, tỷ lệ phần trăm càng thấp thì robot quay càng chậm.
Mỗi dự án đều bắt đầu với việc robot quay ở tốc độ 50% (75 độ mỗi giây) theo mặc định.
Cách sử dụng:
robot.set_turn_velocity(velocity, units)
Thông số |
Sự miêu tả |
|---|---|
|
Tốc độ quay từ 0% đến 100% khi sử dụng |
|
Tùy chọn. Đơn vị vận tốc: |
# 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 thay đổi vị trí x và y hiện tại của robot thành các giá trị mới.
Ví dụ, nếu robot đã di chuyển ra khỏi điểm xuất phát, việc đặt x bằng 0 và y bằng 0 sẽ biến vị trí hiện tại của robot thành vị trí 0, 0 mới. Sau đó, robot có thể theo dõi các vị trí trong tương lai dựa trên giá trị mới đó.
Cách sử dụng:
robot.set_xy_position(x, y)
Thông số |
Sự miêu tả |
|---|---|
|
Giá trị vị trí x cần thiết lập cho robot, tính bằng mm. Giá trị này có thể là số nguyên hoặc số thập phân (float). |
|
Giá trị vị trí y cần thiết lập cho robot, tính bằng mm. Giá trị này có thể là số nguyên hoặc số thập phân (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())
Người nhận#
get_x_position#
get_x_position trả về tọa độ x hiện tại của robot tính bằng milimét.
Khi bắt đầu một dự án, vị trí x của robot được đặt là 0. Vị trí x thay đổi khi robot di chuyển sang trái hoặc phải và có thể được đặt bằng phương pháp set_xy_position.
Cách sử dụng:
robot.get_x_position()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# 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 trả về tọa độ y hiện tại của robot tính bằng milimét.
Khi bắt đầu một dự án, vị trí y của robot được đặt là 0. Vị trí y thay đổi khi robot di chuyển về phía trước hoặc phía sau và có thể được đặt bằng phương pháp set_xy_position.
Cách sử dụng:
robot.get_y_position()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# 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 trả về trạng thái di chuyển của robot, dưới dạng giá trị Boolean. Điều này có thể được sử dụng để điều khiển thời gian thực hiện các hành vi khác dựa trên chuyển động của robot.
True— Robot đang di chuyển.False— Robot không di chuyển.
Phương pháp này hoạt động cùng với các phương pháp Chuyển động có tham số wait , chẳng hạn như move_for.
Cách sử dụng:
robot.is_move_active()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# 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 trả về giá trị Boolean cho biết robot có đang quay hay không. Giá trị này có thể được sử dụng để điều khiển thời gian thực hiện các hành vi khác dựa trên chuyển động của robot.
True— Robot đang quay.False— Robot không quay.
Phương pháp này hoạt động cùng với các phương pháp Chuyển động có tham số wait , chẳng hạn như turn_for và turn_to.
Cách sử dụng:
robot.is_turn_active()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# 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 trả về giá trị Boolean cho biết robot có đang di chuyển hoặc quay hay không. Điều này có thể được sử dụng để điều khiển thời gian của các hành vi khác dựa trên chuyển động của robot.
True— Robot không di chuyển hoặc xoay.False— Robot đang di chuyển hoặc xoay.
Cách sử dụng:
robot.is_stopped()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# 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()