Recursos de Microsoft Robotics Developer Studio

En estos días, estuve dando varias charlas sobre Microsoft Robotics Developer Studio (MRDS), quisiera escribir acá sobre lo que presento en esas charlas, y enlaces a recursos del tema.

En primer lugar, pueden ver todo sobre el producto de Microsoft desde:

Microsoft Robotics

Ahí encontraran para bajarse el Microsoft Robotics Developer Studo 2008 (actualmente CTP July), y descargas adicionales.

La presentación original de la charla es la que dio Arvindra Sehmi en el Regional Architect Forum de México:

Mexico Regional Architect Forum 2008

En el blog de Arvindra, pueden encontrar información adicional sobre el uso de MRDS en la industria, más allá de robótica:

DSS Use Cases in the Enterprise

Mi presentación en español, la pueden bajar de my Skydrive:

Presentación de Microsoft Robotics (14 megas)

En la charla muestro algunas de las ideas y ejemplos de diseño, implementación y tecnologías usadas en MRDS:

Decentralized Software Services

Basado en principios de diseño de REST (Representational State Transfer), es la base que tiene MRDS para operar en forma distribuida de forma eficiente. Usa estándares de la industria, como HTTP para el envío y recepción de mensajes, XML y SOAP para el protocolo de transporte. Todo MRDS se basa en tener un host (servidor) de DSS (el DssHost) que levanta servicios. Los servicios son los elementos que nosotros programamos. Dentro del software viene ya servicios provistos, para manejar e interactuar con robots simulados y reales, y con cámaras, sensores, motores, y otros elementos, como ventanas y joysticks. Los servicios se comunican entre sí usando DSS. Podemos manejar uno o varios robots, desde una o varias máquinas. O podemos, como muestra la imagen, ver el estado de un servicio, como una cámara de video, apuntando en nuestro browser a la dirección donde se encuentra el servicio (puede ser nuestra máquina u otra máquina).

Concurrent and Coordination Runtime

Otra de las novedades del sistema, es una nueva librería que simplifica y potencia el uso de mensajes para comunicar distintas partes de nuestra aplicación. Podemos enviar un mensaje a un Port, y dentro de ese Port podemos programar cómo atendemos a ese mensaje. Toda la atención de los mensajes se maneja de una forma eficiente, usando múltiples hilos de ejecución, y un manejo interno nuevo de lo que se llama un pool de threads. Es interesante explorar las capacidades de CCR, que se puede usar como librería desde fuera de MSRS. Podemos armar sistemas compuestos de componentes que se envíen mensajes asincrónicos entre sí. Los componentes pueden residir todos en el mismo programa y máquina, o podemos usar DSS para que los mensajes viajen entre distintos servidores.

Visual Programming Language

Teniendo un servidor de servicios DSS, los servicios se pueden programar en el Visual Studio, o pueden coordinarse los servicios a usar, detallando los mensajes y su proceso, usando el Visual Programming Language, una forma de conectar esos servicios de forma visual. Usando un diseñador interactivo, arrastrando y soltando servicios, y conectando sus mensajes de salida y entrada, podemos modelar un programa, un nuevo servicio, que por ejemplo conecte nuestro joystick o ventana de control, con robots, dispositivos u otros servicios. Uno de los ejemplos que muestro, es cómo interactuar con un servicio de Text to Speech (texto a voz).

 

Simulation Environment

No necesitamos tener un robot físico para interactuar. MRDS nos brinda un entorno de simulación, para manejar entidades (poliedros, esferas, entidades complejas como mesas, paredes, robots).

El entorno de simulación es otro servicio más, que se levanta dentro de un host de DSS. Nuestros servicios pueden enviarle mensajes, como “crear suelo”, “crear cielo”, “crear sol”, “agregar entidad esfera”. Las entidades tienen características, que incluyen densidad, peso, cómo las afecta la gravedad.

Este entorno de simulación está basado en tres tecnologías, que se instalan (si no las tiene ya instaladas) con el MRDS: el DirectX 9, el Microsoft XNA (para el render de 3 dimensiones), y el AGEIA PhysX que simula la física del entorno. Estas tecnologías pueden ejecutarse basadas en software, o pueden aprovechar hardware especial que tenga instalada la máquina: tarjetas de video con soporte de 3D, o plaquetas de simulación física.

Como todo servicio, el entorno de simulación puede ejecutar en una máquina, y el resto de los servicios estar repartido en otros servidores de la red. Por ejemplo, pueden colocar varios robots en un entorno de simulación, y cada uno manejarlo desde una máquina dedicada.

Robochamps

Es un sitio donde aparece desafíos a resolver con MRDS, donde programadores de todo el mundo pueden participar resolviendo un problema. El primer concurso fue ganado por Dave Sprague, entusiasta de robótica de los EE.UU., y Jackson Matsuura, profesor de Brasil. En el Desafío Amazed compitieron participantes de 77 países. Ahora se abre el desafío Sumo donde dos robots, en un ring, tiene que maniobrar para echar al otro fuera de la arena.

Encontraran videos explacativos (en inglés) sobre las tecnologías que se usan en MRDS, así como ejemplos para bajarse.

Enlaces

En la charla menciono algunas implementaciones de gente de la comunidad, involucrada en robótica, y que usa MRDS.

Como el sistema puede ejecutarse en un Windows Compact Edition, se puede instalar en un dispositivo de Windows Mobile. Eso es lo que Brian Cross, con su:

http://www.wimobot.com/

WiMoBot es el Windows Mobile Robot. Usa un Windows Mobile 5.0 SmartPhone como el cerebro central de control. Cross lo ha extendido para poder ser manejado remotamente desde una PC usando MRDS. Hay una versión montada sobre el lego NXT en:

http://www.wimobot.com/AssemblyNxt.aspx

como el sistema operativo

Raúl Arrabales Moreno está trabajando desde hace tiempo, en Inteligencia Artificial y robótica. Pueden visitar su sitio de

http://www.conscious-robots.com/

Está trabajando con MRDS, del que destaca sus características de manejo de concurrencia, coordinación, mensajería asincrónica. Está usando MRDS son el robot Pioneer 3DX, uno de los robots reales y simulados soportados por el sistema. Encontraran ahí foros sobre robótica

http://www.conscious-robots.com/en/researchers-and-associations/discussion-forums/www.conscious-robots.com-f.html

como

  • PSYCHE-B Discussion Forum
  • PSYCHE-D Discussion Forum (Theoretical emphasis)
  • Language Mind and Consciousness
  • Conscious-Robots.com Forum for MSRS (English)
  • Conscious-Robots.com Forum for MSRS (Spanish) (muy recomendable, con abundante información, preguntas y respuestas de los participantes)
  • MSRS Official Forums
  • Robocup MSRS Challenge Maillist
  • Posts y ejemplos

    Post que escribo sobre Robótica en general, a partir de:

    Posts sobre Robótica

    Algunos de los ejemplos que muestro en la charla:

    Agentes Distribuidos y Fractales usando DSS/VPL
    Agentes Distribuidos usando DSS/VPL
    Intérprete tipo Lisp usando DSS y VPL
    Ejemplo de Web Crawler usando DSS (Decentralized Software Services)
    Scribble Distribuido con Microsoft Robotics Developer Studio y DSS
    Algoritmos Genéticos con AjAgents y Concurrency and Coordination Runtime (CCR)

    Más enlaces sobre estos temas en:

    http://delicious.com/ajlopez/msrs
    http://delicious.com/ajlopez/dss
    http://delicious.com/ajlopez/ccr
    http://delicious.com/ajlopez/robotics

    Nos leemos!

    Angel “Java” Lopez
    http://www.ajlopez.com/

    This entry was posted in 1389, 5527, 7337, 7747, 8846. Bookmark the permalink.

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>