Conquista el mundo
  con Robotics y
      Kinect

   Bruno Capuano
 Innovation Manager
      @elbruno
Bruno Capuano
 Innovation Manager
       @elbruno
http://www.elbruno.co
          m
¿Robots?
Hoy podemos conectarnos a casi cualquier tipo
de dispositivo
 Este tipo de dispositivos son plataformas
  minúsculas
     Controles remotos o de dispositivos
     Dispositivos de un solo uso
     Dispositivos con un solo propósito
 El procesador está allí simplemente para
  controlar el dispositivo
     Producción en alto volumen
     No necesidad de un sistema operativo
Demo: USB Email Notifier

 USB con un LED 6 colores
 Precio al día de hoy: €6 (aprox.)
 Incluye una aplicación que escanea nuestro
  buzón de correo y muestra notificaciones
  “luminosas” frente a eventos
     New email: Green
     Buzón lleno: Red
 También muestra notificaciones de estado
  con Live Messenger y Skype
 Link: http://bit.ly/IBgZjL
USB Missile Launcher

 Este es mucho más conocido
 No hace falta presentación
 Link: http://bit.ly/fhc3k1
¿Dónde estamos?
¿Hasta donde podemos llegar?
Microsoft Robotics Developer Studio
Microsoft Robotics
  Plataforma de desarrollo para robótica

  Runtime liviano orientado a servicios

  Plataforma extensible


        LEGO Mindstorm NXT                 fishertechnik

 Parallax Boe-Bot BASIC Stamp Robot       iRobot Roomba

  MobileRobots Pioneer P3 DX    Trasxter     Kondo KH-1
LEGO Mindstorm NXT
Microsoft Robotics
   Boe-Bot Kit for          iRobot Roomba
  Microsoft Robotics
        Studio
Microsoft Robotics

                              Visual
                          Programming




             Simulation
               Engine




                                 Microsoft Robotics
MRDS - Simulation Engine

        Retos a superar por Simulation Engine
          Beneficios del Simulation Engine



  El hardware es costoso, no está al alcance de
  No es necesario hardware para comenzar
  todos
  Es posible prototipar y separar en módulos los
  Los problemas de Hardware son de difícil solución
  componentes de la simulación
  El Hardware es “único” por lo que no se puede
  Es posible utilizar la simulación con el robot
  utilizar simultáneamente
MRDS - Simulation Engine
RoboCup: Nao simulation
DARPA Urban Challenge
DARPA: Princeton University
 DARPA Urban Challenge

 5 x Dual Core Servers

 25 distributed services

 35 undergraduates!




   http://pave.princeton.edu/
ROBOCHAMPS
www.robochamps.com
now call for robotics >>
http://blogs.msdn.com/b/msroboticsstudio/archive/2012/
06/29/call-for-robotics-projects.aspx
Demo Simulation Engine
Visual Programming

 Microsoft Visual Programming Language


 Basado en Procesos


 Ideal para no-developers 


 Toolbox con componentes extensibles
Visual Programming
Demo Visual Programming
Robotics Runtime
 ¿Cómo funciona una aplicación de robótica?

          Actores
                         Orquestación
                                          User Exp (UI)
                           Behavior

          Sensores


 Está compuesta por una serie de componentes
 desacoplados que proveen:
   “Orquestación” de los sensores y actores
   Interacción con el usuario
   Control de la lógica del proceso
Robotics Runtime
                                    Custom/Application Services

   Orchestration                    Control                   Sensors                     Actuators


                                              Services

                       Simulation                                     Sensors          Algorithms
   Authoring                                   Reference
   Services                                    Services
                   Visualization                                  Actuators               …



                                              Runtime

      Concurrency               Decentralized            Activation      Diagnostics        UX
    and coordination            System
        runtime                 Services                 Discovery       Monitoring       Storage
Robotics Runtime
 Los servicios con los bloques principales
    Gestionan estados
    Behavior
    Respetan un contrato predefinido




 Las operaciones
    Administran los estados
    Crean y destruyen nuevos servicios
    Son las encargardas de gestionar las notificaciones
Orchestration Service




                                                 Laser Range Finder Service
Laser Range Finder Service

                                                            Camera Service
  Camera Service

                                                             Bumper Service

 Bumper Service

    Drive Service
Microsoft Robotics
Necesidades en Robotics

                            Asíncrono
                            Concurrente
   MultiCore/ManyCore
                            Poco
   Distributed Computing     acoplamiento
                            Descentralizado
                           …
Microsoft Robotics
Necesidades en Robotics

      Runtime              Authoring Tools           Services
 • Coordination and       • Visual Simulation    • Samples and
   Concurrency library      Runtime and Editor     tutorials
   (CCR)
                          • Visual Programming   • Robot services
 • Distributed Services     Language (VPL)
                                                 • Robot models
   Framework (DSS)
                          • Visual Studio
                                                 • Infrastructure
                            templates
                                                   services
Sequential programming




                CPU Core
Parallel programming




 CPU Core         CPU Core   CPU Core
Parallel programming, too many threads




 CPU Core         CPU Core          CPU Core
Parallel programming, too few threads




 CPU Core          CPU Core              CPU Core
                              CPU Core
Parallel programming, with CCR




                      CCR
CPU Core   CPU Core         CPU Core   CPU Core
CCR nos permite crear aplicaciones
escalables y concurrentes
 Descomponiendo el trabajo en un conjunto de elementos heterogeneous
 Permitiendo que la concurrencia se balance en base a los recursos disponibles



 En pocas palabras tu decides QUÉ puede ser ejecutado en paralelo, CCR
  decide CUÁNDO y DÓNDE puede ser ejecutado
Robotics Runtime
Demo Robotics Runtime
Tribot + WebCam
Lego NXT# / MindSqualls.Net
  Una alternativa interesante
Lego NXT# / MindSqualls.Net
  Código más limpio
Demo NXT Shart
Referencias

 Download and tutorials:
     http://microsoft.com/robotics
 Book:
     http://www.amazon.es/Professional-Microsoft-Robotics-Developer-
      Programmer/dp/0470141077/ref=sr_1_2?ie=UTF8&qid=1347534766&sr=8-2
 Blogs:
     http://blogs.msdn.com/msroboticsstudio
     http://elbruno.com
Bruno Capuano
 Innovation Manager
       @elbruno
http://www.elbruno.co
          m

SecondNug Robotics, Kinect y un par de demos más

  • 1.
    Conquista el mundo con Robotics y Kinect Bruno Capuano Innovation Manager @elbruno
  • 2.
    Bruno Capuano InnovationManager @elbruno http://www.elbruno.co m
  • 3.
  • 4.
    Hoy podemos conectarnosa casi cualquier tipo de dispositivo  Este tipo de dispositivos son plataformas minúsculas  Controles remotos o de dispositivos  Dispositivos de un solo uso  Dispositivos con un solo propósito  El procesador está allí simplemente para controlar el dispositivo  Producción en alto volumen  No necesidad de un sistema operativo
  • 5.
    Demo: USB EmailNotifier  USB con un LED 6 colores  Precio al día de hoy: €6 (aprox.)  Incluye una aplicación que escanea nuestro buzón de correo y muestra notificaciones “luminosas” frente a eventos  New email: Green  Buzón lleno: Red  También muestra notificaciones de estado con Live Messenger y Skype  Link: http://bit.ly/IBgZjL
  • 6.
    USB Missile Launcher Este es mucho más conocido  No hace falta presentación  Link: http://bit.ly/fhc3k1
  • 7.
  • 8.
  • 9.
  • 10.
    Microsoft Robotics Plataforma de desarrollo para robótica Runtime liviano orientado a servicios Plataforma extensible LEGO Mindstorm NXT fishertechnik Parallax Boe-Bot BASIC Stamp Robot iRobot Roomba MobileRobots Pioneer P3 DX Trasxter Kondo KH-1
  • 11.
    LEGO Mindstorm NXT MicrosoftRobotics Boe-Bot Kit for iRobot Roomba Microsoft Robotics Studio
  • 12.
    Microsoft Robotics Visual Programming Simulation Engine Microsoft Robotics
  • 13.
    MRDS - SimulationEngine Retos a superar por Simulation Engine Beneficios del Simulation Engine El hardware es costoso, no está al alcance de No es necesario hardware para comenzar todos Es posible prototipar y separar en módulos los Los problemas de Hardware son de difícil solución componentes de la simulación El Hardware es “único” por lo que no se puede Es posible utilizar la simulación con el robot utilizar simultáneamente
  • 14.
  • 15.
  • 16.
  • 17.
    DARPA: Princeton University DARPA Urban Challenge  5 x Dual Core Servers  25 distributed services  35 undergraduates! http://pave.princeton.edu/
  • 18.
    ROBOCHAMPS www.robochamps.com now call forrobotics >> http://blogs.msdn.com/b/msroboticsstudio/archive/2012/ 06/29/call-for-robotics-projects.aspx
  • 19.
  • 20.
    Visual Programming MicrosoftVisual Programming Language Basado en Procesos Ideal para no-developers  Toolbox con componentes extensibles
  • 21.
  • 22.
  • 23.
    Robotics Runtime ¿Cómofunciona una aplicación de robótica? Actores Orquestación User Exp (UI) Behavior Sensores Está compuesta por una serie de componentes desacoplados que proveen: “Orquestación” de los sensores y actores Interacción con el usuario Control de la lógica del proceso
  • 24.
    Robotics Runtime Custom/Application Services Orchestration Control Sensors Actuators Services Simulation Sensors Algorithms Authoring Reference Services Services Visualization Actuators … Runtime Concurrency Decentralized Activation Diagnostics UX and coordination System runtime Services Discovery Monitoring Storage
  • 25.
    Robotics Runtime Losservicios con los bloques principales Gestionan estados Behavior Respetan un contrato predefinido Las operaciones Administran los estados Crean y destruyen nuevos servicios Son las encargardas de gestionar las notificaciones
  • 26.
    Orchestration Service Laser Range Finder Service Laser Range Finder Service Camera Service Camera Service Bumper Service Bumper Service Drive Service
  • 27.
    Microsoft Robotics Necesidades enRobotics  Asíncrono  Concurrente MultiCore/ManyCore  Poco Distributed Computing acoplamiento  Descentralizado …
  • 28.
    Microsoft Robotics Necesidades enRobotics Runtime Authoring Tools Services • Coordination and • Visual Simulation • Samples and Concurrency library Runtime and Editor tutorials (CCR) • Visual Programming • Robot services • Distributed Services Language (VPL) • Robot models Framework (DSS) • Visual Studio • Infrastructure templates services
  • 29.
  • 30.
    Parallel programming CPUCore CPU Core CPU Core
  • 31.
    Parallel programming, toomany threads CPU Core CPU Core CPU Core
  • 32.
    Parallel programming, toofew threads CPU Core CPU Core CPU Core CPU Core
  • 33.
    Parallel programming, withCCR CCR CPU Core CPU Core CPU Core CPU Core
  • 34.
    CCR nos permitecrear aplicaciones escalables y concurrentes  Descomponiendo el trabajo en un conjunto de elementos heterogeneous  Permitiendo que la concurrencia se balance en base a los recursos disponibles  En pocas palabras tu decides QUÉ puede ser ejecutado en paralelo, CCR decide CUÁNDO y DÓNDE puede ser ejecutado
  • 35.
  • 36.
  • 37.
  • 38.
    Lego NXT# /MindSqualls.Net  Una alternativa interesante
  • 39.
    Lego NXT# /MindSqualls.Net  Código más limpio
  • 40.
  • 41.
    Referencias  Download andtutorials:  http://microsoft.com/robotics  Book:  http://www.amazon.es/Professional-Microsoft-Robotics-Developer- Programmer/dp/0470141077/ref=sr_1_2?ie=UTF8&qid=1347534766&sr=8-2  Blogs:  http://blogs.msdn.com/msroboticsstudio  http://elbruno.com
  • 42.
    Bruno Capuano InnovationManager @elbruno http://www.elbruno.co m

Notas del editor

  • #11 IntroducciónMs lo anuncia el 20 de Junio de 2006 en la Robotics Business ConferenceCTP Agosto, Septiembre, Octubre, NoviembreRTM 13 Diciembre 2006 Plataforma de desarrollo de robots de End-to-End posee una herramienta para la generación de servicios que interactúan con piezas de hardware estos servicios son genéricos y pueden ser accedidos desde una interfaz web o win posee una herramienta para la simulación de aplicación en un entorno que soporta modelos 3D Utilizando the AGEIA PhysiscsTechnologyEl Runtime posee un engine para la ejecución concurrente de servicios (lo veremos mas adelante cuando tengamos que rotar un motor)Esto hace que la creación de aplicación asincronas sea mas facilSe puede acceder al estado de cualquier servicio a traves de una interfaz web para consultar su estado y para interactuar con el mismoVisual Studio y VS Express además de IronPhytonLa version RTM soporta interfaces para interactuar con LEGO Mindstorms, Irobot; aspiradoras inteligentes, ahora con bluetoothel mando de la XBox360
  • #12 Boe-Bot Kit for Microsoft Robotics StudioUsing Microsoft Robotics Studio, you can easily program the Boe-Bot Parallax kit over Bluetooth and best of all, the Robotics Studio team has negotiated a 15% discount on the BoeBot.  Cost: $178.77 after 15% discountGet it:Head over to ParallaxCode it: You can use Microsoft Robotics Studio which exposes services to control your Parallax Boe-Bot Kit using Bluetooth.iRobotRoombaBesides being a great way to vacuum your house, you can program your roomba to help you take over the world!  I suggest making it bark like a dog and "attack" people that get too close to your Xbox.Cost: $229 or $339 depending on modelGet it:Roomba Red + RooTooth bundle, Roomba Discovery + RooTooth BundleCode it: You can use Microsoft Robotics Studio which includes built-in services for Roomba programming.LEGO Mindstorm NXTLEGO Mindstorms NXT is Lego’s newest release of their popular Mindstorms robotics and includes built-in three motor support and multiple sensor support including motion, touch, sound, and light.  Heck, you may even be able to solve the most evil puzzle ever created.Cost: $249.99Get it:LEGO Mindstorms on Amazon.comCode it: You can use Microsoft Robotics Studio which includes built-in services for LEGO Mindstorms NXT programming.  Or check out Mind Squall's .Net 2.0 library for remote controlling your NXT.
  • #14 Hardware costoso, el LEGO cuesta mas de 200€Una parte importante del desarrollo y pruebas con elementos de robotica es la capacidad de emulacionEs diferente al desarrollo convencional (no hay Nunit :P)El equipo de Robotics, despues de investigar un poco, pensó que el punto de partida ideal para brindar capacidades de emulacion era un entorno de emulacion como el de los videojuegos; con base en visualizaciones realistasfisica aplicada a los objetos con restricciones basadas en el mundo realUtiliza AGEIA PhysxTechnologyManejado y renderizado con DirectXNo es necesario Hardware para comenzarSe pueden diseñar y coordinar proyectos interdisciplinarios para equipos distribuidos con roles diferentesEsto permite ajustar los valores de las variables que afectan al robot en tiempo real
  • #15 Proyecto de ejemplo de Demo"C:\\Microsoft Robotics Studio (1.5)\\samples\\SimulationTutorials\\Tutorial1\\SimulationTutorial1.sln“Descomentar y explicar como se agregan entidadesprivate void PopulateWorld() { //AddSky(); //AddGround(); //AddBox(new Vector3(1, 1, 1)); //AddTexturedSphere(new Vector3(3, 1, 0)); }F1 - Hides help text. F2 - Toggles display/rendering of the physics primitive visualization. Useful for debugging your physics geometry. Camera Movement: A - Strafe Left (lateral move left) D - Strafe Right (lateral move right) W - Move Forward S - Move Backward Q - Move Up on the Y-axis (vertically) E - Move Down in the Y-axis (vertically) Proyecto 2"C:\\Microsoft Robotics Studio (1.5)\\samples\\SimulationTutorials\\Tutorial2\\SimulationTutorial2.sln"Referencias a The tutorial requires the following additional references: SimulatedBumper.Y2006.M05.Proxy SimulatedDifferentialDrive.2006.M06.Proxy SimulatedLRF.Y2006.M05.Proxy SimulatedWebcam.Y2006.M09.Proxy Para controlar el lego y el Bot grandeHay ademas un sensor laser en la mesa para controlar las distanciasMostrar y descomentar el siguiente código para mostrar como se puede montar una webcam sobre un robot (lina 108)//CreateService(// simwebcam.Contract.Identifier,// Microsoft.Robotics.Simulation.Partners.CreateEntityPartner(// "http://localhost" + cam1.State.Name)//);
  • #21 En realidad el nombre es Microsoft Visual Programming LanguageEs un entorno de desarrollo visual basado en procesos “de datos”Esta pensado para nodesarrolladores, personas sin conocimientos de programación, pero con conocimientos basicos de conceptos como variables, flujos y logica.OJO, no está limitado para principiantes se pueden hacer app potentes con VPLPosee una toolbox con los componentes que se pueden utilizar en el proceso, y esta toolbox es extensibleNo se utiliza WWF, porque el engine de ejecución de VPL, para los procesos sincrónicos es parecido, pero tiene características propias de la programacion concurrente que no aplican a WWF
  • #22 Lanzar VPLDemos en c:\\YoRobot\\Source\\MRDS\\Ejemplo de un simple hola MundoLoop con text to speechMovimiento de un Lego, configurar el “GenericDifferentialDrive” para que utilice la interfaz de acceso del LEGO.
  • #24 Este es el esquema grafico principal de una aplicación robotica, compuesta por actires, sensores, y usuariosEs necesario una entidad que actue como un orquestador y que sea la encargada de
  • #25 Actua como un orquestador