Archive for the '8846' Category

CCR usado en mensajes asincrónicos

Friday, September 19th, 2008

Leo en el blog de Arvindra Sehmi que la gente de Tyco Software House implementó un sistema donde usando CCR (Concurrent and Coordination Runtime), la librería que viene dentro de Microsoft Robotics. En su artículo ARCast.TV – Nice Example of CCR Adoption in the Enterprise muestra el video donde la gente de Tyco explica cómo consiguieron procesar gran cantidad de mensajes, basándose en envío asincrónico.

ARCast.TV – Stephen Tarmey of Tyco on adopting Robotics Studio CCR for High Performance Async IO
 

Me gustaría que mostraran algo más gráfico del sistema que armaron, pero igual es interesante escuchar a alquien que usa a Microsoft Robotics aplicado a la empresa.

Ya Arvindra había comentado usos de DSS/CCR más allá de Robotics en

DSS Use Cases in the Enterprise

Todavía algunos de esos usos no están publicados, pero espero que aparezcan más casos de éxito con el tiempo.

El año pasado escribí y publiqué un ejemplo AjMessages, con intercambio de mensajes asincrónicos, usando WCF como comunicación entre nodos de una grilla:

AjMessages- hacia un procesador de mensajes

También el año pasado escribí una versión para usar CCR internamente, y DSS como comunicación entre los nodos, pero no la publiqué. El núcleo del sistema se puede implantar en un host WCF o en un host DSS. Me gustaría en estos días, pulir un poco el código, y publicar el ejemplo, para ver que uno puede usar CCR internamente para encolar mensajes en memoria, y repartirlos en un pool de threads que maneja internamente CCR, mientras al mismo tiempo, repartimos mensajes en otros nodos de la grilla, si los hubiera, sin mayor problema, para conseguir escalabilidad usando más máquinas de forma transparente. Como ejemplo de uso, podría reescribir el Web Crawler o el programa de Fractal, que escribí directamente para DSS/CCR/VPL:

Agentes Distribuidos y Fractales usando DSS/VPL

Agentes Distribuidos usando DSS/VPL

Pero imaginen que pueden repartir una tarea entre varias máquinas, incluso remotas. Imaginen que pueden enviar una tarea a realizar (como recolectar información para un informe de Business Intelligence) a una sucursal, y otra tarea a máquinas de otra sucursal dentro de su empresa. Pueden recibir los resultados como mensajes, usando un patrón del tipo request-response. Podemos codificar “agentes” que se envíen mensajes entre sí, para colaborar en un objetivo.

Creo que el modelo de mensaje asincrónico junto con la implementación de grilla, puede ser explotado de muchas maneras. Mi idea es aprovechar mi semana sabática (que comienza mañana) para codificar algunos proyectos, y uno de ellos es una versión más terminada de AjMessages.

Nos leemos!

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

Robótica en Puerta 18

Sunday, September 14th, 2008

Ayer sábado, di una charla sobre Microsoft Robotics (pueden ver la presentación y enlaces en Recursos de Microsoft Robotics Developer Studio), en Puerta 18. Fui invitado por el bueno de Roberto Schatz, que está dictando un curso de robótica.

Puerta 18 se encuentra en el barrio del Abasto, en Buenos Aires. Ahí hacen actividades de diseño gráfico, dibujo, grabación de sonido, diseño de arquitectura, y robótica, entre otras, con adolescentes, que asisten de forma gratuita. El emprendimiento está soportado por la fundación IRSA, y es afiliado del Computer ClubHouse.

Dí una charla de una hora, mostrando las capacidades del MRDS. La gente de Puerta 18 ya dió un curso de robótica, de dos meses, donde trabajaron con un Lego NXT. El resultado de ese curso se puede ver en:

[View:http://www.youtube.com/watch?v=MXlVLwS01wo]

[youtube:MXlVLwS01wo]

En curso anterior, los chicos formaron dos equipos, donde el desafío fue programar al robot Lego para que pudiera escapar de un laberinto. El resultado está en el video.

Ayer comenzó una nueva instancia del curso. Roberto Schatz dió una clase magistral, mostrando cómo programar un Lego NXT, que reacciona por un golpe en su “bumper”, y comienza avanza. Luego mostró cómo conseguir un comportamiento “animal”, tipo cucaracha: hacer que el Lego NXT ante un nivel de luz comienza a avanzar, y ante otro nivel menor, para el motor. Todo desde el ambiente de programación de la propia empresa Lego.

Los asistentes, creo que de 10 a 18 años, se dedicaron a armar un segundo Lego NXT que ahora tienen en Puerta 18.

En las próximas clases del curso, se planteará:

– Rehacer el desaf[io del laberinto del curso pasado
– Plantear un robot en Mindstorm que reaccione ante otros (tipo juego de la mancha), que escape, que haga pases con una pelota.
– Interacción entre robots
– Armado de competencia de Sumo en robtos
– Programación con robot virtual

En noviembre viene el cumpleaños de Puerta 18. El curso de robótica espera exhibir entonces los trabajos realizados.

Pueden encontrar los datos de contacto de Puerta 18 en la lista de afiliados del Computer ClubHouse:

Puerta 18 Computer ClubHouse

Pueden ver la cantidad de paises donde está instalada esta institución en:

Computer Clubhouse locations

Son parte del Computer Museum, y tiene el soporte también del MIT Media Lab.

Gracias desde acá, a Roberto, y a la gente de Puerta 18, por haberme invitado. Fue una interesante experiencia para mí, ante un nuevo tipo de público, que veo que tiene muchas ganas de hacer cosas. Felicitaciones por lo que estan haciendo.

Nos leemos!

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

Recursos de Microsoft Robotics Developer Studio

Wednesday, September 10th, 2008

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/

    Charla gratuita de Microsoft Robotics

    Friday, July 18th, 2008

    El lunes 28 de Julio daré una charla gratuita en el Club de Programadores, sobre Microsoft Robotics, acá en Buenos Aires.

    La idea es presentar la herramienta y su modelo de programación. Visitaremos el entorno de simulación, el manejo de robots simulados (que pueden reemplazarse por robots reales), el Visual Programming Language, y las librerías Decentrilized Software Services (DSS), y Concurrent and Coordination Runtime (CCR).

    Más informes e inscripción a esta charla gratuita en:

    http://www.clubdeprogramadores.com/cursos/CursoMuestra.php?Id=458

    Ya escribí algo sobre estos temas en este blog:

    Robótica

    Decentralized Software Services

    Concurrency and Coordination Runtime

    Presentaré algunos de los ejemplos que había usado en el último Microsoft Regional Architect Forum, en base a la presentación de Arvindra Sehmi, y otros ejemplos adicionales.

    Todo sobre Microsoft Robotics Developer Studio, desde

    http://www.microsoft.com/robotics

    Concursos, desafíos, videos explicativos, desde el nuevo sitio de Robotics

    http://www.robochamps.com/

    Enlaces que he coleccionado sobre estos temas en:

    http://del.icio.us/ajlopez/dss

    http://del.icio.us/ajlopez/ccr

    http://del.icio.us/ajlopez/robotics

    http://del.icio.us/ajlopez/msrs

    Nos leemos!

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

    Presentando Microsoft Robotics en el Regional Architect Forum 2008

    Tuesday, May 27th, 2008

    Hoy voy a presentar en el RAF 2008 del Cono Sur, en Pilar, Buenos Aires, conceptos y demos de Microsoft Robotics Developer Studio. Como la semana pasada, voy a usar como base una versión reducida de la presentación de Arvindra Sehmi:

    A Data-Driven Approach to Distributed, Concurrent Software – ASEHMI – April 2008.pptx

    Esta vez, la charla estará más centrada en las capacidades de armar aplicaciones distribuidas, y analizar el modelo de servicios que ofrece. Es un poco difícil explicar algunos de los conceptos claves sólo en 50 minutos, pero espero que pueda marcar que estas herramientas son para más allá de robótica.

    Para más información sobre Microsoft Robotics, visitar:

    http://www.microsoft.com/robotics

    Ejemplos presentados por Arvindra Sehmi en su RAF México:

    CCRBasics.rar

    En estos días escribí un ejemplo de uso de DSS, para implementar un Web Crawler:

    Web Crawler example using DSS (Decentralized Software Services)

    Ya vendrá el post correspondiente en español.

    Un ejemplo anterior:

    Distributed Scribble with Microsoft Robotics Developer Studio and DSS

    Varios de los ejemplos que presento, están incluidos en el propio producto. El año pasado estuve implementando AjMessages usando DSS/CCR, pero todavía no tengo algo publicado. Para un cliente, estoy desarrollando una aplicación distribuida, configurable, usando todas estas tecnologías, espero que quede publicada, para poder bloguear sobre el tema.

    Para una detallada explicación de CCR, leer:

    MSDN Mag – Concurrent Affairs – Concurrency and Coordination Runtime

    Concursos, desafíos, videos explicativos, desde el nuevo sitio

    http://www.robochamps.com/

    He dejado enlaces sobre estos temas en:

    http://del.icio.us/ajlopez/dss

    http://del.icio.us/ajlopez/ccr

    http://del.icio.us/ajlopez/robotics

    http://del.icio.us/ajlopez/msrs

    Nos leemos!

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

    Presentando Microsoft Robotics Developer Studio

    Tuesday, May 20th, 2008

    Hoy voy a estar presentando esta tecnología en la Universidad Tecnológica Nacional, de La Plata, provincia de Buenos Aires. Página base en:

    http://www.microsoft.com/robotics

    Es una de las conferencias del

    Congreso Nacional de Estudiantes de Ingeniería en Sistemas de Información

    Mi conferencia es

    Microsoft Robotics Studio

    Uso una versión resumida de la presentación del bueno de Arvindra Sehmi, que pueden bajar completa de:

    A Data-Driven Approach to Distributed, Concurrent Software – ASEHMI – April 2008.pptx

    La idea es mostrar, en dos horas, las ideas principales en las que se basa:

    – Decentralized Software Services

    – Concurrent and Coordination Runtime

    – Visual Programming Language

    – Simulation Environment

    – Robots simulados

    – Soporte de la industria

    Es muy fácil de instalar, y la última versión funciona y se maneja desde Visual Studio 2005 o 2008.

    Más información sobre estas tecnologías en

    http://www.robochamps.com

    http://del.icio.us/ajlopez/robotics

    http://del.icio.us/ajlopez/dss

    http://del.icio.us/ajlopez/ccr

    Tengo algunos ejemplos a publicar, con CCR y DSS. Ya vieron algunos en:

    Genetic Algorithms with AjAgents and Concurrency and Coordination Runtime (CCR)

    Distributed Scribble with Microsoft Robotics Developer Studio and DSS

    Agents using Concurrency and Coordination Runtime (CCR)

    Artículo introductorio a CCR en

    Concurrent Affairs- Concurrency and Coordination Runtime

    Espero repetir esta charla en otros lugares, como el MUG de Argentina o el Club de Programadores. La semana que viene doy una charla sobre el mismo tema, pero más orientada a aplicaciones distribuidas, en el Regional Architect Forum 2008 de Cono Sur. Algo más sobre grid computing en varios artículos:

    http://msmvps.com/blogs/lopez/archive/tags/Grid+Computing/default.aspx

    Todo lo de Microsoft Robotics Developer Studio se puede aplicar para eso.

    Nos leemos!

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