Sensor Inersia#
Perkenalan#
Kelas inertial digunakan untuk mengontrol dan mengakses data dari Sensor Inersia V5 yang terhubung ke Smart Port.
Sensor Inersia V5 mengukur bagaimana robot bergerak dan berbelok. Giroskop mengukur putaran, seperti arah, rotasi, laju giroskop, dan orientasi. Akselerometer mengukur perubahan gerakan, seperti percepatan atau perlambatan di sepanjang sumbu x, y, dan z.
Konstruktor Kelas#
inertial(
int32_t index,
turnType dir = turnType::right );
Destruktor Kelas#
Menghancurkan objek inertial dan melepaskan sumber daya terkait.
~inertial();
Parameter#
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
Port Pintar yang terhubung ke Sensor Inersia, ditulis sebagai |
|
|
Opsional. Arah yang menghasilkan nilai positif:
|
Contoh#
// Create an inertial instance for the V5 Inertial Sensor
inertial myInertial = inertial(
PORT1, // Smart Port 1
right); // dir
Fungsi Keanggotaan#
Kelas inertial mencakup fungsi anggota berikut:
heading— Mengembalikan arah yang dihadapi sensor.rotation— Mengembalikan seberapa jauh sensor telah berputar.setHeading— Mengatur arah sensor saat ini ke nilai arah baru.setRotation— Mengatur rotasi sensor saat ini ke nilai rotasi baru.calibrate— Mengkalibrasi Sensor Inersia.resetHeading— Mengatur ulang arah sensor saat ini ke 0 derajat.resetRotation— Mengatur ulang rotasi sensor saat ini ke 0 derajat.isCalibrating— Mengembalikan apakah Sensor Inersia sedang melakukan kalibrasi.changed— Mendaftarkan fungsi callback yang dijalankan saat judul berubah.installed— Mengembalikan apakah Sensor Inersia terpasang.acceleration— Mengembalikan seberapa cepat sensor mempercepat atau memperlambat pada sumbu yang dipilih.gyroRate— Mengembalikan seberapa cepat sensor berputar pada sumbu yang dipilih.orientation— Mengembalikan sudut roll, pitch, atau yaw dari Sensor Inersia.collision— Mendaftarkan fungsi callback yang dijalankan ketika terjadi tabrakan.setTurnType— Menentukan arah putaran mana yang mengembalikan nilai positif.getTurnType— Mengembalikan arah belok yang menghasilkan nilai positif.
Sebelum memanggil fungsi anggota inertial apa pun, sebuah instance inertial harus dibuat, seperti yang ditunjukkan di bawah ini:
/* This constructor is required when using VS Code.
Inertial Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create an inertial instance for the V5 Inertial Sensor connected to Port 1.
inertial myInertial = inertial(PORT1);
heading#
Heading adalah arah yang dihadapi sensor, diukur dalam derajat dari 0 hingga 359,99. Fungsi ini mengembalikan heading sensor saat ini.
Arah awal adalah 0 derajat. Jika sensor berputar melewati 359,99 derajat, arah akan kembali ke 0 derajat.
Available Functionsdouble heading( rotationUnits units = degrees );
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
The heading unit:
|
Mengembalikan nilai double yang mewakili arah haluan sensor saat ini dalam satuan yang ditentukan.
Nilai arah dibatasi antara 0 dan 359,99 derajat. Gunakan
rotationuntuk mengakses nilai rotasi kontinu.
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));
rotation#
Mengembalikan rotasi sensor inersia saat ini.
Rotasi adalah seberapa besar sensor telah berputar. Tidak seperti arah, rotasi dapat meningkat melebihi 359,99 derajat atau menurun di bawah 0 derajat. Misalnya, melakukan dua putaran penuh ke kanan menghasilkan rotasi 720 derajat. Memutar satu putaran penuh ke kiri dari 0 derajat menghasilkan rotasi -360 derajat.
Available Functionsdouble rotation( rotationUnits units = degrees );
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
The rotation unit:
|
Mengembalikan nilai double yang mewakili rotasi saat ini dalam satuan yang ditentukan.
Nilai rotasi bersifat kontinu dan tidak terbungkus antara 0 dan 359,99 derajat. Gunakan
headinguntuk mengakses nilai heading yang terbungkus.
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));
setHeading#
Arah haluan adalah arah yang dihadapi sensor, diukur dalam derajat dari 0 hingga 359,99. Fungsi ini mengubah arah haluan Sensor Inersia saat ini ke nilai arah haluan yang 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.
Available Functionsvoid setHeading( double value, rotationUnits units );
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
Nilai arah, dalam derajat, yang akan diatur untuk sensor. Nilai ini dapat berkisar dari 0 hingga 359,99. |
|
|
The heading unit:
|
Fungsi ini tidak mengembalikan nilai.
Examples// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);
setRotation#
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. Fungsi ini 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.
Available Functionsvoid setRotation( double value, rotationUnits units );
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
Nilai rotasi, dalam derajat, yang akan diatur untuk sensor. Ini bisa berupa bilangan bulat atau desimal. |
|
|
The rotation unit:
|
Fungsi ini tidak mengembalikan nilai.
Examples// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);
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.
Available Functionsvoid calibrate( );
Fungsi ini tidak menerima parameter apa pun.
Return ValuesFungsi ini tidak mengembalikan nilai.
NotesSensor harus tetap diam selama proses kalibrasi berlangsung.
Gunakan
isCalibratinguntuk menentukan kapan kalibrasi selesai.
resetHeading#
Mengatur ulang arah sensor inersia saat ini ke 0 derajat.
Setelah fungsi ini digunakan, arah sensor saat ini menjadi arah 0 derajat yang baru.
Available Functionsvoid resetHeading();
Fungsi ini tidak memerlukan parameter apa pun.
Return ValuesFungsi ini tidak mengembalikan nilai.
resetRotation#
Mengatur ulang rotasi sensor inersia saat ini ke 0 derajat.
Setelah fungsi ini digunakan, sensor akan melacak putaran selanjutnya dari nilai rotasi 0 derajat yang baru.
Available Functionsvoid resetRotation();
Fungsi ini tidak memerlukan parameter apa pun.
Return ValuesFungsi ini tidak mengembalikan nilai.
isCalibrating#
Mengembalikan nilai yang menunjukkan apakah Sensor Inersia sedang dalam proses kalibrasi.
Available Functionsbool isCalibrating();
Fungsi ini tidak memerlukan parameter apa pun.
Return ValuesMengembalikan nilai Boolean yang menunjukkan apakah Sensor Inersia sedang melakukan kalibrasi:
-
true— The sensor is currently calibrating. -
false— The sensor is not currently calibrating.
changed#
Mendaftarkan fungsi callback yang akan dijalankan ketika nilai heading dari Sensor Inersia berubah.
Available Functionsvoid changed( void (* callback)(void) );
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
Pointer ke sebuah fungsi yang akan dipanggil ketika nilai heading berubah. Fungsi tersebut tidak boleh menerima parameter dan harus mengembalikan |
Fungsi ini tidak mengembalikan nilai.
ExamplesDefinisikan fungsi callback (di luar
int main())// Display the heading when the Inertial Sensor's heading value changes. void onHeadingChanged() { Brain.Screen.clearScreen(); Brain.Screen.setCursor(1, 1); Brain.Screen.print("Heading: %.2f", myInertial.heading()); }Daftarkan fungsi callback di dalam
int main()int main() { // Run onHeadingChanged when the Inertial Sensor's heading value changes. myInertial.changed(onHeadingChanged); }
installed#
Mengembalikan nilai yang menunjukkan apakah Sensor Inersia terpasang dan terhubung.
Available Functionsbool installed();
Fungsi ini tidak memerlukan parameter apa pun.
Return ValuesMengembalikan nilai Boolean yang menunjukkan apakah Sensor Inersia terpasang dan terhubung:
-
true— The sensor is connected and responding. -
false— The sensor is not connected or not detected.
acceleration#
Akselerasi adalah seberapa cepat sensor mempercepat atau memperlambat. Fungsi ini mengembalikan akselerasi Sensor Inersia pada sumbu yang dipilih, dari -4,0 G hingga 4,0 G.
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.
double acceleration( axisType axis );
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
Sumbu untuk mengukur percepatan:
|
Mengembalikan nilai double yang mewakili percepatan sepanjang sumbu yang ditentukan dalam G (satuan gravitasi).
Nilai percepatan dilaporkan dalam satuan
G.
gyroRate#
Kecepatan giroskop adalah seberapa cepat Sensor Inersia berputar. Fungsi ini mengembalikan kecepatan rotasi Sensor Inersia saat ini pada sumbu yang dipilih.
Nilainya bisa positif atau negatif tergantung pada arah putaran sensor pada sumbu tersebut.
Available Functionsdouble gyroRate( axisType axis, velocityUnits units );
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
Sumbu untuk mengembalikan laju giroskop:
|
|
|
Satuan kecepatan giroskop:
|
Mengembalikan nilai double yang mewakili kecepatan rotasi saat ini sepanjang sumbu yang ditentukan dalam satuan yang dipilih.
// Display the rate of change of rotation while turning in dps
Drivetrain.turn(right);
wait(1, seconds);
Brain.Screen.print(myInertial.gyroRate(zaxis, dps));
Drivetrain.stop();
orientation#
Orientasi adalah sudut sensor inersia saat ini pada sumbu yang dipilih. Fungsi ini mengembalikan orientasi sensor inersia saat ini untuk sumbu yang ditentukan.
Sumbu x, y, atau z yang dipilih sesuai dengan salah satu sumbu orientasi sensor.
Available Functionsdouble orientation(
axisType axis,
rotationUnits units );
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
Sumbu yang orientasinya dikembalikan:
|
|
|
The orientation unit:
|
Mengembalikan nilai double yang mewakili sudut orientasi yang dipilih dalam satuan yang ditentukan.
while (true) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1,1);
// Show the Inertial Sensor's orientation value
// for roll in degrees
double orient = myInertial.orientation(xaxis, deg);
Brain.Screen.print("%f", orient);
wait(0.1, seconds);
}
collision#
Mendaftarkan fungsi callback yang akan dijalankan ketika Sensor Inersia mendeteksi benturan atau tabrakan mendadak.
Available Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
Pointer ke fungsi yang akan dipanggil ketika tabrakan terdeteksi. Fungsi callback harus menerima parameter berikut:
void. |
Fungsi ini tidak mengembalikan nilai.
ExamplesDefinisikan fungsi callback (di luar
int main())// Display a message when the Inertial Sensor detects a collision. void onCollision(axisType axis, double x, double y, double z) { Brain.Screen.print("Collision detected!"); }Daftarkan fungsi callback di dalam
int main()int main() { // Run onCollision when the Inertial Sensor detects a collision. myInertial.collision(onCollision); }
setTurnType#
Himpunan yang arah putarannya mengembalikan nilai positif.
Available Functionsvoid setTurnType( turnType dir );
Parameter |
Jenis |
Keterangan |
|---|---|---|
|
|
Arah yang menghasilkan nilai positif:
|
Fungsi ini tidak mengembalikan nilai.
NotesPengaturan ini mempengaruhi bagaimana
headingdanrotationmelaporkan nilai positif dan negatif.Memanggil fungsi ini akan menimpa nilai
diryang ditentukan saat membangun objekinertial.
getTurnType#
Pengembalian yang arah putarannya menghasilkan nilai positif.
Available FunctionsturnType getTurnType();
Fungsi ini tidak memerlukan parameter apa pun.
Return ValuesMengembalikan turnType dengan yang menunjukkan arah mana yang menghasilkan nilai positif:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
Nilai ini ditetapkan selama konstruksi objek inersia
inertialatau dengan memanggilsetTurnType.