Microsoft Robotics Studio Miguel Angel Ramos Barroso MVP ASP.NET Microsoft Code Camp Junio 2007.

Slides:



Advertisements
Presentaciones similares
Desarrollo de aplicaciones en n- capas
Advertisements

Siete integrado extensible delegado seguro compatible soportable internet information services Jorge Oblitas Especialista en Tecnologías de Desarrollo.
Programación orientada a objetos en Visual Basic .NET
Introducción a C#.
Framework de.Net Infraestructura sobre la que se reúne todo un conjunto de lenguajes y servicios que simplifican el desarrollo de aplicaciones Entorno.
Windows 2003 como Servidor de Aplicaciones Jose Murillo ISV Development Advisor
Microsoft SQL Server 2005 Integration Services
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Introducción al z/OS Básico © 2006 IBM Corporation Capítulo 2B: Parallel Sysplex.
Tipos de Organización ... La organización de máquinas multiprocesadores más típicas son: Mesh Networks. Binary Tree Networks. Hypertree Networks. Pyramid.
Rossy Garita Componentes fundamentales de CLR y
Introducción a Microsoft .NET
Agregar código a un formulario Web Form con Microsoft ASP.NET
LEgo Java Operating System (LeJOS)
Desarrollo de una Aplicación Web sobre tecnología Microsoft .NET
Agenda Conceptos Claves.
Microsoft SQL Server 2008 – SQL Server Integration Services
Arquitectura Orientada a Servicios (SOA)
Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Programación Visual de Sistemas
Desarrollo de Aplicaciones para Internet
Seguridad en ASP.NET Daniel Laco
Elisa García Anzano Academic Developer Advisor
César de la Torre – Programas Técnicos para Partners División de Desarrollo y Plataforma – Microsoft Spain.
Montevideo 14 de Diciembre Gustavo Larriera Alejandro Ponicke El nuevo día a día con SQL Server 2005.
Antonio Gámir TSP – Windows Client
Módulo 1: Primeros Pasos
Características Técnicas
Introducción a Remoting
Intercambio de información Procesamiento Sin intervención del usuario Acelerando tiempos de respuesta Normalización Entre plataformas Entre lenguajes.
Introducción Eventos y Delegados.
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
Introducción ASP .NET.
Investigación Servidor de Aplicaciones WebSphere
1.2 Sintaxis del lenguaje Java.
Plataforma Microsoft.NET
Interacción Persona Ordenador
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
TALLER DE PROGRAMACIÓN III
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Profesor: Miguel Angel Vidal
Java Mayra M. Méndez Anota.
UML Diagramas. Diagramas de Interacción Muestran como los objetos de la aplicación cooperan e interactúan para cumplir con los requisitos. Suele construirse.
CLASIFICACIÓN DEL SISTEMA OPERATIVO POR APLICACIÓN
Web Services Daniel Seara. Fundamentos Intercambio de información Procesamiento Sin intervención del usuario Acelerando tiempos de respuesta Normalización.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Alberto Guirao Rico Jesús Barahona Esteve.
CPS C yber -P hysical S ystems Sistema computacional que se coordina e integra eficazmente con los procesos físicos Interactúan por medio de dispositivos.
Introducción a la Programación. Lenguaje de Máquina.
Sintaxis de C# (Declaraciones y Tipos)
Programación e Ingeniería de Software III
Programación de Memoria Compartida
ASP.NET es una nueva y potente tecnología para escribir páginas web dinámica. Es una importante evolución respecto a las antiguas páginas ASP de Microsoft.
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Programación de Memoria Compartida
Tema 0: Aplicaciones de Cliente Inteligente Carlos Cobos Miguel Ángel Niño Adaptado de Smart Client Development in.NET Peter Ty Developer Evangelist Developer.
Tecnologias Usadas.Net Framework LINQ WCF Subversion Clickonce Smart Client Deployment SQL Server Compact Edition. Visual Studio Express 2008.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
Despliegue de la aplicación Web
INTRODUCCIÓN A JAVA. Índice ¿Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales ¿Qué ventajas tengo como desarrollador?
The nesC Language: A Holistic Approach to Networked Embedded Systems Tomado de paper de: D. Gay, P. Levis, R. Behren, M. Welsh, E. Brewer, D. Culler.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
Términos y Conceptos Básicos
Unidad 2 – Gestión de Procesos
Microsoft Robotics Studio Visual Programming Language.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.
UNIVERSIDAD DE LAS FUERZAS ARMADAS-ESPE DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE NAVEGACIÓN POR VOZ PARA ROBOTS MOVILES CON RUEDAS (RMR) UTILIZANDO LA.
Introducción al entorno de C Sharp. Temario Introducción a.Net I.- Introducción a.Net – ¿Que es.Net? – Componentes Fundamentales Introducción y Entorno.
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Microsoft Robotics Studio Miguel Angel Ramos Barroso MVP ASP.NET Microsoft Code Camp Junio 2007

¿Robots?

Gran variedad de hardware…

¿Qué es una aplicación para Robots? Objetivo: Responder a un sensor Ejemplo: Arrancar un motor cuendo se pulse un botón (sensor)

¿Qué es una aplicación para Robots?

Microsoft Robotics Studio (MSRS) Plataforma de desarrollo para programar robots que soporta una gran variedad de hardware y escenarios Runtime Concurrencia Concurrencia Infraestructura en Servicios Infraestructura en Servicios Servicios y Ejemplos Ejemplos y tutoriales Ejemplos y tutoriales Servicios para Robots Servicios para Robots Modelos de Robots Modelos de Robots Microsoft Robotics Studio Herramientas Simulador Simulador Visual Programming Language Visual Programming Language

Objetivos conseguidos… Configurar sensores y actuadores en un sistema en ejecución Coordinar sensores y actuadores asincronamente Iniaciar y parar componentes dinamicamente Monitorizar, Interactuar y depurar en tiempo de ejecución Desarrollar cuando el acceso al robot es limitado Extenderse sobre multiples ordenadores Reutiliar componentes através de distintas plataformas de hardware y dispositivos.

Entorno de Desarrollo Construido sobre CLR 2.0 Portable Concurrencia y coordinación Infraestructura distribuida Entorno de despliegue muy ligero para los servicios Muy integrado con tecnologias Web Servicios Personalidados Servicios Personalidados Infraestructura distribuida Biblioteca de concurrencia Infraestructura distribuida Biblioteca de concurrencia

Entorno de Desarrollo Modelo de aplicación distribuido Distributed Application Model (DSS) Simple, flexible, y orientado a servicios Grano grueso y poco acoplado Compatible con la infraestructura Web actual Modelo concurrente de programcion Concurrent Programming Model (CCR) Enfocado en la coordinación de mensajes Nos oculta los tradicionales threads y locks Habilita la ejucución secuencial sin bloquear los thread entre I/O, evitando las cadenas de callback

¿Qué es una aplicación para Robots?

Modelo de aplicación distribuido (DSS)

Esquema de aplicación Orquestación de sensores y actuadores. En el se subscriben los servicios Un servicio puede ser Partner de otros muchos servicios

Puede representar: Hardware: Sensores, actuadores Software: UI, Almacenamiento Agregados: Mash-Ups, conjuntos de sensores Se reutiliazan gracias a la composición: Separar el estado del comportamiento (No ocultes el estado) Servicios Port State Handlers Service FIFO

Ejemplo de Servicio Bumper Estructura del estado. Los manejadores de eventos fuera de la estructura Operaciones sobre el estado: GET, QUERY, UPDATE, DELETE, DROP, SUBSCRIBE

Interacciones de servicios Runtime, Hosting Environment y System Services

Programación del CCR Los fundamentos para escribir aplicaciones para Robotics.

El CCR Runtime Modelo asíncrono de programación Un modelo concurrente sin programarnos a a mano threads, locks o semáforos. Basado en mensajes asíncronos Enfocados en la coordinación de primitivas Ejecución secuencial pero sin tener hilos bloqueados y sin necesidad de callbacks, sólo cuando sea necesario. Contexto de ejecución para los servicios Aislamiento de la infraestructura Aislamiento de otros servicios

Mensajes, Puertos y Árbitros Los mensajes son enviados a los Puertos Port myPort = new Port () ; myPort.Post (42) ; Los Puertos contienen: Una FIFO que gestiona los mantiene los valores del puerto… Una lista de continuidades que pueder ser ejecutada dependiendo del mensaje que llegue y el arbitraje La continuacion es representada por un delegado en C# Puede ser anónimo o nombrado Árbitros Implementa los contructores de enlaces o entrelazado de las concurrencia.

Primitivas CCR Iteradores en C# como una forma de agenda… Escala millones de elementos concurrentes pendientes, usa solo un hilo por microprocesador, se programa de la forma tradicional. Single item receiver Ejecuta sólo el código cuando llega un mensaje Choice arbiter Elige un mensaje recibido (join o single) de muchos, a través de diferentes piertos, lo ejecuta solo una vez con las condiciones conocidas descartando a otros. JoinStaticDynamic Interleave arbiter Teardown group, Concurrent Group, Exclusive Group

Ejemplo: Iterators IEnumerator MultistageIterator() IEnumerator MultistageIterator(){ bool result = false; bool result = false; Port port = new Port (); Port port = new Port (); // Stage A, send request // Stage A, send request port.Post(true); port.Post(true); yield return Arbiter.Receive(false, port, delegate(bool b) {result=b; }); yield return Arbiter.Receive(false, port, delegate(bool b) {result=b; }); // Stage B, received first result, send second request // Stage B, received first result, send second request port.Post(result); port.Post(result); yield return Arbiter.Receive(false, port, delegate(bool b) {result=b; }); yield return Arbiter.Receive(false, port, delegate(bool b) {result=b; }); // Stage C, received second result, print it // Stage C, received second result, print it Console.WriteLine(result); Console.WriteLine(result);}

Ejemplo: Choice PortSet port = new PortSet (); Activate( Arbiter.Choice(port, MyIntHandler, MyStringHandler) ); void MyIntHandler(int i) { Console.WriteLine("Received: " + i); Console.WriteLine("Received: " + i);} void MyStringHandler(string s) { Console.WriteLine("Received: " + s); Console.WriteLine("Received: " + s);}

Ejemplo: Join Port balancePort = new Port (); Port depositPort = new Port (); Activate(Arbiter.JoinedReceive<int,double>(true, depositPort, balancePort, depositPort, balancePort, delegate(int b, double d) { delegate(int b, double d) { balance.post(b + d); }) );

Ejemplo: Dynamic Join PortSet resultsPort = new PortSet (); new PortSet (); // parallel computation by posting requests For (int i=0;i<N;i++) { computePort.Post(new DoWork(someData,resultsPort)); computePort.Post(new DoWork(someData,resultsPort));} // requests complete asynchronously with unknown number // of failures vs. successes Activate(Arbiter.MultipleItemReceive(resultsPort, delegate (ICollection successes, delegate (ICollection successes, ICollection failures) ICollection failures){ foreach(Result r in results) foreach(Result r in results) { …… …… }});

Ejemplo: Interleave Interleave coordination = Arbiter.Interleave( new TeardownGroup( new TeardownGroup( Arbiter.Receive (false, port, ShutdownHandler) Arbiter.Receive (false, port, ShutdownHandler) ), ), new ExclusiveGroup( new ExclusiveGroup( Arbiter.Receive (true,port,UpdateHandler), Arbiter.Receive (true,port,UpdateHandler), Arbiter.Receive (true,port,InsertHandler) Arbiter.Receive (true,port,InsertHandler) ), ), new ConcurrentGroup( new ConcurrentGroup( Arbiter.Receive (true,port,QueryHandler) Arbiter.Receive (true,port,QueryHandler) )); )); Activate(coordination);

[ServiceHandler(ServiceHandlerBehavior.Concurrent)] public IEnumerator GetHandler(Get get) { get.ResponsePort.Post(_state); get.ResponsePort.Post(_state); yield break; yield break;} [ServiceHandler(ServiceHandlerBehavior.Exclusive)] public IEnumerator UpdateHandler(Update update) { _state.CurrentResult += update.Body.Value; _state.CurrentResult += update.Body.Value; update.ResponsePort.Post(new UpdateResponse()); update.ResponsePort.Post(new UpdateResponse()); yield break; yield break;} Coodinación de Servicios De forma declarativa

Recursos Web site Community Newsgroup Wiki with Patterns and Trouble Shooting annel9.MSRoboticsStudio annel9.MSRoboticsStudio

© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Lego Mindstorms NXT 1.NXT Brick 2.Touch Sensor 3.Sound Sensor 4.Light Sensor 5.Ultrasonic Sensor 6.Servo Motors (3) NXT Programming Software (LabView) Bluetooth & USB Communications

NXT Projects

Summary Broad third party support

Microsoft Robotics Studio Application deployment models Supports standalone and distributed processing scenarios Disconnected autonomous operation (with optional networked monitoring) Distributed execution (execution across compute units) Connected operation (remote execution on PC)

Robotics Studio Runtime Joystick service UI service Microsoft Robotics Studio Interaction through the browser Service state observable at all levels of the application Services are capable of providing rich representation of data Robot Motor services Sensor services

Browser Robot Dashboard ScriptingConnect Robotics Studio Runtime JS Service Motor services Sensor services Microsoft Robotics Studio Driving a robot with the browser and JScript

Robotics Runtime Concurrency and coordination runtime Runtime Activation Discovery Diagnostics Monitoring UX Storage DecentralizedSystemServices Algorithms … Sensors Actuators ReferenceServices Services Simulation Visualization AuthoringServices SensorsActuators Custom/Application Services OrchestrationControl