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.
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.
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.
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 |
|---|---|
|
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 |
|---|---|
|
Çarpışma tespit edildiğinde yürütülecek şekilde önceden tanımlanmış bir fonksiyon. |
|
İ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 |
|---|---|
|
Çarpışma hassasiyeti:
|
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.

Kullanım:
robot.inertial.get_acceleration(type)
Parametreler |
Tanım |
|---|---|
|
İvme ölçüm ekseni:
|
# 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.

Usage:
robot.inertial.get_turn_rate(axis)
Parametreler |
Tanım |
|---|---|
|
Hangi yöne geri dönülecek:
|
# 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)