# Microsoft Robotics Developer Studio

La plateforme de développement Microsoft Robotics Developer Studio (MSRDS) a pour objectif de faciliter le développement d'applications robotiques. Elle prend en charge diverses configurations matérielles de robots. Elle comporte un runtime, un environnement de développement et des outils de simulation.

## Le runtime

* Il s'appuie sur le Framework .NET (voire le Compact Framework .NET depuis la version 1.5) : ceci permet d'abstraire le système d'exploitation pour l'application.
* Il propose une architecture orientée « services » composée de deux modules : CCR et DSS
** CCR : le Concurrency and Coordination Runtime gère l'exécution asynchrone et parallèle des divers éléments de l'application robotique. Ainsi, on n'a pas besoin lors du développement de gérer manuellement la synchronisation des diverses tâches et l'on peut envisager la prise en compte d'évènements asynchrones provenant de capteurs et la prise en charge de commandes de moteurs et d'activateurs liées à ces évènements.
** DSS : le Decentralized Software Services supporte un modèle simple orienté « services ». Les diverses entités de l'application MSR sont des services s'exécutant sur un PC, un robot, une machine et dont la communication est gérée par DSS au travers d'un réseau filaire ou sans fil, s'appuyant sur un protocole ouvert (DSSP). Ce modèle permet la réutilisation de services dans divers contextes et l'abstraction de l'implémentation au sein dudit service : on pourra par exemple avec une même application robotique piloter deux robots différents proposant la même interface de pilotage. Les services ont un état structuré, ils implémentent un « comportement », ils exposent des « entrées/sorties » évènementielles ou non, sont capables d'exploiter les fonctionnalités de l'OS sous-jacent, sont en mesure d'établir des partenariats avec d'autres services, peuvent découvrir d'autres services au travers de DSS...

## Les outils

Les outils permettant de développer une application MSR comportent un environnement graphique (Microsoft Visual Programming Language : VPL), des outils en ligne de commande permettant de générer et manipuler des projets et fichiers Visual Studio (la version Express de VS suffit) en C#, C++ ou VB.NET), le support pour des langages de script tels qu'IronPython et des outils de simulation 3D.
* Visual Programming Language est un environnement de développement graphique proposant un catalogue de services (tous ceux présents sur la machine de développement) et d'activités.
** Ceux-ci sont mis en interaction de manière graphique, un service ou une activité étant représenté par un bloc exposant des entrées et des sorties (évènementielles ou synchrones) qu'il suffit de glisser depuis le catalogue vers le diagramme.
** L'établissement des liens se fait à la souris et permet définir si les signaux que l'on prend en compte doivent être simultanés ou non, d'effectuer des calculs sur les valeurs transmises, ...
** VPL permet aussi de générer le code de nouveaux « macro services » à partir des diagrammes créés par l'utilisateur.
** Il est possible dans VPL de configurer les divers services pour différents hardwares aisément.
* Visual Studio est l'environnement de développement logiciel Microsoft. Robotics Studio se contente de la version gratuite (Express) de cette suite de développement pour permettre le développement de nouveaux services en C#, C++, JScript, IronPython ou VB.NET. Les outils mis à disposition dans MSRDS tels que DSSNewService.exe permettent de simplifier les développements en générant les squelettes des divers fichiers code source.
* L'environnement de simulation 3D de MSRDS permet de simuler le comportement de robots dans un environnement virtuel s'appuyant sur la technologie AGEIA PhysX (moteur physique) incluant un modèle graphique et un modèle physique très évolués.
* Sur chaque nœud d'exécution (chaque machine du réseau robotique sur lequel s'exécute un runtime), il est possible d'exécuter (localement ou à distance) un écran de contrôle (via un navigateur web) qui permet de diagnostiquer l'état dudit nœud, de démarrer ou arrêter un ou plusieurs services, etc.
* Les outils sont livrés avec de multiples tutoriels et exemples permettant une prise en main très rapide. De nombreuses applications ont ainsi pu être ajoutées à la suite logicielle comme Maze Simulator qui permet de créer des mondes virtuels qui pourront être explorés par des robots virtuels, développée par une communauté indépendante, ou encore Soccer Simulation qui est une simulation de compétition de football, cette fois développée par Microsoft.

## L’infrastructure

* Les plateformes supportées à ce jour sont les suivantes : Windows Vista, Windows XP, Windows XP Embedded, Windows CE embedded 6.0, Windows Mobile 6, Windows Server 2003 R2 (32 bits x86), Windows Server 2003 R2 (64 bits), Windows XP 64 Bits. Ceci permet d'envisager d'avoir des systèmes robotiques allant du simple robot autonome à une flotte de robots et machines collaborant au travers d'un réseau distribué et décentralisé.
* Les moyens de communications supportés vont du lien Série, aux réseaux Ethernet en passant par Bluetooth, 802.11, ZigBee, CAN, RF, USB...
* Robotics Studio tourne sur un simulateur basé sur la technologie PhysX d'Ageia

## Robots supportés

* Le CoroBot de CoroWare
* Lego Mindstorms NXT
* iRobot Create
* Le FrameWork educatif de Kuka
* Boe-Bot
* Les robots de Robosoft
* Pekee II de Wany Robotics
* La série des RoboBuilder

## La licence

Microsoft Robotics Studio est utilisable gratuitement (outils et runtime) pour une activité non commerciale (hobbyistes, étudiants, professeurs, chercheurs).