CoolBOT.
                        Overview
                           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
           Overview




                             CoolBOT is a
                              distributed
                                 CBSE
                             (Component
                            Based Software
                           Engineering) C++
         [2]                 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
         [3]
                           computing.
[www.coolbotproject.org]
CoolBOT
           Overview




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




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




       Integrations are
       processes in the
        underlying OS.
         They contain
         components

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




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




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




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




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




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




       CoolBOT users
      program at system
            level




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




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



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




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




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




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




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




                                     Components' input and output
                                       ports constitute its external
        [16]
                                      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




        [17]
[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




        [18]
[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

        [19]
[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.

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

                                          Port Connections Typologies
                                      Active Publisher/Passive Subscriber (AP/PS)
                           Output Port             Input Port          Port Connection Type
                         tick
         There are different                 tick                tick connections
      typologies for input and               last                last connections
    output ports for establishing
                       generic                fifo                fifo connections
        port connections with
                                            ufifo         unbounded fifo connections
     different communication
                     multipacket
    patterns: fifo on input port,        multipacket         multipacket connections
      “blackboard” on output
                   lazymultipacket
       port and multipacket.Active Publisher/Passive Subscriber (PP/AS)
                             poster                 poster              poster connections
        [21]
[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

        [22]
[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


        [23]
[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




        [24]
[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

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


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




        [26]
[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



        [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 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


        [29]
[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



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




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




                                         coolbot-bundle creates
        [32]                            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
        [33]                                            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

        [34]
[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
        [36]                             and integrations
[www.coolbotproject.org]
CoolBOT
         An Example: A Secure
            Navigation System




                                    This is an
                                   integration
                                implementing a
                                     Secure
                                  Navigation
                                System (SNS)
                                 for a mobile
                                     robot,
                                  concretely a
        [37]                     Pioneer 3 DX
[www.coolbotproject.org]
CoolBOT
         An Example: A Secure
            Navigation System


                                     It uses
                                  Player/Stage
                                 for abstracting
                                    the robot
                                  hardware, a
                                   Global ND+
                                    algorithm
                                implementation,
                                 in combination
                                with the MbICP
                                  algorithm for
        [38]                     scan matching
[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [39]
                                     Navigation System




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




                                  Component
                                 PlayerRobot
                                  abstracts the
        [40]                    robot hardware
[www.coolbotproject.org]
                                     using
                                 Player/Stage
CoolBOT
         An Example: A Secure
            Navigation System



                                   Component
                                MbICPCorrector
                                 implement the
                                  MbICP scan
                                    matching
                                   algorithm to
                                reduce odometry
                                      errors



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

                                    Component
                                     GridMap
                                  registers range
                                laser sensor data
                                in a grid while the
                                 robot navigates




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




                                Component ND
                                makes the robot
                                navigates while
                                   avoiding
                                obstacles using
                                 ND+ algorithm

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


                                    Component
                                  Planner plans
                                which way to get to
                                arrive to a specific
                                point using the grid
                                built by component
                                    GridMap. It
                                      provides
                                  component ND
                                 with subobjetives
                                 while navigating
        [44]
[www.coolbotproject.org]
CoolBOT
                                  An Example: A Secure




                           [45]
                                     Navigation System




[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]
CoolBOT
                                  An Example: A Secure




                           [48]
                                     Navigation System




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




                           [49]
                                     Navigation System




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




                           [50]
                                     Navigation System




[www.coolbotproject.org]
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:
        [51]
[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.
        [52]
[www.coolbotproject.org]
THAT'S ALL!
                           THAT'S ALL!
                               More info in
                           www.coolbotproject.org
        [53]
[www.coolbotproject.org]

Coolbot. Overview

  • 1.
    CoolBOT. Overview 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 Overview CoolBOT is a distributed CBSE (Component Based Software Engineering) C++ [2] programming [www.coolbotproject.org] framework
  • 3.
    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 [3] computing. [www.coolbotproject.org]
  • 4.
    CoolBOT Overview A system is composed by integrations and software components [4] [www.coolbotproject.org]
  • 5.
    CoolBOT Overview There are three kinds of software components: components, views and probes [5] [www.coolbotproject.org]
  • 6.
    CoolBOT Overview Integrations are processes in the underlying OS. They contain components [6] [www.coolbotproject.org]
  • 7.
    CoolBOT Overview Integrations also may contain views, and a machine can host several integrations [7] [www.coolbotproject.org]
  • 8.
    CoolBOT Overview probes are software components to interface non CoolBOT software with CoolBOT systems, and viceversa [8] [www.coolbotproject.org]
  • 9.
    CoolBOT Overview [9] [www.coolbotproject.org]
  • 10.
    CoolBOT Overview CoolBOT users program at system level [10] [www.coolbotproject.org]
  • 11.
    CoolBOT CoolBOT runtime infrastructure Overview supports system level abstractions and execution [11] [www.coolbotproject.org]
  • 12.
    CoolBOT Overview CoolBOT runtime infrastructure is supported by the OS API and the ACE library for network communications [12] [www.coolbotproject.org]
  • 13.
    CoolBOT CoolBOT Components [13] [www.coolbotproject.org]
  • 14.
    CoolBOT CoolBOT Components CoolBOT components are port automata (input port data packets receptions trigger automaton transitions) [14] [www.coolbotproject.org]
  • 15.
    CoolBOT CoolBOT Components Meta state running implements component's functionality. It is user defined [15] [www.coolbotproject.org]
  • 16.
    CoolBOT CoolBOT Components Components' input and output ports constitute its external [16] interface. Through them they [www.coolbotproject.org] receive and send port packets (data packets)
  • 17.
    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 [17] [www.coolbotproject.org]
  • 18.
    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 [18] [www.coolbotproject.org]
  • 19.
    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 [19] [www.coolbotproject.org]
  • 20.
    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. [20] [www.coolbotproject.org]
  • 21.
    CoolBOT CoolBOT Port Connections Port Connections Typologies Active Publisher/Passive Subscriber (AP/PS) Output Port Input Port Port Connection Type tick There are different tick tick connections typologies for input and last last connections output ports for establishing generic fifo fifo connections port connections with ufifo unbounded fifo connections different communication multipacket patterns: fifo on input port, multipacket multipacket connections “blackboard” on output lazymultipacket port and multipacket.Active Publisher/Passive Subscriber (PP/AS) poster poster poster connections [21] [www.coolbotproject.org]
  • 22.
    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 [22] [www.coolbotproject.org]
  • 23.
    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 [23] [www.coolbotproject.org]
  • 24.
    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 [24] [www.coolbotproject.org]
  • 25.
    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 [25] [www.coolbotproject.org]
  • 26.
    CoolBOT CoolBOT Views Likewise components, views have also an external interface of input and output ports [26] [www.coolbotproject.org]
  • 27.
    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 [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 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 [29] [www.coolbotproject.org]
  • 30.
    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 [30] [www.coolbotproject.org]
  • 31.
    CoolBOT CoolBOT provides two tools for developing CoolBOT software: Development Tools coolbot-bundle and coolbot-c [31] [www.coolbotproject.org]
  • 32.
    CoolBOT CoolBOT provides two tools for developing CoolBOT software: Development Tools coolbot-bundle and coolbot-c coolbot-bundle creates [32] workspaces for developing [www.coolbotproject.org] components, views, port packets and integrations
  • 33.
    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 [33] and integrations [www.coolbotproject.org]
  • 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 and integrations [34] [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 [36] and integrations [www.coolbotproject.org]
  • 37.
    CoolBOT An Example: A Secure Navigation System This is an integration implementing a Secure Navigation System (SNS) for a mobile robot, concretely a [37] Pioneer 3 DX [www.coolbotproject.org]
  • 38.
    CoolBOT An Example: A Secure Navigation System It uses Player/Stage for abstracting the robot hardware, a Global ND+ algorithm implementation, in combination with the MbICP algorithm for [38] scan matching [www.coolbotproject.org]
  • 39.
    CoolBOT An Example: A Secure [39] Navigation System [www.coolbotproject.org]
  • 40.
    CoolBOT An Example: A Secure Navigation System Component PlayerRobot abstracts the [40] robot hardware [www.coolbotproject.org] using Player/Stage
  • 41.
    CoolBOT An Example: A Secure Navigation System Component MbICPCorrector implement the MbICP scan matching algorithm to reduce odometry errors [41] [www.coolbotproject.org]
  • 42.
    CoolBOT An Example: A Secure Navigation System Component GridMap registers range laser sensor data in a grid while the robot navigates [42] [www.coolbotproject.org]
  • 43.
    CoolBOT An Example: A Secure Navigation System Component ND makes the robot navigates while avoiding obstacles using ND+ algorithm [43] [www.coolbotproject.org]
  • 44.
    CoolBOT An Example: A Secure Navigation System Component Planner plans which way to get to arrive to a specific point using the grid built by component GridMap. It provides component ND with subobjetives while navigating [44] [www.coolbotproject.org]
  • 45.
    CoolBOT An Example: A Secure [45] Navigation System [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.
    CoolBOT An Example: A Secure [48] Navigation System [www.coolbotproject.org]
  • 49.
    CoolBOT An Example: A Secure [49] Navigation System [www.coolbotproject.org]
  • 50.
    CoolBOT An Example: A Secure [50] Navigation System [www.coolbotproject.org]
  • 51.
    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: [51] [www.coolbotproject.org] www.coolbotproject.org
  • 52.
    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. [52] [www.coolbotproject.org]
  • 53.
    THAT'S ALL! THAT'S ALL! More info in www.coolbotproject.org [53] [www.coolbotproject.org]