Robotik Mühendisliği
Robotik mühendisliğini mekanik yapı, eyleyiciler, sensörler, kinematik, dinamik, kontrol, gerçek zamanlı yazılım, otonomi, telemetri, HRI, ASR/TTS ve görüntü işleme ekseninde; AKINSOFT & AKINROBOTICS deneyimimle birleştiren kapsamlı ders notu.
2017 başında AKINSOFT ve AKINROBOTICS'te robot kontrolü, otonomi, davranış modelleme, konuşma teknolojileri, görüntü işleme ve telemetri aynı ürün geliştirme ortamında kesişiyordu. 2016-2019 arasındaki çalışmalarım, robotun mekanik ve elektronik gerçekliği ile yazılımın durum, zamanlama ve hata davranışını ayrı katmanlar değil, tek bir sistem olarak ele almamı gerektirdi.
Robotik bu dönemde benim için yalnız akademik bir konu değildi; doğrudan üretim ortamında yazılım geliştirdiğim bir alandı. O tarihte Kırıkkale Üniversitesi Bilgisayar Mühendisliği eğitimimi tamamlamıştım. AKINSOFT'ta çalışırken Sakarya Üniversitesi Mekatronik programından mezun oldum ve Afyon Kocatepe Üniversitesi Mekatronik Mühendisliği eğitimine başladım. Böylece algoritma, işletim sistemi, ağ, veri yapıları ve yazılım mühendisliği temelleri; elektrik motorları, sensörler, mekanik, kontrol, elektronik ve fiziksel sistem davranışıyla aynı mesleki problem üzerinde birleşmeye başladı.
Bir yıl önceki Baykar stajım da bu geçişte önemli bir basamaktı. TMS570/lwIP gömülü ağ çalışmaları, aviyonik donanım-yazılım hata ayıklaması, telemetri ve MISRA C/statik analiz deneyimi; robotik sistemlerde daha sonra karşılaştığım gerçek zamanlılık, gözlenebilirlik, fiziksel geri besleme ve güvenilir yazılım problemlerine doğrudan hazırlık sağladı. Bu bağın havacılık tarafını Aviyonik Sistemler ve İnsansız Hava Araçları notunda ayrıca ele alıyorum.
Robotik mühendisliğini tek bir cihaz sınıfı olarak değil, algılama, hesaplama, karar, kontrol ve fiziksel eylemin aynı zaman çizgisinde birleştiği sistem mühendisliği alanı olarak ele alıyorum. Kaynak kod doğru olsa bile sensör yanlış ölçüyorsa, zaman damgası eskiyse, aktüatör doygunluğa girdiyse veya operatör arayüzü fiziksel durumu yanlış gösteriyorsa robot doğru çalışmış sayılmaz.
Ünite 1: Robotik mühendisliğinin sistem çerçevesi
Robot ile otomasyon arasındaki sınır
Her otomatik makine robot değildir; her robot da tam otonom değildir. Robotik sistemler genellikle fiziksel çevreyle algılama ve eylem yoluyla etkileşir, programlanabilir davranış üretir ve en azından belirli durum değişikliklerine göre farklı tepki verebilir.
Bir sistemin otonomi düzeyi tek bir ikili özellik değildir. Aynı robot:
- bazı görevleri doğrudan operatör komutuyla,
- bazılarını yarı otonom,
- bazılarını tamamen otomatik
yürütebilir.
Bu nedenle robotik tasarımda ilk soru “robot otonom mu?” değil, hangi karar hangi katmanda ve hangi güven sınırları içinde veriliyor? olmalıdır.
Algıla-karar ver-eyle çevrimi
Bir robotu en genel biçimde şu çevrimle ifade etmek mümkündür:
çevre -> sensörler -> durum kestirimi -> karar / plan -> kontrol -> eyleyiciler -> çevreBu çevrimde her ok bir mühendislik sınırıdır. Sensör verisinin elektriksel işaretten sayısal değere dönüşmesi, zamanlanması, filtrelenmesi ve bir üst katmana taşınması ayrı problemlerdir. Benzer biçimde üst düzey “kolu uzat” isteği, motor sürücüsünün anlayacağı gerilim/akım/PWM düzeyine doğrudan çevrilemez; arada kinematik, yörünge ve kontrol katmanları bulunur.
Robotik neden disiplinler arasıdır?
Robotik mühendisliği aynı anda şu alanlara dayanabilir:
- mekanik tasarım ve mukavemet,
- elektrik ve elektronik,
- sensörler ve ölçme,
- motorlar, sürücüler, hidrolik ve pnömatik,
- kontrol kuramı,
- sinyal işleme,
- gömülü sistemler,
- gerçek zamanlı yazılım,
- bilgisayarlı görü,
- konuşma işleme,
- yapay zeka,
- ağ ve haberleşme,
- insan-makine etkileşimi.
Mekatronik sistemlerin temelleri ile robotik arasındaki güçlü bağ buradan gelir. Mekatronik, bu alt sistemlerin birlikte tasarlanmasını öğretir; robotik ise bu bütünleşmeyi algılama, davranış ve hareket üretimiyle daha ileri taşır.
Ünite 2: Robot mimarisi ve temel alt sistemler
Mekanik gövde ve kinematik yapı
Robotun fiziksel gövdesi yük taşır, eklemleri sınırlar ve çalışma uzayını belirler. Manipülatörlerde bağlantı elemanları ve eklemler bir kinematik zincir oluşturur. Mobil robotlarda ise şasi, tekerlek/palet/bacak geometrisi ve kütle dağılımı hareket kabiliyetini belirler.
Bir robotun yazılımını tasarlarken mekanik geometriyi “donanım ekibinin konusu” olarak dışarıda bırakmak doğru değildir. Eklemin fiziksel hareket aralığı, boşluğu, sürtünmesi, redüksiyon oranı ve atalet momenti kontrol yazılımının davranışını doğrudan etkiler.
Eklemler ve serbestlik derecesi
En temel eklem türleri:
- dönel eklem,
- prizmatik eklem
olarak düşünülebilir. Bir dönel eklem açısal, prizmatik eklem doğrusal hareket üretir.
Bir robotun serbestlik derecesi, bağımsız hareket değişkenlerinin sayısını ifade eder. Üç boyutlu uzayda serbest bir rijit cismin altı serbestlik derecesi vardır:
- x, y, z doğrusal hareketleri,
- roll, pitch, yaw dönmeleri.
Bir manipülatörün eklem sayısı ile görev uzayındaki etkin serbestlik derecesi her zaman birebir aynı anlamı taşımaz. Kısıtlar, kapalı kinematik zincirler ve tekil konumlar kullanılabilir hareket uzayını değiştirir.
Uç eyleyici
Manipülatörün çevreyle doğrudan iş yapan son bileşeni uç eyleyicidir. Uç eyleyici:
- iki veya üç parmaklı tutucu,
- vakum tutucu,
- elektromıknatıs,
- kaynak tabancası,
- boya aparatı,
- tornavida,
- ölçüm probu
olabilir.
Uç eyleyici seçimi yalnız “nesneyi tutabiliyor mu?” sorusuna indirgenemez. Nesnenin yüzeyi, ağırlığı, kırılganlığı, izin verilen kavrama kuvveti, konum toleransı ve süreç hızı birlikte değerlendirilir.
Robot sınıfları
Mekanik yapı ve kullanım biçimine göre yaygın sınıflar arasında:
- Kartezyen robotlar,
- silindirik robotlar,
- küresel/polar robotlar,
- SCARA yapıları,
- mafsallı robot kolları,
- paralel robotlar,
- tekerlekli/paletli mobil robotlar,
- bacaklı robotlar,
- insansı robotlar
bulunur.
Bu sınıflandırmalar “en iyi robot” seçmez. Her geometri çalışma uzayı, rijitlik, hız, taşıma kapasitesi, kontrol karmaşıklığı ve maliyet arasında farklı bir ödünleşim oluşturur.
Ünite 3: Eyleyiciler, sürücüler ve güç sistemi
Elektrik motorları
Robotik sistemlerde hareket çoğunlukla elektrik motorlarıyla üretilir. DC motor, BLDC motor, step motor ve servo sistemlerin avantajları farklıdır.
Bir motor seçerken yalnız azami devir sayısına bakmak yeterli değildir. Temel değişkenler:
- sürekli ve tepe moment,
- hız aralığı,
- moment-hız eğrisi,
- rotor ataleti,
- verim,
- besleme gerilimi,
- sürücü gereksinimi,
- ısıl sınırlar,
- geri besleme çözünürlüğüdür.
Motorun katalogda yüksek hız üretebilmesi, robot ekleminde aynı hızın kullanılabileceği anlamına gelmez. Redüktör, yük ataleti, mekanik dayanım ve kontrol çevrimi birlikte sınır koyar.
Servo sistem
Servo, yalnız küçük model motorlarının adı değildir. Genel anlamıyla servo sistem; hedef büyüklüğü geri beslemeyle izleyen hareket sistemidir.
Basit bir konum servosu şu çevrimi kurar:
hedef konum -> kontrolcü -> motor sürücüsü -> motor/eklem -> konum sensörü -> geri beslemeAKINSOFT dönemimde robotik kontrol yazılımında fiziksel hareketin yalnız komut üretmekten ibaret olmadığını sürekli gördüm. Komutun “gönderildi” olması ile eklemin gerçekten hedefe ulaşması farklı durumlardır. Üst seviye davranışın doğru ilerleyebilmesi için geri besleme ve zamanlama bilgisinin güvenilir olması gerekir.
Aktarma organları
Motorun hareketi doğrudan kullanılmayabilir. Dişli kutuları, kayış-kasnak, zincir, vida-mil, harmonik redüktör veya başka mekanizmalar:
- hızı azaltabilir,
- momenti artırabilir,
- hareket yönünü değiştirebilir,
- doğrusal harekete dönüştürebilir.
Aktarma oranı büyüdükçe motor tarafında gereken moment azalabilir; buna karşılık boşluk, sürtünme, esneklik ve verim kaybı kontrol doğruluğunu etkileyebilir.
Hidrolik ve pnömatik eyleyiciler
Yüksek kuvvet gereken uygulamalarda hidrolik sistemler; hızlı, basit doğrusal hareketlerde pnömatik sistemler kullanılabilir. Bunların kontrol problemi elektrik motorlarından farklıdır. Basınç, valf dinamiği, sıkıştırılabilirlik, kaçak ve akış karakteristiği önem kazanır.
Sakarya Üniversitesi Mekatronik eğitiminde elektrik motorları, hidrolik ve pnömatik gibi konuların aynı müfredatta bulunmasının mesleki karşılığını robotik sistemlerde daha açık gördüm: yazılımın “hareket” olarak gördüğü soyut komut, farklı fiziksel eyleyici türlerinde tamamen farklı dinamiklere sahiptir.
Güç bütçesi
Mobil robotlarda enerji sınırlı bir kaynaktır. Toplam güç bütçesi yalnız motorlardan oluşmaz:
- işlemci/GPU,
- sensörler,
- kamera,
- haberleşme birimleri,
- sürücüler,
- ses sistemi,
- yardımcı elektronik
aynı kaynağı paylaşabilir.
Ani motor akımı, besleme geriliminde düşüm oluşturarak işlemci veya sensör tarafını etkileyebilir. Bu nedenle güç bütünlüğü, yazılımda görülen rastlantısal yeniden başlama veya iletişim hatalarının gerçek nedeni olabilir.
Ünite 4: Sensörler, ölçüm ve robot algısı
İç ve dış algılama
Robot sensörleri işlevsel olarak iki grupta düşünülebilir:
İç algılama: robotun kendi durumunu ölçer.
- eklem konumu,
- hız,
- motor akımı,
- sıcaklık,
- batarya seviyesi,
- yönelim.
Dış algılama: çevreyle ilgili bilgi sağlar.
- kamera,
- lidar,
- ultrasonik sensör,
- kuvvet/tork sensörü,
- yakınlık sensörü,
- mikrofon,
- ışık sensörü.
Bu ayrım mutlak değildir. Örneğin bir kamera hem çevre algısı hem kalibrasyon/konum kestirimi için kullanılabilir.
Ölçüm, gerçeklik değildir
Her sensör şu sorularla birlikte ele alınmalıdır:
- çözünürlüğü nedir?
- doğruluğu nedir?
- bias var mı?
- gürültü spektrumu nasıl?
- örnekleme hızı nedir?
- gecikmesi ne kadar?
- doygunluk sınırı nedir?
- veri ne zaman geçersiz kabul edilir?
Ölçüm değerini fiziksel gerçekliğin kendisi gibi kullanmak, robotik yazılımda en tehlikeli soyutlama hatalarından biridir.
Enkoderler
Döner veya doğrusal enkoderler eklem konumunu ve buradan türetilen hızı ölçmek için kullanılır. Artımlı enkoder bağıl hareket verir; mutlak enkoder güç kesilse bile konumu kodlayabilir.
Konumdan hız türetirken fark alma işlemi ölçüm gürültüsünü büyütebilir:
v[k] ≈ (x[k] - x[k-1]) / ΔtBu nedenle filtreleme ile gecikme arasında denge gerekir. Aşırı filtreleme daha temiz grafik üretirken kontrol için eski veri sağlayabilir.
IMU ve yönelim
IMU; ivmeölçer ve jiroskop başta olmak üzere hareket kestiriminde kullanılan sensörleri bir araya getirir. Jiroskop entegrasyonu zamanla sürüklenebilir; ivmeölçer ise doğrusal ivme ve yerçekimini birlikte görür. Manyetometre çevresel manyetik bozulmadan etkilenebilir.
Bu yüzden tek sensör yerine sensör füzyonu kullanmak yaygındır. Filtreleme ve durum kestirimi yaklaşımı probleme göre tamamlayıcı filtre, Kalman ailesi veya başka yöntemlerle kurulabilir.
Kamera ve görüntü işleme
Kamera yüksek bilgi yoğunluğu sağlar fakat ham görüntü doğrudan “anlam” değildir. Tipik bir işleme hattı:
kamera -> kare yakalama -> ön işleme -> özellik/nesne çıkarımı -> izleme -> karar katmanıAKINSOFT ve AKINROBOTICS'te görüntü işleme çalışmalarımda yalnız algoritmanın tek karede doğru sonuç vermesi yeterli değildi. Sonucun robot davranışında kullanılabilmesi için gecikme, güncellik ve üst seviye davranışla zaman uyumu da gerekiyordu. Bir algılama sonucu 500 ms önceki sahneyi doğru tanımlıyorsa, hareketli robot için bugün yanlış kararın girdisi olabilir.
Ses algısı
Mikrofon dizisi veya tek mikrofon, robotun sesli komut alması ve çevresel sesleri işlemesi için kullanılabilir. Robotik bağlamda konuşma tanıma sonucu yalnız metin değildir; fiziksel eylem tetikleyebilen bir kontrol girdisidir. Bu nedenle güven eşiği, bağlam, yanlış kabul ve iptal davranışı önemlidir.
Ünite 5: Koordinat sistemleri ve kinematik
Konum ve yönelim
Robotik hesaplamalarda “nerede?” sorusu tek başına yeterli değildir; “hangi yönde?” sorusu da gerekir. Bir uç eyleyicinin uzaydaki durumu genellikle konum ve yönelim birlikte düşünülerek ifade edilir.
Üç boyutlu konum:
p = [x y z]^Tile gösterilebilir. Yönelim için dönme matrisi, Euler açıları veya quaternion gibi temsiller kullanılabilir.
Referans çerçeveleri
Bir robot üzerinde birden fazla koordinat çerçevesi bulunabilir:
- dünya çerçevesi,
- robot tabanı,
- gövde,
- eklemler,
- uç eyleyici,
- kamera,
- hedef nesne.
Bir kameranın ölçtüğü nesne konumunu robot koluna vermek için kamera ile robot tabanı arasındaki geometrik dönüşüm bilinmelidir.
Homojen dönüşüm matrisi konum ve yönelimi tek yapıda taşır:
T = [ R p ]
[ 0 1 ]Burada R 3x3 dönme matrisi, p ise 3x1 konum vektörüdür.
İleri kinematik
İleri kinematik, eklem değişkenleri bilindiğinde uç eyleyicinin konum ve yönelimini bulur:
q -> xSeri manipülatörde dönüşümler zincirlenir:
T_0^n(q) = A_1(q_1) A_2(q_2) ... A_n(q_n)Bu hesap, ekranda robot modelini çizmekten hareket kontrolüne kadar birçok işlevin temelidir.
Ters kinematik
Ters kinematikte istenen uç eyleyici duruşundan eklem değerleri aranır:
x -> qProblem ileri kinematiğe göre daha zordur. Bir hedef için:
- tek çözüm,
- birden fazla çözüm,
- sonsuz çözüm,
- hiç çözüm
olabilir.
Yazılım yalnız matematiksel çözüm üretmemelidir. Eklem limitleri, çarpışma, mekanik kablo sınırları ve mevcut konuma göre en uygun çözüm de değerlendirilmelidir.
Çalışma uzayı
Robotun ulaşabildiği konum ve yönelimlerin tamamı çalışma uzayını oluşturur. Çalışma uzayı mekanik geometri, eklem sınırları ve tekilliklerle belirlenir.
Bir hedefin koordinat olarak tanımlanabilmesi onun robot tarafından erişilebilir olduğu anlamına gelmez.
Ünite 6: Jacobian, tekillik ve robot dinamiği
Diferansiyel kinematik
Uç eyleyici hızı ile eklem hızları arasındaki ilişki Jacobian matrisiyle ifade edilir:
x_dot = J(q) q_dotJ(q) robot konfigürasyonuna bağlıdır. Robot hareket ettikçe Jacobian da değişir.
Bu ilişki hız kontrolü, kuvvet dönüşümü, ters kinematiğin sayısal çözümleri ve tekillik analizi için önemlidir.
Tekillik
Bazı robot konfigürasyonlarında Jacobian gerekli rank koşulunu kaybedebilir. Bu durumda robot belirli görev uzayı yönlerinde hareket kabiliyetini kaybedebilir veya küçük görev uzayı hızı için çok büyük eklem hızları gerekebilir.
Tekillik yalnız matematiksel bir istisna değildir. Gerçek sistemde:
- hız komutlarının büyümesi,
- moment taleplerinin artması,
- kontrolün hassaslaşması,
- yol planlayıcının başarısız olması
gibi sonuçlar doğurabilir.
Kuvvet ve moment ilişkisi
İdealize edilmiş biçimde uç eyleyicideki kuvvet ile eklem momentleri arasında:
τ = J(q)^T Filişkisi kullanılır.
Bu, robot kolunun çevreye uyguladığı kuvvetin eklemlerde nasıl bir yük oluşturduğunu anlamada temel araçlardan biridir.
Dinamik model
Seri bir robotun hareket denklemi genel biçimde:
M(q) q_ddot + C(q, q_dot) q_dot + g(q) + f(q_dot) = τşeklinde ifade edilebilir.
Burada:
M(q): kütle/atalet matrisi,C: Coriolis ve merkezkaç etkileri,g(q): yerçekimi,f: sürtünme,τ: eklem momentleridir.
Düşük hızda çalışan basit bir sistemde ayrıntılı dinamik model gerekmeyebilir. Yüksek hız, yüksek hassasiyet veya değişken yükte ise yalnız kinematik yeterli olmaz.
Ünite 7: Robot kontrolü ve geri besleme
Açık ve kapalı çevrim
Açık çevrim sistemde komut verilir fakat çıktı üzerinden düzeltme yapılmaz. Kapalı çevrimde ise ölçülen durum hedefle karşılaştırılır.
hata = hedef - ölçülenBu yapı Otomatik Kontrol notunun robotik karşılığıdır.
PID kontrol
Yaygın kontrol yapılarından biri PID'dir:
u(t) = Kp e(t) + Ki ∫e(t)dt + Kd de(t)/dt- P terimi mevcut hataya,
- I terimi biriken hataya,
- D terimi hata değişim hızına
tepki verir.
Robot eklemlerinde PID yaygındır ancak her problem için tek başına yeterli değildir. Besleme ileri denetim, yerçekimi telafisi, durum geri beslemesi, tork kontrolü ve model tabanlı yöntemler gerekebilir.
Kaskat kontrol
Bir servo sistemde çevrimler katmanlı olabilir:
konum çevrimi -> hız çevrimi -> akım/moment çevrimi -> motorİç çevrim daha hızlı çalışır. Dış çevrim daha üst düzey hedefi üretir. Yazılım mimarisi de bu zaman ölçeklerine uymalıdır.
Doygunluk ve anti-windup
Gerçek eyleyici sonsuz komut üretemez. Motor gerilimi, akım, hız ve mekanik sınırlar vardır. Kontrolcü bu sınırları yok sayarsa özellikle integral terimi birikip toparlanmayı geciktirebilir.
Robot kontrolünde yazılımın fiziksel sınırları modellemesi bu nedenle zorunludur.
Güvenli durum
Haberleşme kopması, sensör geçersizliği veya kontrolcü hatasında sistemin nasıl davranacağı önceden tanımlanmalıdır. “Komut gelmiyorsa son komutu sürdür” bazı sistemlerde tehlikelidir. Başka bir sistemde ise ani duruş daha tehlikeli olabilir.
Güvenli davranış robotun görevine ve fiziksel yapısına göre tasarlanır.
Ünite 8: Hareket planlama, görev yürütme ve otonomi
Yol ve yörünge ayrımı
Yol, geometrik olarak nereden geçileceğini; yörünge ise bunun zamanla nasıl yürütüleceğini ifade eder.
Bir yol çarpışmasız olabilir ancak hızlanma ve moment sınırları nedeniyle fiziksel olarak uygulanamayabilir.
Arama ve planlama
Izgara veya grafik tabanlı ortamlarda Dijkstra ve A* gibi arama algoritmaları; sürekli yüksek boyutlu uzaylarda örnekleme tabanlı yöntemler kullanılabilir. Robotik planlama problemi yalnız en kısa yolu bulmak değildir. Maliyet fonksiyonu:
- mesafe,
- enerji,
- çarpışma riski,
- dönüş sayısı,
- zaman,
- görüş alanı
gibi etkenleri içerebilir.
Davranış katmanı
AKINROBOTICS'te AR-CORE üzerinde çalışırken üst seviye davranışın tek bir “AI fonksiyonu” olmadığını doğrudan gördüm. Bir davranış:
- başlatılmalı,
- alt adımlara ayrılmalı,
- olaylarla kesilebilmeli,
- başarısızlık üretmeli,
- gerektiğinde geri alınmalı,
- başka davranışlarla önceliklendirilmelidir.
Bu nedenle otonomi çoğu zaman durum makineleri, davranış ağaçları, görev grafikleri, olay sistemleri ve planlayıcıların birlikte çalıştığı bir yürütme problemidir.
Ağaç ve devre tabanlı görsel programlama
AKINSOFT dönemimde davranışların görsel olarak tanımlanmasını sağlayan ağaç/devre yaklaşımı üzerinde belirgin biçimde çalıştım. Buradaki esas problem blokları ekrana yerleştirmek değildi; kullanıcı tarafından kurulan yapının çalışma zamanında güvenilir biçimde yürütülmesiydi.
Bir görsel davranış editöründe:
- geçersiz bağlantılar engellenmeli,
- veri tipleri korunmalı,
- parametreler doğrulanmalı,
- döngüler ve bağımlılıklar kontrol edilmeli,
- çalışma zamanı hatası görünür olmalı,
- yürütme motoru UI'dan ayrılmalıdır.
Bu yaklaşım daha sonra farklı yazılım alanlarında kullandığım önemli bir ilkeyi pekiştirdi: kullanıcıya esneklik verirken geçersiz durum uzayını daraltmak gerekir.
Otonomi ve belirsizlik
Sensör verisi kesin değildir. Otonom davranış katmanı bu nedenle “nesne bulundu/bulunmadı” gibi aşırı kesin ikilikler yerine güven, yaş, kaynak ve geçerlilik bilgisini gerektiğinde taşımalıdır.
Fiziksel sistemde yanlış pozitif sonuç, yalnız hatalı bir etiket değil, gerçek hareket üretebilir.
Ünite 9: Gömülü sistem ve robot yazılım mimarisi
Katmanlı mimari
Bir robot yazılımını şu katmanlarla düşünmek yararlıdır:
Donanım / sürücüler
↓
Cihaz soyutlama ve haberleşme
↓
Gerçek zamanlı kontrol
↓
Durum ve yetenek servisleri
↓
Davranış / görev / otonomi
↓
Operatör arayüzü ve harici sistemlerHer projede bu kadar kesin katman bulunması gerekmez; fakat sorumlulukların ayrılması donanım değişikliğinin üst seviyedeki bütün yazılıma yayılmasını önler.
AROS / AR-CONTROL deneyimi
AKINSOFT & AKINROBOTICS çalışmalarımın merkezinde AROS / AR-CONTROL robot kontrol yazılımı vardı. Burada tek bir motor komutundan çok daha geniş bir problemle uğraştım:
- farklı alt sistemlerin durumunu izleme,
- komut sıralaması,
- haberleşme sürekliliği,
- hata sonrası toparlanma,
- fiziksel sistem ile yazılım durumunun eşleştirilmesi,
- üst seviye davranıştan gelen isteklerin güvenli biçimde yürütülmesi.
C, C++, C#, Java ve Python gibi farklı dilleri aynı ürün ailesinin farklı ihtiyaçlarında kullandım. Donanıma yakın zaman duyarlı kod ile GUI veya üst seviye karar katmanının gereksinimleri aynı değildi. Dil ve çalışma ortamı seçimini katmanın sorumluluğuna göre değerlendirmek burada doğal hale geldi.
Mikrodenetleyiciler ve çevre birimleri
Robotun alt seviyesinde:
- GPIO,
- PWM,
- ADC,
- enkoder sayıcıları,
- UART,
- SPI,
- I2C,
- CAN veya benzeri veri yolları
gibi çevre birimleri bulunabilir.
Bu katmanda zamanlama, interrupt davranışı, buffer yönetimi ve hata durumları fiziksel sonuç üretir. Mikroişlemci, Mikrodenetleyiciler, FPGA ve PLC alanındaki çalışmalarım ile 2015 Baykar'daki TMS570/lwIP deneyimi, AKINROBOTICS'teki robot yazılımını anlamamı kolaylaştıran doğrudan altyapıydı.
Gerçek zamanlılık
Gerçek zamanlı sistem, yalnız hızlı sistem değildir. Önemli olan hesaplamanın doğru sonuca doğru zaman sınırı içinde ulaşmasıdır.
Bir görüntü işleme görevi 200 ms geç sonuç verdiğinde kullanıcı yalnız küçük bir gecikme görebilir. Aynı 200 ms, denge veya eklem kontrol çevriminde kabul edilemez olabilir.
Bu nedenle robot yazılımında gecikme tek sayı olarak ölçülmez; gecikmenin hangi kontrol halkasında oluştuğu belirleyicidir.
Eşzamanlılık
Robot üzerinde aynı anda:
- sensör okuma,
- kontrol,
- telemetri,
- görüntü işleme,
- konuşma tanıma,
- kullanıcı komutu,
- loglama
çalışabilir.
Thread sayısını artırmak tek başına çözüm değildir. Paylaşılan durumun sahipliği, kilit süresi, öncelik terslenmesi, kuyruk büyümesi ve eski verinin işlenmesi kontrol edilmelidir.
Ünite 10: Haberleşme, telemetri ve dağıtık durum
Komut ile durum aynı şey değildir
Bir komutun gönderilmesi, alındığı veya uygulandığı anlamına gelmez. Sağlam bir protokol gerektiğinde şu durumları ayırmalıdır:
oluşturuldu -> gönderildi -> alındı -> kabul edildi -> uygulanıyor -> tamamlandı / başarısızRobot GUI'sinin “başarılı” işareti vermesi için hangi aşamanın yeterli olduğu açıkça tanımlanmalıdır.
Telemetri
Telemetri yalnız hata ayıklama çıktısı değildir. Robotun çalışma anındaki durumunu daha sonra açıklayabilmek için mühendislik kanıtıdır.
Yararlı telemetri:
- zaman damgası,
- durum kimliği,
- sensör değerleri,
- komutlar,
- kontrolcü çıktıları,
- hata kodları,
- bağlantı durumu,
- kaynak kullanımı
gibi veriler taşıyabilir.
AR-CONTROL ve AR-GUI çalışmalarında telemetriyi, fiziksel robot ile operatör arayüzü arasındaki durum tutarlılığını görmenin temel araçlarından biri olarak kullandım.
Veri güncelliği
Dağıtık robotik sistemde “en son alınan değer” her zaman “şu an geçerli değer” değildir. Paket gecikmiş, sırada beklemiş veya yeniden iletilmiş olabilir.
Bu nedenle veriye:
- ölçüm zamanı,
- alınma zamanı,
- sıra numarası,
- geçerlilik süresi
gibi bağlamlar eklemek gerekebilir.
Bağlantı kaybı
Bağlantı kaybı yalnız ağ katmanı hatası değildir. Robotun görev mantığında bir olaydır.
Üst seviye sistem şu sorulara cevap vermelidir:
- robot son görevi sürdürmeli mi?
- durmalı mı?
- güvenli konuma dönmeli mi?
- yerel otonomiyle devam etmeli mi?
- operatöre hangi durum gösterilmeli?
Bu düşünce Bilgisayar Ağları ile robot kontrolü arasındaki doğrudan bağdır.
Ünite 11: İnsan-robot etkileşimi, GUI, konuşma ve görüntü
AR-GUI ve operatör arayüzü
AR-GUI üzerinde çalışırken bir robot kontrol arayüzünün klasik CRUD ekranından tamamen farklı olduğunu gördüm. Kullanıcı ekranda gördüğü durumun fiziksel dünyadaki robotla uyumlu olduğuna güvenmek zorundadır.
Arayüz:
- bağlantı durumunu,
- robot modunu,
- aktif görevi,
- sensör/eklem durumunu,
- kritik hatayı,
- uygulanmakta olan komutu
ayırt edilebilir biçimde göstermelidir.
Eski telemetriyi yeni veri gibi sunmak veya uygulanmamış bir komutu uygulanmış göstermek yalnız UX hatası değildir; operasyonel hata üretir.
Bu yaklaşım günümüzde UI/UX mühendisliği çalışmalarımda savunduğum “durum görünürlüğü” ilkesinin fiziksel sistemlerdeki karşılığıdır.
Konuşma tanıma
AKINROBOTICS'te belirgin biçimde uğraştığım alanlardan biri HMM tabanlı otomatik konuşma tanıma idi. Günümüzde transformer tabanlı ASR yaygın olsa da o dönemde akustik özellik çıkarımı, HMM durumları, sözlük/dil bilgisi ve karar süreçleri daha görünür bileşenlerdi.
Robotik kullanımda ASR için doğruluk tek ölçüt değildir. Şunlar da önemlidir:
- yanlış komut kabul oranı,
- gürültü altında davranış,
- komut başlangıç/bitiş tespiti,
- tanıma gecikmesi,
- güven eşiği,
- mevcut davranış bağlamı.
Bir masaüstü dikte sistemindeki yanlış kelime kullanıcı tarafından düzeltilebilir. Fiziksel hareket başlatan yanlış robot komutu ise farklı güvenlik sınıfındadır.
Konuşma işleme tarafındaki bu erken deneyim, daha sonra MFCC ile özellik çıkarımı, otomatik konuşma tanıma ve üretim ölçekli ASR sistemleri üzerinde çalışmamın teknik başlangıç noktalarından biri oldu.
Konuşma sentezleme
TTS, robotun yalnız “konuşmasını” sağlamaz; sistem durumunu insana ileten bir çıktı kanalıdır. Sesli çıktı:
- hareketle zamanlanmalı,
- kesilebilir olmalı,
- yanlış durum bildirmemeli,
- yüksek öncelikli uyarıyla çatışmamalıdır.
Robotun “işlem tamamlandı” demesi ile görevin gerçekten tamamlanması aynı state değişimine bağlı olmalıdır.
Görüntü işleme
Robotik görüntü işleme algoritması; kamera, kalibrasyon, görüntü zamanı, işlem gecikmesi ve davranış katmanından ayrı düşünülemez.
Bir nesne algılama sisteminin yüksek doğruluğu, sonuç fiziksel hareket başlamadan önce geçerliliğini yitiriyorsa yeterli değildir. Bu nedenle throughput kadar age-of-information, yani bilginin yaşı da önemlidir.
Ünite 12: Endüstriyel, mobil ve insansı robotlar
Endüstriyel robotlar
Endüstride robotların güçlü olduğu işler genellikle:
- tekrarlı,
- hassas,
- ağır,
- tehlikeli,
- yüksek çevrim hızına sahip
görevlerdir.
Robotik uygulamalar içinde punta ve ark kaynağı, boyama, yükleme-boşaltma ve montaj; tekrarlanabilirlik ile proses güvenliğinin birlikte değerlendirildiği klasik endüstriyel örneklerdir.
Bir endüstriyel robot seçerken yalnız erişim mesafesi değil:
- taşıma kapasitesi,
- tekrarlanabilirlik,
- çevrim süresi,
- çalışma uzayı,
- proses kuvveti,
- güvenlik bölgesi,
- entegrasyon maliyeti,
- bakım kabiliyeti
değerlendirilmelidir.
Mobil robotlar
Mobil robotlarda ana problem manipülatörden farklıdır. Robotun kendi tabanı çevrede hareket ettiği için konum kestirimi, haritalama ve yol planlama öne çıkar.
Tekerlek kinematiği, kayma, zemin koşulları ve sensör görüşü lokalizasyonun doğruluğunu belirler. GPS dış ortamda yardımcı olabilir; iç ortamda lidar, kamera, odometri ve başka sensörlerin birleşimi gerekebilir.
Tehlikeli ortam robotları
Robotların önemli kullanım alanlarından biri insan için riskli ortamlardır. Maden, biyokimyasal numune alma, radyasyon ve yangın gibi ortamlar; robotun yalnız görevi değil, kendi çevresel dayanımını da tasarım problemi haline getirir.
Bu uygulamalar “insanı robota değiştir” kadar basit değildir. Robotun kendisi de:
- sıcaklık,
- radyasyon,
- su,
- toz,
- patlayıcı atmosfer,
- kimyasal kirlenme
nedeniyle arızalanabilir. Dolayısıyla çevre dayanımı görev tasarımının parçasıdır.
İnsansı robotlar
İnsansı robot, insan biçimini yalnız görsel amaçla taklit etmez. İnsan ortamlarına uyum, merdiven/kapı/araç gibi insan ölçülerine göre tasarlanmış çevrede çalışma ve doğal etkileşim gibi hedefler humanoid tasarımı anlamlı kılar.
Buna karşılık serbestlik derecesi arttıkça:
- kinematik,
- denge,
- enerji tüketimi,
- gerçek zamanlı kontrol,
- kablolama,
- mekanik dayanım,
- yazılım durum uzayı
hızla karmaşıklaşır.
AKINROBOTICS'teki insansı robot çalışmaları bu karmaşıklığı günlük mühendislik problemi haline getiren dönemdi.
Ünite 13: Simülasyon, test ve hata ayıklama
ADA H4 ve simülasyon
ADA H4 çalışmalarında grafiksel arayüz ve simülasyon yazılımı üzerinde görev aldım. Simülasyonu yalnız demo görüntüsü olarak değil, gerçek robot üzerinde pahalı veya riskli olabilecek durumları daha kontrollü değerlendirme aracı olarak kullandım.
Simülasyonun temel sınırı şudur: fiziksel sistemin gecikme, sürtünme, boşluk, gürültü ve hata davranışı modele doğru yansıtılmadıkça simülasyon gereğinden iyimser olabilir.
SIL, HIL ve gerçek sistem
Robot yazılımı farklı seviyelerde doğrulanabilir:
- yazılım içinde simülasyon,
- model/algoritma testi,
- Software-in-the-Loop,
- Hardware-in-the-Loop,
- tezgah testi,
- gerçek robot testi.
Her seviyenin bulduğu hata türü farklıdır. Bir kinematik birim testi yanlış işaretli dönüşümü yakalayabilir; ancak motor sürücüsündeki elektriksel gürültüyü yakalayamaz.
Uçtan uca hata ayıklama
Fiziksel robotta “kol yanlış yere gidiyor” problemi şu zincirin herhangi bir noktasında olabilir:
hedef -> ters kinematik -> yörünge -> kontrol -> sürücü -> motor -> mekanik -> sensör -> geri beslemeBu nedenle iyi hata ayıklama katmanlar arasında veri izler.
2015 Baykar'da gömülü yazılım, elektronik devre ve gerçek sinyali aynı problem üzerinde takip etmiş olmam; AKINROBOTICS'te fiziksel robot ile yazılım durumunu birlikte inceleme yaklaşımımı doğrudan etkiledi.
Log ve yeniden üretilebilirlik
Bir robot hatası laboratuvarda tekrar üretilemiyorsa şu veriler kritik hale gelir:
- zaman çizelgesi,
- komutlar,
- sensörler,
- konfigürasyon,
- yazılım sürümü,
- hata kodları,
- sistem modu.
“Bende çalıştı” fiziksel sistem için yeterli doğrulama değildir.
Ünite 14: Güvenilirlik, güvenlik ve bakım yapılabilirlik
Fiziksel sınırların yazılımla korunması
Robot yazılımı eklem limitlerini, hız sınırlarını, sıcaklık ve akım sınırlarını yalnız GUI doğrulaması olarak görmemelidir. Kritik sınırlar mümkün olduğunca ilgili düşük seviyede de uygulanmalıdır.
Tek bir üst seviye yazılım hatası, mekanik sınırın aşılmasına yol açmamalıdır.
Watchdog ve yaşam belirtisi
Dağıtık robot sistemlerinde bir bileşenin çalışıyor görünmesi ile gerçekten görevini zamanında yapması farklıdır. Watchdog veya heartbeat mekanizması:
- süreç yaşıyor mu,
- döngü ilerliyor mu,
- veri güncel mi,
- kontrol görevi deadline içinde mi
gibi farklı anlamlarda tasarlanabilir.
Hata izolasyonu
Bir kamera arızası, hareketin tamamını zorunlu olarak durdurmalı mı? Cevap göreve bağlıdır. Sistem fonksiyonları kritik önemine göre ayrılırsa bir alt sistem hatasının gereksiz yere bütün robotu çökertmesi önlenebilir.
Programlama standartları
Baykar'daki MISRA C ve statik analiz çalışmalarımdan sonra AKINSOFT döneminde de sürdürülebilirlik ve kod standardı konularını fiziksel sistem güvenilirliğinin parçası olarak değerlendirdim. Robotik kod tabanı uzun süre yaşadığında:
- cihaz bağımlılıklarının izole edilmesi,
- ortak veri modelleri,
- deterministik durum geçişleri,
- açık hata sözleşmeleri,
- sorumlulukların ayrılması
bakım maliyetini ve hata yayılımını doğrudan etkiler.
Güvenlik
Robot güvenliği yalnız acil durdurma düğmesi değildir. Risk; robotun hızı, kuvveti, çalışma alanı, insanla fiziksel yakınlığı ve kontrol biçimine bağlıdır. Endüstriyel uygulamalarda mekanik koruma, emniyet devreleri, yazılım limitleri ve operasyon prosedürü birlikte düşünülür.
Ünite 15: AKINSOFT & AKINROBOTICS deneyimimin mühendislik bağlamı
Eğitim ile işin aynı dönemde birleşmesi
AKINSOFT'taki çalışma dönemim, benim için bilgisayar mühendisliği ile mekatroniğin gerçek anlamda birleştiği dönemdi. Kırıkkale Üniversitesi Bilgisayar Mühendisliği geçmişim bana algoritma, yazılım, işletim sistemi, ağ ve bilgisayar mimarisi tabanı sağlamıştı. Sakarya Üniversitesi Mekatronik eğitimi; motor, elektronik, kontrol, hidrolik/pnömatik ve mekanik tasarımın yazılım dışındaki fiziksel katmanlarını güçlendirdi. AKINSOFT'ta çalışırken bu programdan mezun olup Afyon Kocatepe Üniversitesi Mekatronik Mühendisliği programına başlamam, teorik ve pratik öğrenmenin aynı dönemde birbirini beslemesini sağladı.
Derslerde gördüğüm bir kontrol veya sensör konusu işte fiziksel robot davranışı olarak karşıma çıkıyor; işte yaşadığım problem ise üniversitedeki matematik ve sistem modellemesinin neden gerekli olduğunu daha görünür hale getiriyordu.
AROS / AR-CONTROL
En yoğun çalıştığım alanlardan biri robot kontrol yazılımıydı. Buradaki mühendislik problemi; cihazlara komut göndermekten, robotun gerçek durumu ile yazılım durumu arasında güvenilir bir eşleme kurmaya kadar uzanıyordu.
Kontrol yazılımı benim için şu soruların cevabıydı:
- robot şu anda hangi durumda?
- hangi komut yürütülüyor?
- komut gerçekten fiziksel olarak uygulandı mı?
- sensör geri bildirimi bunu doğruluyor mu?
- haberleşme kesilirse ne olacak?
- hata üst katmana nasıl yansıyacak?
AR-CORE ve otonomi
AR-CORE tarafında davranışların daha üst seviyede yönetimi, görev akışı, olaylar ve otonomi üzerinde çalıştım. Burada önemli olan tek tek fonksiyonların varlığı değil, bu fonksiyonların zaman içinde doğru sırada ve doğru koşullarda birleşmesiydi.
Otonominin en zor kısmının çoğu zaman “zeki algoritma” değil, sınır durumlarını yönetmek olduğunu burada öğrendim.
AR-GUI
Operatör arayüzü tarafında telemetri, hata, mod ve komutların fiziksel sistemle tutarlı gösterilmesi üzerine çalıştım. Bu deneyim daha sonra geliştirdiğim bütün gerçek zamanlı kullanıcı arayüzlerinde şu ilkeye dönüştü:
UI, sistem durumunu süsleyen yüzey değil; sistem durumunun güvenilir bir temsilidir.
HMM tabanlı ASR ve TTS
Robotun kullanıcıyla konuşma üzerinden etkileşiminde HMM tabanlı ASR, özellik çıkarımı, tanıma mantığı ve davranış entegrasyonuyla uğraştım. TTS tarafında ise konuşmanın yalnız üretilmesi değil, robotun davranış zaman çizgisine doğru yerleştirilmesi önemliydi.
Bu çalışmalar daha sonra ses işleme, konuşmacı tanıma ve büyük ölçekli konuşma tanıma sistemlerine geçişimde güçlü bir temel oluşturdu.
Görüntü işleme
Kamera verisinin işlenmesi, görüntüden anlamlı bilgi çıkarılması ve bu bilginin davranış katmanında kullanılması üzerinde çalıştım. Buradaki en kalıcı ders, algoritmik doğruluğun tek başına yeterli olmadığıydı. Robotik sistemde sonuç zamanında ve geçerli bağlam içinde üretilmelidir.
Görsel davranış programlama
Ağaç/devre tabanlı görsel programlama üzerinde yaptığım çalışmalar, domain davranışını kaynak koddan ayırmanın erken bir örneğiydi. Görsel model kullanıcıya kolaylık sağlarken yürütme motorunun tip, durum, hata ve zamanlama kurallarını koruması gerekiyordu.
Bugün “niyet ile gerçekleme katmanını ayırmak” olarak ifade ettiğim birçok yazılım mimarisi fikrinin erken pratik karşılıklarından biri bu çalışmaydı.
Teknik sorumluluğun genişlemesi
Görevim zaman içinde tek tek modül geliştirmekten kontrol yazılımının daha geniş teknik bütünlüğünü değerlendirmeye doğru genişledi. Bu, yalnız daha fazla kod yazmak anlamına gelmiyordu. Alt sistem sınırları, ekip içi entegrasyon, hata davranışı ve sürdürülebilirlik daha önemli hale geldi.
Bu dönem robotik mühendisliğini benim için bir uzmanlık başlığından çok sistem düşünme biçimi haline getirdi.
Ünite 16: Robotik mühendisliğinden çıkardığım genel ilkeler
Fizik, yazılım gereksiniminin parçasıdır
Yazılım fiziksel sistemi kontrol ediyorsa mekanik ve elektriksel sınırlar “harici detay” değildir.
Ölçüm ile gerçek aynı değildir
Sensör değerinin hata, zaman ve geçerlilik bağlamı korunmalıdır.
Otonomi durum yönetimidir
Planlama ve yapay zeka önemli olsa da güvenilir otonomi; başarısızlık, kesinti, öncelik ve geri kazanım davranışı olmadan tamamlanmış sayılmaz.
Gecikmenin yeri önemlidir
100 ms GUI gecikmesi ile 100 ms motor kontrol gecikmesi aynı değildir.
Telemetri tasarım gereksinimidir
Fiziksel sistemin sahadaki davranışı sonradan açıklanabilmelidir.
Arayüz güvenilirlik zincirinin parçasıdır
Operatör yanlış durumu görüyorsa alttaki doğru hesaplama görevi kurtarmayabilir.
Simülasyon gerçeğin yerine geçmez
Model, gerçek sistemin hangi özelliklerini içermiyorsa o alanlarda güvence sağlayamaz.
Modülerlik yalnız kod estetiği değildir
Donanım revizyonları ve çok katmanlı robot yazılımı, iyi sınırlandırılmamış bağımlılıkların maliyetini çok hızlı büyütür.
Sonuç
Robotik mühendisliği, mekanik bir gövdeye yazılım eklemek değildir.
Sensör fiziksel dünyayı ölçer.
Durum kestirimi ölçümü anlamlı modele dönüştürür.
Planlama ve davranış katmanı ne yapılacağını belirler.
Kontrol, istenen davranışı zaman içinde fiziksel sisteme uygular.
Eyleyici elektriksel komutu kuvvet ve harekete çevirir.
Telemetri sistemin ne yaptığını görünür kılar.
Operatör arayüzü insanı bu çevrime bağlar.
Güvenlik, hata yönetimi ve test ise bu parçaların tek tek değil birlikte güvenilir olmasını sağlamaya çalışır.
Benim açımdan robotik, 2015'te Baykar'da gördüğüm gömülü ve fiziksel sistem disiplininin 2016-2019 AKINSOFT & AKINROBOTICS döneminde çok daha geniş bir uygulamaya dönüşmesidir. Bilgisayar mühendisliği altyapım, eş zamanlı devam eden mekatronik eğitimlerim ve gerçek insansı robot yazılımı geliştirme deneyimi aynı dönemde birbirini besledi.
AROS/AR-CONTROL, AR-CORE, AR-GUI, ADA H4, görsel davranış programlama, HMM tabanlı konuşma tanıma, TTS, görüntü işleme ve telemetri üzerinde çalışmak bana robotik sistemde “yazılım” diye bağımsız bir ada olmadığını gösterdi.
Bir robotun davranışı; kod, elektronik, mekanik, kontrol, veri ve zamanın ortak sonucudur.
Kaynaklar
Bruno Siciliano, Lorenzo Sciavicco, Luigi Villani, Giuseppe Oriolo, Robotics: Modelling, Planning and Control, Springer.
Mark W. Spong, Seth Hutchinson, M. Vidyasagar, Robot Modeling and Control, Wiley.
John J. Craig, Introduction to Robotics: Mechanics and Control, Pearson.
Peter Corke, Robotics, Vision and Control: Fundamental Algorithms in MATLAB, Springer.
AKINSOFT ve AKINROBOTICS iş deneyimim