Ünite 2 / 9

Robotik ve Hareket Kontrolünde Yapay Zeka

Kazanimlar:

  • İleri/ters kinematik ve yörünge planlama problemlerini AI yardımıyla kurup çözebilme
  • Robot eklem limitleri, hız ve ivme kısıtlarını prompt'a bağlam olarak verip güvenli yörünge üretebilme
  • AI'ın ürettiği kinematik ve yörünge çıktısını sayısal ve fiziksel olarak doğrulayabilme

Bir robot kolunun ucundaki tutucuyu uzayda belirli bir noktaya, belirli bir yönelimde getirmek; kulağa basit gelir ama arkasında kinematik denklemler, eklem limitleri, tekillikler ve yörünge planlama vardır. Mekatronik mühendisi burada trigonometri, lineer cebir ve kontrol teorisini bir arada kullanır. Yapay zeka bu süreçte güçlü bir yardımcıdır: ileri kinematik denklemlerini kurabilir, ters kinematik için çözüm yaklaşımı önerebilir, bir yörüngeyi hız/ivme kısıtlarına göre parametrelendirebilir. Ancak robotik, mekatronikte fiziksel riskin en yüksek olduğu alanlardan biridir; AI'ın ürettiği bir açı dizisi, doğrulanmadan robota gönderilirse kol kendine, çevreye ya da operatöre çarpabilir. Bu ünitede kinematik ve yörünge planlamayı AI ile nasıl kurup nasıl doğrulayacağınızı göreceğiz.

İleri ve Ters Kinematik

İleri kinematik (FK): Eklem açıları biliniyorsa, uç işlevcinin (end-effector) konum ve yönelimini bulmak. Tek çözümü vardır, doğrudandır.

Ters kinematik (IK): Uç işlevcinin istenen konumu biliniyorsa, bunu sağlayacak eklem açılarını bulmak. Genellikle birden fazla çözümü vardır (dirsek yukarı/aşağı gibi), bazen hiç çözümü yoktur (erişilemez nokta), bazen sonsuz çözüm vardır (tekillik).

Kavram

Girdi

Çıktı

Çözüm sayısı

İleri kinematik

Eklem açıları

Uç konum/yönelim

Tek

Ters kinematik

Uç konum/yönelim

Eklem açıları

Çoklu / yok / sonsuz

İki eklemli düzlemsel bir kol için ters kinematik AI'a şöyle kurdurulabilir ve elle doğrulanabilir:

import numpy as npdef ters_kinematik_2r(x, y, L1, L2): """2 eklemli düzlemsel kol için IK. Açıları radyan döndürür (dirsek aşağı çözüm).""" r2 = x**2 + y**2 # Erişilebilirlik kontrolü: nokta çalışma uzayında mı? if np.sqrt(r2) > (L1 + L2) or np.sqrt(r2) < abs(L1 - L2): raise ValueError("Nokta erisilebilir calisma uzayi disinda") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2 = np.clip(cos_t2, -1.0, 1.0) # sayisal guvenlik t2 = np.arccos(cos_t2) # dirsek asagi t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) return np.degrees(t1), np.degrees(t2)# Dogrulama: L1=L2=1, hedef (1,1) -> beklenen t2=90 dereceprint(ters_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

Buradaki kritik satırlar AI'ın sık atladığı yerlerdir: erişilebilirlik kontrolü (nokta çalışma uzayında mı) ve `np.clip` (arccos girdisinin yuvarlama hatasıyla ±1 dışına çıkmasını engeller). Bu iki koruma olmadan kod, geçersiz bir noktada NaN üretir veya çöker.

İpucu: IK çözümü isterken AI'a "erişilebilirlik kontrolü ekle ve arccos girdisini clip ile sınırla" diye açıkça söyleyin. Bu iki satır, sahada en çok baş ağrıtan sessiz hataları önler.

Eklem Limitleri, Tekillik ve Çoklu Çözüm

Gerçek bir robotun her ekleminin bir açı aralığı (örneğin -170° ile +170°), bir hız limiti ve bir ivme limiti vardır. IK matematiksel olarak geçerli bir açı verse bile bu açı eklemin fiziksel aralığı dışındaysa kullanılamaz. Ayrıca robot bazı konfigürasyonlarda tekilliğe (singularity) düşer: iki eksen hizalanır, bir serbestlik derecesi kaybolur ve küçük bir uç hareketi için eklem hızları sonsuza gitmeye çalışır.

Bu yüzden IK çözümü tek başına yeterli değildir; her çözüm bir kabul edilebilirlik filtresinden geçmelidir:

def cozum_gecerli_mi(acilar_deg, limitler_deg): """acilar: [t1,t2,...], limitler: [(min,max),...]""" for aci, (amin, amax) in zip(acilar_deg, limitler_deg): if not (amin <= aci <= amax): return False, f"Eklem limiti asildi: {aci:.1f} deg ({amin},{amax}) disinda" return True, "OK"limitler = [(-170, 170), (-120, 120)]print(cozum_gecerli_mi([0.0, 90.0], limitler)) # (True, 'OK')print(cozum_gecerli_mi([0.0, 150.0], limitler)) # (False, 'Eklem limiti asildi...')

AI, IK'nın "matematiksel" çözümünü verebilir; ama eklem limitleri ve tekillik kaçınması sizin sisteminize özgüdür ve prompt'a bağlam olarak verilmelidir.

Yörünge Planlama

Robotu A noktasından B noktasına götürmek, iki açı arasında düz çizgi çekmek değildir. Ani hız değişimi mekanik şok ve titreşim yaratır. Bunun yerine yumuşak profiller kullanılır: trapez hız profili (sabit ivme–sabit hız–sabit yavaşlama) veya S-eğrisi (ivmenin de sınırlı olduğu, daha yumuşak). AI'a yörünge ürettirirken hedef, süre ve kısıtları vermelisiniz.

import numpy as npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Tek eklem icin trapez hiz profili. Konum dizisi doner.""" mesafe = abs(q1 - q0) yon = np.sign(q1 - q0) t_hizlan = v_max / a_max mesafe_hizlan = 0.5 * a_max * t_hizlan**2 if 2 * mesafe_hizlan > mesafe: # ucgen profil (v_max'a ulasilamaz) t_hizlan = np.sqrt(mesafe / a_max) t_sabit = 0.0 v_zirve = a_max * t_hizlan else: t_sabit = (mesafe - 2 * mesafe_hizlan) / v_max v_zirve = v_max T = 2 * t_hizlan + t_sabit t = np.arange(0, T, dt) # ... her t icin konum hesabi (hizlanma/sabit/yavaslama fazlarina gore) return t, T, v_zirvet, sure, vz = trapez_yorunge(0.0, 90.0, v_max=60.0, a_max=120.0)print(f"Toplam sure: {sure:.3f} s, zirve hiz: {vz:.1f} deg/s")

Buradaki mantık kontrolü şudur: eğer mesafe kısa ise motor v_max'a hiç ulaşamaz ve profil trapezden üçgene döner. AI bu durumu atlarsa, kısa hareketlerde yanlış süre hesaplanır. Kodu bilinen bir değerle (örneğin çok kısa bir mesafe) test ederek bunu doğrulayabilirsiniz.

Zayıf Prompt / Güçlü Prompt

ZAYIF:"Robot kolunu A'dan B'ye götüren yörünge yaz."(Kısıt yok: hız limiti? ivme? eklem aralığı? Kör çıktı.)GÜÇLÜ:"6 eksenli bir robot için eklem uzayında noktadan noktaya yörünge üret.Her eklem için hız limiti 90 deg/s, ivme limiti 180 deg/s^2, açı aralığıtabloda verildi. Trapez hız profili kullan, mesafe kısaysa üçgen profiledüş. Çıktıda her eklemin limitleri aşmadığını kontrol eden bir doğrulamafonksiyonu da yaz. Eklem limitleri: {{tablo}}"

Doğrulama: Simülasyondan Robota

AI'ın ürettiği yörünge, robota gitmeden önce şu sırayla doğrulanır:

  1. Sayısal: Her adımdaki eklem açısı, hızı ve ivmesi limitler içinde mi?
  2. Çarpışma: Yörünge boyunca kol kendine veya çevreye çarpıyor mu (mümkünse görselleştir/simüle et)?
  3. Tekillik: Yörünge bir tekillik bölgesinden geçiyor mu (Jacobian determinantı sıfıra yaklaşıyor mu)?
  4. Yavaş donanım testi: Robotu düşük hız oranıyla (örneğin %10) çalıştırıp gözle izle.
  5. Kademeli hız artışı: Her şey doğrulanınca hızı adım adım nominal değere çıkar.
Dikkat: Bir robotu ilk kez yeni bir yörüngeyle çalıştırırken daima hız geçersiz kılma (speed override) düşük olmalı ve E-stop elinizin altında bulunmalıdır. AI çıktısı "matematiksel olarak doğru" olsa bile fiziksel kurulumdaki bir ofset, ters eksen ya da kablo takılması ancak yavaş test ile ortaya çıkar.

Mini Vaka

Otomasyon mühendisi Ece, bir pick-and-place uygulaması için AI'dan eklem uzayında yörünge kodu istiyor. AI trapez profil üretiyor ama Ece kısa mesafeli bir hareketi test ettiğinde sürenin negatif çıktığını görüyor: kod, v_max'a ulaşılamayan üçgen profil durumunu ele almamış. Ece bunu prompt'a "mesafe kısaysa üçgen profile düş" diyerek düzelttiriyor. Ardından AI'ın verdiği eklem açılarını kendi limit tablosuna karşı doğrulama fonksiyonundan geçiriyor ve 5. eklemin bir noktada +125° istediğini, oysa limitin +120° olduğunu buluyor. Yörüngeyi yeniden planlatıp bu sefer robotu %10 hızda çalıştırarak izliyor. İlk turda gripper'ın masaya çok yaklaştığını görüp Z ofsetini düzeltiyor. AI dakikalar içinde çalışan bir taslak verdi; ama üç ayrı doğrulama (üçgen profil, eklem limiti, yavaş test) üç ayrı gerçek sorunu yakaladı.

Yaygın Hatalar

  • IK çözümünü eklem limitleri ve erişilebilirlik kontrolü olmadan kullanmak.
  • arccos/arcsin girdilerini clip etmeyip yuvarlama hatasında NaN üretmek.
  • Yörüngeyi hız/ivme limiti vermeden istemek ve mekanik şok yaratmak.
  • Tekillik bölgelerini görmezden gelip eklem hızlarının fırlamasına izin vermek.
  • Kısa mesafede trapez–üçgen profil geçişini atlayıp yanlış süre hesaplamak.
  • İlk yörünge testini tam hızda ve E-stop erişimi olmadan yapmak.

Özetle

  • İleri kinematik tek çözümlüdür; ters kinematik çoklu, yok veya sonsuz çözüm üretebilir.
  • IK çözümleri eklem limitleri, erişilebilirlik ve tekillik açısından mutlaka filtrelenir.
  • Yörünge planlama; trapez veya S-eğrisi gibi yumuşak, limit-uyumlu profiller kullanır.
  • Kısa mesafede profil trapezden üçgene döner; bu durum kodda ele alınmalıdır.
  • AI matematiği hızlandırır; limitler ve fiziksel kurulum bağlamı prompt'a girmelidir.
  • Yeni yörünge daima düşük hız oranı ve erişilebilir E-stop ile ilk kez çalıştırılır.

Uygulama görevi

İki veya üç eklemli bir kol modeli seçin (gerçek ya da hayali link uzunlukları ve eklem limitleriyle). AI'a bu bağlamla bir ters kinematik fonksiyonu ve bir yörünge planlayıcı ürettirin. Ardından: (1) IK çıktısını bilinen bir hedefle elle doğrulayın (açıları geri koyup FK ile aynı noktaya dönüyor musunuz), (2) en az bir erişilemez nokta ve bir eklem limiti aşan hedef vererek kodun bunları yakaladığını test edin, (3) kısa bir mesafede yörünge süresinin makul çıktığını kontrol edin. Kodun ilk versiyonunda kaç doğrulama sorunu bulduğunuzu ve her birini hangi katmanın yakaladığını yazın.