SlideShare una empresa de Scribd logo
1 de 70
Descargar para leer sin conexión
CoolBOT.
                An Introduction
                           Antonio Carlos Domínguez Brito
                    Inst. Univ. SIANI/Dpto. Informática y Sistemas
        [1]          Universidad de Las Palmas de Gran Canaria
[www.coolbotproject.org]                Spain
CoolBOT
                           Table of Contents

                              1. Overview
                              2. CoolBOT Components
                              3. CoolBOT Port Connections
                              4. CoolBOT Views
                              5. CoolBOT Probes
                              6. Development Tools
                              7. A Real Example
         [2]
[www.coolbotproject.org]
                              8. Conclusions and Future Work
CoolBOT
           Overview




                             CoolBOT is a
                              distributed
                                 CBSE
                             (Component
                            Based Software
                           Engineering) C++
         [3]                 programming
[www.coolbotproject.org]      framework
CoolBOT
           Overview




                           CoolBOT's design principles:
                           1. Component based → easy
                           software integration.
                           2. Take advantage of
                           multithreading/multicores OSs.
                           3. System control & monitoring.
                           4. Transparent distributed
         [4]
                           computing.
[www.coolbotproject.org]
CoolBOT
           Overview




                              A system is
                             composed by
                           integrations and
                               software
                             components
         [5]
[www.coolbotproject.org]
CoolBOT
           Overview




                            There are three
                           kinds of software
                             components:
                             components,
                              views and
                               probes
         [6]
[www.coolbotproject.org]
CoolBOT
           Overview




       Integrations are
       processes in the
        underlying OS.
         They contain
         components

         [7]
[www.coolbotproject.org]
CoolBOT
           Overview




                      Integrations also may
                       contain views, and a
                         machine can host
                        several integrations




         [8]
[www.coolbotproject.org]
CoolBOT
           Overview




                            probes are software
                           components to interface
                           non CoolBOT software
                           with CoolBOT systems,
                                and viceversa




         [9]
[www.coolbotproject.org]
CoolBOT
                           Overview




        [10]
[www.coolbotproject.org]
CoolBOT
                           Overview




       CoolBOT users
      program at system
            level




        [11]
[www.coolbotproject.org]
CoolBOT     CoolBOT runtime
                                         infrastructure
                           Overview
                                      supports system level
                                        abstractions and
                                            execution




        [12]
[www.coolbotproject.org]
CoolBOT
                           Overview



        CoolBOT runtime
         infrastructure is
       supported by the OS
         API and the ACE
        library for network
          communications




        [13]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Components




        [14]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Components
                                    CoolBOT components are port automata
                                    (input port data packets receptions trigger
                                              automaton transitions)




        [15]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Components
                                             Meta state running
                                          implements component's
                                            functionality. It is user
                                                   defined




        [16]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Components




                                     Components' input and output
                                       ports constitute its external
        [17]
                                      interface. Through them they
[www.coolbotproject.org]
                                     receive and send port packets
                                              (data packets)
CoolBOT
                           CoolBOT Port Connections

                  Port connections are
              unidirectional (from input port
               to output port), and follow a
                   publish/subscribe
                communication pattern

                one publisher,
              multiple subscribers




        [18]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Port Connections
                                                     Port connections are
                                                 unidirectional (from input port
                                                  to output port), and follow a
                                                      publish/subscribe
                                                   communication pattern

                                                          multiple publishers,
                                                           one subscriber




        [19]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Port Connections




  Components interact
      using only port
  connections. Thus, a
  system can be seem
     as a network of
      components
   interchanging port
 packets and running as
 data driven machines

        [20]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Port Connections




         There are different
      typologies for input and
    output ports for establishing
        port connections with
     different communication
    patterns: fifo on input port,
      “blackboard” on output
       port and multipacket.

        [21]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Port Connections

                                             Port Connections Typologies
                                        Active Publisher/Passive Subscriber (AP/PS)
                            Output Port              Input Port          Port Connection Type
                                tick                    tick               tick connections
                                                        last               last connections
                              generic                   fifo                fifo connections
                                                       ufifo          unbounded fifo connections
                            multipacket
                                                    multipacket         multipacket connections
                           lazymultipacket
                                        Active Publisher/Passive Subscriber (PP/AS)
                               poster                 poster              poster connections
        [22]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Port Connections




    A port connection can be
      established when the
     typologies of the ports
    involved are compatible,
       and the type of port
    packets they transport are
            the same

        [23]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Port Connections

           Integrations are CoolBOT
               processes hosting
            component instances at
                    runtime

                Port connections
              established between
               components (local
           components) in the same
           integration are supported
              transparently by the
            underlying OS thread API


        [24]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Port Connections

           Integrations are CoolBOT
               processes hosting
            component instances at
                    runtime

          Port connections between
           components in different
               integrations are
           multiplexed over TCP/IP
                 connections




        [25]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Views

      The second type of
     software component
     available in CoolBOT
           are views

   CoolBOT views expand
   component interfaces to
   decouple and separate
    system computation
      and control from
    graphical interfaces
     for monitoring and
          control

        [26]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Views


    Likewise components,
       views have also an
      external interface of
     input and output ports




        [27]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Views

         CoolBOT integrations
         may contain indistinctly
        components and views


        As software components
          views may establish
         port connections with
        any other component or
        view (local or remote) in
                a system



        [28]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Views

         CoolBOT integrations
         may contain indistinctly
        components and views


        As software components
          views may establish
         port connections with
        any other component or
        view (local or remote) in
                a system



        [29]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Probes


      The third type of software
   component available in CoolBOT
             are probes

        Expanding even more the
     concept of component interface
   probes implement interfaces of
    input and output ports in order
   to allow non CoolBoT software to
    intercommunicate with CoolBoT
              components


        [30]
[www.coolbotproject.org]
CoolBOT
                           CoolBOT Probes


      The third type of software
   component available in CoolBOT
             are probes

      CoolBOT probes implement
    interfaces of input and output
       ports in order to allow non
          CoolBoT software to
    intercommunicate with CoolBoT
              components



        [31]
[www.coolbotproject.org]
CoolBOT             CoolBOT provides two tools for
                                               developing CoolBOT software:
                           Development Tools   coolbot-bundle and coolbot-c




        [32]
[www.coolbotproject.org]
CoolBOT               CoolBOT provides two tools for
                                                 developing CoolBOT software:
                           Development Tools     coolbot-bundle and coolbot-c




                                         coolbot-bundle creates
        [33]                            workspaces for developing
[www.coolbotproject.org]                components, views, port
                                        packets and integrations
CoolBOT             CoolBOT provides two tools for
                                               developing CoolBOT software:
                           Development Tools   coolbot-bundle and coolbot-c




                                                    coolbot-c is the CoolBOT
                                                 compiler. We can generate C++
                                                   skeletons for components,
                                                  probes, views, port packets
        [34]                                            and integrations
[www.coolbotproject.org]
CoolBOT             CoolBOT provides two tools for
                                               developing CoolBOT software:
                           Development Tools   coolbot-bundle and coolbot-c




     coolbot-c is the CoolBOT
  compiler. We can generate C++
    skeletons for components,
   probes, views, port packets
         and integrations

        [35]
[www.coolbotproject.org]
CoolBOT                CoolBOT provides two tools for
                                                  developing CoolBOT software:
                           Development Tools      coolbot-bundle and coolbot-c




                         coolbot-c is the CoolBOT
                      compiler. We can generate C++
                        skeletons for components,
                       probes, views, port packets
                             and integrations
        [36]
[www.coolbotproject.org]
CoolBOT                CoolBOT provides two tools for
                                                  developing CoolBOT software:
                           Development Tools      coolbot-bundle and coolbot-c




                                     coolbot-c is the CoolBOT
                                  compiler. We can generate C++
                                    skeletons for components,
                                   probes, views, port packets
        [37]                             and integrations
[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [38]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [39]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [40]
                                     Navigation System




[www.coolbotproject.org]
/*
                                 * File: player-robot.coolbot-component
                                 * Description: description file for PlayerRobot component
                                 * Date: 09 March 2012
                                 * Generated by coolbot-bundle version 1.0.0
                                 */

                                component PlayerRobot
  CoolBOT
         An Example: A Secure
            Navigation System
                                {
                                  header
                                  {
                                     author "Antonio Carlos Domínguez Brito <adominguez@iusiani.ulpgc.es>";
                                     description "PlayerRobot component";
                                     institution "IUSIANI - Universidad de Las Palmas de Gran Canaria";
                                     version "0.1"
                                  };

                                  constants
                                  {
                                    LASER_MAX_RANGE="LaserPacket::LASER_MAX_RANGE";
                                    SONAR_MAX_RANGE=5000; // millimeters

                                        private FIFO_LENGTH=5;
                                        private ROBOT_DATA_INCOMING_FREQUENCY= 10; // Hz
                                        private LASER_MIN_ANGLE= -90; // degrees
                                        private LASER_MAX_ANGLE= 90; // degrees
                                        private LASER_SCAN_RESOLUTION= 100; // 0.01 degrees
                                        private LASER_RANGE_RESOLUTION= 10; // millimeters
                                        private MAX_CONNECTION_TIMEOUT=5000; // milliseconds
                                        private LISTENING_BLOCKING_TIME=100; // milliseconds
                                        private DEFAULT_PERIOD=100 // milliseconds
        [41]                      };
                                  ...
[www.coolbotproject.org]
… // continuing player-robot.coolbot-component

                                     // input ports
                                     input port Commands type fifo port packet CommandPacket length FIFO_LENGTH;
                                     input port NavigationCommands type fifo port packet ND::CommandPacket length FIFO_LENGTH;

                                     //output ports
                                     output port RobotConfig type poster port packet ConfigPacket;
  CoolBOT
         An Example: A Secure
            Navigation System
                                     output port Odometry type generic port packet OdometryPacket; // network buffer FIFO_LENGTH;
                                     output port OdometryReset type generic port packet PacketTime;
                                     output port BumpersGeometry type poster port packet "BumperGeometryPacket";
                                     output port Bumpers type generic port packet BumperPacket;
                                     output port SonarGeometry type poster port packet "SonarGeometryPacket";
                                     output port SonarScan type generic port packet "SonarPacket";
                                     output port LaserGeometry type poster port packet PacketFrame3D;
                                     output port LaserScan type generic port packet LaserPacket;
                                     output port Power type generic port packet PacketDouble;
                                     output port CameraImage type poster port packet CameraImagePacket;
                                     output port PTZJoints type generic port packet "PacketPTZJoints";

                                     exception RobotConnection { description "Robot connection failed."; };

                                     exception NoPositionProxy { description "Position proxy not available in this robot."; };

                                     exception InternalPlayerException { description "A Player library exception has been thrown."; };

                                     entry state Main
                                     {
                                       transition on Commands,NavigationCommands,Timer;
                                     };

        [42]                    };

[www.coolbotproject.org]
/*
                                 * File: player-robot-packets.coolbot-packets
                                 * Description: PlayerRobot port packets.
                                 * Date: 03 January 2012
                                 * Generated by coolbot-bundle version 1.0.0
                                 */

                                packets PlayerRobot
  CoolBOT
         An Example: A Secure
            Navigation System
                                {
                                  header
                                  {
                                     author "Antonio Carlos Domínguez Brito <adominguez@iusiani.ulpgc.es>";
                                     description "PlayerRobot port packets";
                                     institution "IUSIANI - Universidad de Las Palmas de Gran Canaria - Spain";
                                     version "0.1"
                                  };

                                  port packet OdometryPacket
                                  {
                                     data members
                                     {
                                        position: type "Frame2D";
                                        velocity: type "Frame2D";
                                        odometer: type "double";
                                     };
                                  };

                                  port packet BumperPacket
                                  {

                                        data members
        [43]                            {
                                           // typedef PackingArray<bool,MAX_NUMBER_OF_BUMPERS> BumperArray
[www.coolbotproject.org]                   bumpers: type "BumperArray";
                                        };
                                  };
                                  ...
… // continuing player-robot-packets.coolbot-packets

                                  port packet CommandPacket
                                  {
                                     data members
                                     {
                                        id: type "int";
                                        odometry: type "Frame2D";
  CoolBOT
         An Example: A Secure
            Navigation System
                                        velocity: type "Frame2D";
                                        ptz: type "PTZJoints";
                                        ptzVel: type "PTZJoints";
                                     };
                                  };

                                  port packet LaserPacket
                                  {

                                     data members
                                     {
                                        // typedef PackingArray<LaserScanPoint,MAX_NUMBER_OF_LASER_SCAN_POINTS>
                                LaserArray
                                        points: type "LaserArray";
                                     };
                                  };

                                  ...




        [44]
[www.coolbotproject.org]
… // continuing player-robot-packets.coolbot-packets

                                     port packet ConfigPacket
                                     {
                                        data members
                                        {
                                           frame: type "Frame2D";
                                           size: type "Coordinates2D";
  CoolBOT
         An Example: A Secure
            Navigation System
                                           maxDiagonal: type "double";
                                           radius: type "double";
                                           diameter: type "double";
                                           initialTime: type "Time";
                                        };
                                     };

                                     port packet CameraImagePacket
                                     {
                                        data members
                                        {
                                           image: type "RGBGridType";
                                        };
                                     };
                                };




        [45]
[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [46]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [47]
                                     Navigation System




[www.coolbotproject.org]
/*
                                 * File: mbicp-corrector.coolbot-component
                                 * Description: MbICP Corrector component
                                 * Date: 04 January 2012
                                 * Generated by coolbot-bundle version 1.0.0
                                 */

                                component MbICPCorrector
  CoolBOT
         An Example: A Secure
            Navigation System
                                {
                                  header
                                  {
                                     author "Eduardo Aparicio Cardenes <eduardo.aparicio.cardenes@gmail.com>";
                                     description "MbICP Corrector component";
                                     institution "ULPGC - Universidad de Las Palmas de Gran Canaria";
                                     version "0.1"
                                  };

                                  constants
                                  {
                                     LASER_MAX_RANGE="LaserPacket::LASER_MAX_RANGE";
                                  };

                                  // input ports
                                  input port ODOMETRY type last port packet PlayerRobot::OdometryPacket;
                                  input port LASER_GEOMETRY type poster port packet PacketFrame3D;
                                  input port LASER_SCAN type last port packet PlayerRobot::LaserPacket;

                                  //output ports
                                  output port ODOMETRY_CORRECTED type generic port packet OdometryPacket;
                                  output port EXECUTION_INFO type generic port packet DebugExecutionPacket;
                                  ...
        [48]
[www.coolbotproject.org]
… // continuing mbicp-corrector.coolbot-packets

                                     entry state Waiting
                                     {
                                       transition on LASER_GEOMETRY,ODOMETRY;
                                     };

                                     state Main_State
  CoolBOT
         An Example: A Secure
            Navigation System
                                     {
                                       transition on ODOMETRY,LASER_GEOMETRY,LASER_SCAN;
                                     };

                                     thread main
                                     {
                                         input box { ODOMETRY, LASER_GEOMETRY };
                                     };

                                     thread mbicpThread
                                     {
                                        input box { LASER_SCAN };
                                        active in Main_State;
                                     };

                                };




        [49]
[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [50]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [51]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [52]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [53]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [54]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [55]
                                     Navigation System




[www.coolbotproject.org]
/*
                                 * File: player-robot-view.coolbot-view
                                 * Description: PlayerRobotView View
                                 * Date: 03 January 2012
                                 * Generated by coolbot-bundle 1.0.0
                                 */

                                view PlayerRobotView
  CoolBOT
         An Example: A Secure
            Navigation System
                                {
                                   header
                                   {
                                      author "Antonio Carlos DomÃ-nguez-Brito <adominguez@iusiani.ulpgc.es>";
                                      description "PlayerRobotView View";
                                      institution "IUSIANI - Universidad de Las Palmas de Gran Canaria - Spain";
                                      version "0.1"
                                   };

                                  constants
                                  {
                                    private DEFAULT_REFRESHING_PERIOD=250; // milliseconds
                                    private DRAW_AREA_MARGIN=3; // pixels
                                    private DRAW_AREA_WIDTH=300; // pixels
                                    private DRAW_AREA_HEIGTH=300; // pixels
                                    private DRAW_AREA_XY_DIVS=8; // should be an even number

                                    // for PlayerRobotSpace::PlayerRobot::LASER_MAX_RANGE player-robot-h should be included
                                    private SENSOR_MAX_RANGE= "PlayerRobotSpace::PlayerRobot::LASER_MAX_RANGE/1000"; //
                                meters

                                        private GRID_AXES_FONT_SIZE=8; // font points
                                        private ARROW_WIDTH=6; // pixels (should be an even number)
        [56]                            private ARROW_DEEP=6; // pixels
                                        private HALF_ARC_ANGLE=5; // degrees
[www.coolbotproject.org]                private DIRECT_COMMAND_TRANSLATIONAL_SPEED= 250; // millis/sec
                                        private DIRECT_COMMAND_ROTATIONAL_SPEED= 20; // degree/sec
                                  };
                                  ...
… // continuing player-robot-view.coolbot-view

                                     input port ODOMETRY type last port packet PlayerRobot::OdometryPacket;
                                     input port SONAR_GEOMETRY type poster port packet PlayerRobot::SonarGeometryPacket;
                                     input port SONAR_SCAN type last port packet PlayerRobot::SonarPacket;
                                     input port LASER_GEOMETRY type poster port packet PacketFrame3D;
                                     input port LASER_SCAN type last port packet PlayerRobot::LaserPacket;
  CoolBOT
         An Example: A Secure
            Navigation System
                                     input port POWER type last port packet PacketDouble;

                                     output port COMMANDS type generic port packet PlayerRobot::CommandPacket;

                                };




        [57]
[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [58]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [59]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [60]
                                     Navigation System




[www.coolbotproject.org]
/*
                                 * File: sns-views.coolbot-integration
                                 * Description: CoolBOT Secure Navigation System.
                                 * Date: 03 January 2012
                                 * Generated by coolbot-bundle version 1.0.0
                                 */

                                integration sns_views
  CoolBOT
         An Example: A Secure
            Navigation System
                                {
                                   header
                                   {
                                      author "Antonio Carlos Domí-nguez Brito <adominguez@iusiani.ulpgc.es>";
                                      description "CoolBOT Secure Navigation System - integrates only views";
                                      institution "IUSIANI - Universidad de Las Palmas de Gran Canaria";
                                      version "0.1"
                                   };

                                  machine addresses
                                  {
                                     local dis172ac: "dis172ac.dis.ulpgc.es"; //"127.0.0.1";
                                     remote_dis172acplg: "dis172ac.dis.ulpgc.es";//"127.0.0.1";
                                  };

                                  listening ports
                                  {
                                      ROBOT_PORT: 1950;
                                      NAVIGATION_MAP_PORT: 1970;
                                      ND_PORT: 1980;
                                      NAVIGATION_PLANNER_PORT: 1990;

                                        ROBOT_VIEW_PORT: 1955;
        [61]                            CAMERA_VIEW_PORT: 1965;
                                        NAVIGATION_MAP_VIEW_PORT: 1975;
[www.coolbotproject.org]                ND_VIEW_PORT: 1985;
                                        NAVIGATION_PLANNER_VIEW_PORT: 1995;
                                        VALLEY_CHECK_VIEW_PORT: 2005;
                                  };
                                  ...
… // continuing file sns-views.coolbot-integration

                                  local instances
                                  {
                                     /*
                                      * Local instances definition.
                                      */
                                     view robotView: PlayerRobotView listening on ROBOT_VIEW_PORT with description "Robot";
  CoolBOT
         An Example: A Secure
            Navigation System
                                     view cameraView: SphereView listening on CAMERA_VIEW_PORT with description "PTZ Camera";
                                     view navigationMapView: GridView listening on NAVIGATION_MAP_VIEW_PORT with description
                                "Navigation Map";
                                     view ndView: NDView listening on ND_VIEW_PORT with description "ND Navigation";
                                     view valleyCheckView: RasterView listening on VALLEY_CHECK_VIEW_PORT with description "ND
                                Valley Checks";
                                     view navigationPlannerView: PlannerView listening on NAVIGATION_PLANNER_VIEW_PORT with
                                description "Navigation Planner";
                                  };

                                  remote instances on remote_dis172acplg
                                  {
                                      /*
                                       * Local instances definition.
                                       */
                                      component robot: PlayerRobot listening on ROBOT_PORT;
                                      component navigationMap: GridMap listening on NAVIGATION_MAP_PORT;
                                      component nd: ND listening on ND_PORT;
                                      component navigationPlanner: Planner listening on NAVIGATION_PLANNER_PORT;
                                  };
                                  ...


        [62]
[www.coolbotproject.org]
… // continuing file sns-views.coolbot-integration

                                     port connections
                                     {
                                       connect robot:ODOMETRY to robotView:ODOMETRY;
                                       connect robot:SONARGEOMETRY to robotView:SONAR_GEOMETRY;
                                       connect robot:SONARSCAN to robotView:SONAR_SCAN;
                                       connect robot:LASERGEOMETRY to robotView:LASER_GEOMETRY;
  CoolBOT
         An Example: A Secure
            Navigation System
                                       connect robot:LASERSCAN to robotView:LASER_SCAN;
                                       connect robot:POWER to robotView:POWER;
                                       connect robotView:COMMANDS to robot:COMMANDS;
                                       connect robot:ROBOTCONFIG to navigationMapView:ROBOT_CONFIG;

                                          connect navigationMap:MAP to navigationMapView:GRID_MAP;

                                          connect navigationPlanner:PLANNERPATH to navigationMapView:PLANNER_PATH;
                                          connect navigationPlanner:MATCHINGREGIONS to navigationMapView:MATCHING_REGIONS;

                                          connect navigationMapView:PLANNER_COMMANDS to navigationPlanner:COMMANDS;
                                          connect navigationMapView:ND_COMMANDS to nd:COMMANDS;

                                          connect robot:CAMERAIMAGE to cameraView:CAMERA_IMAGE;
                                          connect robot:PTZJOINTS to cameraView:PTZ_JOINTS;

                                          connect cameraView:COMMANDS to robot:COMMANDS;

                                          connect robot:ROBOTCONFIG to ndView:ROBOT_CONFIG;

                                          connect nd:NDDATA to ndView:ND_DATA;

                                          connect navigationMap:GRIDCONFIG to navigationPlannerView:GRID_CONFIG;
        [63]                              connect navigationPlanner:PLANNERMAP to navigationPlannerView:PLANNER_MAP;
[www.coolbotproject.org]
                                          connect nd:NDDATA to valleyCheckView:ND_DATA;
                                     };
                                };
CoolBOT
                                  An Example: A Secure




                           [64]
                                     Navigation System




[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [65]
                                     Navigation System




[www.coolbotproject.org]
                                   Now
                                  Videos!
CoolBOT
                           An Example: A Secure Navigation System




        [66]
[www.coolbotproject.org]     http://www.youtube.com/watch?v=f7Qtoc1XOTU&hd=1
CoolBOT
                           An Example: A Secure Navigation System




        [67]
[www.coolbotproject.org]
                                       http://youtu.be/WzjMBpaNX_w
CoolBOT
                           Conclusions and Future Work

                           ∙ In CoolBOT, decoupling interfaces makes
                           software components deployable and integrable
                           wherever we want, no matter its functionality, or
                           which grade of granularity they have.

                              ▸ Components (implement generic algorithms)
                              ▸ Views (implement graphical interfaces)
                              ▸ Probes (implement generic interfaces)

                           ∙ CoolBOT is an open source project available at:
        [68]
[www.coolbotproject.org]             www.coolbotproject.org
CoolBOT
                           Conclusions and Future Work

                           ●
                               Ongoing/Future work:


                                 1. Documentation.
                                 2. Integration with ROS.
                                 3. Runtime interpret for integrations.
                                    3.1. Component Name Service.
                                    3.2. Remote instantiation Service.
        [69]
[www.coolbotproject.org]
THANK YOU VERY
                           MUCH FOR YOUR
                             ATTENTION
        [70]
[www.coolbotproject.org]

Más contenido relacionado

Similar a CoolBOT. An Introduction

An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018
ICS
 
BruCon (Brussels 2011) Hacking Conference - Botnets and Browsers (Brothers in...
BruCon (Brussels 2011) Hacking Conference - Botnets and Browsers (Brothers in...BruCon (Brussels 2011) Hacking Conference - Botnets and Browsers (Brothers in...
BruCon (Brussels 2011) Hacking Conference - Botnets and Browsers (Brothers in...
Aditya K Sood
 
Create engaging user_experiences_with_red_hat_j_boss_portal_and_first_spirit_cms
Create engaging user_experiences_with_red_hat_j_boss_portal_and_first_spirit_cmsCreate engaging user_experiences_with_red_hat_j_boss_portal_and_first_spirit_cms
Create engaging user_experiences_with_red_hat_j_boss_portal_and_first_spirit_cms
Serge Pagop
 
J2me Crash Course
J2me Crash CourseJ2me Crash Course
J2me Crash Course
guest860a03
 

Similar a CoolBOT. An Introduction (20)

Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
 
Ichiba Bamboo Users Meetng #1
Ichiba Bamboo Users Meetng #1Ichiba Bamboo Users Meetng #1
Ichiba Bamboo Users Meetng #1
 
Autobuilder2 Yocto Project Summit Lyon 2019
Autobuilder2 Yocto Project Summit Lyon 2019Autobuilder2 Yocto Project Summit Lyon 2019
Autobuilder2 Yocto Project Summit Lyon 2019
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
 
Giddy Up on GitHub
Giddy Up on GitHubGiddy Up on GitHub
Giddy Up on GitHub
 
BruCon (Brussels 2011) Hacking Conference - Botnets and Browsers (Brothers in...
BruCon (Brussels 2011) Hacking Conference - Botnets and Browsers (Brothers in...BruCon (Brussels 2011) Hacking Conference - Botnets and Browsers (Brothers in...
BruCon (Brussels 2011) Hacking Conference - Botnets and Browsers (Brothers in...
 
Create engaging user_experiences_with_red_hat_j_boss_portal_and_first_spirit_cms
Create engaging user_experiences_with_red_hat_j_boss_portal_and_first_spirit_cmsCreate engaging user_experiences_with_red_hat_j_boss_portal_and_first_spirit_cms
Create engaging user_experiences_with_red_hat_j_boss_portal_and_first_spirit_cms
 
RHEL8-BETA-RHUG.pdf
RHEL8-BETA-RHUG.pdfRHEL8-BETA-RHUG.pdf
RHEL8-BETA-RHUG.pdf
 
J2me Crash Course
J2me Crash CourseJ2me Crash Course
J2me Crash Course
 
Introduction to git & github
Introduction to git & githubIntroduction to git & github
Introduction to git & github
 
Docker Meetup Paris: enterprise Docker
Docker Meetup Paris: enterprise DockerDocker Meetup Paris: enterprise Docker
Docker Meetup Paris: enterprise Docker
 
Connect 2014 - AD202 - Get the best out of bootstrap with bootstrap4 x-pages
Connect 2014 - AD202 -  Get the best out of bootstrap with bootstrap4 x-pagesConnect 2014 - AD202 -  Get the best out of bootstrap with bootstrap4 x-pages
Connect 2014 - AD202 - Get the best out of bootstrap with bootstrap4 x-pages
 
Portlet Bridge
Portlet BridgePortlet Bridge
Portlet Bridge
 
2008.12.23 CompoWeb
2008.12.23 CompoWeb2008.12.23 CompoWeb
2008.12.23 CompoWeb
 
Component Object Model (COM, DCOM, COM+)
Component Object Model (COM, DCOM, COM+)Component Object Model (COM, DCOM, COM+)
Component Object Model (COM, DCOM, COM+)
 
Pivotal Cloud Foundry and its usage in ecosystem
Pivotal Cloud Foundry and its usage in ecosystemPivotal Cloud Foundry and its usage in ecosystem
Pivotal Cloud Foundry and its usage in ecosystem
 
Rhel8 Beta - Halifax RHUG
Rhel8 Beta - Halifax RHUGRhel8 Beta - Halifax RHUG
Rhel8 Beta - Halifax RHUG
 
IBM Connect2014 JMP106
IBM Connect2014 JMP106IBM Connect2014 JMP106
IBM Connect2014 JMP106
 

Último

Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in OmanMifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
instagramfab782445
 
Mckinsey foundation level Handbook for Viewing
Mckinsey foundation level Handbook for ViewingMckinsey foundation level Handbook for Viewing
Mckinsey foundation level Handbook for Viewing
Nauman Safdar
 
Structuring and Writing DRL Mckinsey (1).pdf
Structuring and Writing DRL Mckinsey (1).pdfStructuring and Writing DRL Mckinsey (1).pdf
Structuring and Writing DRL Mckinsey (1).pdf
laloo_007
 
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al MizharAl Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
allensay1
 

Último (20)

Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in OmanMifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
 
joint cost.pptx COST ACCOUNTING Sixteenth Edition ...
joint cost.pptx  COST ACCOUNTING  Sixteenth Edition                          ...joint cost.pptx  COST ACCOUNTING  Sixteenth Edition                          ...
joint cost.pptx COST ACCOUNTING Sixteenth Edition ...
 
Falcon Invoice Discounting: Tailored Financial Wings
Falcon Invoice Discounting: Tailored Financial WingsFalcon Invoice Discounting: Tailored Financial Wings
Falcon Invoice Discounting: Tailored Financial Wings
 
Unveiling Falcon Invoice Discounting: Leading the Way as India's Premier Bill...
Unveiling Falcon Invoice Discounting: Leading the Way as India's Premier Bill...Unveiling Falcon Invoice Discounting: Leading the Way as India's Premier Bill...
Unveiling Falcon Invoice Discounting: Leading the Way as India's Premier Bill...
 
Falcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investorsFalcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investors
 
Pre Engineered Building Manufacturers Hyderabad.pptx
Pre Engineered  Building Manufacturers Hyderabad.pptxPre Engineered  Building Manufacturers Hyderabad.pptx
Pre Engineered Building Manufacturers Hyderabad.pptx
 
New 2024 Cannabis Edibles Investor Pitch Deck Template
New 2024 Cannabis Edibles Investor Pitch Deck TemplateNew 2024 Cannabis Edibles Investor Pitch Deck Template
New 2024 Cannabis Edibles Investor Pitch Deck Template
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
Buy gmail accounts.pdf buy Old Gmail Accounts
Buy gmail accounts.pdf buy Old Gmail AccountsBuy gmail accounts.pdf buy Old Gmail Accounts
Buy gmail accounts.pdf buy Old Gmail Accounts
 
Mckinsey foundation level Handbook for Viewing
Mckinsey foundation level Handbook for ViewingMckinsey foundation level Handbook for Viewing
Mckinsey foundation level Handbook for Viewing
 
Over the Top (OTT) Market Size & Growth Outlook 2024-2030
Over the Top (OTT) Market Size & Growth Outlook 2024-2030Over the Top (OTT) Market Size & Growth Outlook 2024-2030
Over the Top (OTT) Market Size & Growth Outlook 2024-2030
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentation
 
SEO Case Study: How I Increased SEO Traffic & Ranking by 50-60% in 6 Months
SEO Case Study: How I Increased SEO Traffic & Ranking by 50-60%  in 6 MonthsSEO Case Study: How I Increased SEO Traffic & Ranking by 50-60%  in 6 Months
SEO Case Study: How I Increased SEO Traffic & Ranking by 50-60% in 6 Months
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League City
 
Structuring and Writing DRL Mckinsey (1).pdf
Structuring and Writing DRL Mckinsey (1).pdfStructuring and Writing DRL Mckinsey (1).pdf
Structuring and Writing DRL Mckinsey (1).pdf
 
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al MizharAl Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
 
Falcon Invoice Discounting: Unlock Your Business Potential
Falcon Invoice Discounting: Unlock Your Business PotentialFalcon Invoice Discounting: Unlock Your Business Potential
Falcon Invoice Discounting: Unlock Your Business Potential
 
Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperity
 
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdfDr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
 
BeMetals Investor Presentation_May 3, 2024.pdf
BeMetals Investor Presentation_May 3, 2024.pdfBeMetals Investor Presentation_May 3, 2024.pdf
BeMetals Investor Presentation_May 3, 2024.pdf
 

CoolBOT. An Introduction

  • 1. CoolBOT. An Introduction Antonio Carlos Domínguez Brito Inst. Univ. SIANI/Dpto. Informática y Sistemas [1] Universidad de Las Palmas de Gran Canaria [www.coolbotproject.org] Spain
  • 2. CoolBOT Table of Contents 1. Overview 2. CoolBOT Components 3. CoolBOT Port Connections 4. CoolBOT Views 5. CoolBOT Probes 6. Development Tools 7. A Real Example [2] [www.coolbotproject.org] 8. Conclusions and Future Work
  • 3. CoolBOT Overview CoolBOT is a distributed CBSE (Component Based Software Engineering) C++ [3] programming [www.coolbotproject.org] framework
  • 4. CoolBOT Overview CoolBOT's design principles: 1. Component based → easy software integration. 2. Take advantage of multithreading/multicores OSs. 3. System control & monitoring. 4. Transparent distributed [4] computing. [www.coolbotproject.org]
  • 5. CoolBOT Overview A system is composed by integrations and software components [5] [www.coolbotproject.org]
  • 6. CoolBOT Overview There are three kinds of software components: components, views and probes [6] [www.coolbotproject.org]
  • 7. CoolBOT Overview Integrations are processes in the underlying OS. They contain components [7] [www.coolbotproject.org]
  • 8. CoolBOT Overview Integrations also may contain views, and a machine can host several integrations [8] [www.coolbotproject.org]
  • 9. CoolBOT Overview probes are software components to interface non CoolBOT software with CoolBOT systems, and viceversa [9] [www.coolbotproject.org]
  • 10. CoolBOT Overview [10] [www.coolbotproject.org]
  • 11. CoolBOT Overview CoolBOT users program at system level [11] [www.coolbotproject.org]
  • 12. CoolBOT CoolBOT runtime infrastructure Overview supports system level abstractions and execution [12] [www.coolbotproject.org]
  • 13. CoolBOT Overview CoolBOT runtime infrastructure is supported by the OS API and the ACE library for network communications [13] [www.coolbotproject.org]
  • 14. CoolBOT CoolBOT Components [14] [www.coolbotproject.org]
  • 15. CoolBOT CoolBOT Components CoolBOT components are port automata (input port data packets receptions trigger automaton transitions) [15] [www.coolbotproject.org]
  • 16. CoolBOT CoolBOT Components Meta state running implements component's functionality. It is user defined [16] [www.coolbotproject.org]
  • 17. CoolBOT CoolBOT Components Components' input and output ports constitute its external [17] interface. Through them they [www.coolbotproject.org] receive and send port packets (data packets)
  • 18. CoolBOT CoolBOT Port Connections Port connections are unidirectional (from input port to output port), and follow a publish/subscribe communication pattern one publisher, multiple subscribers [18] [www.coolbotproject.org]
  • 19. CoolBOT CoolBOT Port Connections Port connections are unidirectional (from input port to output port), and follow a publish/subscribe communication pattern multiple publishers, one subscriber [19] [www.coolbotproject.org]
  • 20. CoolBOT CoolBOT Port Connections Components interact using only port connections. Thus, a system can be seem as a network of components interchanging port packets and running as data driven machines [20] [www.coolbotproject.org]
  • 21. CoolBOT CoolBOT Port Connections There are different typologies for input and output ports for establishing port connections with different communication patterns: fifo on input port, “blackboard” on output port and multipacket. [21] [www.coolbotproject.org]
  • 22. CoolBOT CoolBOT Port Connections Port Connections Typologies Active Publisher/Passive Subscriber (AP/PS) Output Port Input Port Port Connection Type tick tick tick connections last last connections generic fifo fifo connections ufifo unbounded fifo connections multipacket multipacket multipacket connections lazymultipacket Active Publisher/Passive Subscriber (PP/AS) poster poster poster connections [22] [www.coolbotproject.org]
  • 23. CoolBOT CoolBOT Port Connections A port connection can be established when the typologies of the ports involved are compatible, and the type of port packets they transport are the same [23] [www.coolbotproject.org]
  • 24. CoolBOT CoolBOT Port Connections Integrations are CoolBOT processes hosting component instances at runtime Port connections established between components (local components) in the same integration are supported transparently by the underlying OS thread API [24] [www.coolbotproject.org]
  • 25. CoolBOT CoolBOT Port Connections Integrations are CoolBOT processes hosting component instances at runtime Port connections between components in different integrations are multiplexed over TCP/IP connections [25] [www.coolbotproject.org]
  • 26. CoolBOT CoolBOT Views The second type of software component available in CoolBOT are views CoolBOT views expand component interfaces to decouple and separate system computation and control from graphical interfaces for monitoring and control [26] [www.coolbotproject.org]
  • 27. CoolBOT CoolBOT Views Likewise components, views have also an external interface of input and output ports [27] [www.coolbotproject.org]
  • 28. CoolBOT CoolBOT Views CoolBOT integrations may contain indistinctly components and views As software components views may establish port connections with any other component or view (local or remote) in a system [28] [www.coolbotproject.org]
  • 29. CoolBOT CoolBOT Views CoolBOT integrations may contain indistinctly components and views As software components views may establish port connections with any other component or view (local or remote) in a system [29] [www.coolbotproject.org]
  • 30. CoolBOT CoolBOT Probes The third type of software component available in CoolBOT are probes Expanding even more the concept of component interface probes implement interfaces of input and output ports in order to allow non CoolBoT software to intercommunicate with CoolBoT components [30] [www.coolbotproject.org]
  • 31. CoolBOT CoolBOT Probes The third type of software component available in CoolBOT are probes CoolBOT probes implement interfaces of input and output ports in order to allow non CoolBoT software to intercommunicate with CoolBoT components [31] [www.coolbotproject.org]
  • 32. CoolBOT CoolBOT provides two tools for developing CoolBOT software: Development Tools coolbot-bundle and coolbot-c [32] [www.coolbotproject.org]
  • 33. CoolBOT CoolBOT provides two tools for developing CoolBOT software: Development Tools coolbot-bundle and coolbot-c coolbot-bundle creates [33] workspaces for developing [www.coolbotproject.org] components, views, port packets and integrations
  • 34. CoolBOT CoolBOT provides two tools for developing CoolBOT software: Development Tools coolbot-bundle and coolbot-c coolbot-c is the CoolBOT compiler. We can generate C++ skeletons for components, probes, views, port packets [34] and integrations [www.coolbotproject.org]
  • 35. CoolBOT CoolBOT provides two tools for developing CoolBOT software: Development Tools coolbot-bundle and coolbot-c coolbot-c is the CoolBOT compiler. We can generate C++ skeletons for components, probes, views, port packets and integrations [35] [www.coolbotproject.org]
  • 36. CoolBOT CoolBOT provides two tools for developing CoolBOT software: Development Tools coolbot-bundle and coolbot-c coolbot-c is the CoolBOT compiler. We can generate C++ skeletons for components, probes, views, port packets and integrations [36] [www.coolbotproject.org]
  • 37. CoolBOT CoolBOT provides two tools for developing CoolBOT software: Development Tools coolbot-bundle and coolbot-c coolbot-c is the CoolBOT compiler. We can generate C++ skeletons for components, probes, views, port packets [37] and integrations [www.coolbotproject.org]
  • 38. CoolBOT An Example: A Secure [38] Navigation System [www.coolbotproject.org]
  • 39. CoolBOT An Example: A Secure [39] Navigation System [www.coolbotproject.org]
  • 40. CoolBOT An Example: A Secure [40] Navigation System [www.coolbotproject.org]
  • 41. /* * File: player-robot.coolbot-component * Description: description file for PlayerRobot component * Date: 09 March 2012 * Generated by coolbot-bundle version 1.0.0 */ component PlayerRobot CoolBOT An Example: A Secure Navigation System { header { author "Antonio Carlos Domínguez Brito <adominguez@iusiani.ulpgc.es>"; description "PlayerRobot component"; institution "IUSIANI - Universidad de Las Palmas de Gran Canaria"; version "0.1" }; constants { LASER_MAX_RANGE="LaserPacket::LASER_MAX_RANGE"; SONAR_MAX_RANGE=5000; // millimeters private FIFO_LENGTH=5; private ROBOT_DATA_INCOMING_FREQUENCY= 10; // Hz private LASER_MIN_ANGLE= -90; // degrees private LASER_MAX_ANGLE= 90; // degrees private LASER_SCAN_RESOLUTION= 100; // 0.01 degrees private LASER_RANGE_RESOLUTION= 10; // millimeters private MAX_CONNECTION_TIMEOUT=5000; // milliseconds private LISTENING_BLOCKING_TIME=100; // milliseconds private DEFAULT_PERIOD=100 // milliseconds [41] }; ... [www.coolbotproject.org]
  • 42. … // continuing player-robot.coolbot-component // input ports input port Commands type fifo port packet CommandPacket length FIFO_LENGTH; input port NavigationCommands type fifo port packet ND::CommandPacket length FIFO_LENGTH; //output ports output port RobotConfig type poster port packet ConfigPacket; CoolBOT An Example: A Secure Navigation System output port Odometry type generic port packet OdometryPacket; // network buffer FIFO_LENGTH; output port OdometryReset type generic port packet PacketTime; output port BumpersGeometry type poster port packet "BumperGeometryPacket"; output port Bumpers type generic port packet BumperPacket; output port SonarGeometry type poster port packet "SonarGeometryPacket"; output port SonarScan type generic port packet "SonarPacket"; output port LaserGeometry type poster port packet PacketFrame3D; output port LaserScan type generic port packet LaserPacket; output port Power type generic port packet PacketDouble; output port CameraImage type poster port packet CameraImagePacket; output port PTZJoints type generic port packet "PacketPTZJoints"; exception RobotConnection { description "Robot connection failed."; }; exception NoPositionProxy { description "Position proxy not available in this robot."; }; exception InternalPlayerException { description "A Player library exception has been thrown."; }; entry state Main { transition on Commands,NavigationCommands,Timer; }; [42] }; [www.coolbotproject.org]
  • 43. /* * File: player-robot-packets.coolbot-packets * Description: PlayerRobot port packets. * Date: 03 January 2012 * Generated by coolbot-bundle version 1.0.0 */ packets PlayerRobot CoolBOT An Example: A Secure Navigation System { header { author "Antonio Carlos Domínguez Brito <adominguez@iusiani.ulpgc.es>"; description "PlayerRobot port packets"; institution "IUSIANI - Universidad de Las Palmas de Gran Canaria - Spain"; version "0.1" }; port packet OdometryPacket { data members { position: type "Frame2D"; velocity: type "Frame2D"; odometer: type "double"; }; }; port packet BumperPacket { data members [43] { // typedef PackingArray<bool,MAX_NUMBER_OF_BUMPERS> BumperArray [www.coolbotproject.org] bumpers: type "BumperArray"; }; }; ...
  • 44. … // continuing player-robot-packets.coolbot-packets port packet CommandPacket { data members { id: type "int"; odometry: type "Frame2D"; CoolBOT An Example: A Secure Navigation System velocity: type "Frame2D"; ptz: type "PTZJoints"; ptzVel: type "PTZJoints"; }; }; port packet LaserPacket { data members { // typedef PackingArray<LaserScanPoint,MAX_NUMBER_OF_LASER_SCAN_POINTS> LaserArray points: type "LaserArray"; }; }; ... [44] [www.coolbotproject.org]
  • 45. … // continuing player-robot-packets.coolbot-packets port packet ConfigPacket { data members { frame: type "Frame2D"; size: type "Coordinates2D"; CoolBOT An Example: A Secure Navigation System maxDiagonal: type "double"; radius: type "double"; diameter: type "double"; initialTime: type "Time"; }; }; port packet CameraImagePacket { data members { image: type "RGBGridType"; }; }; }; [45] [www.coolbotproject.org]
  • 46. CoolBOT An Example: A Secure [46] Navigation System [www.coolbotproject.org]
  • 47. CoolBOT An Example: A Secure [47] Navigation System [www.coolbotproject.org]
  • 48. /* * File: mbicp-corrector.coolbot-component * Description: MbICP Corrector component * Date: 04 January 2012 * Generated by coolbot-bundle version 1.0.0 */ component MbICPCorrector CoolBOT An Example: A Secure Navigation System { header { author "Eduardo Aparicio Cardenes <eduardo.aparicio.cardenes@gmail.com>"; description "MbICP Corrector component"; institution "ULPGC - Universidad de Las Palmas de Gran Canaria"; version "0.1" }; constants { LASER_MAX_RANGE="LaserPacket::LASER_MAX_RANGE"; }; // input ports input port ODOMETRY type last port packet PlayerRobot::OdometryPacket; input port LASER_GEOMETRY type poster port packet PacketFrame3D; input port LASER_SCAN type last port packet PlayerRobot::LaserPacket; //output ports output port ODOMETRY_CORRECTED type generic port packet OdometryPacket; output port EXECUTION_INFO type generic port packet DebugExecutionPacket; ... [48] [www.coolbotproject.org]
  • 49. … // continuing mbicp-corrector.coolbot-packets entry state Waiting { transition on LASER_GEOMETRY,ODOMETRY; }; state Main_State CoolBOT An Example: A Secure Navigation System { transition on ODOMETRY,LASER_GEOMETRY,LASER_SCAN; }; thread main { input box { ODOMETRY, LASER_GEOMETRY }; }; thread mbicpThread { input box { LASER_SCAN }; active in Main_State; }; }; [49] [www.coolbotproject.org]
  • 50. CoolBOT An Example: A Secure [50] Navigation System [www.coolbotproject.org]
  • 51. CoolBOT An Example: A Secure [51] Navigation System [www.coolbotproject.org]
  • 52. CoolBOT An Example: A Secure [52] Navigation System [www.coolbotproject.org]
  • 53. CoolBOT An Example: A Secure [53] Navigation System [www.coolbotproject.org]
  • 54. CoolBOT An Example: A Secure [54] Navigation System [www.coolbotproject.org]
  • 55. CoolBOT An Example: A Secure [55] Navigation System [www.coolbotproject.org]
  • 56. /* * File: player-robot-view.coolbot-view * Description: PlayerRobotView View * Date: 03 January 2012 * Generated by coolbot-bundle 1.0.0 */ view PlayerRobotView CoolBOT An Example: A Secure Navigation System { header { author "Antonio Carlos DomÃ-nguez-Brito <adominguez@iusiani.ulpgc.es>"; description "PlayerRobotView View"; institution "IUSIANI - Universidad de Las Palmas de Gran Canaria - Spain"; version "0.1" }; constants { private DEFAULT_REFRESHING_PERIOD=250; // milliseconds private DRAW_AREA_MARGIN=3; // pixels private DRAW_AREA_WIDTH=300; // pixels private DRAW_AREA_HEIGTH=300; // pixels private DRAW_AREA_XY_DIVS=8; // should be an even number // for PlayerRobotSpace::PlayerRobot::LASER_MAX_RANGE player-robot-h should be included private SENSOR_MAX_RANGE= "PlayerRobotSpace::PlayerRobot::LASER_MAX_RANGE/1000"; // meters private GRID_AXES_FONT_SIZE=8; // font points private ARROW_WIDTH=6; // pixels (should be an even number) [56] private ARROW_DEEP=6; // pixels private HALF_ARC_ANGLE=5; // degrees [www.coolbotproject.org] private DIRECT_COMMAND_TRANSLATIONAL_SPEED= 250; // millis/sec private DIRECT_COMMAND_ROTATIONAL_SPEED= 20; // degree/sec }; ...
  • 57. … // continuing player-robot-view.coolbot-view input port ODOMETRY type last port packet PlayerRobot::OdometryPacket; input port SONAR_GEOMETRY type poster port packet PlayerRobot::SonarGeometryPacket; input port SONAR_SCAN type last port packet PlayerRobot::SonarPacket; input port LASER_GEOMETRY type poster port packet PacketFrame3D; input port LASER_SCAN type last port packet PlayerRobot::LaserPacket; CoolBOT An Example: A Secure Navigation System input port POWER type last port packet PacketDouble; output port COMMANDS type generic port packet PlayerRobot::CommandPacket; }; [57] [www.coolbotproject.org]
  • 58. CoolBOT An Example: A Secure [58] Navigation System [www.coolbotproject.org]
  • 59. CoolBOT An Example: A Secure [59] Navigation System [www.coolbotproject.org]
  • 60. CoolBOT An Example: A Secure [60] Navigation System [www.coolbotproject.org]
  • 61. /* * File: sns-views.coolbot-integration * Description: CoolBOT Secure Navigation System. * Date: 03 January 2012 * Generated by coolbot-bundle version 1.0.0 */ integration sns_views CoolBOT An Example: A Secure Navigation System { header { author "Antonio Carlos Domí-nguez Brito <adominguez@iusiani.ulpgc.es>"; description "CoolBOT Secure Navigation System - integrates only views"; institution "IUSIANI - Universidad de Las Palmas de Gran Canaria"; version "0.1" }; machine addresses { local dis172ac: "dis172ac.dis.ulpgc.es"; //"127.0.0.1"; remote_dis172acplg: "dis172ac.dis.ulpgc.es";//"127.0.0.1"; }; listening ports { ROBOT_PORT: 1950; NAVIGATION_MAP_PORT: 1970; ND_PORT: 1980; NAVIGATION_PLANNER_PORT: 1990; ROBOT_VIEW_PORT: 1955; [61] CAMERA_VIEW_PORT: 1965; NAVIGATION_MAP_VIEW_PORT: 1975; [www.coolbotproject.org] ND_VIEW_PORT: 1985; NAVIGATION_PLANNER_VIEW_PORT: 1995; VALLEY_CHECK_VIEW_PORT: 2005; }; ...
  • 62. … // continuing file sns-views.coolbot-integration local instances { /* * Local instances definition. */ view robotView: PlayerRobotView listening on ROBOT_VIEW_PORT with description "Robot"; CoolBOT An Example: A Secure Navigation System view cameraView: SphereView listening on CAMERA_VIEW_PORT with description "PTZ Camera"; view navigationMapView: GridView listening on NAVIGATION_MAP_VIEW_PORT with description "Navigation Map"; view ndView: NDView listening on ND_VIEW_PORT with description "ND Navigation"; view valleyCheckView: RasterView listening on VALLEY_CHECK_VIEW_PORT with description "ND Valley Checks"; view navigationPlannerView: PlannerView listening on NAVIGATION_PLANNER_VIEW_PORT with description "Navigation Planner"; }; remote instances on remote_dis172acplg { /* * Local instances definition. */ component robot: PlayerRobot listening on ROBOT_PORT; component navigationMap: GridMap listening on NAVIGATION_MAP_PORT; component nd: ND listening on ND_PORT; component navigationPlanner: Planner listening on NAVIGATION_PLANNER_PORT; }; ... [62] [www.coolbotproject.org]
  • 63. … // continuing file sns-views.coolbot-integration port connections { connect robot:ODOMETRY to robotView:ODOMETRY; connect robot:SONARGEOMETRY to robotView:SONAR_GEOMETRY; connect robot:SONARSCAN to robotView:SONAR_SCAN; connect robot:LASERGEOMETRY to robotView:LASER_GEOMETRY; CoolBOT An Example: A Secure Navigation System connect robot:LASERSCAN to robotView:LASER_SCAN; connect robot:POWER to robotView:POWER; connect robotView:COMMANDS to robot:COMMANDS; connect robot:ROBOTCONFIG to navigationMapView:ROBOT_CONFIG; connect navigationMap:MAP to navigationMapView:GRID_MAP; connect navigationPlanner:PLANNERPATH to navigationMapView:PLANNER_PATH; connect navigationPlanner:MATCHINGREGIONS to navigationMapView:MATCHING_REGIONS; connect navigationMapView:PLANNER_COMMANDS to navigationPlanner:COMMANDS; connect navigationMapView:ND_COMMANDS to nd:COMMANDS; connect robot:CAMERAIMAGE to cameraView:CAMERA_IMAGE; connect robot:PTZJOINTS to cameraView:PTZ_JOINTS; connect cameraView:COMMANDS to robot:COMMANDS; connect robot:ROBOTCONFIG to ndView:ROBOT_CONFIG; connect nd:NDDATA to ndView:ND_DATA; connect navigationMap:GRIDCONFIG to navigationPlannerView:GRID_CONFIG; [63] connect navigationPlanner:PLANNERMAP to navigationPlannerView:PLANNER_MAP; [www.coolbotproject.org] connect nd:NDDATA to valleyCheckView:ND_DATA; }; };
  • 64. CoolBOT An Example: A Secure [64] Navigation System [www.coolbotproject.org]
  • 65. CoolBOT An Example: A Secure [65] Navigation System [www.coolbotproject.org] Now Videos!
  • 66. CoolBOT An Example: A Secure Navigation System [66] [www.coolbotproject.org] http://www.youtube.com/watch?v=f7Qtoc1XOTU&hd=1
  • 67. CoolBOT An Example: A Secure Navigation System [67] [www.coolbotproject.org] http://youtu.be/WzjMBpaNX_w
  • 68. CoolBOT Conclusions and Future Work ∙ In CoolBOT, decoupling interfaces makes software components deployable and integrable wherever we want, no matter its functionality, or which grade of granularity they have. ▸ Components (implement generic algorithms) ▸ Views (implement graphical interfaces) ▸ Probes (implement generic interfaces) ∙ CoolBOT is an open source project available at: [68] [www.coolbotproject.org] www.coolbotproject.org
  • 69. CoolBOT Conclusions and Future Work ● Ongoing/Future work: 1. Documentation. 2. Integration with ROS. 3. Runtime interpret for integrations. 3.1. Component Name Service. 3.2. Remote instantiation Service. [69] [www.coolbotproject.org]
  • 70. THANK YOU VERY MUCH FOR YOUR ATTENTION [70] [www.coolbotproject.org]