Genel olarak robotik uygulamalarının temel işlevi farklı kaynaklardan sensör girişlerini toplamak ve bu sensör girişlerine karşılık uygulamanın amacını gerçekleştirecek yeni cevap verecek olan bir dizi uygulayıcının (actuator) orkestrasyonunu sağlamaktır. Şekil 1 de basit bir robotik uygulama örneği verilmiştir. Uygulama bir tane dokunmalara cevap veren bumper (dokunmatik sensör), görüntüyü kontrol eden mesaj kutusu (actuator) ve parçaları birleştiren orkestrasyon elemanı içeriyor.

Şekil 1 Robotik dünyasında "Merhaba Dünya" uygulamasının karşılığı. Orkestrasyon elemanı dokunmatik sensörden girişleri dinler ve mesaj kutusunu kontrol eder.
Şekil 1 de gösterilen uygulamada orkestrasyon kolaydı fakat uygulama büyüdüğünde çok sayıda sensör, uygulayıcı (actuator) ve orkestrasyon elemanlarının kompleks işlemleri yerine getirmek için birbirleriyle haberleşmeleri gerekir. Daha gelişmiş bir robotik uygulaması Şekil 2 de örnek olarak gösterilmiştir.

Şekil 2 Üç tane sensörü ve uygulayıcısıyla biraz daha gelişmiş bir robotik uygulaması.
Tüm sersör ve uygulayıcılar Şekil 1 dekilere benzerken orkestrasyon elemanı artık 6 komponenti yönetmek zorunda. Ek olarak, uygulamaların akışlarını birbirinden ayıran birçok yön vardır ve bu özellikleri diğer "Merhaba dünya" uygulamalarından da ayrıdır:
- Sensör girişlerinin yakalanması ve uygulayıcıların kontrol edilmesi eşzamanlı oarak gerçekleştirilmelidir. Aksi durumda uygulayıcılar etkinleştirilemeyebilir veya sensör girişleri atlanabilir.
- Orkestrasyon uygulamanın kritik bir parçasıdır. Özellikle sensörlerin ve uygulayıcıların sayıları arttıkça orkestrasyon daha kompleks hale gelecektir.
- Otonom ve beraber çalışabilen orkestrasyon, komponentlerin dağıtılmış yapıda çalışabilmesini ve network üzerinden erişilebilmesini gerektirir.
Bu gereklilikleri sağlamak için MSRS nun amacı robotik uygulamalarını oluşturmak, izlemek, yayımlamak ve çalıştırmak için şunları kullanır:
- Concurrency and Coordination Runtime (CCR) (Eşzamanlılık ve Kordinasyon) mesajların kordinasyonunu elle threading, kilit vs. kullanmadan sağlar. CCR asenkron mesaj iletimi üzerine kuruludur ve mesajların senkronizasyonunu sağlayan özellikler içeren servislere çalışma alanı sağlar.
- Decentralized System Services (DSS) (Merkezileştirilmemiş Sistem Servisleri) bir servis barındırma ortamı sağlar ve hata ayıklama, log tutma, izleme, güvenlik, araştırma ve veri sürekliliği gibi temel işlevlerin sağlandığı servisleri barındırır.
MSRS Runtime çok çeşitli robotik uygulamalarını desteklemek için tasarlanmıştır. Uygulamalar basitçe sensör girişlerinin gözlenmesinden kablolu kullanıma, otonom işlemlere ve hatta çoğul otonom robotların beraber çalışmalarına kadar genişler.
Ayrıca, MSRS runtime robotların doğrudan PC ye bağlı olduğu (seri port kullanarak, Bluetooth, USB vs.) senaryolardan üzerinde PC bulunduran robotlara, simülasyon robotların simüle edilen dünyada işletilebilmesine kadar geniş yelpazede kullanılabilir.
Servisler
Bir servis MSRS kullanarak robotik uygulama geliştirmenin temel taşıdır. Servisler kendi aralarındaki ve servislerle runtime arasındaki isolasyon sınırlarını belirlemek için kullanılır. Örnek olarak Şekil 1 deki uygulama üç servis olarak düzenlenebilir, her biri üç kutudan bir tanesine. Servisler kendi aralarında birer düğüm içerisinde network üzerinden eşit olarak iletişim kurabildikleri gibi üç serviste bir düğüm içerisinde yer alabilir ve işlevlerini yapabilir.
Fonksiyonların düzgün çalışabilmesi için orkestrasyon elemanı bir bumper ve bir mesaj kutusuna ihtiyaç duyar. İsolasyon sınırları nedeniyle servislerin çalışmaya başlayana kadar birbirlerinden haberleri yoktur. Bu orkestrasyon elemanı sensöre ve mesaj kutusuna benzeyen elemanlarla iletişim kurması gerektiğini bilir fakat başlayana kadar tam olarak bu servislerin nerede yer aldığını bilmez demektir.
Bu tip yapılanma partnering (ortaklık) olarak adlandırılır. Ortaklık servisler arasında yeniden kullanımı ve alt komponent kullanımını sağlayan geç bağlamalı (late binding) isimlendirilmiş ilişkiler yaratmanın bir yoludur. Oluşumun ortaklık yoluyla sağlanması yüksek seviyeli soyutlama (abstraction) için iyi bir yöntemdir ve MSRS servisleri bu yolla oluşturmak için parçalardan oluşan yapılanmayı kullanır.
Runtime Servisleri
MSRS runtime bir dizi servisle birlikte gelir. Bu servisler genel olarak gerekli olan izleme, hata ayıklama, araştırma, servislerin yaşamsüresi yönetimi, üyelik yöneticileri gibi ihtiyaçları karşılar. Bu servisleri robotik uygulamanın parçası olarak kullanma MSRS ile sağlanan derslerde anlatılmıştır.
Aktifleştirme (Activation)
Bu servisler servis yazılımlarını aramak, yazılımları yüklemek ve servisleri veya bir dizi servisi başlatmak görevlerini yerine getirir.
Araştırma (Discovery)
Servisler basit bir discovery servisi kullanarak birbirlerini keşfedebilirler. Bu keşif servisleri runtime üzerinde çalışan servisler ve runtime lar arasında buluşma noktası gibi çalışır.
Depolama (Storage)
Mount servisi diğer servislere durumlarını devam ettirebilmeleri için XML veya kendi belirledikleri herhangi bir format ta kayıt imkanı sunar. Bu servisin daha sonraki bir zamanda mesela servis yaratıldığında veri almasını sağlar.
Hata ayıklama ve tanımlama servisleri (Debugging and diagnostic services)
MSRS runtime servis uygulamaları için birçok hata ayıklama ve tanımlama servisi sunar. İki çok kullanılan servis ise console output ve diagnostics service dir. Console output servisi diğer servisler tarafından izlenebilen düzenli veri sunar ve runtime diagnostics servisi ise bellek kullanımı, işlemler ve runtime hakkındakındaki diğer ayrıntılı bilgileri sunar.
Bu servislere ek olarak runtime sistem içerisinde dolaşan tüm mesajları diske kayıt etmek içinde ayarlanabilir ve böylece kayıtlar daha sonra hatalara karşı taranabilir veya sadece keyıt olarak tutulabilir.
Servisler ile Etkileşim
Hiç servis yazmadan bile runtime ı deneyebilirsiniz. Bunu için Microsoft Robotics Studio Command Prompt adındaki özelleştirilmiş komut satırını açmanız ve aşağıdaki komutu yazmanız yeterli olacaktır:
Bir kere çalışmaya başladıktan sonra yapacağınız web tarayıcınızı açmak ve aşağıdaki URI yı yazmak olmalıdır:
Bu işlem Şekil 3 teki gibi bir sonuç verecektir. Gösterilen kullanıcı arayüzü yukardaki adresi dinleyen bir servis tarfından üretilmiştir. MSRS runtime servisleri otomatik olarak HTTP üzerinden çalışırlar ve web tarayıcı ile erişilebilirler. Servislerin birbirleri arasında düzenlenmiş veri aktarımı yaparak iletişim kurmalarının yanında kullanıcı ile iletişimleride aynı oranda önemlidir. Bazı servisler kullanıcı arayüzünü HTML ile sağlarlar, genelde kullanılan XML yapısıdır fakat diğer bazı servisler kullanıcı arayüzlerini ses, video yada resim içeren yapılarda oluşturabilirler.

Şekil 3 Microsoft Robotics Studio Runtime anasayfası. Bu sayfa runtime servislerinin parçası olan bir servis tarafından üretildi.
Bilgiye IE aracılığıyla erişme kavramı derin bir şekilde MSRS runtime ı içerisine entegre edilmiştir. Tüm runtime servislerine bu yolla ve basit HTML formları kullanarak erişilebilir.
Diğer bir servis örneği de "Console Output" servisidir ve bu servisede Şekil 3 te gösterilen sayfadan erişebilirsiniz. Bu servis diğer işlevlerin arasında bir hata ayıklama monitörü gibi çalışan generic mesaj kuyruğunu temsil eder (Şekil 4). Görüldüğü gibi sayfa üzerindeki filtreler kullanıcıya hangi mesajların gösterileceğini mesajların kategori bilgisi, üreticisi vs. bilgilerine göre seçilmesine imkan sunar.

Şekil 4 Genel mesaj kuyruğu olarak işlev gören Console Output servisinin ürettiği örnek çıkış.
Web tabanlı kullanıcı arayüzü bütün servisler tarafından üretilebilir ve bu, servislerin özelliklerinin çalışırken dahi ayarlanabileceği interaktif bir ortam yaratmanın etkili yoludur.
Kaynak : http://msdn.microsoft.com/robotics/learn/