Atalet Sensörü#
giriiş#
inertial sınıfı, EXP Atalet Sensöründen gelen verileri kontrol etmek ve bunlara erişmek için kullanılır. EXP, Beynin yerleşik Atalet Sensörünü veya Akıllı Bağlantı Noktasına bağlı harici bir Atalet Sensörünü kullanabilir.
Atalet sensörü, robotun nasıl hareket ettiğini ve döndüğünü ölçer. 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 hareket değişikliklerini ölçer.
Sınıf Oluşturucuları#
inertial(
int32_t index,
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ı. Harici bir atalet sensörünün bağlandığı Akıllı Bağlantı Noktası, |
|
|
İsteğe bağlı. Pozitif değer döndüren yön:
|
Örnekler#
// Use the Brain's built-in Inertial Sensor.
inertial BrainInertial = inertial();
// Use an external Inertial Sensor connected to Port 1.
inertial Inertial1 = inertial(PORT1);
Ü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 çağrılacak bir 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ıştırılacak bir fonksiyonu kaydeder.setTurnType— Hangi dönüş yönünün pozitif değerler 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 using the Device Menu. Replace the values
as needed. */
// Use the Brain's built-in Inertial Sensor.
inertial BrainInertial = inertial();
heading#
Atalet sensörünün mevcut yönünü döndürür.
Yön, sensörün baktığı yönü ifade eder ve 0 ile 359,99 derece arasında ölçülür. Sensör 359,99 derecenin ötesine dönerse, 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#
Dönme, sensörün ne kadar döndüğünü derece cinsinden ölçer. Yönün aksine, dönme 359,99 derecenin üzerine çıkabilir veya 0 derecenin altına düşebilir. Bir projenin başlangıcında, dönme değeri 0 dereceye ayarlanır. Bu fonksiyon, Atalet Sensörünün mevcut dönme değerini yeni bir değere değiştirir.
Örneğin, sensör sağa doğru iki tam tur atmışsa, dönüş değeri 720 derece olacaktır. Dönüşü 0 dereceye ayarlamak, bu dönüş değerini 720’den 0 dereceye sıfırlayacaktır. Ardından sensör, bu yeni değere göre dönüşleri takip edebilir.
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)// Called 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()/* vexcodeInit() is only required when using VEXcode. Remove vexcodeInit() if compiling in VS Code. */ int main() { // Turn the robot by hand briefly // to change the robot's heading 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 eksen üzerindeki mevcut açısıdır. Bu fonksiyon, atalet sensörünün yönelimini -180,00 ile 180,00 derece arasında döndürür.
Seçilen x, y veya z ekseni, sensörün yönelim eksenlerinden birine karşılık gelir.
Available Functionsdouble orientation(
axisType axis,
rotationUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Yönlendirme bilgisinin döndürüldüğü eksen:
|
|
|
The rotation 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(xaxis, 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)// Called 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()/* vexcodeInit() is only required when using VEXcode. Remove vexcodeInit() if compiling in VS Code. */ int main() { // Firmly move the robot by hand briefly to simulate // a collision and call the onCollision function 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.