Robotları Programlayabilmek için Kullanılan Diller

1. Giriş

Robotların kullanım alanlarının genişlemesi ve yazılım teknolojisinin gelişmesi; belli bir amaç için yapılan robotların, o amaç doğrultusunda programlanması ihtiyacını beraberinde getirdi. Bu nedenle, değişik firmalar, ürettikleri robotlar için farklı yazılımlar geliştirdiler ve kullandılar. Günümüzde robotlar için yapılan yazılımlar artık ayrı birer ürün değil; robotların birer parçası haline geldiler.

Robot yazılımı üreten şirketler öncelikle simülasyonlar üzerinde çalışırlar. Buna off-line programlama denir. Robot üretilmeden önce, yazılım aşamasında, hareketleri, hangi şartlarda ne tür tepkiler vereceği, öğrenme kabiliyeti gibi özellikleri önceden bilgisayar ortamında off-line programlama tekniği ile test edilir.

Robot yazılımlarında programın çalışma süresi genellikle öncelikli öneme sahip değildir. Robot programcıları daha çok, ürettikleri programın robota minimum sayıda yükleme gerektirmesini amaçlarlar. Bu sebeple, off-line programlama aşamasında üretilen programın tam olarak isteneni yapabilmesi hususu ele alınır.

Off-line robot programlama ve simülasyon robot modellerinin simülasyonunun mümkün olduğu durumlarda robot programlarının yapımına yardımcı olmaktadır. Robot programları, gerçek robota yüklenip çalıştırılmadan önce simülatörler aracılığıyla test edilirler. Bunun esaslı amaçlarından biri de programdaki olası hatalar yüzünden robota ya da çevredekilere zarar gelmesini engellemektir. Ayrıca off-line programlama robot teknolojisi kullanan birçok fabrikada önemli ölçüde maddi kazanç sağlamaktadir; çünkü çalışma sırasında meydana gelebilecek hatalar da, büyük robotlar yerlerinden çıkarılmadan, simülasyon yardımıyla görülebilmekte ve düzeltilebilmektedir.

Robotlar genellikle birbirleriyle ilişkili bir şekilde hareket eden birçok kısımdan ve aralardaki bağlantılardan oluşur. Bu bağlantıların sayısı çoğu zaman robot hareket derecesine (degree of freedom) eşittir. Robot programlaması ve simülasyonunda karşılaşılan en büyük problemlerden biri robotun hareket eden kısımlarının çevreye ve robotun bağlantılarına göre nasıl yönlendirileceğidir. Ve bu değerler genellikle matematiksel olarak gösterilir ve hesaplanır.

Forward ve Ters (Inverse) Kinematik, robotun bağlantı açıları verildiğinde parçalarının yerini; veya robotun hareket edebilmesi için gereken enerjiyi bulmak için kullanılır. İyi bir robot simülasyon programı, gerçek robotun yapabileceği herşeyi simüle edebilmelidir.

Simdi önemli birkaç robot programlama dilini tanıyalım:

2. Robotscript

Robotscript Evrensel Robot Denetimcisi (Universal Robot Controller) tarafından kontrol edilen bütün robot modellerini sanal olarak programlamak için kullanılır. On-line olarak Windows NT istasyonlarında ya da off-line olarak Windows yüklü herhangi bir PC’de kullanılabilir. Robotscript grafiksel kullanıcı arabirimi (GUI) ile kullanıcıya kolaylık sağlar ve hata olasılığını azaltır. Ayrıca Yazılım Geliştirme Paketi yardımıyla her türlü kullanıcı için farklı arayüzler tasarlanabilir.

Robotscript makro benzeri bir robot programlama dilidir ve ActiveX programıyla beraber çalışır. Microsoft Visual Basic programı kullanılarak geliştirildiği için, Microsoft C++ ya da Microsoft Office programlarıyla beraber kullanılabilir. Windows ortamına uyumlu olması, programcıya kendi yazılımlarını geliştirirken, robota bilgi yüklerken veya alırken önemli kolaylıklar sağlar.

Robotscript program paketi 4 parça yazılımdan oluşmaktadır: Robotscript ActiveX Kontrolü, ERD kontrol ekranı, dosya yaratıcısı ve yazılım denetimcisi. ActiveX parçası Robotscript yazı dosyasını robot hareketlerine çevirir. İkili bilgi (Binary data file) dosyası kullanılmadığı için yazılan programları çalıştırmak için derlemeye gerek yoktur. Kontrol ekranı kullanıcının programları çalıştırmasını sağlar. Yazılım Geliştirme Paketi sayesinde son kullanıcı kendi amaçlarına uygun arayüzler geliştirebilir. Dosya yaratıcısı programcının Robotscript programına hareketlerin noktasal pozisyonlarını girmesini sağlar. Burada mevcut olan ‘Sihirbazlar’, sağladıkları grafiksel yardımla kullanıcının kompleks hareketleri kolay bir şekilde çözümlemesini sağlar. Yazılım denetimcisi ise yazılan programı test etmek için kullanılır.

3. ARAC

ARAC (Aritmetik Robot Uygulama Denetimi) yazılımı birçok esnek üretim sisteminin çekirdeğini oluşturur. Sistem, basit off-line programlama istasyonu olarak kullanılabilir; ve genelde ‘ilk seferde doğru’ çalışan ve ekstra ayar gerektirmeyen programlar üretilir.

Programlamanın yanında, işlem parametrelerini değiştirerek işlemleri on-line olarak birleştirmekte ya da kesmekte de kullanılabilir.

Uygun bir dizi işlemci yardımıyla, ARAC sistemi tamamen otomatik çalışır. Kullanıcı girişi gerektirmeksizin yeni robot programları üretip bunları bağlı olan robot sistemleri üzerinde çalıştırabilir. Ayrıca eklenebilen ekipmanları sayesinde yardımcı robot elemanlarını da kontrol edebilir.

4. AML

Hareketi tanımlayabilen bir program ya pozisyonu ya da zamanı referans alır. Bundan 30 sene önce yazılan programlardan "G Code" pozisyonu; "Ladder Diagram" zamanı referans alan programlara örnektirler. Ancak gerçek bir çözüme ulaşabilmek için bu iki değeri kaynaştırmak gerekir. AML programlama dili bu sorunu "Event Processing Method" yardımıyla çözdü. Ayrıca "Drive Train" methodu ile denetim senkronizasyonu ve çoklu eksen yönetimi kolaylıkla yapılabilmektedir.

AML, PASCAL benzeri yüksek seviye bir programlama dilidir. Temel sentaksı diğer yüksek seviye programlama dillerine benzer. Program, PASCAL’daki gibi "Begin" ve "End" komutları arasına yazılır.Ancak AML nesneye yönelik (object oriented) bir programlama dilidir. Nesne, bilgi üyeleri ve metodlardan oluşan program bloklarıdır. AML, prensip olarak son kullanıcılara yeni bir nesne tanımlama izni vermez. Bunun temel amacı tecübesiz son kullanıcıların da kolaylıkla ve güvenle denetim programları yazabilmeleridir.

5. RoboML

Bazı robot programlama dilleri internet aracılığıyla insan-robot etkileşimini sağlamayı amaçlamaktadır. Ancak burada eşzamanlı iletişim için gerekli olan yüksek kaliteli bağlantı, alıcıdaki (client) programın uyumluluğu gibi bazı sorunlar çıkmaktadır. Bunun için XML bazlı bir dil olan RoboML kullanılmaktadır

Ancak RoboML, insan robot etkileşimi, vasıta (agent) haberleşmesi, bilgi temsili gibi konularda diğer XML bazlı dillerin sorunlarını aşamamıştır.

6. NQC (Not Quite C)

NQC, Lego RCX programlaması için kullanılan basit bir programlama dilidir. NQC dilinin önişlemci ve kontrol yapıları C diline oldukça benzer. NQC, genel kullanım amaçlı olmaktan oldukça uzaktır; nitekim gerçek hayattaki koşullardan kaynaklanan sınırlamalar ve RCX ortamının kendisi hakkında detaylı bilgi eksikliği bulunmaktadır.

Tipik bir NQC programı görevlerden (tasks) ve subrutinlerden oluşur, İlk görev, program başladığında otomatik olarak çalışır; diğer görevler program tarafından başlatılır. Subrutinler, görevler arasında paylaşılır. NQC derleyicisi, RCX hakkında çok az bilgiye sahiptir. Ses çıkarma, veriyi okuma gibi birçok RCX fonksiyonu "rcx.nqh" dosyası eklenerek kullanılabilir; ve bu dosya derleyici tarafından otomatik olarak eklenir.

7. Onika

Onika, ikonik olarak programlanmış bir insan-makine ara yüzüdür. Gerçek zamanlı bir işletim sistemi ile beraber, yeniden kullanılabilir kod yaratabilmesini sağlar. Onika, hem mühendisler, hem de son kullanıcılar için uygun çalışma ortamı sağlar. Mühendisler için, gerçek zamanlı yazılım modüllerini simgeleyen ikonlar, birleştirilip, gerçek zamanlı işler oluşturulabilir. Bu modüller arasındaki bağlantılar otomatik olarak oluşturulur.

Değişik pencerelerde, kullanılan işletim sisteminin o anki durumu, sistem değişkenlerinin değerleri gibi bilgiler kullanıcıya gösterilir. Onika’nın oluşturulan işlerin setaks olarak doğruluğunu ve eksiksiz olduğunu göstermesinden sonra, yüksek seviye son kullanıcılar için, yaratılan bu işler ikon haline getirilebilir.Onika, hiperlinkler vasıtasıyla, başka sitelerdeki yazılım modüllerini getirebilir ve kullanabilir; ve bunlar daha önce lokal olarak hazırlanan modüllerle birleştirebilir.

8. REXX

REXX, Michael Cowlishaw tarafından dizayn edilmiş bir programlama dilidir. Michael’in kendi kelimeleri ile; " REXX, programların ve algoritmaların açık ve yapısal bir şekilde yazılabilmesini sağlayan yordamsal (procedural) bir programlama dilidir." REXX diğer programlama dillerinden çok farklı değildir. İşte basit bir örnek:

/* Sayı Sayma Programı */
say "Sayıyor…"
do i = l to 10
say "Sayı" i
end

REXX’i diğer birçok dilden ayıran özellik ise sıradan uygulama programları tarafından makro dili gibi kullanılabilecek şekilde tasarlanmış olmasıdır. Buradaki düşünce, uygulama geliştirenlerin kendi makro dillerini ve yorumlayıcılarını (interpreter) dizayn etmek zorunda kalmamalarıdır. Bir REXX makrosu çözemediği bir ifade ya da fonksiyonla karşılaştığında, kontrolü uygulamanın kendisine verir. Uygulamanın, sadece kendisine özgü özellikleri desteklemesi yeterlidir; bu durum, uygulama geliştiricisini oldukça sıkıcı ve zaman alıcı bir iş olan dil yorumlatıcısı yazma zorunluluğundan kurtarır..

9. Behavior Language (Davranış Dili)

Davranış Dili, kurala dayalı, gerçek zamanlı, paralel bir robot programlama dilidir. Gerçek zamanlı kurallar, davranış dilinin anahtarını oluşturur, ifadeler, alışılmış Common Lisp sent akşındadır. Davranışlar, değişik planlar tarafından çalıştırılabilir kural gruplarıdır. Veri yapıları davranışlar arasında paylaşılmaz; bütün mesaj geçişleri açık olarak yapılır. Bütün kuralların paralel ve eş zamansız olarak çalıştığı varsayılır.

Davranış Dili oluşturulması, AFSM(Geliştirilmiş Sonlu Durum Makinesi)’leri daha kullanışlı gruplara ayırarak, aynı anda bir grubu aktif ya da inaktif hale getirme ihtiyacından kaynaklandı. Aslında AFSM’ler açıkça kullanılmaz, gerçek zamanlı kuralların oluşturduğu kural kümeleri, bire-bir AFSM’lerde derlenir. Davranış derleyicisi ortamdan bağımsız olarak çalışıp, AFSM normlarına uygun ara bir dosya oluşturur. Daha ara derleyici değişik hedefler için kullanılır. Burada ara derleyicinin Davranış Dili’ni desteleyebilmesi için çeşitli geliştirmeler yapılmıştır. Davranış Dili, genel olarak Lisp dilinin alt kümesi olarak yazılmış ve birbirine paralel olarak çalışan gerçek zamanlı bir kurallar kümesidir. Kullanılan bütün derleyiciler Common Lisp dilinde yazılmıştır.

Posted in Genel.

Bir cevap yazın