Sensor Inersia#

Perkenalan#

Kelas inertial digunakan untuk mengontrol dan mengakses data dari Sensor Inersia bawaan IQ (generasi ke-2) Brain. Sensor ini mengukur bagaimana Brain 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.

Konstruktor Kelas#

inertial(
  turnType dir = turnType::right );

Destruktor Kelas#

Menghancurkan objek inertial dan melepaskan sumber daya terkait.

~inertial();

Parameter#

Parameter

Jenis

Keterangan

dir

turnType

Opsional. Arah yang menghasilkan nilai positif:

  • right (default) — Belok kanan menghasilkan nilai positif.
  • left — Belok kiri menghasilkan nilai positif.

Contoh#

// Create the inertial instance
inertial myInertial = inertial(
    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 belok mana yang mengembalikan nilai haluan 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 with the IQ (2nd gen) Brain. Replace the values
as needed. */

// Create the inertial instance
inertial myInertial = inertial();

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 Functions
double heading( rotationUnits units = degrees );

Parameters

Parameter

Jenis

Keterangan

units

rotationUnits

The heading unit:

  • deg / degrees (default) — degrees
  • turns / rev — revolutions

Return Values

Mengembalikan nilai double yang mewakili arah haluan sensor saat ini dalam satuan yang ditentukan.

Notes
  • Nilai arah dibatasi antara 0 dan 359,99 derajat. Gunakan rotation untuk mengakses nilai rotasi kontinu.

Examples
// 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 Functions
double rotation( rotationUnits units = degrees );

Parameters

Parameter

Jenis

Keterangan

units

rotationUnits

The rotation unit:

  • deg / degrees (default) — degrees
  • turns / rev — revolutions

Return Values

Mengembalikan nilai double yang mewakili rotasi saat ini dalam satuan yang ditentukan.

Notes
  • Nilai rotasi bersifat kontinu dan tidak terbungkus antara 0 dan 359,99 derajat. Gunakan heading untuk mengakses nilai heading yang terbungkus.

Examples
// 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 Functions
void setHeading( double        value,
                 rotationUnits units );

Parameters

Parameter

Jenis

Keterangan

value

double

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

units

rotationUnits

The heading unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

Fungsi ini tidak mengembalikan nilai.

Examples
// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);

setRotation#

Mengatur rotasi sensor inersia saat ini ke nilai yang ditentukan.

Rotasi adalah seberapa besar sensor telah berputar. Tidak seperti arah, rotasi dapat meningkat melebihi 359,99 derajat atau menurun di bawah 0 derajat.

Available Functions
void setRotation( double        value,
                  rotationUnits units );

Parameters

Parameter

Jenis

Keterangan

value

double

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

units

rotationUnits

The rotation unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

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 Functions
void calibrate( );

Parameters

Fungsi ini tidak menerima parameter apa pun.

Return Values

Fungsi ini tidak mengembalikan nilai.

Notes
  • Sensor harus tetap diam selama proses kalibrasi berlangsung.

  • Gunakan isCalibrating untuk 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 Functions
void resetHeading();

Parameters

Fungsi ini tidak memerlukan parameter apa pun.

Return Values

Fungsi 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 Functions
void resetRotation();

Parameters

Fungsi ini tidak memerlukan parameter apa pun.

Return Values

Fungsi ini tidak mengembalikan nilai.

isCalibrating#

Mengembalikan nilai yang menunjukkan apakah Sensor Inersia sedang dalam proses kalibrasi.

Available Functions
bool isCalibrating();

Parameters

Fungsi ini tidak memerlukan parameter apa pun.

Return Values

Mengembalikan 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 Functions
void changed( void (* callback)(void) );

Parameters

Parameter

Jenis

Keterangan

callback

void (*)(void)

Pointer ke sebuah fungsi yang akan dipanggil ketika nilai heading berubah. Fungsi tersebut tidak boleh menerima parameter dan harus mengembalikan void.

Return Values

Fungsi ini tidak mengembalikan nilai.

Examples

Definisikan 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 Functions
bool installed();

Parameters

Fungsi ini tidak memerlukan parameter apa pun.

Return Values

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

Available Functions
double acceleration( axisType axis );

Parameters

Parameter

Jenis

Keterangan

axis

axisType

Sumbu untuk mengukur percepatan:

  • xaxis
  • yaxis
  • zaxis

Return Values

Mengembalikan nilai double yang mewakili percepatan sepanjang sumbu yang ditentukan dalam G (satuan gravitasi).

Notes
  • 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 Functions
double gyroRate( axisType      axis,
                 velocityUnits units );

Parameters

Parameter

Jenis

Keterangan

axis

axisType

Sumbu untuk mengembalikan laju giroskop:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Satuan kecepatan giroskop:

  • dps — derajat per detik
  • rpm — putaran per menit

Return Values

Mengembalikan nilai double yang mewakili kecepatan rotasi saat ini sepanjang sumbu yang ditentukan dalam satuan yang dipilih.

Examples
// 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 putar yang dipilih. Fungsi ini mengembalikan orientasi Sensor Inersia saat ini untuk sumbu yang ditentukan.

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

Available Functions
double orientation(
  orientationType type,
  rotationUnits   units );

Parameters

Parameter

Jenis

Keterangan

type

orientationType

Sudut orientasi untuk kembali:

  • pitch
  • roll
  • yaw

units

rotationUnits

The orientation unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

Mengembalikan nilai double yang mewakili sudut orientasi yang dipilih dalam satuan yang ditentukan.

Examples
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(roll, 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 Functions
void collision( void (* callback)(axisType, double, double, double) );

Parameters

Parameter

Jenis

Keterangan

callback

void (*)(axisType, double, double, double)

Pointer ke fungsi yang akan dipanggil ketika tabrakan terdeteksi. Fungsi callback harus menerima parameter berikut:

  • axisType — Sumbu tempat tabrakan terdeteksi.
  • Nilai percepatan pada saat benturan, secara berurutan:
    • double — Percepatan sepanjang sumbu x (dalam G).
    • double — Percepatan sepanjang sumbu y (dalam G).
    • double — Percepatan sepanjang sumbu z (dalam G).
Fungsi harus mengembalikan void.

Return Values

Fungsi ini tidak mengembalikan nilai.

Examples

Definisikan 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 Functions
void setTurnType( turnType dir );

Parameters

Parameter

Jenis

Keterangan

dir

turnType

Arah yang menghasilkan nilai positif:

  • right
  • left

Return Values

Fungsi ini tidak mengembalikan nilai.

Notes

getTurnType#

Pengembalian yang arah putarannya menghasilkan nilai positif.

Available Functions
turnType getTurnType();

Parameters

Fungsi ini tidak memerlukan parameter apa pun.

Return Values

Mengembalikan turnType dengan yang menunjukkan arah mana yang menghasilkan nilai positif:

  • right — Clockwise rotation returns positive values.
  • left — Counterclockwise rotation returns positive values.
Notes