Gerakan#

Perkenalan#

Robot Pemrograman VEX AIM menggunakan sistem penggerak holonomik untuk bergerak maju, mundur, kiri, kanan, atau miring, serta mampu berbelok secara independen. Metode gerak mengontrol bagaimana robot bergerak dan berbelok, seberapa cepat ia bergerak, dan bagaimana posisi x dan y-nya dilacak.

Kompas melingkar dari 0 hingga 315 derajat mengelilingi tampilan abu-abu gelap dengan layar biru tua. Bagian depan robot menghadap 0 derajat pada kompas.

Berikut adalah daftar metode yang tersedia:

Aksi — Gerakkan dan putar robot.

  • move_at — Menggerakkan robot pada sudut tertentu selamanya.

  • move_for — Menggerakkan robot pada sudut tertentu untuk jarak tertentu.

  • move_with_vectors — Menggerakkan robot menggunakan nilai x, y, dan rotasi berbasis vektor.

  • turn — Memutar robot ke kiri atau ke kanan selamanya.

  • turn_for — Memutar robot ke kiri atau ke kanan dengan jumlah derajat tertentu.

  • turn_to — Memutar robot untuk menghadap arah tertentu.

  • stop_all_movement — Menghentikan semua pergerakan robot.

Mutator — Mengatur nilai pergerakan robot.

Getter — Mengembalikan status dan posisi robot.

Tindakan#

move_at#

move_at menggerakkan robot selamanya pada sudut tertentu. Sudut tersebut relatif terhadap posisi robot saat ini. Robot akan terus bergerak hingga diberi tindakan lain, seperti bergerak pada sudut yang berbeda, berbelok, atau berhenti.

Penggunaan:

robot.move_at(angle, velocity, units)

Parameter

Keterangan

angle

Sudut, dalam derajat, yang ditempuh robot. Ini bisa berupa bilangan bulat atau desimal dari -360 hingga 360.

velocity

Opsional. Kecepatan gerak dari 0% hingga 100% saat menggunakan PERCENT, atau dari 0 hingga 200 milimeter per detik saat menggunakan MMPSIni dapat berupa bilangan bulat atau desimal (float). Jika tidak ada kecepatan yang diberikan, robot akan bergerak dengan kecepatan gerak saat ini.

units

Opsional. Satuan kecepatan: PERCENT (standar) atau MMPS (milimeter per detik).

# 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 menggerakkan robot pada sudut tertentu untuk jarak tertentu. Sudut tersebut relatif terhadap posisi robot saat ini. Proyek akan menunggu hingga robot selesai bergerak sebelum baris kode berikutnya dijalankan.

Penggunaan:

robot.move_for(distance, angle, velocity, units, wait)

Parameter

Keterangan

distance

Jarak yang ditempuh robot, dalam milimeter (mm). Ini bisa berupa bilangan bulat atau desimal (float).

angle

Sudut, dalam derajat, yang ditempuh robot. Ini bisa berupa bilangan bulat atau desimal dari -360 hingga 360.

velocity

Opsional. Kecepatan gerak dari 0% hingga 100% saat menggunakan PERCENT, atau dari 0 hingga 200 milimeter per detik saat menggunakan MMPSIni dapat berupa bilangan bulat atau desimal (float). Jika tidak ada kecepatan yang diberikan, robot akan bergerak dengan kecepatan gerak saat ini.

units

Opsional. Satuan kecepatan: PERCENT (standar) atau MMPS (milimeter per detik).

wait

Opsional. wait=True (default) membuat proyek menunggu hingga robot selesai bergerak sebelum baris kode berikutnya dijalankan. wait=False membuat baris kode berikutnya dijalankan segera.

# 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#

Vektor adalah cara untuk menggambarkan seberapa cepat sesuatu bergerak, dan ke arah mana ia bergerak. move_with_vectors menggerakkan robot menggunakan gerakan berbasis vektor. Robot menggabungkan nilai kecepatan maju, ke kanan, dan rotasi untuk menciptakan gerakan yang mulus. Robot akan terus bergerak menggunakan vektor ini sampai diberi tindakan lain, seperti bergerak pada sudut yang berbeda, berbelok, atau berhenti.

Catatan: Metode ini mengatur nilai kecepatan gerak dan putar secara langsung, sehingga tidak menggunakan set_move_velocity atau set_turn_velocity.

Penggunaan:

robot.move_with_vectors(forward, rightward, rotation)

Parameter

Keterangan

forward

Kecepatan robot sepanjang sumbu y, dari -100% hingga 100%. Nilai negatif menggerakkan robot ke belakang dan nilai positif menggerakkannya ke depan.

rightward

Kecepatan robot sepanjang sumbu x, dari -100% hingga 100%. Nilai negatif menggerakkan robot ke kiri dan nilai positif menggerakkannya ke kanan.

rotation

Kecepatan putar robot, dari -100% hingga 100%. Nilai negatif memutar robot berlawanan arah jarum jam dan nilai positif memutarnya searah jarum jam.

# 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#

Perintah turn akan memutar robot ke kiri atau ke kanan selamanya. Robot akan terus berputar hingga diberi perintah lain, seperti bergerak atau berhenti.

Penggunaan:

robot.turn(direction, velocity, units)

Parameter

Keterangan

direction

Arah putaran robot: LEFT atau RIGHT.

velocity

Opsional. Kecepatan putar dari 0% hingga 100% saat menggunakan PERCENT, atau dari 0 hingga 150 derajat per detik saat menggunakan DPSIni dapat berupa bilangan bulat atau desimal (float). Jika tidak ada kecepatan yang diberikan, robot akan berputar dengan kecepatan putar saat ini.

units

Opsional. Satuan kecepatan: DPS (derajat per detik, default) atau PERCENT.

# 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#

Perintah turn_for memutar robot ke kiri atau ke kanan sejumlah derajat tertentu. Putaran tersebut relatif terhadap arah yang sedang dihadapi robot. Proyek akan menunggu hingga robot selesai berputar sebelum menjalankan baris kode berikutnya.

Penggunaan:

robot.turn_for(direction, angle, velocity, units, wait)

Parameter

Keterangan

direction

Arah putaran robot: LEFT atau RIGHT.

angle

Jumlah derajat putaran robot, berkisar dari -360 hingga 360 derajat. Ini bisa berupa bilangan bulat atau desimal (float).

velocity

Opsional. Kecepatan putar dari 0% hingga 100% saat menggunakan PERCENT, atau dari 0 hingga 150 derajat per detik saat menggunakan DPSIni dapat berupa bilangan bulat atau desimal (float). Jika tidak ada kecepatan yang diberikan, robot akan berputar dengan kecepatan putar saat ini.

units

Opsional. Satuan kecepatan: DPS (derajat per detik, default) atau PERCENT.

wait

Opsional. wait=True (default) membuat proyek menunggu hingga robot selesai berputar sebelum baris kode berikutnya dijalankan. wait=False membuat baris kode berikutnya dijalankan segera.

# 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 adalah arah yang dihadapi robot, diukur dalam derajat. Perintah turn_to memutar robot untuk menghadap heading tertentu. Robot akan berbelok melalui jalur terpendek untuk mencapai heading target.

Arah awal pergerakan robot adalah 0 derajat.

Proyek ini akan menunggu hingga robot selesai berputar sebelum menjalankan baris kode berikutnya.

Penggunaan:

robot.turn_to(heading, velocity, units, wait)

Parameter

Keterangan

heading

Arah haluan yang harus dihadapi robot, dari -360 hingga 360 derajat.

velocity

Opsional. Kecepatan putar dari 0% hingga 100% saat menggunakan PERCENT, atau dari 0 hingga 150 derajat per detik saat menggunakan DPSIni dapat berupa bilangan bulat atau desimal (float). Jika tidak ada kecepatan yang diberikan, robot akan berputar dengan kecepatan putar saat ini.

units

Opsional. Satuan kecepatan: DPS (derajat per detik, default) atau PERCENT.

wait

Opsional. wait=True (default) membuat proyek menunggu hingga robot selesai berputar sebelum baris kode berikutnya dijalankan. wait=False membuat baris kode berikutnya dijalankan segera.

# 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 menghentikan semua pergerakan robot.

Penggunaan:

robot.stop_all_movement()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# Turn right, then stop moving
robot.turn(RIGHT)
wait(1, SECONDS)
robot.stop_all_movement()

Mutator#

set_move_velocity#

set_move_velocity memberi tahu robot seberapa cepat harus bergerak. Persentase yang lebih tinggi membuat robot bergerak lebih cepat dan persentase yang lebih rendah membuat robot bergerak lebih lambat.

Setiap proyek dimulai dengan robot yang bergerak dengan kecepatan 50% secara default.

Kecepatan gerak 100% setara dengan 200 milimeter per detik.

Penggunaan:

robot.set_move_velocity(velocity, units)

Parameter

Keterangan

velocity

Kecepatan untuk bergerak dari 0% hingga 100% saat menggunakan PERCENT, atau dari 0 hingga 200 milimeter per detik saat menggunakan MMPSIni bisa berupa bilangan bulat atau desimal (float).

units

Opsional. Satuan kecepatan: PERCENT (standar) atau MMPS (milimeter per detik).

# 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 memberi tahu robot seberapa cepat harus berbelok. Persentase yang lebih tinggi membuat robot berbelok lebih cepat dan persentase yang lebih rendah membuat robot berbelok lebih lambat.

Setiap proyek dimulai dengan robot berputar pada kecepatan 50% (75 derajat per detik) secara default.

Penggunaan:

robot.set_turn_velocity(velocity, units)

Parameter

Keterangan

velocity

Kecepatan untuk berbelok dari 0% hingga 100% saat menggunakan PERCENT, atau dari 0 hingga 150 derajat per detik saat menggunakan DPSIni bisa berupa bilangan bulat atau desimal (float).

units

Opsional. Satuan kecepatan: DPS (derajat per detik, default) atau PERCENT.

# 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 mengubah posisi x dan y robot saat ini ke nilai baru.

Sebagai contoh, jika robot telah menjauh dari titik awalnya, mengatur x menjadi 0 dan y menjadi 0 akan menjadikan lokasi robot saat ini sebagai posisi 0, 0 yang baru. Kemudian robot dapat melacak posisi selanjutnya berdasarkan nilai baru tersebut.

Penggunaan:

robot.set_xy_position(x, y)

Parameter

Keterangan

x

Nilai posisi x yang akan diatur untuk robot, dalam mm. Nilai ini dapat berupa bilangan bulat atau desimal (float).

y

Nilai posisi y yang akan diatur untuk robot, dalam mm. Nilai ini dapat berupa bilangan bulat atau desimal (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())

Pencari#

get_x_position#

get_x_position mengembalikan koordinat x robot saat ini dalam milimeter.

Pada awal proyek, posisi x robot diatur ke 0. Posisi x berubah saat robot bergerak ke kiri atau ke kanan dan dapat diatur menggunakan metode set_xy_position.

Penggunaan:

robot.get_x_position()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# 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 mengembalikan koordinat y robot saat ini dalam milimeter.

Pada awal proyek, posisi y robot diatur ke 0. Posisi y berubah saat robot bergerak maju atau mundur dan dapat diatur menggunakan metode set_xy_position.

Penggunaan:

robot.get_y_position()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# 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 mengembalikan nilai Boolean yang menunjukkan apakah robot sedang bergerak. Ini dapat digunakan untuk mengontrol waktu perilaku lain berdasarkan pergerakan robot.

  • True — Robot itu bergerak.

  • False — Robot tidak bergerak.

Metode ini bekerja bersama dengan metode Motion yang memiliki parameter wait , seperti move_for.

Penggunaan:

robot.is_move_active()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# 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 mengembalikan nilai Boolean yang menunjukkan apakah robot sedang berbelok. Ini dapat digunakan untuk mengontrol pengaturan waktu perilaku lain berdasarkan pergerakan robot.

  • True — Robot itu sedang berputar.

  • False — Robot tidak berbelok.

Metode ini bekerja bersama dengan metode Motion yang memiliki parameter wait , seperti turn_for dan turn_to.

Penggunaan:

robot.is_turn_active()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# 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 mengembalikan nilai Boolean yang menunjukkan apakah robot tidak bergerak maupun berbelok. Ini dapat digunakan untuk mengontrol waktu perilaku lain berdasarkan pergerakan robot.

  • True — Robot tidak bergerak atau berbelok.

  • False — Robot sedang bergerak atau berbelok.

Penggunaan:

robot.is_stopped()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# 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()