Sistem penggerak#
Perkenalan#
Sistem penggerak mengontrol cara Robot VR bergerak dan berbelok. Sistem penggerak dapat bergerak maju atau mundur, berbelok ke kiri atau kanan, berbelok ke arah tertentu, dan mengikuti arah rotasinya.
Ada banyak cara untuk memprogram sistem penggerak (drivetrain). Berikut adalah daftar semua metode pemrograman sistem penggerak:
Aksi — Gerakkan dan putar robot.
drive— Menggerakkan robot maju atau mundur selamanya.drive_for— Menggerakkan robot maju atau mundur sejauh jarak tertentu.turn— Memutar robot ke kiri atau ke kanan selamanya.turn_for— Memutar robot ke kiri atau ke kanan dengan jumlah derajat tertentu.turn_to_heading— Memutar robot untuk menghadap arah tertentu dari -359 hingga 359 derajat.turn_to_rotation— Memutar robot ke rotasi tertentu.stop— Menghentikan pergerakan robot.
Mutator — Sesuaikan pengaturan sistem penggerak.
set_heading— Mengubah arah robot saat ini ke arah yang baru.set_rotation— Mengubah rotasi robot saat ini ke rotasi baru.set_timeout— Menentukan berapa lama robot akan mencoba menyelesaikan suatu gerakan.set_drive_velocity— Memberi tahu robot seberapa cepat harus bergerak.set_turn_velocity— Memberi tahu robot seberapa cepat harus berbelok.
Getters — Periksa status sistem penggerak.
Tindakan#
drive#
Perintah drive menggerakkan robot maju atau mundur tanpa henti. Robot akan terus bergerak hingga diberi perintah lain, seperti berbelok atau berhenti.
Usage:
drivetrain.drive(direction)
Parameter |
Keterangan |
|---|---|
|
Arah pergerakan robot: |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
drive_for#
Perintah drive_for menggerakkan robot maju atau mundur sejauh jarak tertentu. Proyek akan menunggu hingga robot selesai bergerak sebelum menjalankan baris kode berikutnya.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Parameter |
Keterangan |
|---|---|
|
Arah pergerakan robot: |
|
Jarak yang ditempuh robot. Ini bisa berupa bilangan |
|
Opsional. Satuan jarak: |
|
Opsional. |
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#
Perintah turn akan membuat robot berbelok ke kiri atau kanan selamanya. Robot akan terus berbelok hingga diberi perintah lain, seperti bergerak atau berhenti.
Usage:
drivetrain.turn(direction)
Parameter |
Keterangan |
|---|---|
|
Arah putaran robot: |
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#
Perintah turn_for memutar robot ke kiri atau ke kanan sejumlah derajat tertentu. Putaran tersebut relatif terhadap posisi robot saat ini. Proyek akan menunggu hingga robot selesai berputar sebelum baris kode berikutnya dijalankan.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Parameter |
Keterangan |
|---|---|
|
Arah putaran robot: |
|
Jumlah derajat putaran robot. Ini bisa berupa bilangan |
|
Opsional. Satuan rotasi: |
|
Opsional. |
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#
Arah haluan adalah arah yang dihadapi robot, diukur dalam derajat. turn_to_heading memutar robot untuk menghadap arah haluan tertentu dari -359 hingga 359 derajat. Robot akan berbelok melalui arah terpendek untuk mencapai arah haluan target.
Arah awal pergerakan robot adalah 0 derajat.
Proyek ini akan menunggu hingga robot selesai berputar sebelum menjalankan baris kode berikutnya.
Usage:
drivetrain.turn_to_heading(angle, units, wait)
Parameter |
Keterangan |
|---|---|
|
Arah yang harus dihadapi robot, dalam derajat. Ini bisa berupa bilangan |
|
Opsional. Satuan rotasi: |
|
Opsional. |
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#
turn_to_rotation memutar robot ke rotasi tertentu.
Rotasi adalah seberapa banyak robot telah berputar, diukur dalam derajat. Pada awal proyek, nilai rotasi diatur ke 0 derajat. Rotasi juga dapat diatur menggunakan metode set_rotation.
Nilai rotasi bersifat absolut. Artinya, arah putaran bergantung pada rotasi robot saat ini. Berbelok ke kanan akan meningkatkan rotasi, dan berbelok ke kiri akan mengurangi rotasi.
Sebagai contoh, jika robot mulai dari 0 derajat dan Anda memutarnya hingga mencapai rotasi 720 derajat, robot akan berbelok ke kanan dua kali. Jika kemudian Anda memutarnya hingga mencapai rotasi 360 derajat, robot akan berbelok ke kiri sekali, karena 360 kurang dari 720.
Proyek ini akan menunggu hingga robot selesai berputar sebelum menjalankan baris kode berikutnya.
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
Parameter |
Keterangan |
|---|---|
|
Nilai rotasi, dalam derajat, yang akan diputar oleh robot. Ini bisa berupa bilangan |
|
Opsional. Satuan rotasi: |
|
Opsional. |
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#
stop menghentikan pergerakan robot.
Usage:
drivetrain.stop()
Parameter |
Keterangan |
|---|---|
Metode ini tidak memiliki parameter. |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
Mutator#
set_heading#
Heading adalah arah yang dihadapi robot, diukur dalam derajat. set_heading mengubah heading robot saat ini ke nilai heading baru.
Sebagai contoh, jika robot telah berputar menghadap ke kanan, mengatur arah menjadi 0 derajat akan menjadikan posisi menghadap ke kanan tersebut sebagai 0 derajat yang baru. Kemudian robot dapat berputar ke posisi lain berdasarkan arah yang baru tersebut.
Usage:
drivetrain.set_heading(heading, units)
Parameter |
Keterangan |
|---|---|
|
Nilai haluan, dalam derajat, yang akan diatur untuk robot. Ini bisa berupa bilangan |
|
Opsional. Satuan arah: |
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)
set_rotation#
Rotasi adalah seberapa banyak robot telah berputar, diukur dalam derajat. Pada awal proyek, nilai rotasi diatur ke 0 derajat. Perintah set_rotation mengubah rotasi robot saat ini ke nilai baru.
Sebagai contoh, jika robot telah melakukan dua putaran penuh ke kanan, nilai rotasinya akan menjadi 720 derajat. Mengatur rotasi ke 0 derajat akan mengatur ulang rotasi tersebut dari 720 menjadi 0 derajat. Kemudian robot dapat berputar berdasarkan nilai rotasi yang baru tersebut.
Usage:
drivetrain.set_rotation(rotation, units)
Parameter |
Keterangan |
|---|---|
|
Nilai rotasi, dalam derajat, yang akan diatur untuk robot. Ini bisa berupa bilangan |
|
Opsional. Satuan rotasi: |
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#
set_timeout mengatur berapa lama robot akan mencoba menyelesaikan suatu gerakan. Jika robot tidak dapat menyelesaikannya dalam waktu tersebut, robot akan berhenti mencoba dan melanjutkan ke baris kode berikutnya. Ini mencegah robot terjebak pada suatu gerakan.
Usage:
drivetrain.set_timeout(value, units)
Parameter |
Keterangan |
|---|---|
|
Jumlah waktu yang dapat dicoba robot untuk menyelesaikan suatu gerakan. Ini bisa berupa bilangan bulat positif |
|
Opsional. Satuan waktu: |
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#
set_drive_velocity memberi tahu robot seberapa cepat ia 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.
Catatan: Kecepatan yang lebih tinggi membuat robot bergerak lebih cepat, tetapi mungkin kurang presisi. Kecepatan yang lebih rendah membuat robot bergerak lebih lambat, tetapi bisa lebih presisi.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Parameter |
Keterangan |
|---|---|
|
Kecepatan untuk mengemudi dari 0% hingga 100%. Ini bisa berupa bilangan |
|
Opsional. Satuan kecepatan: |
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#
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 yang berputar dengan kecepatan 50% secara default.
Catatan: Kecepatan yang lebih tinggi membuat robot berbelok lebih cepat, tetapi mungkin kurang presisi. Kecepatan yang lebih rendah membuat robot berbelok lebih lambat, tetapi bisa lebih presisi.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Parameter |
Keterangan |
|---|---|
|
Kecepatan untuk berbelok dari 0% hingga 100%. Ini bisa berupa bilangan |
|
Opsional. Satuan kecepatan: |
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)
Pencari#
heading#
Heading adalah arah yang dihadapi robot, diukur dalam derajat. Perintah heading mengembalikan heading robot saat ini dari 0 hingga 359,99 derajat.
Arah awal pergerakan robot adalah 0 derajat.
Usage:
drivetrain.heading(units)
Parameter |
Keterangan |
|---|---|
|
Opsional. Satuan arah: |
def main():
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Heading: ")
brain.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
rotation#
Rotasi adalah seberapa banyak robot telah berputar, diukur dalam derajat. Pada awal proyek, nilai rotasi diatur ke 0 derajat. Perintah rotation mengembalikan rotasi robot saat ini.
Memutar ke kanan akan meningkatkan putaran, dan memutar ke kiri akan mengurangi putaran. Misalnya, melakukan dua putaran penuh ke kanan akan menghasilkan putaran sebesar 720 derajat.
Usage:
drivetrain.rotation(units)
Parameter |
Keterangan |
|---|---|
|
Opsional. Satuan rotasi: |
def main():
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Rotation: ")
brain.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
is_done#
is_done mengembalikan nilai Boolean yang menunjukkan apakah robot telah selesai bergerak. Ini dapat digunakan untuk mengontrol waktu perilaku lain berdasarkan pergerakan robot.
True— Robot telah selesai bergerak.False— Robot masih bergerak.
Metode ini bekerja bersama dengan metode Drivetrain berikut yang memiliki parameter wait : drive_for, turn_for, turn_to_heading, dan turn_to_rotation.
Usage:
drivetrain.is_done()
Parameter |
Keterangan |
|---|---|
Metode ini tidak memiliki parameter. |
is_moving#
is_moving mengembalikan nilai Boolean yang menunjukkan apakah robot sedang bergerak. Ini dapat digunakan untuk mengontrol pengaturan waktu perilaku lain berdasarkan pergerakan robot.
True— Robot itu bergerak.False— Robot tidak bergerak.
Usage:
drivetrain.is_moving()
Parameter |
Keterangan |
|---|---|
Metode ini tidak memiliki parameter. |