Inersia#

Perkenalan#

Sensor Inersia mengukur bagaimana robot bergerak dan berbelok.

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.

Berikut adalah daftar 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.

  • gyro_rate — Mengembalikan seberapa cepat sensor berputar pada sumbu yang dipilih.

  • orientation — Mengembalikan sudut roll, pitch, atau yaw dari Sensor Inersia.

  • 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.

  • reset_heading — Mengatur ulang arah sensor inersia saat ini ke 0 derajat.

  • reset_rotation — Mengatur ulang rotasi Sensor Inersia saat ini ke 0 derajat.

  • is_calibrating — Mengembalikan apakah Sensor Inersia sedang melakukan kalibrasi.

  • changed — Mendaftarkan fungsi yang akan dijalankan ketika nilai Sensor Inersia berubah.

  • installed — Memeriksa apakah Sensor Inersia terpasang.

Gerakan — Mengukur percepatan, tumbukan, dan perilaku arah belok.

  • acceleration — Mengembalikan seberapa cepat sensor mempercepat atau memperlambat pada sumbu yang dipilih.

  • collision — Mendaftarkan fungsi yang akan dijalankan ketika Sensor Inersia mendeteksi tabrakan.

  • set_turn_type — Menentukan arah belok mana yang mengembalikan nilai haluan positif.

  • get_turn_type — Mengembalikan arah belok mana yang menghasilkan nilai haluan positif.

Konstruktor

Orientasi#

heading#

Heading adalah arah yang dihadapi sensor, diukur dalam derajat dari 0 hingga 359,99. heading mengembalikan heading sensor saat ini sebagai nilai float.

Arah awal adalah 0 derajat. Jika sensor berputar melewati 359,99 derajat, arah akan kembali ke 0 derajat.

Usage:
inertial_1.heading(units)

Parameter

Keterangan

units

Opsional. Satuan arah: DEGREES (standar) atau TURNS

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.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. rotation mengembalikan rotasi Sensor Inersia saat ini sebagai nilai float.

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:
inertial_1.rotation(units)

Parameter

Keterangan

units

Opsional. Satuan rotasi: DEGREES (standar) atau TURNS

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

gyro_rate#

Kecepatan giroskop adalah seberapa cepat Sensor Inersia berputar. gyro_rate mengembalikan kecepatan rotasi Sensor Inersia saat ini pada sumbu yang dipilih sebagai nilai float.

Nilainya bisa positif atau negatif tergantung pada arah putaran sensor pada sumbu tersebut.

Usage:
inertial_1.gyro_rate(axis, units)

Parameter

Keterangan

axis

Sumbu untuk mengembalikan laju giroskop:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

units

Opsional. Satuan kecepatan giroskop:

  • VelocityUnits.DPS (default)
  • VelocityUnits.RPM
  • VelocityUnits.PERCENT

# Display the rate of change of
# rotation while turning
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(inertial_1.gyro_rate(AxisType.ZAXIS, VelocityUnits.DPS))
drivetrain.stop()

orientation#

Orientasi adalah sudut Sensor Inersia saat ini pada sumbu putar yang dipilih. Orientasi orientation mengembalikan roll, pitch, atau yaw dari Sensor Inersia, dari -180,00 hingga 180,00 derajat, sebagai nilai mengambang.

Roll, pitch, dan yaw menggambarkan berbagai cara sensor dapat miring atau berputar.

Usage:
inertial_1.orientation(type, units)

Parameter

Keterangan

type

Sudut orientasi yang akan dikembalikan:

  • AxisType.PITCH
  • AxisType.ROLL
  • AxisType.YAW

units

Opsional. Unit orientasi:

  • DEGREES (default)
  • RotationUnits.TURNS

# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
    brain.screen.clear_screen()
    brain.screen.print(inertial_1.orientation(AxisType.ROLL, DEGREES))
    brain.screen.next_row()
    brain.screen.print(inertial_1.orientation(AxisType.PITCH, DEGREES))
    brain.screen.next_row()
    brain.screen.print(inertial_1.orientation(AxisType.YAW, DEGREES))
    brain.screen.next_row()
    brain.screen.set_cursor(1, 1)
    wait(0.1, SECONDS)

calibrate#

calibrate mengkalibrasi Sensor Inersia.

Kalibrasi membantu sensor mengukur putaran dengan benar. Jaga agar sensor tetap diam selama kalibrasi. Jika sensor bergerak selama kalibrasi, nilai arah, rotasi, laju giroskop, dan orientasi mungkin tidak terukur dengan benar.

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

Usage:
inertial_1.calibrate()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# Start calibration.
inertial_1.calibrate()
# Print that the Inertial Sensor is calibrating while
# waiting for it to finish calibrating.
while inertial_1.is_calibrating():
    brain.screen.clear()
    brain.screen.print("Inertial Sensor Calibrating")
    wait(50, MSEC)

set_heading#

Heading adalah arah yang dihadapi sensor, diukur dalam derajat dari 0 hingga 359,99. Perintah 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:
inertial_1.set_heading(value, units)

Parameter

Keterangan

value

Nilai arah, dalam derajat, yang akan diatur untuk sensor. Nilai ini dapat berkisar dari 0 hingga 359,99.

units

Opsional. Satuan arah: DEGREES (standar) atau TURNS

# Turn the robot around
inertial_1.set_heading(180, DEGREES)
drivetrain.turn_to_heading(0)

set_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 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:
inertial_1.set_rotation(value, units)

Parameter

Keterangan

value

Nilai rotasi, dalam derajat, yang akan diatur untuk sensor. Ini bisa berupa bilangan bulat atau desimal (float).

units

Opsional. Satuan rotasi: DEGREES (standar) atau TURNS

# Turn the robot around
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)

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:
inertial_1.reset_heading()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

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:
inertial_1.reset_rotation()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

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:
inertial_1.is_calibrating()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

changed#

changed mendaftarkan sebuah fungsi yang akan dipanggil setiap kali nilai Sensor Inersia berubah.

Usage:
inertial_1.changed(callback, arg)

Parameter

Keterangan

callback

Sebuah fungsi yang telah didefinisikan sebelumnya yang akan dieksekusi ketika nilai Sensor Inersia berubah.

arg

Opsional. Sebuah tuple yang berisi argumen untuk diteruskan ke fungsi callback. Lihat Menggunakan Fungsi dengan Parameter untuk informasi selengkapnya.

def my_function():
  brain.screen.print("Value changed!!")

# Call my_function whenever inertial_1's value changes
inertial_1.changed(my_function)

installed#

installed memeriksa apakah Sensor Inersia terpasang.

  • True — Sensor Inersia terpasang.

  • False — Sensor Inersia tidak terpasang.

Usage:
inertial_1.installed()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

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 sumbu adalah AxisType.XAXIS, AxisType.YAXIS, dan AxisType.ZAXIS.

Usage:
inertial_1.acceleration(type)

Parameter

Keterangan

type

Sumbu yang digunakan untuk mengukur percepatan:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

# Return the acceleration for the Z axis of the Inertial Sensor
zaccel = inertial_1.acceleration(AxisType.ZAXIS)

collision#

collision mendaftarkan sebuah fungsi yang akan dipanggil setiap kali Sensor Inersia mendeteksi benturan atau tabrakan mendadak.

Usage:
inertial_1.collision(callback, arg)

Parameter

Keterangan

callback

Sebuah fungsi yang telah didefinisikan sebelumnya yang akan dieksekusi ketika terjadi tabrakan.

arg

Opsional. Sebuah tuple yang berisi argumen untuk diteruskan ke fungsi callback. Lihat Menggunakan Fungsi dengan Parameter untuk informasi selengkapnya.

def my_function():
  brain.screen.print("Collision!")

# Call my_function whenever a collision is detected
inertial_1.collision(my_function)

set_turn_type#

set_turn_type menentukan arah belok mana yang mengembalikan nilai haluan positif.

Usage:
inertial_1.set_turn_type(turntype)

Parameter

Keterangan

turntype

Jenis putaran yang akan diatur:

  • LEFT
  • RIGHT

get_turn_type#

get_turn_type mengembalikan arah belok mana yang mengembalikan nilai haluan positif.

  • LEFT — Belok kiri menghasilkan nilai arah positif.

  • RIGHT — Belok kanan menghasilkan nilai arah positif.

Usage:
inertial_1.get_turn_type()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

Konstruktor#

Inertial#

Inertial menciptakan Sensor Inersia.

Usage:
Inertial(smartport)

Parameter

Keterangan

smartport

Port Pintar yang terhubung ke Sensor Inersia, ditulis sebagai Ports.PORTx, di mana x adalah nomor port.

# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)