Inersia#
Perkenalan#
IQ (generasi ke-2) Brain menyertakan Sensor Inersia bawaan. Sensor ini mengukur bagaimana Otak bergerak dan berputar.
Sensor Inersia menggunakan dua bagian untuk melakukan hal ini. Giroskop mengukur putaran, seperti arah, rotasi, laju giroskop, dan orientasi. Akselerometer mengukur perubahan gerakan, seperti percepatan atau perlambatan sepanjang sumbu x, y, dan z.
Halaman ini menggunakan brain_inertial sebagai contoh nama Sensor Inersia. Ganti dengan nama yang Anda konfigurasi sendiri sesuai kebutuhan.
Berikut adalah daftar semua metode yang tersedia:
Orientasi — Membaca dan mengontrol arah, rotasi, dan kalibrasi sensor.
heading— Mengembalikan arah yang dihadapi sensor, dari 0 hingga 359,99 derajat.rotation— Mengembalikan seberapa jauh sensor telah berputar.calibrate— Mengkalibrasi Sensor Inersia.set_heading— Mengatur arah saat ini dari Sensor Inersia ke nilai arah baru.set_rotation— Mengatur rotasi Sensor Inersia saat ini ke nilai rotasi baru.is_calibrating— Mengembalikan apakah Sensor Inersia sedang melakukan kalibrasi.reset_heading— Mengatur ulang arah sensor inersia saat ini ke 0 derajat.reset_rotation— Mengatur ulang rotasi Sensor Inersia saat ini ke 0 derajat.changed— Mendaftarkan fungsi yang akan dijalankan ketika arah Sensor Inersia berubah.
Gerakan — Mengukur percepatan, kecepatan rotasi, dan kemiringan.
acceleration— Mengembalikan seberapa cepat sensor mempercepat atau memperlambat pada sumbu yang dipilih.gyro_rate— Mengembalikan seberapa cepat sensor berputar pada sumbu yang dipilih.orientation— Mengembalikan sudut roll, pitch, atau yaw dari Sensor Inersia.
Konstruktor — Menginisialisasi dan mengkonfigurasi Sensor Inersia secara manual.
Inertial— Membuat Sensor Inersia.
Orientasi#
heading#
Heading adalah arah yang dihadapi sensor, diukur dalam derajat dari 0 hingga 359,99. heading mengembalikan heading sensor saat ini.
Arah awal adalah 0 derajat. Jika sensor berputar melewati 359,99 derajat, arah akan kembali ke 0 derajat.
Usage:
brain_inertial.heading(units)
Parameter |
Keterangan |
|---|---|
|
Opsional. Satuan arah: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
Rotasi adalah seberapa besar sensor telah berputar, diukur dalam derajat. Tidak seperti arah, rotasi dapat meningkat melebihi 359,99 derajat atau menurun di bawah 0 derajat. Pada awal proyek, nilai rotasi diatur ke 0 derajat. Perintah rotation mengembalikan rotasi Sensor Inersia saat ini.
Memutar ke kanan akan meningkatkan rotasi, dan memutar ke kiri akan mengurangi rotasi. Misalnya, melakukan dua putaran penuh ke kanan akan menghasilkan rotasi sebesar 720 derajat. Memutar satu putaran penuh ke kiri dari 0 derajat akan menghasilkan rotasi sebesar -360 derajat.
Usage:
brain_inertial.rotation(units)
Parameter |
Keterangan |
|---|---|
|
Opsional. Satuan rotasi: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate mengkalibrasi Sensor Inersia. Semua baris selanjutnya akan menunggu kalibrasi selesai sebelum dijalankan. Kalibrasi membantu sensor mengukur putaran dengan benar dengan mengukur dan mengkompensasi noise dan drift sensor selama periode tertentu. Selama waktu ini, Brain harus tetap diam sepenuhnya di permukaan yang stabil. Pergerakan selama kalibrasi dapat menghasilkan hasil yang tidak akurat.
VEX Brain secara otomatis mencoba mengkalibrasi Sensor Inersia bawaan di awal setiap proyek. Namun, jika robot sedang dibawa atau dipindahkan selama proyek dimulai, sensor mungkin gagal dikalibrasi dengan benar atau menghasilkan kalibrasi yang salah.
Usage:
brain_inertial.calibrate()
Parameter |
Keterangan |
|---|---|
Metode ini tidak memiliki parameter. |
# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
set_heading#
Heading adalah arah yang dihadapi sensor, diukur dalam derajat dari 0 hingga 359,99. set_heading() mengubah heading sensor inersia saat ini ke nilai heading baru.
Sebagai contoh, jika sensor telah berputar menghadap ke kanan, mengatur arah ke 0 derajat akan menjadikan posisi menghadap ke kanan tersebut sebagai 0 derajat yang baru. Kemudian sensor dapat melacak arah lain berdasarkan arah baru tersebut.
Usage:
brain_inertial.set_heading(value, units)
Parameter |
Keterangan |
|---|---|
|
Nilai arah, dalam derajat, yang akan diatur untuk sensor. Nilai ini dapat berkisar dari 0 hingga 359,99. |
|
Opsional. Satuan arah: |
# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)
set_rotation#
Rotasi adalah seberapa banyak sensor telah berputar, diukur dalam derajat. Tidak seperti arah, rotasi dapat meningkat melebihi 359,99 derajat atau menurun di bawah 0 derajat. Pada awal proyek, nilai rotasi diatur ke 0 derajat. Perintah set_rotation() mengubah rotasi sensor inersia saat ini ke nilai baru.
Sebagai contoh, jika sensor telah berputar dua kali 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 sensor dapat melacak rotasi berdasarkan nilai baru tersebut.
Usage:
brain_inertial.set_rotation(value, units)
Parameter |
Keterangan |
|---|---|
|
Nilai rotasi, dalam derajat, yang akan diatur untuk sensor. Ini bisa berupa bilangan bulat atau desimal (float). |
|
Opsional. Satuan rotasi: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
is_calibrating#
is_calibrating mengembalikan nilai boolean yang menunjukkan apakah Sensor Inersia sedang melakukan kalibrasi.
True— Sensor Inersia sedang melakukan kalibrasi.False— Sensor Inersia tidak sedang dikalibrasi.
Usage:
brain_inertial.is_calibrating()
Parameter |
Keterangan |
|---|---|
Metode ini tidak memiliki parameter. |
# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
reset_heading#
reset_heading mengatur ulang arah sensor inersia saat ini ke 0 derajat.
Setelah metode ini digunakan, arah arus sensor menjadi arah 0 derajat yang baru.
Usage:
brain_inertial.reset_heading()
Parameter |
Keterangan |
|---|---|
Metode ini tidak memiliki parameter. |
# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)
reset_rotation#
reset_rotation mengatur ulang rotasi Sensor Inersia saat ini ke 0 derajat.
Setelah metode ini digunakan, sensor akan melacak putaran selanjutnya dari nilai rotasi 0 derajat yang baru.
Usage:
brain_inertial.reset_rotation()
Parameter |
Keterangan |
|---|---|
Metode ini tidak memiliki parameter. |
# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)
changed#
changed mendaftarkan fungsi yang akan dipanggil ketika arah Sensor Inersia berubah.
Usage:
brain_inertial.changed(callback, arg)
Parameter |
Keterangan |
|---|---|
|
Sebuah fungsi yang dijalankan ketika arah sensor inersia berubah. |
|
Opsional. Sebuah tuple argumen yang akan diteruskan ke fungsi callback. |
def heading_changed():
brain.screen.set_cursor(1, 1)
brain.screen.clear_screen()
brain.screen.print("my heading ")
brain.screen.next_row()
brain.screen.print("has changed!")
wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)
Gerakan#
acceleration#
Akselerasi adalah seberapa cepat sensor mempercepat atau memperlambat. acceleration mengembalikan akselerasi Sensor Inersia pada sumbu yang dipilih, dari -4,0 G hingga 4,0 G, sebagai nilai float.
G adalah satuan yang digunakan untuk mengukur percepatan. 1 G kira-kira sama dengan percepatan yang Anda rasakan akibat gravitasi saat duduk diam.
Nilainya bisa positif atau negatif tergantung pada arah percepatan pada sumbu yang dipilih. Opsi sumbunya adalah XAXIS, YAXIS, dan ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Parameter |
Keterangan |
|---|---|
sumbu |
Sumbu yang digunakan untuk mengukur percepatan:
|
# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
gyro_rate#
Kecepatan giroskop adalah seberapa cepat Sensor Inersia berputar. gyro_rate mengembalikan kecepatan rotasi Sensor Inersia saat ini pada sumbu yang dipilih.
Nilainya bisa positif atau negatif tergantung pada arah putaran sensor pada sumbu tersebut.
Usage:
brain_inertial.gyro_rate(axis, units)
Parameter |
Keterangan |
|---|---|
|
Sumbu untuk mengembalikan laju giroskop:
|
|
Opsional. Satuan kecepatan giroskop:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
Orientasi adalah sudut Sensor Inersia saat ini pada sumbu putar yang dipilih. Orientasi orientation mengembalikan nilai roll, pitch, atau yaw dari Sensor Inersia.
Roll, pitch, dan yaw menggambarkan berbagai cara sensor dapat miring atau berputar.
Usage:
brain_inertial.orientation(axis, units)
Parameter |
Keterangan |
|---|---|
|
Sudut orientasi untuk kembali:
|
|
Opsional. Unit orientasi: |
# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
brain.screen.clear_screen()
brain.screen.print(brain_inertial.orientation(OrientationType.ROLL))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
Konstruktor#
Konstruktor digunakan untuk membuat objek Inertial secara manual, misalnya saat mengkonfigurasi Sensor Inersia di luar VEXcode.
Inertial#
Inertial menciptakan Sensor Inersia.
Usage:
Inertial(smartport)
Parameter |
Keterangan |
|---|---|
|
Opsional. Jika menggunakan Sensor Inersia bawaan IQ (generasi ke-2) Brain’s, Port Pintar tidak diperlukan. Jika menghubungkan Sensor Inersia eksternal, tentukan Port Pintar tempat Sensor Inersia terhubung, ditulis sebagai |
# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)


