Akınsoft ve Akın Robotics: Kontrol Yazılım Sorumlusu / Yönetici Bilgisayar Mühendisi
2016–2019
2016-2019 — İnsansı robotik sistemlerde AROS/AR-CONTROL, AR-CORE, AR-GUI, ADA H4; kontrol, otonomi, davranış modelleme, HMM tabanlı ASR/TTS, görüntü işleme, telemetri ve gerçek zamanlı donanım-yazılım entegrasyonu.
2016-2019 yılları arasında Akınsoft ve Akın Robotics'te Kontrol Yazılım Sorumlusu / Yönetici Bilgisayar Mühendisi olarak çalıştım. Bu görevde yazılım mühendisliği ve mekatronik alanlarındaki birikimimi insansı robotik ürünlerin kontrol, algılama ve kullanıcı etkileşimi süreçlerinde birlikte uyguladım.
İnsansı robotik sistemlerde yazılım tarafından yönetilen durumlar fiziksel hareketi, sesli etkileşimi, sensör verilerinin yorumlanmasını ve haberleşme davranışını etkiler. Kontrol yazılımı, algılama, karar verme, hareket kontrolü, iletişim ve kullanıcı etkileşiminin zaman bakımından eşgüdümlü çalıştığı bütünleşik bir sistem olarak ele alındı.
Bu mesleki deneyim, kamuya açık ürün ve yazılım adları ile genel mühendislik çalışma alanları kapsamında sunulmaktadır. Özel protokoller, donanım adreslemeleri, kurum içi mesaj biçimleri ve sisteme özgü uygulama ayrıntıları kurumsal gizlilik kapsamındadır.
AROS / AR-CONTROL: Robot Kontrol Yazılımı
Çalışmalarımın merkezinde AROS / AR-CONTROL robot kontrol yazılımı bulunuyordu. Kontrol yazılımının görevi yalnız bir komutu çevre birimine iletmek değildi. Robot üzerindeki farklı alt sistemlerden gelen durumların izlenmesi, komutların doğru sırada yürütülmesi, kullanıcı veya üst seviye davranış katmanından gelen isteklerin fiziksel sistemin mevcut durumuyla uyumlu hale getirilmesi gerekiyordu.
Bu tür bir yazılımda hata kavramı masaüstü uygulamasından farklıdır. Yanlış bir durum geçişi robotun fiziksel davranışını etkileyebilir; geciken bir komut bir sonraki hareket dizisini bozabilir; haberleşmedeki kısa süreli bir kopma arayüzde yalnız "bağlantı hatası" olarak kalmaz, kontrol zincirinin tamamını etkileyebilir.
Bu nedenle kontrol katmanında durum yönetimi, hata sonrası toparlanma, haberleşmenin sürekliliği ve komutların fiziksel sistem üzerindeki sonuçları birlikte değerlendirilmek zorundaydı.
C, C++, C# başta olmak üzere Java ve Python ile Windows, Linux ve gömülü çalışma ortamları arasında geliştirme yaptım. Dil seçimini tek başına teknoloji tercihi olarak değil, çalışılan katmanın gereksinimine göre ele alıyordum: donanıma yakın ve zaman duyarlı bölüm ile kullanıcı arayüzünün ihtiyaçları aynı değildi.
AR-CORE: Otonom Davranış ve Durum Yönetimi
Robotun tek tek motorlarını veya cihazlarını çalıştırmak ile anlamlı bir davranış üretmek arasında ayrı bir katman bulunuyordu. AR-CORE üzerinde çalışırken otonom davranışın yalnız bir "AI fonksiyonu" olmadığını, durum, zamanlama, sensör bilgisi ve kontrol çıktılarının birlikte yönetilmesi gerektiğini doğrudan gördüm.
Otonomi yazılımında bir davranışın başlaması kadar ne zaman duracağı, hangi olayın onu kesebileceği, başarısız alt adımın üst seviyeye nasıl yansıtılacağı ve aynı anda gelen farklı isteklerin nasıl önceliklendirileceği de önemlidir.
Bu dönem davranış modelleme çalışmalarımın temelini oluşturdu. Robotun davranışlarını yalnız sabit bir prosedür listesiyle yönetmek yerine, daha üst seviyede ifade edilebilen ve gerektiğinde farklı senaryolara uyarlanabilen yapılar üzerinde çalıştım.
Bir davranışın teknik olarak tamamlanması ile kullanıcı açısından anlamlı biçimde tamamlanması aynı şey değildi. Örneğin hareket komutu sonlanmış olabilir; ancak ilgili sensör geri bildirimi bekleniyorsa davranış mantığı henüz bir sonraki adıma geçmemelidir. Bu tür durumlar, fiziksel sistemlerde state machine ve event tabanlı tasarımın önemini pratikte görünür hale getiriyordu.
Ağaç ve Devre Tabanlı Davranış Programlama
Davranışların yalnız kaynak kod içinde tanımlanması, robotik senaryo geliştiren herkesin aynı programlama ayrıntılarını bilmesini gerektiriyordu. Bu problemi azaltmak için ağaç ve devre yaklaşımından yararlanan görsel programlama modelleri üzerinde çalıştım.
Amaç blokları ekrana sürükleyip bağlamaktan daha genişti. Görsel olarak oluşturulan yapının çalışma zamanında deterministik biçimde yorumlanması, geçersiz bağlantıların engellenmesi, parametrelerin doğru tipe taşınması ve kullanıcı tarafından oluşturulan davranışın robot kontrol katmanına güvenli biçimde aktarılması gerekiyordu.
Bu çalışma bana daha sonra kurumsal yazılımlarda da sık karşılaşacağım bir problemi öğretti: kullanıcıya esneklik veren bir sistem, aynı zamanda geçersiz durum uzayını mümkün olduğunca daraltmalıdır. Serbestlik arttıkça doğrulama, tip güvenliği, hata modeli ve gözlenebilirlik daha önemli hale gelir.
Görsel programlama tarafı ayrıca domain bilgisini kaynak koddan ayırma fikrini güçlendirdi. Davranış tanımı bir kullanıcı veya uzman tarafından değiştirilebilirken, yürütme motorunun güvenilirlik kuralları ayrı kalmalıydı.
AR-GUI ve Operatör Arayüzleri
AR-GUI ve ilişkili grafiksel arayüzlerde robotun durumunun anlaşılır biçimde izlenmesi ve kontrol edilebilmesi üzerine çalıştım. Bir robot kontrol arayüzü, klasik veri giriş ekranından farklıdır. Kullanıcı ekranda gördüğü değer ile robotun fiziksel durumu arasında güvenilir bir ilişki bekler.
Arayüz tarafında telemetri, durum gösterimi, hata bilgisi ve kontrol komutlarının birlikte ele alınması gerekiyordu. Kullanıcıya eski bir durum gösterilmesi veya komutun ulaşmadığı halde arayüzde uygulanmış görünmesi kabul edilebilir değildi.
Bu nedenle GUI'yi sistemin geri kalanından bağımsız bir sunum katmanı olarak görmedim. Haberleşme, durum senkronizasyonu ve fiziksel sistem davranışı arayüz tasarımının parçasıydı.
Robotik arayüzde okunabilirlik de yalnız estetik konu değildir. Operatörün sistem durumunu kısa sürede anlayabilmesi, kritik hata ile bilgilendirme mesajını ayırt edebilmesi ve hangi komutun aktif olduğunu görebilmesi doğrudan kullanılabilirlik ve güvenilirlik problemidir.
ADA H4, Grafiksel Arayüz ve Simülasyon
ADA H4 çalışmalarında grafiksel arayüz ve simülasyon yazılımı üzerinde görev aldım. Simülasyon burada yalnız görsel bir demo değildi; fiziksel sistem üzerinde denenmesi maliyetli veya riskli olabilecek davranışları yazılım tarafında değerlendirmek, arayüz ve kontrol akışını geliştirme sürecinde sınamak için önemliydi.
Gerçek robot ile simülasyon arasındaki temel sorun, iki tarafın zamanlama ve durum davranışının aynı varsayımları paylaşmasını sağlamaktır. Simülasyonda anında gerçekleşen bir geçiş fiziksel sistemde motor hareketi, haberleşme gecikmesi veya sensör geri bildirimi nedeniyle farklı zaman alabilir. Bu ayrımı geliştirme sırasında görünür kılmak, gerçek sisteme geçişte ortaya çıkabilecek sorunları azaltıyordu.
Simülasyon aynı zamanda hata senaryolarını daha kontrollü üretme imkânı veriyordu. Normal kullanımda nadir görülen durumları fiziksel sistem üzerinde tekrar tekrar oluşturmak yerine yazılım tarafında sınamak, hata yönetimi ve arayüz davranışını geliştirmeyi kolaylaştırıyordu.
Konuşma Tanıma ve Konuşma Sentezleme
Robotla doğal kullanıcı etkileşiminin önemli parçalarından biri sesli iletişimdi. HMM tabanlı konuşma tanıma çalışmaları, konuşma sentezleme ve komutların robot davranışlarıyla ilişkilendirilmesi üzerinde çalıştım.
O dönemin konuşma tanıma çalışmaları HMM tabanlı tanıma, özellik çıkarımı, karar mantığı ve robot davranışıyla bütünleştirme üzerineydi; sonraki yıllarda kullandığım transformer tabanlı modeller bu dönemin parçası değildi.
Bir ASR çıktısının metin olarak doğru görünmesi robotik sistem için tek başarı ölçütü değildir. Komutun yanlış zamanda kabul edilmesi, gürültünün komut gibi değerlendirilmesi veya tanıma sonucunun uygun bağlama taşınmaması fiziksel davranış üretebilir. Bu nedenle konuşma tanımayı kullanıcı arayüzünden çok kontrol sisteminin girdilerinden biri olarak düşünmek gerekiyordu.
TTS tarafında da amaç yalnız metni sese çevirmek değildi. Robotun davranış durumu, konuşmanın zamanı ve kullanıcıyla etkileşim akışı birlikte düşünülüyordu. Sesli geri bildirimin fiziksel hareketle çakışmaması veya kullanıcıya yanlış sistem durumu ifade etmemesi gerekiyordu.
HMM tabanlı konuşma tanıma, özellik işleme, karar mantığı ve fiziksel davranışla entegrasyon çalışmaları daha sonraki konuşma ve ses işleme çalışmalarımın teknik temellerinden birini oluşturdu.
Görüntü İşleme ve Algılama
Robotik sistemlerde görüntü işleme çalışmalarında kamera verisinin işlenmesi, sahne veya hedefle ilgili özelliklerin çıkarılması ve elde edilen bilginin üst seviye davranışa aktarılması üzerine çalıştım.
Burada bir bilgisayarlı görü algoritmasının tek başına yüksek doğruluk göstermesi yeterli değildi. Kameradan veri alma, görüntü ön işleme, hesaplama süresi, sonuçların güncelliği ve davranış katmanının bu sonucu hangi zaman penceresinde kullandığı birlikte önem taşıyordu.
Bu nedenle görüntü işleme ile robot kontrolünü ayrı ürünler gibi değil, ortak gecikme ve durum bütçesi olan bir işlem hattı gibi ele aldım.
Algılama sonucu gecikmişse teknik olarak doğru olsa dahi robotun mevcut fiziksel durumunu temsil etmeyebilir. Bu, daha sonra gerçek zamanlı AI sistemlerinde sık kullandığım "freshness" yaklaşımının erken örneklerinden biriydi.
Haberleşme ve Telemetri
Robot üzerinde farklı yazılım ve donanım katmanlarının birlikte çalışabilmesi için haberleşme ve telemetri sürekli kullanılan altyapı bileşenleriydi. Kontrol komutlarının hedefe iletilmesi kadar, robotun gerçek durumunun geriye taşınması da önemliydi.
Telemetriyi yalnız debug için açılan bir pencere olarak görmedim. Sistemin hangi durumda olduğunu, hangi komutun ne zaman uygulandığını ve davranışın nerede beklenenden saptığını anlamanın temel araçlarından biriydi.
Farklı alt sistemlerin veri üretim hızları ve hata davranışları aynı değildi. Bir bileşenin kısa süreli gecikmesinin bütün kontrol döngüsünü bekletmemesi, eski verinin güncel durum gibi yorumlanmaması ve bağlantı kesintilerinin fiziksel sistem açısından güvenli karşılanması gereken konulardı.
Bu yaklaşım, telemetriyi gözlemleme verisi olmanın ötesinde sistem durumunun tutarlılığını değerlendiren bir araç haline getiriyordu.
Eşzamanlılık ve Performans
Robotik sistemler doğal olarak eşzamanlıdır. Sensör verisi gelirken kullanıcı komutu işlenebilir, konuşma tanıma ayrı bir hesaplama yükü oluşturabilir, telemetri akışı sürerken kontrol katmanı fiziksel hareketi yönetebilir.
Bu nedenle thread kullanmak tek başına çözüm değildi. Hangi işin hangi sıklıkta çalışacağı, paylaşılan durumun nasıl korunacağı, arayüz thread'i ile arka plan işlemlerinin nasıl ayrılacağı ve ağır bir algılama işinin kontrol tepkisini geciktirmemesi gerekiyordu.
Bu dönemde performans optimizasyonuna yalnız "kod daha hızlı çalışsın" açısından bakmamaya başladım. Robotik sistemde gecikmenin konumu önemlidir. Kullanıcının görsel arayüzünde 100 ms ile kontrol döngüsündeki 100 ms aynı sistem etkisine sahip değildir.
Aynı şekilde CPU kullanımını düşürmek de tek başına hedef değildir. Daha düşük CPU tüketimi daha fazla gecikme veya daha eski sensör verisi pahasına sağlanıyorsa sistem davranışı kötüleşebilir. Ölçülmesi gereken, fiziksel görevin uçtan uca davranışıdır.
Eşzamanlı İşlemlerde Durum ve Zaman Tutarlılığı
Kontrol komutları, sensör çıktıları, konuşma tanıma sonuçları ve kullanıcı arayüzü güncellemeleri aynı robotik sistemin farklı zaman ölçeklerinde yürüyen bileşenleriydi. Bu kapsamda verinin güncelliği, komut sıralaması ve fiziksel sistemin geri bildirimi birlikte ele alınarak kontrol katmanının gözlemlenebilirliği değerlendirildi.
Özellikle simülasyon ve gerçek sistem karşılaştırmaları, bir işlemin yazılım düzeyinde tamamlanma anı ile fiziksel sistem tarafından doğrulanma anı arasındaki ilişkinin önemini gösterdi. Kontrol ve arayüz bileşenlerinin mühendislik değerlendirmesinde durum geçişleri, zamanlama ve kullanıcıya sunulan bilginin tutarlılığı temel ölçütler arasında yer aldı.
Programlama Standartları ve Sürdürülebilirlik
Uzun süre geliştirilen robotik yazılımda çalışan ilk çözümün korunabilir olması önemliydi. Programlama standartları, nesne yönelimli tasarım, ortak veri modelleri ve modüller arasındaki sınırlar üzerinde çalıştım.
Kontrol, otonomi, GUI, konuşma ve görüntü işleme katmanlarının aynı kod tabanında birbirine bağımlı hale gelmesi değişiklik maliyetini hızla artırabilirdi. Bu nedenle sorumlulukları ayırmak, ortak davranışı tekrar etmemek ve bir modülün iç ayrıntısını diğerine taşımamak pratik bir gereksinimdi.
Robotik projelerde donanım revizyonları da yazılım sınırlarını test eder. Donanım ayrıntısı üst katmanlara sızmışsa küçük bir elektronik değişiklik geniş kod değişikliğine dönüşebilir. Bu nedenle arayüzlerin ve cihaz bağımlı katmanların belirgin olması bakım maliyetini doğrudan etkiliyordu.
Yönetici Bilgisayar Mühendisi ve Kontrol Yazılım Sorumluluğu
Görevim zaman içinde yalnız tek bir bileşen geliştirmekten, kontrol yazılımının daha geniş teknik bütünlüğünü takip etmeye evrildi. Bir değişikliğin yalnız kendi modülünde çalışması değil, robotun geri kalanıyla uyumlu olması gerekiyordu.
Bu sorumluluk kod inceleme, hata analizi, farklı modüllerin birlikte çalışması ve geliştirmenin fiziksel sistem üzerindeki sonucunu takip etmeyi içeriyordu. Robot üzerinde görülen bir sorun bazen kontrol yazılımından, bazen haberleşmeden, bazen algılama katmanından veya fiziksel sistemden kaynaklanabiliyordu. Doğru sorunu doğru katmana taşıyabilmek, doğrudan kod yazmak kadar önemli hale geldi.
Kontrol yazılımının teknik sorumluluğu, birbirine bağlı modüllerin ürettiği ürün davranışının sistem düzeyinde değerlendirilmesini ve sorunların ilgili donanım veya yazılım katmanıyla ilişkilendirilmesini içeriyordu.
Mesleki Yetkinliklerin Gelişimi
Akınsoft ve Akın Robotics yıllarında benim için en öğretici taraf, bir kullanıcı komutunun mikrofon veya arayüzden başlayıp davranış modeline, kontrol katmanına, haberleşmeye ve sonunda fiziksel harekete kadar bütün yolunu aynı sistem içinde izleyebilmekti.
Gerçek zamanlı davranışı uçtan uca ölçme, algılama ile karar katmanını ayırma, fiziksel bir arızayı yalnız yazılım semptomuna bakarak sınıflandırmama ve operatör arayüzünü gerçek sistem durumundan koparmama alışkanlıklarım bu dönemde belirginleşti. Daha sonraki konuşma işleme, yapay zeka ve yüksek hacimli servis çalışmalarımda bu robotik sistem deneyiminin izleri doğrudan görülebilir.
İlgili Akademik ve Teknik İçerikler
Bu dönemdeki robot kontrolü, sensör/aktüatör ve fiziksel sistem yaklaşımının teorik karşılığı Mekatronik Sistemlerin Temelleri ile Mikroişlemci, Mikrodenetleyiciler, FPGA ve PLC sayfalarında; konuşma tarafının devamı ise MFCC ile Konuşma Özellik Çıkarımı ve Whisper Mimarisi notlarımda görülebilir.
Konuşma İşleme Çalışmalarının Teknik Sürekliliği
HMM tabanlı ASR/TTS, özellik işleme ve robot davranışıyla bütünleştirme çalışmaları daha sonraki konuşma sistemlerimin tarihsel kökenlerinden biridir. Üretim tarafındaki sonraki aşamayı Gerçek Zamanlı Konuşma Tanımada Kapasite Mühendisliği ve VAD Kütüphanesi Geliştirme notlarında kuyruk, segmentasyon ve kaynak bütçesiyle birlikte ele alıyorum.
Robotik Sistemlerin Akademik Temelleri
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 gibi adlar bu sayfada iş deneyiminin tarihsel ve teknik kaydı olarak tutulur. Bu bileşenlerin varlığı, robotik alanındaki genel ilkelerin tek bir ürün mimarisine indirgenmesi anlamına gelmez.
Kinematik, Jacobian, dinamik, kontrol, hareket planlama, durum kestirimi, SLAM, gerçek zamanlı haberleşme, simülasyon, güvenilirlik ve insan-robot etkileşimi Robotik Mühendisliği ders notunda ürün ve şirket anlatısından bağımsız olarak işlenir. Uygulama deneyimi ile akademik genelleme arasındaki sınır bu nedenle bilinçli olarak iki sayfa arasında ayrılmıştır.