Atalet#

giriiş#

VEX AIM Kodlama Robotu, dahili bir Atalet Sensörüne sahiptir. Bu sensör, robotun nasıl hareket ettiğini ve döndüğünü ölçer.

Atalet sensörü bunu yapmak için iki parça kullanır. Jiroskop, robotun yönü, dönüşü, sapması, yuvarlanması, eğimi ve dönüş hızı gibi dönüşleri ölçer. İvmeölçer ise hızlanma, yavaşlama veya bir çarpışma sırasında aniden durma gibi hareketlerdeki değişiklikleri ölçer.

Ataletsel yöntemler, dönüşleri izlemek, ivmeyi ölçmek, çarpışmaları tespit etmek, yön veya dönüş değerlerini sıfırlamak ve sensörü kalibre etmek için kullanılabilir.

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

Yönlendirme — Robotun yönünü, dönüşünü veya eğimini ayarlayın ve sıfırlayın.

  • get_rotation — Robotun ne kadar döndüğünü döndürür.

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

  • get_yaw — Robotun sapma açısını döndürür.

  • get_roll — Robotun yuvarlanma açısını döndürür.

  • get_pitch — Robotun eğim açısını döndürür.

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

  • reset_heading — Robotun mevcut yönünü 0 dereceye sıfırlar.

  • set_heading — Robotun mevcut yönünü yeni bir yön değerine ayarlar.

Çarpışma Algılama — Çarpışmaları tespit et.

  • crashed — Bir çökme tespit edildiğinde çalıştırılacak bir fonksiyonu kaydeder.

  • set_crash_sensitivity — Çarpışma tespitinin darbelere ne kadar duyarlı olduğunu ayarlar.

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

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

  • get_turn_rate — Robotun seçilen eksende ne kadar hızlı döndüğünü döndürür.

Kalibrasyon — Sensör kalibrasyonunu yönetin.

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

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

Oryantasyon#

get_rotation#

Dönme, robotun ne kadar döndüğünü derece cinsinden ölçer. Yönlendirmeden farklı olarak, 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. `get_rotation robotun mevcut dönme değerini ondalık sayı olarak 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:
robot.inertial.get_rotation()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Display the robot's rotation as it rotates
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    robot.screen.print(f"Rotation: {robot.inertial.get_rotation():.2f}")
    wait(50, MSEC)

get_heading#

Yön, robotun baktığı yönü ifade eder ve 0 ile 359,99 derece arasında ölçülür. get_heading robotun mevcut yönünü ondalık sayı olarak döndürür.

Başlangıç ​​yönü 0 derecedir. Robot 359,99 dereceden fazla dönerse, yön tekrar 0 dereceye döner.

Usage:
robot.inertial.get_heading()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Turn right until the heading reaches 90 degrees
robot.turn(RIGHT)
while robot.inertial.get_heading() < 90:
    wait(50, MSEC)
robot.stop_all_movement()

# Display the robot's heading as it is rotated by hand
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    robot.screen.print(f"Heading: {robot.inertial.get_heading()} degrees")
    wait(50, MSEC)

get_yaw#

Yaw, robotun dikey ekseni etrafında sola veya sağa dönmesini tanımlar. get_yaw robotun yaw açısını -180,00 ile 180,00 derece aralığında ondalık sayı olarak döndürür.

Aşağıdaki görselde, sapma açısı için pozitif dönüş yönünü göstermek üzere oklar kullanılmıştır.

VEX AIM kodlama robotunun merkezinden aşağıya doğru mavi bir ok uzanıyor. Mavi okun etrafında, saat yönünde dönen siyah kavisli bir ok bulunuyor ve bu ok pozitif sapma yönünü gösteriyor.

Usage:
robot.inertial.get_yaw()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Display the robot's yaw angle as it is rotated by hand
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    robot.screen.print(robot.inertial.get_yaw())
    wait(50, MSEC)

get_roll#

Roll, robotun yanlara doğru eğilmesini tanımlar. get_roll robotun yuvarlanma açısını -180,00 ile 180,00 derece aralığında ondalık sayı olarak döndürür.

Aşağıdaki görselde, yuvarlanma hareketinin pozitif dönüş yönünü oklar göstermektedir.

VEX AIM kodlama robotunun ön tarafında, yapay zeka görüş sensörünün merkezinde yeşil bir ok uzanıyor. Yeşil okun etrafında, saat yönünün tersine kıvrılan siyah bir ok, yuvarlanma için pozitif yönü gösteriyor.

Usage:
robot.inertial.get_roll()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Display the robot's roll angle as it is tilted by hand
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    robot.screen.print(robot.inertial.get_roll())
    wait(50, MSEC)

get_pitch#

Pitch, robotun ileri veya geri doğru eğilmesini tanımlar. get_pitch robotun eğim açısını -90,00 ile 90,00 derece aralığında ondalık sayı olarak döndürür.

Aşağıdaki görselde, eğim için pozitif dönüşün yönünü göstermek üzere oklar kullanılmıştır.

VEX logosunun altında, robotun yanından dışarı doğru uzanan kırmızı bir ok bulunan bir VEX AIM Kodlama Robotu. Kırmızı okun etrafında, saat yönünün tersine kıvrılan siyah bir ok, eğim için pozitif yönü gösteriyor.

Usage:
robot.inertial.get_pitch()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Display the robot's pitch angle as it is tilted by hand
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    robot.screen.print(robot.inertial.get_pitch())
    wait(50, MSEC)

reset_rotation#

reset_rotation komutu robotun mevcut dönüşünü 0 dereceye sıfırlar.

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

Usage:
robot.inertial.reset_rotation()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Reset the robot's rotation if it exceeds 180 degrees
while True:
    if robot.inertial.get_rotation() >= 180:
        robot.inertial.reset_rotation()

    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    robot.screen.print(f"Rotation: {robot.inertial.get_rotation():.2f}")

    wait(50, MSEC)

reset_heading#

reset_heading komutu, robotun mevcut yönünü 0 dereceye sıfırlar.

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

Usage:
robot.inertial.reset_heading()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Turn the robot around using a new 90 degree heading
robot.turn_to(90)
wait(1, SECONDS)
robot.inertial.reset_heading()
robot.turn_to(90)

set_heading#

Yön, robotun baktığı yönü ifade eder ve 0 ile 359,99 derece arasında ölçülür. set_heading komutu, robotun mevcut yönünü yeni bir yön değerine değiştirir.

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

Usage:
robot.inertial.set_heading(heading)

Parametreler

Tanım

heading

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

# Turn the robot to 90 degrees using its new heading
robot.inertial.set_heading(45)
robot.turn_to(90)

Kaza#

crashed#

crashed robot ani bir darbe veya çarpışma algıladığında çağrılacak bir fonksiyonu kaydeder.

Kullanım:

robot.inertial.crashed(callback, arg)

Parametreler

Tanım

callback

Çarpışma tespit edildiğinde yürütülecek şekilde önceden tanımlanmış bir fonksiyon.

arg

İsteğe bağlı. Geri çağrı fonksiyonuna iletilecek argümanları içeren bir demet. Daha fazla bilgi için Parametreli Fonksiyonları Kullanma bölümüne bakın.

# Define what happens when a crash occurs
def crash_detected():
    # Stop all movement and indicate a crash occurred
    robot.screen.print("Crash detected")
    robot.stop_all_movement()

robot.inertial.crashed(crash_detected)

# Drive forward until crash
robot.move_at(0, 100)

set_crash_sensitivity#

set_crash_sensitivity , robotun bir çarpışmayı algılaması için ne kadar ani ivmelenmeye ihtiyaç duyulduğunu ayarlar.

Usage:
robot.inertial.set_crash_sensitivity(sensitivity)

Parametreler

Tanım

sensitivity

Çarpışma hassasiyeti:

  • HIGH — En hassas; daha küçük darbeleri algılar ve 1G’de tetiklenir.
  • NORMAL — Varsayılan hassasiyet; orta şiddetteki darbeleri algılar ve 1,5G’de tetiklenir.
  • LOW — En az hassas; daha güçlü darbeleri algılar ve 2G’de tetiklenir.

def crashed_callback():
    robot.stop_all_movement()
    robot.sound.play(CRASH)

# system event handlers
robot.inertial.crashed(crashed_callback)
# add 15ms delay to make sure events are registered correctly.
wait(15, MSEC)

# Detect a crash at a slow velocity.
robot.set_move_velocity(35, PERCENT)
robot.inertial.set_crash_sensitivity(HIGH)
robot.move_at(0)

Hareket#

get_acceleration#

İvme, robotun ne kadar hızlı hızlandığını veya yavaşladığını gösterir. get_acceleration seçilen eksendeki robotun ivmesini -4,00 G ile 4,00 G arasında bir 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. AIM’de eksen seçenekleri robot üzerindeki yönlere göre adlandırılmıştır: FORWARD, RIGHTWARDve DOWNWARD.

Robotun merkezinden yön okları uzanan bir VEX AIM Kodlama Robotu. Robotun önünden ileriyi gösteren yeşil bir ok, robotun altından aşağıyı gösteren mavi bir ok ve VEX logosunun altındaki robotun yanından sağa doğru uzanan kırmızı bir ok bulunmaktadır.

Kullanım:

robot.inertial.get_acceleration(type)

Parametreler

Tanım

type

İvme ölçüm ekseni:

  • DOWNWARD — Robotun dikey doğrultusundaki ivmeyi ölçer.
  • FORWARD — Robotun önden arkaya doğrultusundaki ivmeyi ölçer.
  • RIGHTWARD — Robotun yandan yana doğrultusundaki ivmeyi ölçer.

# Display the acceleration as the robot begins to move
robot.screen.set_cursor(4,1)
sitting_accel = robot.inertial.get_acceleration(RIGHTWARD)
robot.screen.print(f"Resting: {sitting_accel:.2f}")
wait(0.5, SECONDS)
robot.screen.next_row()

robot.move_at(90, 100)
wait(0.1, SECONDS)

robot.screen.print(f"Startup: {robot.inertial.get_acceleration(RIGHTWARD):.2f}")

get_turn_rate#

Dönüş hızı, robotun ne kadar hızlı döndüğünü gösterir. get_turn_rate get_turn_rate robotun dönüş hızını saniyede derece \(dps\) cinsinden, -1000.00 ile 1000.00 dps arasında bir ondalık sayı olarak döndürür.

Değer, robotun seçilen eksen üzerindeki dönüş yönüne bağlı olarak pozitif veya negatif olabilir. Aşağıdaki görselde, yuvarlanma, eğim ve sapma için pozitif dönüş yönünü göstermek üzere oklar kullanılmıştır.

Robotun merkezinden yön okları uzanan bir VEX AIM Kodlama Robotu. Robotun önünden uzanan ve etrafında saat yönünün tersine siyah kavisli bir ok bulunan, "Roll" yazılı yeşil bir ok var. Robotun altından uzanan ve etrafında saat yönünde siyah kavisli bir ok bulunan, "Yaw" yazılı mavi bir ok var. Ve VEX logosunun altında, robotun yanından uzanan ve etrafında saat yönünün tersine siyah kavisli bir ok bulunan, "Pitch" yazılı kırmızı bir ok var.

Usage:
robot.inertial.get_turn_rate(axis)

Parametreler

Tanım

axis

Hangi yöne geri dönülecek:

  • YAW
  • ROLL
  • PITCH
# Display the gyro rate as the robot is rotated by hand
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    robot.screen.print(robot.inertial.get_turn_rate(YAW))
    wait(50, MSEC)

Kalibrasyon#

Kalibrasyon, atalet sensörünün dönüşleri doğru bir şekilde ölçmesine yardımcı olur; bu işlem, 2 saniyelik bir süre boyunca sensör gürültüsünü ve sapmasını ölçerek ve telafi ederek gerçekleştirilir. Bu süre boyunca robot, sabit bir yüzey üzerinde tamamen hareketsiz kalmalıdır. Kalibrasyon sırasında hareket, yanlış sonuçlara yol açabilir.

VEX robotları, başlatıldıklarında otomatik olarak kendilerini kalibre etmeye çalışır ve hareket algılamayana kadar bekler. Ancak, robot başlatma sırasında taşınıyorsa veya hareket ettiriliyorsa, sensör doğru şekilde kalibre edilemeyebilir veya yanlış kalibrasyon sonucu verebilir.

Projeniz doğru bir yönlendirmeye büyük ölçüde bağlıysa veya tutarlı ve tekrarlanabilir dönüşlere ihtiyacınız varsa, kodunuzun başında calibrate komutunu çağırmak yardımcı olabilir. Kalibrasyon sırasında robotun ekranında “Kalibrasyon…” gibi bir mesaj görüntülemek ve ardından “Kalibrasyon tamamlandı.” olarak güncellemek, robotun bu süre boyunca hareketsiz kalması gerektiğini size (ve robotu kullanan herkese) hatırlatmak için iyi bir uygulamadır.

calibrate#

calibrate jiroskopu kalibre eder. Kalibrasyon, atalet sensörünün dönüşleri doğru bir şekilde ölçmesine yardımcı olur; bu işlem, 2 saniyelik bir süre boyunca sensör gürültüsünü ve sapmasını ölçerek ve telafi ederek gerçekleştirilir. Bu süre boyunca robot, sabit bir yüzey üzerinde tamamen hareketsiz kalmalıdır. Kalibrasyon sırasında hareket, yanlış sonuçlara yol açabilir.

VEX robotları, başlatıldıklarında otomatik olarak kendilerini kalibre etmeye çalışır ve hareket algılamayana kadar bekler. Ancak, robot başlatma sırasında taşınıyorsa veya hareket ettiriliyorsa, sensör doğru şekilde kalibre edilemeyebilir veya yanlış kalibrasyon sonucu verebilir.

Usage:
robot.inertial.calibrate()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Calibrate the gyro before moving
robot.inertial.calibrate()
robot.screen.show_emoji(THINKING)
wait(2, SECONDS)
robot.screen.show_emoji(PROUD)
robot.move_for(50, 90)

is_calibrating#

is_calibrating , Atalet Sensörünün kalibre edilip edilmediğini gösteren bir Boolean değer döndürür.

  • True — Atalet Sensörü kalibre ediliyor.

  • False — Atalet sensörü kalibre edilmiyor.

Usage:
robot.inertial.is_calibrating()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Move after the calibration is completed
robot.inertial.calibrate()
while robot.inertial.is_calibrating():
    robot.screen.show_emoji(THINKING)
    wait(50, MSEC)
robot.screen.show_emoji(PROUD)
robot.move_for(50, 90)