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 |
|---|---|---|
|
|
İsteğe bağlı. Pozitif değer döndüren yön:
|
Ö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 Functionsdouble heading( rotationUnits units = degrees );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Başlık birimi:
|
Belirtilen birimlerde sensörün mevcut yönünü temsil eden double bir double değeri döndürür.
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
rotationkullanın.
// 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 Functionsdouble rotation( rotationUnits units = degrees );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Dönme birimi:
|
Belirtilen birimlerdeki mevcut dönüşü temsil eden double bir double değeri döndürür.
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
headingkullanın.
// 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 Functionsvoid setHeading( double value,
rotationUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Sensör için ayarlanacak yön değeri (derece cinsinden). Bu değer 0 ile 359,99 arasında olabilir. |
|
|
The heading unit:
|
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 Functionsvoid setRotation( double value,
rotationUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Sensör için ayarlanacak dönüş değeri (derece cinsinden). Bu bir tamsayı veya ondalık sayı olabilir. |
|
|
The rotation unit:
|
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 Functionsvoid calibrate( );
Bu fonksiyon herhangi bir parametre kabul etmez.
Return ValuesBu fonksiyon bir değer döndürmez.
NotesKalibrasyon işlemi sırasında sensör sabit kalmalıdır.
Kalibrasyonun ne zaman tamamlandığını belirlemek için
isCalibratingkullanı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 Functionsvoid resetHeading();
Bu fonksiyon herhangi bir parametre almaz.
Return ValuesBu 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 Functionsvoid resetRotation();
Bu fonksiyon herhangi bir parametre almaz.
Return ValuesBu 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 Functionsbool isCalibrating();
Bu fonksiyon herhangi bir parametre almaz.
Return ValuesAtalet 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 Functionsvoid changed( void (* callback)(void) );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Başlık değeri değiştiğinde çağrılacak bir fonksiyona işaretçi. Fonksiyon parametre almamalı ve |
Bu fonksiyon bir değer döndürmez.
ExamplesGeri ç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 Functionsbool installed();
Bu fonksiyon herhangi bir parametre almaz.
Return ValuesAtalet 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.
double acceleration( axisType axis );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
İvmenin ölçüleceği eksen:
|
Belirtilen eksen boyunca ivmeyi G (yerçekimi birimi) cinsinden temsil eden double bir double değer döndürür.
İvme değerleri
Gbiriminde 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 Functionsdouble gyroRate( axisType axis,
velocityUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Jiroskop hızını döndürecek eksen:
|
|
|
Jiroskop hızı birimi:
|
Belirtilen eksen boyunca mevcut dönüş hızını seçilen birimlerde temsil eden double değerini döndürür.
// 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 Functionsdouble orientation(
orientationType type,
rotationUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Dönüş yönelim açısı:
|
|
|
The orientation unit:
|
Seçilen yönelim açısını belirtilen birimlerde temsil eden double bir çift değer döndürür.
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 Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Çarpışma algılandığında çağrılacak bir fonksiyona işaretçi. Geri çağrı fonksiyonu aşağıdaki parametreleri kabul etmelidir:
void döndürmelidir. |
Bu fonksiyon bir değer döndürmez.
ExamplesGeri ç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 Functionsvoid setTurnType( turnType dir );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Pozitif değer döndüren yönler:
|
Bu fonksiyon bir değer döndürmez.
NotesBu ayar,
headingverotation’in pozitif ve negatif değerleri nasıl bildireceğini etkiler.Bu fonksiyonun çağrılması,
dirnesnesini oluştururken belirtileninertialdeğerini geçersiz kılar.
getTurnType#
Yön değiştiren fonksiyonlar pozitif değerler üretir.
Available FunctionsturnType getTurnType();
Bu fonksiyon herhangi bir parametre almaz.
Return ValuesHangi 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.
Bu değer
inertialnesnesinin oluşturulması sırasında veyasetTurnTypeçağrılarak ayarlanır.