Atalet#

giriiş#

IQ (2. nesil) Beyin dahili bir Atalet Sensörü içerir. 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.

Bu sayfada örnek olarak brain_inertial atalet sensörü adı kullanılmıştır. Gerektiğinde kendi yapılandırdığınız adla değiştirin.

Aşağıda mevcut tüm yöntemlerin listesi bulunmaktadır:

Yönlendirme — Yönü, dönüşü ve sensör kalibrasyonunu okuyun ve kontrol edin.

  • heading — Sensörün baktığı yönü 0 ile 359,99 derece arasında döndürür.

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

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

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

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

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

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

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

  • changed — Atalet Sensörünün yönü değiştiğinde çalıştırılacak bir fonksiyonu kaydeder.

Hareket — İvme, dönüş hızı ve eğimi ölçün.

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

  • gyro_rate — 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.

Yapıcı Fonksiyonlar — Atalet Sensörünü manuel olarak başlatın ve yapılandırın.

  • Inertial — Bir Atalet Sensörü oluşturur.

Oryantasyon#

heading#

Yön, sensörün baktığı yönü ifade eder ve 0 ile 359,99 derece arasında ölçülür. heading sensörün mevcut yönünü gösterir.

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

Usage:
brain_inertial.heading(units)

Parametreler

Tanım

units

İsteğe bağlı. Yön birimi: DEGREES (varsayılan) veya TURNS

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())

rotation#

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. rotation Atalet Sensörünün mevcut dönme değerini döndürür.

Sağa dönmek dönüş açısını artırır, sola dönmek ise azaltır. Örneğin, sağa iki tam dönüş yapmak 720 derecelik bir dönüşe neden olur. 0 dereceden sola bir tam dönüş yapmak ise -360 derecelik bir dönüşe neden olur.

Usage:
brain_inertial.rotation(units)

Parametreler

Tanım

units

İsteğe bağlı. Dönme birimi: DEGREES (varsayılan) veya TURNS

# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())

calibrate#

calibrate Atalet Sensörünü kalibre eder. Sonraki tüm satırlar, çalıştırılmadan önce kalibrasyonun tamamlanmasını bekleyecektir. Kalibrasyon, sensörün belirli bir süre boyunca sensör gürültüsünü ve sapmasını ölçerek ve telafi ederek dönüşleri doğru şekilde ölçmesine yardımcı olur. Bu süre boyunca, Beyin sabit bir yüzey üzerinde tamamen hareketsiz kalmalıdır. Kalibrasyon sırasında hareket, yanlış sonuçlar doğurabilir.

Ekranı sağa doğru açılı olan IQ Brain cihazında, x, y ve z eksenleri ekranın merkezinden başlayıp dışa doğru uzanan oklarla gösterilmiştir. x harfiyle etiketlenmiş kırmızı ok sağa, y harfiyle etiketlenmiş yeşil ok ileriye ve z harfiyle etiketlenmiş mavi ok aşağıya doğru işaret etmektedir.Öncekiyle aynı görüntü, ancak bu sefer beyin ekranı sola doğru açılı ve x, y, z okları yönlerini koruyor.Öncekiyle aynı görüntü, ancak bu sefer beyin ekranı yukarıya, sanki düz bir yüzey üzerindeymiş gibi bakıyor. X, y, z yönelimleri aynı.

VEX Brain, her projenin başlangıcında dahili Atalet Sensörünü otomatik olarak kalibre etmeye çalışır. Ancak, proje başlangıcında robot taşınıyorsa veya hareket ettiriliyorsa, sensör doğru şekilde kalibre edilemeyebilir veya yanlış kalibrasyon sonucu verebilir.

Usage:
brain_inertial.calibrate()

Parametre

Tanım

Bu yöntemin parametresi yoktur.

# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Inertial Sensor")
    brain.screen.next_row()
    brain.screen.print("Calibrating")
    wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")

set_heading#

Yön, sensörün baktığı yönü ifade eder ve 0 ile 359,99 derece arasında ölçülür. set_heading() 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.

Usage:
brain_inertial.set_heading(value, units)

Parametreler

Tanım

value

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

units

İsteğe bağlı. Yön birimi: DEGREES (varsayılan) veya TURNS

# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)

set_rotation#

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. set_rotation() 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.

Usage:
brain_inertial.set_rotation(value, units)

Parametreler

Tanım

value

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

units

İsteğe bağlı. Dönme birimi: DEGREES (varsayılan) veya TURNS

# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)

is_calibrating#

is_calibrating , Atalet Sensörünün şu anda kalibre edilip edilmediğini döndürür.

  • True — Atalet Sensörü kalibre ediliyor.

  • False — Atalet sensörü kalibre edilmiyor.

Usage:
brain_inertial.is_calibrating()

Parametre

Tanım

Bu yöntemin parametresi yoktur.

# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Inertial Sensor")
    brain.screen.next_row()
    brain.screen.print("Calibrating")
    wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")

reset_heading#

reset_heading komutu, atalet sensörünün mevcut yönünü 0 dereceye sıfırlar.

Bu yöntem kullanıldıktan sonra, sensörün mevcut yönü yeni 0 derece yönü haline gelir.

Usage:
brain_inertial.reset_heading()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)

reset_rotation#

reset_rotation komutu, atalet sensörünün mevcut dönüşünü 0 dereceye sıfırlar.

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

Usage:
brain_inertial.reset_rotation()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)

changed#

changed atalet sensörünün yönü değiştiğinde çağrılacak bir fonksiyonu kaydeder.

Usage:
brain_inertial.changed(callback, arg)

Parametreler

Tanım

callback

Atalet sensörünün yönü değiştiğinde çalışan bir fonksiyon.

arg

İsteğe bağlı. Geri çağrı fonksiyonuna iletilecek argümanlardan oluşan bir demet.

def heading_changed():
    brain.screen.set_cursor(1, 1)
    brain.screen.clear_screen()
    brain.screen.print("my heading ")
    brain.screen.next_row()
    brain.screen.print("has changed!")
    wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)

Hareket#

acceleration#

İvme, sensörün ne kadar hızlı hızlandığını veya yavaşladığını gösterir. acceleration , seçilen eksendeki Atalet Sensörünün ivmesini -4,0 G ile 4,0 G arasında ondalık sayı olarak 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. Eksen seçenekleri XAXIS, YAXISve ZAXIS.

Usage:
brain_inertial.acceleration(axis)

Parametreler

Tanım

eksen

İvmenin ölçüleceği eksen:

  • XAXIS
  • YAXIS
  • ZAXIS

# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))

gyro_rate#

Jiroskop hızı, atalet sensörünün ne kadar hızlı döndüğünü gösterir. gyro_rate değeri, 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.

Usage:
brain_inertial.gyro_rate(axis, units)

Parametreler

Tanım

axis

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

  • XAXIS
  • YAXIS
  • ZAXIS

units

İsteğe bağlı. Jiroskop hızı birimi:

  • DPS (varsayılan) — saniyede derece
  • RPM — dakikada dönüş
  • PERCENT

# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()

orientation#

Yönelim, Atalet Sensörünün seçilen bir dönme ekseni üzerindeki mevcut açısını ifade eder. orientation yönelim ise Atalet Sensörünün yuvarlanma, eğim veya sapma açısını döndürür.

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

Usage:
brain_inertial.orientation(axis, units)

Parametreler

Tanım

axis

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

  • ROLL
  • PITCH
  • YAW

units

İsteğe bağlı. Yönlendirme birimi: DEGREES (varsayılan) veya TURNS

# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
    brain.screen.clear_screen()
    brain.screen.print(brain_inertial.orientation(OrientationType.ROLL))
    brain.screen.next_row()
    brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
    brain.screen.next_row()
    brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
    brain.screen.next_row()
    brain.screen.set_cursor(1, 1)
    wait(0.1, SECONDS)

İnşaatçılar#

Yapıcılar, VEXcode dışında bir Atalet Sensörü yapılandırırken olduğu gibi, Inertial nesnesini manuel olarak oluşturmak için kullanılır.

Inertial#

Inertial , bir Atalet Sensörü oluşturur.

Usage:
Inertial(smartport)

Parametre

Tanım

smartport

İsteğe bağlı. IQ (2. nesil) Beynin yerleşik Atalet Sensörünü kullanıyorsanız, Akıllı Bağlantı Noktası gerekmez. Harici bir Atalet Sensörü bağlıyorsanız, Atalet Sensörünün bağlı olduğu Akıllı Bağlantı Noktasını PORTxşeklinde belirtin; burada x bağlantı noktası numarasıdır.

# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)

drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)