Sistem penggerak#

Perkenalan#

Robot VEX IQ (generasi ke-2) menggunakan sistem penggerak untuk bergerak dan berbelok. Sistem penggerak terdiri dari motor dan roda yang bekerja bersama untuk menggerakkan robot.

Sistem penggerak yang terkonfigurasi dapat menggunakan Sensor Gyro yang terhubung, Sensor Inersia bawaan Brain, atau tanpa sensor. Ketika sensor digunakan, sistem penggerak akan menggunakannya untuk membantu robot bergerak dan berbelok dengan tepat. Pada awal setiap proyek, sistem penggerak akan mengkalibrasi sensor secara otomatis. Jaga agar robot tetap diam selama sekitar 2 detik selama kalibrasi, sehingga robot dapat bergerak dan berbelok dengan benar.

Halaman ini menggunakan drivetrain sebagai contoh nama drivetrain. Ganti dengan nama yang Anda konfigurasi sendiri sesuai kebutuhan.

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. Robot akan berbelok ke arah terpendek untuk mencapai arah target.

  • turn_to_rotation — Memutar robot ke rotasi tertentu.

  • stop — Menghentikan pergerakan robot.

  • calibrate_drivetrain — Mengkalibrasi sensor yang dikonfigurasi dengan drivetrain.

Mutator — Sesuaikan pengaturan sistem penggerak.

  • set_drive_velocity — Memberi tahu robot seberapa cepat harus bergerak.

  • set_turn_velocity — Memberi tahu robot seberapa cepat harus berbelok.

  • set_stopping — Memberitahukan bagaimana robot akan berhenti bergerak: dengan mengerem, meluncur, atau berhenti.

  • set_timeout — Menentukan berapa lama robot akan mencoba menyelesaikan suatu gerakan.

  • set_heading — Mengubah arah robot saat ini ke arah yang baru.

  • set_rotation — Mengubah rotasi robot saat ini ke rotasi baru.

  • set_turn_threshold — Menunjukkan seberapa dekat robot harus mendekati sudut target sebelum putaran selesai.

  • set_turn_constant — Mengubah seberapa kuat robot mengoreksi belokannya.

Pengambil — Periksa status pergerakan.

  • heading — Mengembalikan arah haluan robot saat ini dari 0 hingga 359 derajat.

  • rotation — Mengembalikan rotasi robot saat ini.

  • velocity — Mengembalikan seberapa cepat robot bergerak.

  • current — Mengembalikan jumlah arus listrik yang digunakan oleh drivetrain.

  • is_moving — Mengembalikan nilai Boolean apakah robot sedang bergerak atau tidak.

  • is_done — Mengembalikan nilai Boolean apakah robot sudah selesai bergerak.

  • is_turning — Mengembalikan nilai Boolean apakah robot sedang berbelok.

  • power — Mengembalikan seberapa cepat sistem penggerak menggunakan energi.

  • torque — Mengembalikan berapa banyak torsi yang digunakan oleh drivetrain.

  • efficiency — Mengembalikan seberapa efisien sistem penggerak menggunakan daya.

  • temperature — Mengembalikan seberapa hangat drivetrain.

Konstruktor — Buat dan konfigurasikan sistem penggerak secara manual.

  • DriveTrain — Membuat drivetrain tanpa Sensor Gyro atau Sensor Inersia.

  • SmartDrive — Membuat sistem penggerak dengan Sensor Gyro atau Sensor Inersia.

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, velocity, units)

Parameter

Keterangan

direction

Arah pergerakan robot: FORWARD atau REVERSE.

velocity

Opsional. Kecepatan penggerak dari 0% hingga 100% saat menggunakan PERCENT, dari 0 hingga 120 rpm saat menggunakan RPM, atau dari 0 hingga 720 derajat per detik saat menggunakan VelocityUnits.DPSIni dapat berupa bilangan bulat integer (bilangan pecahanfloat). Jika tidak ada kecepatan yang diberikan, robot akan bergerak dengan kecepatan penggerak saat ini.

units

Opsional. Satuan kecepatan: PERCENT (standar), RPM (putaran per menit), atau VelocityUnits.DPS (derajat per detik).

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive slowly in reverse then stop
drivetrain.drive(REVERSE, 20, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

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, velocity, units_v, wait)

Parameter

Keterangan

direction

Arah pergerakan robot: FORWARD atau REVERSE.

distance

Jarak yang ditempuh robot. Ini bisa berupa bilangan integer , atau bilangan desimal (float).

units

Opsional. Satuan jarak: INCHES (standar), MM (milimeter), atau DistanceUnits.CM (sentimeter).

velocity

Opsional. Kecepatan penggerak dari 0% hingga 100% saat menggunakan PERCENT, dari 0 hingga 120 rpm saat menggunakan RPM, atau dari 0 hingga 720 derajat per detik saat menggunakan VelocityUnits.DPSIni dapat berupa bilangan bulat integer (bilangan pecahanfloat). Jika tidak ada kecepatan yang diberikan, robot akan bergerak dengan kecepatan penggerak saat ini.

units_v

Opsional. Satuan kecepatan: RPM (putaran per menit, default), PERCENT, atau VelocityUnits.DPS (derajat 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.

# Drive forward and backward
drivetrain.drive_for(FORWARD, 10)
drivetrain.drive_for(REVERSE, 10)

# Quickly drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM, 100, PERCENT)
drivetrain.drive_for(REVERSE, 200, MM, 100, PERCENT)

turn#

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

Usage:
drivetrain.turn(direction, velocity, units)

Parameter

Keterangan

direction

Arah putaran robot: LEFT atau RIGHT.

velocity

Opsional. Kecepatan untuk berbelok dari 0% hingga 100% saat menggunakan PERCENT, dari 0 hingga 120 rpm saat menggunakan RPM, atau dari 0 hingga 720 derajat per detik saat menggunakan VelocityUnits.DPSIni dapat berupa bilangan bulat integer (bilangan pecahanfloat). Jika tidak ada kecepatan yang diberikan, robot akan berbelok dengan kecepatan berbelok saat ini.

units

Opsional. Satuan kecepatan: RPM (putaran per menit, default), PERCENT, atau VelocityUnits.DPS (derajat per detik).

# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()

# Quickly turn right and left, then stop
drivetrain.turn(RIGHT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.turn(LEFT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

turn_for#

Perintah turn_for memutar robot ke kiri atau ke kanan sejumlah derajat atau putaran 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, velocity, units_v, wait)

Parameter

Keterangan

direction

Arah putaran robot: LEFT atau RIGHT.

angle

Jumlah putaran robot. Ini bisa berupa bilangan integer , atau bilangan desimal (float).

units

Opsional. Satuan putaran: DEGREES (standar) atau TURNSSatu putaran sama dengan 360 derajat.

velocity

Opsional. Kecepatan untuk berbelok dari 0% hingga 100% saat menggunakan PERCENT, dari 0 hingga 120 rpm saat menggunakan RPM, atau dari 0 hingga 720 derajat per detik saat menggunakan VelocityUnits.DPSIni dapat berupa bilangan bulat integer (bilangan pecahanfloat). Jika tidak ada kecepatan yang diberikan, robot akan berbelok dengan kecepatan berbelok saat ini.

units_v

Opsional. Satuan kecepatan: RPM (putaran per menit, default), PERCENT, atau VelocityUnits.DPS (derajat per detik).

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 the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)

# Quickly turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES, 100, PERCENT)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES, 100, PERCENT)

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, velocity, units_v, wait)

Parameter

Keterangan

angle

Arah yang harus dihadapi robot, dalam derajat. Ini bisa berupa bilangan integer ), bilangan pecahan (float) dari -359 hingga 359.

units

Opsional. Satuan arah: DEGREES (standar).

velocity

Opsional. Kecepatan untuk berbelok dari 0% hingga 100% saat menggunakan PERCENT, dari 0 hingga 120 rpm saat menggunakan RPM, atau dari 0 hingga 720 derajat per detik saat menggunakan VelocityUnits.DPSIni dapat berupa bilangan bulat integer (bilangan pecahanfloat). Jika tidak ada kecepatan yang diberikan, robot akan berbelok dengan kecepatan berbelok saat ini.

units_v

Opsional. Satuan kecepatan: PERCENT (standar), RPM (putaran per menit), atau VelocityUnits.DPS (derajat per detik).

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

# Turn twice slowly
drivetrain.turn_to_heading(90, DEGREES, 20, PERCENT)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES, 20, PERCENT)

turn_to_rotation#

turn_to_rotation memutar robot ke rotasi tertentu.

Rotasi adalah seberapa banyak robot telah berputar, diukur dalam derajat atau putaran. 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, velocity, units_v, wait)

Parameter

Keterangan

angle

Nilai rotasi, dalam derajat atau putaran, yang akan dilakukan robot. Ini bisa berupa bilangan integer , atau bilangan desimal (float).

units

Opsional. Satuan rotasi: DEGREES (standar) atau TURNSSatu putaran sama dengan 360 derajat.

velocity

Opsional. Kecepatan untuk berbelok dari 0% hingga 100% saat menggunakan PERCENT, dari 0 hingga 120 rpm saat menggunakan RPM, atau dari 0 hingga 720 derajat per detik saat menggunakan VelocityUnits.DPSIni dapat berupa bilangan bulat integer (bilangan pecahanfloat). Jika tidak ada kecepatan yang diberikan, robot akan berbelok dengan kecepatan berbelok saat ini.

units_v

Opsional. Satuan kecepatan: PERCENT (standar), RPM (putaran per menit), atau VelocityUnits.DPS (derajat per detik).

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 spin in a circle
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)

# Turn left then slowly spin in a
# circle clockwise
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES, 20, PERCENT)

stop#

stop menghentikan pergerakan robot.

Usage:
drivetrain.stop(mode)

Parameter

Keterangan

mode

Opsional. Cara robot berhenti: BRAKE (default), BRAKE, atau COAST

  • COAST — Berhenti seketika.
  • HOLD — Melambat hingga berhenti.
  • HOLD — Berhenti seketika dan mempertahankan posisi roda.

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive forward and coast to a stop
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop(COAST)

calibrate_drivetrain#

calibrate_drivetrain adalah fungsi bawaan yang mengkalibrasi Sensor Gyro atau Sensor Inersia yang dikonfigurasi dengan sistem penggerak.

Kalibrasi membantu sensor mengukur pergerakan dengan benar. Jaga agar robot tetap diam selama sekitar 2 detik selama kalibrasi. Jika robot bergerak selama kalibrasi, sensor mungkin tidak mengukur pergerakan dengan benar.

Proyek akan menunggu hingga kalibrasi selesai sebelum baris kode berikutnya dijalankan.

Catatan: Fungsi ini tidak dapat digunakan di dalam VS Code.

Usage:
calibrate_drivetrain()

Parameter

Keterangan

Fungsi ini tidak memiliki parameter.

Mutator#

set_drive_velocity#

Perintah 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

velocity

Kecepatan untuk menggerakkan dari 0% hingga 100% saat menggunakan PERCENT, dari 0 hingga 120 rpm saat menggunakan RPM, atau dari 0 hingga 720 derajat per detik saat menggunakan VelocityUnits.DPSIni bisa berupa bilangan bulat integer floatfloat.

units

Opsional. Satuan kecepatan: PERCENT (standar), RPM (putaran per menit), atau VelocityUnits.DPS (derajat per detik).

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

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

velocity

Kecepatan untuk berbelok dari 0% hingga 100% saat menggunakan PERCENT, dari 0 hingga 120 rpm saat menggunakan RPM, atau dari 0 hingga 720 derajat per detik saat menggunakan VelocityUnits.DPSIni bisa berupa bilangan bulat integer floatfloat.

units

Opsional. Satuan kecepatan: PERCENT (standar), RPM (putaran per menit), atau VelocityUnits.DPS (derajat per detik).

# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 360)

set_stopping#

set_stopping mengatur bagaimana robot akan berhenti bergerak: dengan mengerem, meluncur, atau berhenti.

Usage:
drivetrain.set_stopping(mode)

Parameter

Keterangan

mode

Cara robot berhenti:

  • BRAKE — Berhenti seketika.
  • COAST — Melambat hingga berhenti.
  • HOLD — Berhenti seketika dan mempertahankan posisi roda.

Jika metode ini tidak digunakan, robot akan menggunakan BRAKE saat berhenti.

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

value

Jumlah waktu yang dapat dicoba robot untuk menyelesaikan suatu gerakan. Ini bisa berupa bilangan bulat positif integerfloat).

units

Opsional. Satuan waktu: MSEC (milidetik, default) atau SECONDS.

# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)

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

heading

Nilai haluan, dalam derajat atau putaran, yang akan diatur untuk robot. Ini bisa berupa bilangan integer , atau bilangan desimal (float).

units

Opsional. Satuan arah: DEGREES (standar) atau TURNSSatu putaran sama dengan 360 derajat.

# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)

set_rotation#

Rotasi adalah seberapa banyak robot telah berputar, diukur dalam derajat atau putaran. 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

rotation

Nilai rotasi, dalam derajat atau putaran, yang akan diatur untuk robot. Ini bisa berupa bilangan integer , atau bilangan desimal (float).

units

Opsional. Satuan rotasi: DEGREES (standar) atau TURNSSatu putaran sama dengan 360 derajat.

# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)

set_turn_threshold#

set_turn_threshold mengatur seberapa dekat robot harus mendekati sudut target sebelum belokan selesai.

Ambang batas yang lebih kecil dapat membuat belokan lebih presisi, tetapi robot mungkin membutuhkan waktu lebih lama untuk menyelesaikan belokan. Ambang batas yang lebih besar dapat membuat belokan selesai lebih cepat, tetapi mungkin kurang presisi.

Usage:
drivetrain.set_turn_threshold(value)

Parameter

Keterangan

value

Ambang batas belok, dalam derajat. Ini bisa berupa bilangan integer ), atau bilangan desimal (float). Ambang batas belok default adalah 1 derajat.

# Set the turn threshold to 5 degrees
drivetrain.set_turn_threshold(5)

set_turn_constant#

set_turn_constant mengubah seberapa kuat robot mengoreksi belokannya.

Nilai yang lebih tinggi membuat robot mengoreksi belokan dengan lebih kuat. Nilai yang lebih rendah membuat robot mengoreksi belokan dengan lebih lembut. Nilai default adalah 1,0.

Usage:
drivetrain.set_turn_constant(value)

Parameter

Keterangan

value

Konstanta putaran. Ini bisa berupa angka desimal (float) dari 0,1 hingga 4,0. Nilai defaultnya adalah 1,0.

# Increase the turn constant to 2.0
drivetrain.set_turn_constant(2.0)

Pencari#

heading#

Heading adalah arah yang dihadapi robot, diukur dalam derajat. Perintah heading mengembalikan heading robot saat ini dari 0 hingga 359 derajat.

Arah awal pergerakan robot adalah 0 derajat.

Usage:
drivetrain.heading(units)

Parameter

Keterangan

units

Opsional. Satuan untuk kembali ke arah semula: DEGREES (standar) atau TURNSSatu putaran sama dengan 360 derajat.

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading())

rotation#

Rotasi adalah seberapa banyak robot telah berputar, diukur dalam derajat atau putaran. 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

units

Opsional. Satuan untuk mengembalikan rotasi: DEGREES (default) atau TURNSSatu putaran sama dengan 360 derajat.

# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation())

velocity#

velocity mengembalikan kecepatan gerak robot.

Kecepatan dapat dikembalikan dalam persentase dari -100% hingga 100%, dalam RPM dari -127 rpm hingga 127 rpm, atau dalam VelocityUnits.DPSNilai positif berarti robot bergerak maju. Nilai negatif berarti robot bergerak mundur.

Usage:
drivetrain.velocity(units)

Parameter

Keterangan

units

Opsional. Satuan kecepatan yang akan dikembalikan: PERCENT (standar), RPM (putaran per menit), atau VelocityUnits.DPS (derajat per detik).

current#

current mengembalikan jumlah arus listrik yang digunakan oleh sistem penggerak, diukur dalam ampere. Arus adalah jumlah listrik yang mengalir melalui sistem penggerak.

Nilai arus yang lebih tinggi berarti sistem penggerak menggunakan lebih banyak arus listrik. Hal ini dapat terjadi ketika robot mendorong suatu objek atau mencoba bergerak saat terjebak.

Ini dapat digunakan untuk memeriksa apakah sistem penggerak mengalami kesulitan selama pergerakan. Jika arus tetap tinggi, sistem penggerak mungkin menjadi lebih panas atau menggunakan daya kurang efisien.

Usage:
drivetrain.current(units)

Parameter

Keterangan

units

Opsional. Satuan untuk mengembalikan arus: CurrentUnits.AMP (ampere, default).

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.

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

Parameter

Keterangan

Metode ini tidak memiliki parameter.

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

is_turning 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 Drivetrain berikut yang memiliki parameter wait : turn_for, turn_to_heading, dan turn_to_rotation.

Usage:
drivetrain.is_turning()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

power#

power mengembalikan seberapa besar daya yang digunakan oleh sistem penggerak, diukur dalam watt. Daya menunjukkan seberapa cepat sistem penggerak menggunakan energi.

Nilai daya yang lebih tinggi berarti sistem penggerak menggunakan energi lebih cepat. Hal ini dapat terjadi ketika robot mendorong suatu objek atau mencoba bergerak saat terjebak.

Ini dapat digunakan untuk membandingkan pergerakan atau memeriksa apakah sistem penggerak mengalami masalah. Jika daya tetap tinggi, sistem penggerak mungkin menjadi lebih panas atau menggunakan energi kurang efisien.

Usage:
drivetrain.power()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

torque#

Torsi menunjukkan seberapa kuat sistem penggerak dapat mendorong atau menarik saat roda berputar.

torque mengembalikan nilai torsi yang digunakan oleh sistem penggerak, diukur dalam Newton-meter (Nm) atau inci-pon (InLb).

Nilai torsi yang lebih tinggi berarti sistem penggerak mendorong atau menarik lebih keras. Hal ini dapat terjadi ketika robot mendorong suatu objek atau mencoba bergerak saat terjebak.

Ini dapat digunakan untuk memeriksa apakah sistem penggerak (drivetrain) mengalami masalah atau untuk membandingkan seberapa besar dorongan yang dibutuhkan oleh gerakan yang berbeda.

Usage:
drivetrain.torque(units)

Parameter

Keterangan

units

Opsional. Satuan untuk mengembalikan torsi: TorqueUnits.NM (newton meter, default) atau TorqueUnits.INLB (inci pon).

efficiency#

efficiency mengembalikan seberapa efisien sistem penggerak menggunakan daya, dalam persentase dari 0% hingga 100%.

Efisiensi menunjukkan seberapa banyak daya sistem penggerak yang digunakan untuk pergerakan. Nilai efisiensi yang lebih tinggi berarti lebih banyak daya sistem penggerak yang digunakan untuk bergerak. Nilai efisiensi yang lebih rendah dapat terjadi ketika sistem penggerak bekerja keras tetapi tidak banyak bergerak, seperti ketika robot terjebak atau mendorong suatu objek.

Ini dapat digunakan untuk membandingkan pergerakan atau memeriksa apakah sistem penggerak membuang daya alih-alih menggunakannya untuk pergerakan.

Usage:
drivetrain.efficiency()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

temperature#

temperature mengembalikan suhu rata-rata sistem penggerak dalam satuan suhu yang dipilih.

Suhu menunjukkan seberapa panas motor penggerak. Suhu yang lebih tinggi berarti motor semakin panas saat bekerja. Motor harus tetap berada di bawah 55°C agar tetap bekerja dengan performa maksimal.

Jika motor terlalu panas, motor akan menurunkan arus maksimumnya untuk melindungi diri. Pada suhu 70°C, motor akan berhenti beroperasi hingga mendingin.

Ini dapat digunakan untuk memeriksa apakah sistem penggerak menjadi terlalu panas selama gerakan berulang, penggunaan jangka panjang, atau saat menekan suatu objek.

Usage:
drivetrain.temperature(units)

Parameter

Keterangan

units

Opsional. Satuan suhu yang akan dikembalikan: TemperatureUnits.CELSIUS (default) atau TemperatureUnits.FAHRENHEIT.

Konstruktor#

Constructors are used to create DriveTrain and SmartDrive objects in code. This is useful when configuring a drivetrain without using the Devices window.

Setidaknya dua objek Motor atau MotorGroup harus dibuat sebelum membuat drivetrain.

DriveTrain#

DriveTrain menciptakan drivetrain tanpa Sensor Inersia atau Sensor Giroskop.

Usage:
DriveTrain(lm, rm, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

Parameter

Keterangan

lm

The left motor or motor group.

rm

The right motor or motor group.

wheelTravel

Opsional. Keliling roda penggerak. Nilai default adalah 300 milimeter.

trackWidth

Opsional. Lebar antara roda kiri dan kanan. Standarnya adalah 320 milimeter.

wheelBase

Opsional. Jarak antara roda depan dan belakang. Nilai standarnya adalah 320 milimeter.

units

Opsional. Satuan untuk wheelTravel, trackWidth, dan wheelBase: MM (standar), INCHES, atau DistanceUnits.CM (sentimeter).

externalGearRatio

Opsional. Rasio gigi yang digunakan untuk menyesuaikan jarak penggerak jika gigi digunakan. Ini bisa berupa bilangan integer , atau bilangan desimal (float). Nilai default adalah 1,0.

# Create left and right drive motor objects
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT2, 1.0, True)

'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

# Create two motor group objects for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT3, 1.0, True)
right_motor_b = Motor(Ports.PORT4, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

SmartDrive#

SmartDrive menciptakan sistem penggerak yang dikonfigurasi dengan Sensor Inersia atau Sensor Giroskop.

Usage:
SmartDrive(lm, rm, g, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

Parameter

Keterangan

lm

The left motor or motor group.

rm

The right motor or motor group.

g

The Inertial Sensor or Gyro Sensor used by the drivetrain.

wheelTravel

Opsional. Keliling roda penggerak. Nilai default adalah 300 milimeter.

trackWidth

Opsional. Lebar antara roda kiri dan kanan. Standarnya adalah 320 milimeter.

wheelBase

Opsional. Jarak antara roda depan dan belakang. Nilai standarnya adalah 320 milimeter.

units

Opsional. Satuan untuk wheelTravel, trackWidth, dan wheelBase: MM (milimeter, default) atau INCHES.

externalGearRatio

Opsional. Rasio gigi yang digunakan untuk menyesuaikan jarak penggerak jika gigi digunakan. Ini bisa berupa bilangan integer , atau bilangan desimal (float). Nilai default adalah 1,0.

# Create the Inertial Sensor
brain_inertial = Inertial()

# Make left and right drive motors
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)

# Create a SmartDrive object with wheelTravel 200
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

Jika membuat sistem penggerak cerdas dengan banyak motor, Anda perlu membuat motor-motor tersebut secara terpisah sebelum mengelompokkannya menjadi satu grup motor.

# Create the Inertial Sensor
brain_inertial = Inertial()

# Create two motor groups for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT5, 1.0, True)
right_motor_b = Motor(Ports.PORT6, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

# Create a SmartDrive object with wheelTravel 200 mm
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)