|
Robot Programlama
Dilleri
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. |