6 Eksenli Kol#

giriiş#

VEX 6 Eksenli Robotik Kol, uç elemanını üç boyutlu uzayda hareket ettirebilir, yatay, dikey ve dikey dönüşler kullanarak yönünü kontrol edebilir ve Manyetik Toplama Aleti veya Kalem Tutucu Aleti gibi takılı aletleri kullanabilir.

6 Eksenli Kol, VEXcode V5’te bir cihaz olarak yapılandırılmamıştır. VEX V5 Python projesinde kullanmak için, 6 Eksenli Kol’un bağlı olduğu Akıllı Bağlantı Noktası ile kodda manuel olarak Arm nesnesi oluşturun.

Bu sayfadaki örneklerde, arm1 olarak adlandırılan, elle oluşturulmuş 6 eksenli bir kol kullanılmaktadır.

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

İşlemler — 6 Eksenli Kolu konumlara veya yönlere hareket ettirin.

  • move_to — Uç efektörü belirtilen x, y ve z koordinatına taşır.

  • move_inc — Uç efektörü mevcut konumundan belirtilen bir mesafe kadar hareket ettirir.

  • move_end_effector_to — Uç efektörü belirtilen bir sapma, yuvarlanma ve eğim yönüne döndürür.

  • move_end_effector_inc — Uç efektörü belirtilen bir sapma, yuvarlanma ve eğim miktarı kadar döndürür.

Değiştiriciler — Hareket, araçlar ve kontrol ayarlarını yapılandırın.

  • set_speed — 6 Eksenli Kol tarafından kullanılan hareket hızını ayarlar.

  • set_end_effector_type — 6 Eksenli Kola bağlı uç efektörün tipini ayarlar.

  • set_end_effector_magnet — Mıknatıs Toplama Aletini devreye sokar veya serbest bırakır.

  • set_pen_offset — Kalem Tutucu Aracı ile kullanılan z ekseni ofsetini ayarlar.

  • set_control_stop — 6 Eksenli Kol için kontrol durdurmayı etkinleştirir.

  • set_timeout — 6 Eksenli Kol hareket yöntemleri tarafından kullanılan zaman aşımını ayarlar.

Getter’lar — Hareket durumu, konum, yönelim ve bağlantı değerlerini döndürür.

  • is_done — 6 Eksenli Kolun hareketini tamamlayıp tamamlamadığını döndürür.

  • is_crashed — 6 Eksenli Kolun hareket halindeyken çarpıp çarpışmadığını döndürür.

  • get_x — Uç efektörün mevcut x konumunu döndürür.

  • get_y — Uç efektörün mevcut y konumunu döndürür.

  • get_z — Uç efektörün mevcut z konumunu döndürür.

  • get_pitch — Uç efektörün mevcut perdesini döndürür.

  • get_roll — Uç efektörün mevcut zarını döndürür.

  • get_yaw — Uç efektörün mevcut yaw değerini döndürür.

  • can_arm_reach_to — 6 Eksenli Kolun belirtilen bir konuma ulaşıp ulaşamayacağını döndürür.

  • can_arm_reach_inc — 6 Eksenli Kolun belirtilen bir mesafeye kadar hareket edip edemeyeceğini döndürür.

  • can_end_effector_reach_to — Uç efektörün belirtilen bir yöne ulaşabilip ulaşamayacağını döndürür.

  • can_end_effector_reach_inc — Uç efektörün belirtilen miktarda dönebilme yeteneğine sahip olup olmadığını döndürür.

  • get_timeout — Hareket yöntemleri tarafından kullanılan geçerli zaman aşımı değerini döndürür.

  • is_connected — 6 Eksenli Kolun V5 Beynine bağlı olup olmadığını döndürür.

Geri Çağrı Fonksiyonları — ARM olayları gerçekleştiğinde fonksiyonları çalıştırın.

  • control_stopped — Kontrol durdurma etkinleştirildiğinde çalıştırılacak bir fonksiyonu kaydeder.

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

Yapıcı Fonksiyon — 6 Eksenli Kol nesnesini manuel olarak oluşturun.

  • Arm — 6 Eksenli Kol nesnesi oluşturur.

Eylemler#

move_to#

move_to komutu, 6 Eksenli Kolu belirtilen x, y ve z koordinatlarına hareket ettirir.

x, y ve z koordinatları, uç efektörün üç boyutlu uzaydaki konumunu tanımlar. Hedef konumun 6 Eksenli Kolun erişilebilir çalışma alanının dışında olabileceği durumlarda bu yöntemden önce can_arm_reach_to kullanın.

Usage:
arm1.move_to(x, y, z, wait)

Parametre

Tanım

x

Hedef konumun x koordinatı (milimetre cinsinden).

y

Hedef konumun y koordinatı (milimetre cinsinden).

z

Hedef konumun milimetre cinsinden z koordinatı.

wait

İsteğe bağlı. wait=True (varsayılan) hareket tamamlanana kadar projenin beklemesini sağlar. wait=False hareketi başlatır ve hemen bir sonraki kod satırına geçer.

# Move the 6-Axis Arm to (40, 140, 210)
arm1.move_to(40, 140, 210)

# Start moving, then print the y-position while the arm moves
arm1.move_to(-100, 200, 100, wait=False)

while not arm1.is_done():
    brain.screen.print(arm1.get_y())
    brain.screen.next_row()
    wait(0.25, SECONDS)

move_inc#

move_inc komutu, 6 Eksenli Kolu, mevcut konumundan x, y ve z eksenleri boyunca belirtilen bir mesafe kadar hareket ettirir.

Uç efektörün şu anki konumuna göre hareket etmek için bu yöntemi kullanın. Hareket, 6 Eksenli Kolu erişilebilir çalışma alanının dışına çıkarabilecekse, bu yöntemden önce can_arm_reach_inc kullanın.

Usage:
arm1.move_inc(x, y, z, wait)

Parametre

Tanım

x

X ekseni boyunca kat edilecek mesafe (milimetre cinsinden).

y

Y ekseni boyunca kat edilecek mesafe milimetre cinsinden.

z

Z ekseni boyunca kat edilecek mesafe (milimetre cinsinden).

wait

İsteğe bağlı. wait=True (varsayılan) hareket tamamlanana kadar projenin beklemesini sağlar. wait=False hareketi başlatır ve hemen bir sonraki kod satırına geçer.

# Move the 6-Axis Arm 100 millimeters along the y-axis
arm1.move_inc(0, 100, 0)

move_end_effector_to#

move_end_effector_to komutu, 6 Eksenli Kolun uç elemanını belirtilen bir sapma, yuvarlanma ve eğim yönüne döndürür.

Yönlendirme, uç elemanın nasıl döndürüldüğünü açıklar. yaw , z ekseni etrafında döner; roll , x ekseni etrafında döner ve pitch y ekseni etrafında döner.

Usage:
arm1.move_end_effector_to(yaw, roll, pitch, wait)

Parametre

Tanım

yaw

Hedef sapma açısı, derece cinsinden.

roll

Hedef yuvarlanma açısı, derece cinsinden.

pitch

Hedeflenen eğim açısı, derece cinsinden.

wait

İsteğe bağlı. wait=True (varsayılan) hareket tamamlanana kadar projenin beklemesini sağlar. wait=False hareketi başlatır ve hemen bir sonraki kod satırına geçer.

# Rotate the end effector to 90 degrees of roll
arm1.move_end_effector_to(0, 90, 0)

move_end_effector_inc#

move_end_effector_inc komutu, 6 Eksenli Kolun uç elemanını mevcut konumundan belirtilen bir sapma, yuvarlanma ve eğim miktarı kadar döndürür.

Bu yöntemi, uç elemanın mevcut sapma, yuvarlanma veya eğim açısına göre döndürmek için kullanın.

Usage:
arm1.move_end_effector_inc(yaw, roll, pitch, wait)

Parametre

Tanım

yaw

Yalpa açısındaki değişim, derece cinsinden.

roll

Yuvarlanma açısındaki değişim, derece cinsinden.

pitch

Perdedeki değişim, derece cinsinden.

wait

İsteğe bağlı. wait=True (varsayılan) hareket tamamlanana kadar projenin beklemesini sağlar. wait=False hareketi başlatır ve hemen bir sonraki kod satırına geçer.

# Rotate the end effector -50 degrees in pitch
arm1.move_end_effector_inc(0, 0, -50)

Mutatörler#

set_speed#

set_speed 6 Eksenli Kolun hareket yöntemleri için kullandığı hareket hızını ayarlar.

6 eksenli kolun hızı, projenin başlangıcında %50’ye ayarlanır.

Usage:
arm1.set_speed(speed)

Parametre

Tanım

speed

The movement speed of the 6-Axis Arm, from 1 to 100 percent.

# Set the 6-Axis Arm speed to 30%
arm1.set_speed(30)

set_end_effector_type#

set_end_effector_type , 6 Eksenli Kola takılan uç efektörün tipini ayarlar.

Uç efektör tipi değiştirildiğinde, 6 Eksenli Kol, seçilen alete uyacak şekilde z-ofsetini otomatik olarak ayarlar. Uç efektör tipi, projenin başlangıcında MAGNET olarak ayarlanır.

Usage:
arm1.set_end_effector_type(type)

Parametre

Tanım

type

6 Eksenli Kola takılan alet: MAGNET (Mıknatıslı Toplama Aleti) veya PEN (Kalem Tutucu Aleti).

# Set the end effector type to the Pen Holder Tool
arm1.set_end_effector_type(PEN)

set_end_effector_magnet#

set_end_effector_magnet , Manyetik Alma Aletini devreye sokar veya serbest bırakır.

Mıknatıs durumu, başka bir set_end_effector_magnet yöntemi tarafından değiştirilene kadar aktif kalır. Mıknatıs durumu, projenin başlangıcında False olarak sıfırlanır.

Usage:
arm1.set_end_effector_magnet(state)

Parametre

Tanım

state

Mıknatısla Nesne Toplama Aleti durumu: True , nesneleri alıp tutmak için; False tutulan nesneyi bırakmak ve yeni nesneleri toplamayı durdurmak için.

# Pick up objects and then drop them
arm1.set_end_effector_type(MAGNET)
arm1.set_end_effector_magnet(True)
wait(2, SECONDS)
arm1.set_end_effector_magnet(False)

set_pen_offset#

set_pen_offset , Kalem Tutucu Aleti 6 Eksenli Kola takıldığında kullanılan z ekseni ofsetini ayarlar.

Bu yöntemi kullanmadan önce uç efektör tipini PEN olarak ayarlayın. Kalem Tutucu Aracı seçili değilse, bu yöntemin hiçbir etkisi olmaz.

Kalem ofseti, Kalem Tutucu Aletinin üst kısmından Kuru Silinebilir Kalemin ucuna kadar olan mesafedir. Bir projenin başlangıcında, kalem ofseti 0olarak ayarlanır. 0 bir kalem ofseti, kolun z ekseni orijinini Kalem Tutucu Aletinin 6 Eksenli Kola bağlandığı noktaya yerleştirir.

Usage:
arm1.set_pen_offset(zOffset)

Parametre

Tanım

zOffset

Kalemin milimetre cinsinden sapma değeri.

# Set the end effector type to the Pen Holder Tool and set the pen offset
arm1.set_end_effector_type(PEN)
arm1.set_pen_offset(25)

set_control_stop#

set_control_stop komutu, 6 Eksenli Kol için kontrol durdurma özelliğini etkinleştirir.

Kontrol durdurma özelliği etkinleştirildiğinde, 6 Eksenli Kol anında tüm hareketleri durdurur ve proje yeniden başlatılana kadar başka hiçbir Kol hareket yöntemi çalıştırmaz.

Usage:
arm1.set_control_stop(state)

Parametre

Tanım

state

İsteğe bağlı. True (varsayılan) kontrol durdurmayı etkinleştirir. False kontrol durdurmayı etkinleştirmez.

# Stop the 6-Axis Arm and prevent further movement
arm1.set_control_stop()

set_timeout#

set_timeout , 6 Eksenli Kolu hareket ettirirken kullanılan zaman aşımı değerini ayarlar.

Bir işlem zaman aşımı süresi dolmadan tamamlanmazsa, proje bir sonraki kod satırına geçer.

Usage:
arm1.set_timeout(timeout, units)

Parametre

Tanım

timeout

Yeni zaman aşımı değeri.

units

İsteğe bağlı. Zaman birimi: MSEC (milisaniye, varsayılan), SECONDSveya SEC.

# Set the 6-Axis Arm timeout to 2 seconds
arm1.set_timeout(2, SECONDS)

Getters#

is_done#

is_done 6 eksenli kolun hareketinin tamamlanıp tamamlanmadığını döndürür.

Bu yöntem, wait=False parametresiyle bir hareket yöntemi çağrıldıktan sonra kullanışlıdır.

  • True — 6 Eksenli Kol hareketini tamamladı.

  • False — 6 Eksenli Kol hala hareket halinde.

Usage:
arm1.is_done()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Display the 6-Axis Arm's y-position while it moves
arm1.move_to(-100, 200, 100, wait=False)

while not arm1.is_done():
    brain.screen.print(arm1.get_y())
    brain.screen.next_row()
    wait(0.25, SECONDS)

is_crashed#

is_crashed 6 Eksenli Kolun hareket halindeyken çarpıp çarpışmadığını döndürür.

Çarpışma algılandığında, 6 Eksenli Kol motor hareketini durdurur ve gevşemiş gibi görünebilir. Bu, gerilimi azaltır ve motorları kazara hasardan korumaya yardımcı olur.

  • True — 6 Eksenli Kol çöktü.

  • False — 6 Eksenli Kol kaza yapmadı.

Usage:
arm1.is_crashed()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Quickly move to a new location
arm1.set_speed(100)
arm1.move_to(-30, 240, 40, wait=False)

# While moving, check for a crash
while True:
    if arm1.is_crashed():
        # Indicate a crash with the Brain screen
        brain.screen.print("Crash Detected")
        break

    wait(5, MSEC)

get_x#

get_x , uç elemanın mevcut x konumunu milimetre cinsinden döndürür.

Bu yöntemi kullanarak uç elemanın x ekseni boyunca şu anda nerede bulunduğunu okuyabilirsiniz.

Usage:
arm1.get_x()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Print the current x position of the 6-Axis Arm
brain.screen.print(arm1.get_x())

get_y#

get_y , uç elemanın mevcut y konumunu milimetre cinsinden döndürür.

Bu yöntemi kullanarak uç elemanın y ekseni boyunca şu anda nerede bulunduğunu okuyabilirsiniz.

Usage:
arm1.get_y()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Print the current y position of the 6-Axis Arm
brain.screen.print(arm1.get_y())

get_z#

get_z uç elemanın mevcut z konumunu milimetre cinsinden döndürür.

Bu yöntemi kullanarak uç elemanın z ekseni boyunca şu anda nerede bulunduğunu okuyabilirsiniz.

Usage:
arm1.get_z()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Print the current z position of the 6-Axis Arm
brain.screen.print(arm1.get_z())

get_pitch#

get_pitch , uç efektörün mevcut perdesini derece cinsinden döndürür.

Usage:
arm1.get_pitch()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Print the current pitch of the end effector
brain.screen.print(arm1.get_pitch())

get_roll#

get_roll , uç efektörün mevcut dönüş açısını derece cinsinden döndürür.

Usage:
arm1.get_roll()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Print the current roll of the end effector
brain.screen.print(arm1.get_roll())

get_yaw#

get_yaw , uç efektörün mevcut yaw açısını derece cinsinden döndürür.

Usage:
arm1.get_yaw()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Print the current yaw of the end effector
brain.screen.print(arm1.get_yaw())

can_arm_reach_to#

can_arm_reach_to , 6 Eksenli Kolun uç elemanını belirtilen x, y ve z koordinatlarına hareket ettirip ettiremeyeceğini döndürür.

move_to kullanmadan önce hedef konumu kontrol etmek için bu yöntemi kullanın.

  • True — 6 Eksenli Kol, istenen konuma ulaşabilir.

  • False — 6 Eksenli Kol istenen konuma ulaşamıyor.

Usage:
arm1.can_arm_reach_to(x, y, z)

Parametre

Tanım

x

Hedef konumun x koordinatı (milimetre cinsinden).

y

Hedef konumun y koordinatı (milimetre cinsinden).

z

Hedef konumun milimetre cinsinden z koordinatı.

# Move the 6-Axis Arm to (100, -20, 50) if it can reach
if arm1.can_arm_reach_to(100, -20, 50):
    arm1.move_to(100, -20, 50)

can_arm_reach_inc#

can_arm_reach_inc , 6 Eksenli Kolun uç elemanını mevcut konumundan belirtilen x, y ve z mesafesi kadar hareket ettirip ettiremeyeceğini döndürür.

move_inc kullanmadan önce göreceli hareketi kontrol etmek için bu yöntemi kullanın.

  • True — 6 Eksenli Kol, istenen hareketi gerçekleştirebilir.

  • False — 6 Eksenli Kol istenen hareketi gerçekleştiremiyor.

Usage:
arm1.can_arm_reach_inc(x, y, z)

Parametre

Tanım

x

X ekseni boyunca kat edilecek mesafe (milimetre cinsinden).

y

Y ekseni boyunca kat edilecek mesafe milimetre cinsinden.

z

Z ekseni boyunca kat edilecek mesafe (milimetre cinsinden).

# Increment the 6-Axis Arm 100 mm along the x-axis if possible
if arm1.can_arm_reach_inc(100, 0, 0):
    arm1.move_inc(100, 0, 0)

can_end_effector_reach_to#

can_end_effector_reach_to fonksiyonu, uç elemanın belirtilen bir sapma, yuvarlanma ve eğim yönüne dönebilme yeteneğini döndürür.

move_end_effector_to kullanmadan önce hedef yönelimini kontrol etmek için bu yöntemi kullanın.

  • True — Uç efektör istenen yöne ulaşabilir.

  • False — Uç efektör istenen yöne ulaşamıyor.

Usage:
arm1.can_end_effector_reach_to(yaw, roll, pitch)

Parametre

Tanım

yaw

Hedef sapma açısı, derece cinsinden.

roll

Hedef yuvarlanma açısı, derece cinsinden.

pitch

Hedeflenen eğim açısı, derece cinsinden.

# Rotate the end effector to 90 degrees of roll if possible
if arm1.can_end_effector_reach_to(0, 90, 0):
    arm1.move_end_effector_to(0, 90, 0)

can_end_effector_reach_inc#

can_end_effector_reach_inc , uç elemanın mevcut konumundan belirtilen bir sapma, yuvarlanma ve eğim miktarı kadar dönebilme yeteneğini döndürür.

move_end_effector_inc kullanmadan önce göreceli yönelim hareketini kontrol etmek için bu yöntemi kullanın.

  • True — Uç efektör istenen dönüşü yapabilir.

  • False — Uç efektör istenen dönüşü gerçekleştiremiyor.

Usage:
arm1.can_end_effector_reach_inc(yaw, roll, pitch)

Parametre

Tanım

yaw

Yalpa açısındaki değişim, derece cinsinden.

roll

Yuvarlanma açısındaki değişim, derece cinsinden.

pitch

Perdedeki değişim, derece cinsinden.

# Increment the end effector by 10 degrees of pitch if possible
if arm1.can_end_effector_reach_inc(0, 0, 10):
    arm1.move_end_effector_inc(0, 0, 10)

get_timeout#

get_timeout 6 Eksenli Kol hareket yöntemleri tarafından kullanılan zaman aşımı değerini milisaniye cinsinden döndürür.

Usage:
arm1.get_timeout()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Print the current movement timeout in milliseconds
brain.screen.print(arm1.get_timeout())

is_connected#

is_connected 6 Eksenli Kolun V5 Beynine bağlı olup olmadığını döndürür.

  • True — 6 Eksenli Kol, V5 Beynine bağlıdır.

  • False — 6 Eksenli Kol, V5 Beynine bağlı değildir.

Usage:
arm1.is_connected()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# Print whether the 6-Axis Arm is connected
brain.screen.print(arm1.is_connected())

Geri aramalar#

control_stopped#

control_stopped , kontrol durdurma etkinleştirildiğinde çalışan bir fonksiyonu kaydeder.

Bu yöntem, Event sınıfının bir örneğini döndürür.

Usage:
arm1.control_stopped(callback, arg)

Parametre

Tanım

callback

Kontrol durdurma etkinleştirildiğinde çalışan, ö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 a function to run when control stop is enabled
def when_control_stopped():
    brain.screen.print("The arm has been control stopped")

# Run when_control_stopped when the 6-Axis Arm is control stopped
arm1.control_stopped(when_control_stopped)

crashed#

crashed 6 eksenli kolun hareket halindeyken kaza yapması durumunda çalışan bir fonksiyonu kaydeder.

Çarpışma algılandığında, 6 Eksenli Kol motor hareketini durdurur ve gevşemiş gibi görünebilir. Bu, gerilimi azaltır ve motorları kazara hasardan korumaya yardımcı olur.

Usage:
arm1.crashed(callback)

Parametre

Tanım

callback

Bir kaza tespit edildiğinde çalışan, önceden tanımlanmış bir fonksiyon.

# Define what happens if a crash is detected
def arm_crash():
    brain.screen.print("Crash Detected")

# Run arm_crash when the 6-Axis Arm crashes
arm1.crashed(arm_crash)

İnşaatçılar#

Arm#

Arm 6 Eksenli Kol nesnesi oluşturur. 6 Eksenli Kol, bir projede kullanılmadan önce VEXcode V5’te manuel olarak oluşturulmalıdır.

Usage:
Arm(smartport)

Parametre

Tanım

smartport

6 Eksenli Kolun bağlı olduğu Akıllı Bağlantı Noktası, Ports.PORTxşeklinde yazılır; burada x bağlantı noktası numarasıdır.

# Construct a 6-Axis Arm named arm1 with the Arm class
arm1 = Arm(Ports.PORT1)