Atalet Sensörü#

giriiş#

inertial sınıfı, IQ (2. nesil) Beyninin yerleşik Atalet Sensöründen gelen verileri kontrol etmek ve bunlara erişmek için kullanılır. Bu sensör, Beynin nasıl hareket ettiğini ve döndüğünü ölçer.

Atalet sensörü bunu yapmak için iki parça kullanır. Jiroskop, yön, dönüş, jiroskop hızı ve yönelim gibi dönüşü ölçer. İvmeölçer ise x, y ve z eksenleri boyunca hızlanma veya yavaşlama gibi hareketteki değişiklikleri ölçer.

Sınıf Oluşturucuları#

inertial(
  turnType dir = turnType::right );

Sınıf Yıkıcısı#

inertial nesnesini yok eder ve ilgili kaynakları serbest bırakır.

~inertial();

Parametreler#

Parametre

Tip

Tanım

dir

turnType

İsteğe bağlı. Pozitif değer döndüren yön:

  • right (varsayılan) — Sağa dönüşler pozitif değer döndürür.
  • left — Sola dönüşler pozitif değer döndürür.

Örnekler#

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

Üye Fonksiyonları#

inertial sınıfı aşağıdaki üye fonksiyonlarını içerir:

  • heading — Sensörün baktığı yönü döndürür.

  • rotation — Sensörün ne kadar döndüğünü döndürür.

  • setHeading — Sensörün mevcut yönünü yeni bir yön değerine ayarlar.

  • setRotation — Sensörün mevcut dönüşünü yeni bir dönüş değerine ayarlar.

  • calibrate — Atalet Sensörünü Kalibre Eder.

  • resetHeading — Sensörün mevcut yönünü 0 dereceye sıfırlar.

  • resetRotation — Sensörün mevcut dönüşünü 0 dereceye sıfırlar.

  • isCalibrating — Atalet Sensörünün şu anda kalibre edilip edilmediğini döndürür.

  • changed — Başlık değiştiğinde çalışan bir geri çağırma fonksiyonu kaydeder.

  • installed — Atalet Sensörünün kurulu olup olmadığını döndürür.

  • acceleration — Sensörün seçilen eksende ne kadar hızlı hızlandığını veya yavaşladığını döndürür.

  • gyroRate — Sensörün seçilen eksen üzerinde ne kadar hızlı döndüğünü döndürür.

  • orientation — Atalet Sensörünün yuvarlanma, eğim veya sapma açısını döndürür.

  • collision — Çarpışma tespit edildiğinde çalışan bir geri çağırma fonksiyonu kaydeder.

  • setTurnType — Hangi dönüş yönünün pozitif başlık değerleri döndürdüğünü ayarlar.

  • getTurnType — Hangi dönüş yönünün pozitif değerler ürettiğini döndürür.

Herhangi bir inertial üye fonksiyonunu çağırmadan önce, aşağıda gösterildiği gibi bir inertial örneği oluşturulmalıdır:

/* 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#

Yön, sensörün baktığı yönü ifade eder ve 0 ile 359,99 derece arasında ölçülür. Bu fonksiyon, sensörün mevcut yönünü döndürür.

Başlangıç ​​yönü 0 derecedir. Sensör 359,99 derecenin üzerine çıkarsa, yön tekrar 0 dereceye döner.

Available Functions
double heading( rotationUnits units = degrees );

Parameters

Parametre

Tip

Tanım

units

rotationUnits

Başlık birimi:

  • deg / degrees (varsayılan) — derece
  • turns / rev — devir

Return Values

Belirtilen birimlerde sensörün mevcut yönünü temsil eden double bir double değeri döndürür.

Notes
  • Başlık değeri 0 ile 359,99 derece arasında sarılmıştır. Sürekli dönüş değerine erişmek için rotation kullanın.

Examples
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));

rotation#

Atalet sensörünün mevcut dönüş yönünü döndürür.

Dönme, sensörün ne kadar döndüğünü gösterir. Yönün aksine, dönme 359,99 derecenin üzerine çıkabilir veya 0 derecenin altına düşebilir. Örneğin, sağa doğru iki tam tur dönmek 720 derecelik bir dönme sağlar. 0 dereceden sola doğru bir tam tur dönmek ise -360 derecelik bir dönme sağlar.

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

Parametre

Tip

Tanım

units

rotationUnits

Dönme birimi:

  • deg / degrees (varsayılan) — derece
  • turns / rev — devir

Return Values

Belirtilen birimlerdeki mevcut dönüşü temsil eden double bir double değeri döndürür.

Notes
  • Dönme değeri süreklidir ve 0 ile 359,99 derece arasında dönmez. Dönen yön değerine erişmek için heading kullanın.

Examples
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));

setHeading#

Yön, sensörün baktığı yönü ifade eder ve 0 ile 359,99 derece arasında ölçülür. Bu fonksiyon, Atalet Sensörünün mevcut yönünü yeni bir yön değerine değiştirir.

Örneğin, sensör sağa doğru dönmüşse, yönü 0 dereceye ayarlamak, bu sağa dönük pozisyonu yeni 0 derece yapar. Ardından sensör, bu yeni yöne göre diğer yönleri takip edebilir.

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

Parameters

Parametre

Tip

Tanım

value

double

Sensör için ayarlanacak yön değeri (derece cinsinden). Bu değer 0 ile 359,99 arasında olabilir.

units

rotationUnits

The heading unit:

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

Return Values

Bu fonksiyon bir değer döndürmez.

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

setRotation#

Atalet sensörünün mevcut dönüşünü belirtilen bir değere ayarlar.

Dönme, sensörün ne kadar döndüğünü gösterir. Yönün aksine, dönme 359,99 derecenin üzerine çıkabilir veya 0 derecenin altına düşebilir.

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

Parameters

Parametre

Tip

Tanım

value

double

Sensör için ayarlanacak dönüş değeri (derece cinsinden). Bu bir tamsayı veya ondalık sayı olabilir.

units

rotationUnits

The rotation unit:

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

Return Values

Bu fonksiyon bir değer döndürmez.

Examples
// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);

calibrate#

Atalet sensörünü kalibre eder.

Kalibrasyon, sensörün dönüşleri doğru şekilde ölçmesine yardımcı olur. Kalibrasyon sırasında sensörü sabit tutun. Kalibrasyon sırasında sensör hareket ederse, yön, dönüş, jiroskop hızı ve yönelim değerleri doğru ölçülemeyebilir.

Available Functions
void calibrate( );

Parameters

Bu fonksiyon herhangi bir parametre kabul etmez.

Return Values

Bu fonksiyon bir değer döndürmez.

Notes
  • Kalibrasyon işlemi sırasında sensör sabit kalmalıdır.

  • Kalibrasyonun ne zaman tamamlandığını belirlemek için isCalibrating kullanın.

resetHeading#

Atalet sensörünün mevcut yönünü 0 dereceye sıfırlar.

Bu fonksiyon kullanıldıktan sonra, sensörün mevcut yönü yeni 0 derece yönü olur.

Available Functions
void resetHeading();

Parameters

Bu fonksiyon herhangi bir parametre almaz.

Return Values

Bu fonksiyon bir değer döndürmez.

resetRotation#

Atalet sensörünün mevcut dönüşünü 0 dereceye sıfırlar.

Bu fonksiyon kullanıldıktan sonra, sensör yeni 0 derece dönüş değerinden itibaren gelecekteki dönüşleri takip eder.

Available Functions
void resetRotation();

Parameters

Bu fonksiyon herhangi bir parametre almaz.

Return Values

Bu fonksiyon bir değer döndürmez.

isCalibrating#

Atalet sensörünün şu anda kalibrasyon aşamasında olup olmadığını döndürür.

Available Functions
bool isCalibrating();

Parameters

Bu fonksiyon herhangi bir parametre almaz.

Return Values

Atalet sensörünün kalibre edilip edilmediğini gösteren bir Boolean değer döndürür:

  • true — The sensor is currently calibrating.
  • false — The sensor is not currently calibrating.

changed#

Atalet sensörünün yön değeri değiştiğinde çalışan bir geri çağırma fonksiyonu kaydeder.

Available Functions
void changed( void (* callback)(void) );

Parameters

Parametre

Tip

Tanım

callback

void (*)(void)

Başlık değeri değiştiğinde çağrılacak bir fonksiyona işaretçi. Fonksiyon parametre almamalı ve void.

Return Values

Bu fonksiyon bir değer döndürmez.

Examples

Geri çağırma fonksiyonunu tanımlayın ( int main() dışında)

// 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());
}

Geri çağrıyı main() fonksiyonunun içine kaydedin int main()

int main() {
  // Run onHeadingChanged when the Inertial Sensor's heading value changes.
  myInertial.changed(onHeadingChanged);
}

installed#

Atalet sensörünün takılı ve bağlı olup olmadığını döndürür.

Available Functions
bool installed();

Parameters

Bu fonksiyon herhangi bir parametre almaz.

Return Values

Atalet sensörünün takılı ve bağlı olup olmadığını gösteren bir Boolean değeri döndürür:

  • true — The sensor is connected and responding.
  • false — The sensor is not connected or not detected.

acceleration#

İvme, sensörün ne kadar hızlı hızlandığını veya yavaşladığını gösterir. Bu fonksiyon, seçilen eksen üzerindeki Atalet Sensörünün ivmesini -4,0 G ile 4,0 G arasında döndürür.

G ivmeyi ölçmek için kullanılan bir birimdir. 1 G, hareketsiz otururken yerçekiminden hissettiğiniz ivmeye yaklaşık olarak eşittir. Değer, seçilen eksendeki ivmenin yönüne bağlı olarak pozitif veya negatif olabilir.

Available Functions
double acceleration( axisType axis );

Parameters

Parametre

Tip

Tanım

axis

axisType

İvmenin ölçüleceği eksen:

  • xaxis
  • yaxis
  • zaxis

Return Values

Belirtilen eksen boyunca ivmeyi G (yerçekimi birimi) cinsinden temsil eden double bir double değer döndürür.

Notes
  • İvme değerleri G biriminde rapor edilir.

gyroRate#

Jiroskop hızı, atalet sensörünün ne kadar hızlı döndüğünü gösterir. Bu fonksiyon, seçilen eksen üzerindeki atalet sensörünün mevcut dönüş hızını döndürür.

Sensörün o eksen üzerindeki dönüş yönüne bağlı olarak değer pozitif veya negatif olabilir.

Available Functions
double gyroRate( axisType      axis,
                 velocityUnits units );

Parameters

Parametre

Tip

Tanım

axis

axisType

Jiroskop hızını döndürecek eksen:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Jiroskop hızı birimi:

  • dps — saniyede derece
  • rpm — dakikada devir

Return Values

Belirtilen eksen boyunca mevcut dönüş hızını seçilen birimlerde temsil eden double değerini döndürür.

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#

Yönelim, atalet sensörünün seçilen bir dönüş ekseni üzerindeki mevcut açısıdır. Bu fonksiyon, belirtilen eksen için atalet sensörünün mevcut yönelimini döndürür.

Yuvarlanma, eğim ve sapma, sensörün eğilme veya dönme şekillerini tanımlar.

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

Parameters

Parametre

Tip

Tanım

type

orientationType

Dönüş yönelim açısı:

  • pitch
  • roll
  • yaw

units

rotationUnits

The orientation unit:

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

Return Values

Seçilen yönelim açısını belirtilen birimlerde temsil eden double bir çift değer döndürür.

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#

Atalet sensörü ani bir darbe veya çarpışma algıladığında çalışan bir geri çağırma fonksiyonu kaydeder.

Available Functions
void collision( void (* callback)(axisType, double, double, double) );

Parameters

Parametre

Tip

Tanım

callback

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

Çarpışma algılandığında çağrılacak bir fonksiyona işaretçi. Geri çağrı fonksiyonu aşağıdaki parametreleri kabul etmelidir:

  • axisType — Çarpışmanın algılandığı eksen.
  • Çarpışma anındaki ivme değerleri, sırasıyla:
    • double — x ekseni boyunca ivme (G cinsinden).
    • double — y ekseni boyunca ivme (G cinsinden).
    • double — z ekseni boyunca ivme (G cinsinden).
Fonksiyon void döndürmelidir.

Return Values

Bu fonksiyon bir değer döndürmez.

Examples

Geri çağırma fonksiyonunu tanımlayın ( int main() dışında)

// 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!");
}

Geri çağrıyı main() fonksiyonunun içine kaydedin int main()

int main() {
  // Run onCollision when the Inertial Sensor detects a collision.
  myInertial.collision(onCollision);
}

setTurnType#

Yön değiştiren kümeler pozitif değerler döndürür.

Available Functions
void setTurnType( turnType dir );

Parameters

Parametre

Tip

Tanım

dir

turnType

Pozitif değer döndüren yönler:

  • right
  • left

Return Values

Bu fonksiyon bir değer döndürmez.

Notes

getTurnType#

Yön değiştiren fonksiyonlar pozitif değerler üretir.

Available Functions
turnType getTurnType();

Parameters

Bu fonksiyon herhangi bir parametre almaz.

Return Values

Hangi yönün pozitif değerler ürettiğini gösteren turnType değerini döndürür:

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