coolbot. overview

53
[1] [www.coolbotproject.org] CoolBOT. Overview Antonio Carlos Domínguez Brito Inst. Univ. SIANI/Dpto. Informática y Sistemas Universidad de Las Palmas de Gran Canaria Spain

Upload: antodom

Post on 06-Aug-2015

2.298 views

Category:

Business


1 download

TRANSCRIPT

Page 1: Coolbot. Overview

[1][www.coolbotproject.org]

CoolBOT.Overview

Antonio Carlos Domínguez BritoInst. Univ. SIANI/Dpto. Informática y SistemasUniversidad de Las Palmas de Gran Canaria

Spain

Page 2: Coolbot. Overview

Ove

rvie

wC

oolB

OT

[2][www.coolbotproject.org]

CoolBOT is a distributed

CBSE (Component

Based Software Engineering) C++

programming framework

Page 3: Coolbot. Overview

Ove

rvie

wC

oolB

OT

[3][www.coolbotproject.org]

CoolBOT's design principles:

1. Component based → easy software integration.

2. Take advantage of multithreading/multicores OSs.

3. System control & monitoring.

4. Transparent distributed computing.

Page 4: Coolbot. Overview

Ove

rvie

wC

oolB

OT

[4][www.coolbotproject.org]

A system is composed by

integrations and software

components

Page 5: Coolbot. Overview

Ove

rvie

wC

oolB

OT

[5][www.coolbotproject.org]

There are three kinds of software

components: components,

views and probes

Page 6: Coolbot. Overview

Ove

rvie

wC

oolB

OT

[6][www.coolbotproject.org]

Integrations are processes in the underlying OS. They contain components

Page 7: Coolbot. Overview

Ove

rvie

wC

oolB

OT

[7][www.coolbotproject.org]

Integrations also may contain views, and a

machine can host several integrations

Page 8: Coolbot. Overview

Ove

rvie

wC

oolB

OT

[8][www.coolbotproject.org]

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

and viceversa

Page 9: Coolbot. Overview

[9][www.coolbotproject.org]

CoolBOTOverview

Page 10: Coolbot. Overview

[10][www.coolbotproject.org]

CoolBOTOverview

CoolBOT users program at system

level

Page 11: Coolbot. Overview

[11][www.coolbotproject.org]

CoolBOTOverview

CoolBOT runtime infrastructure

supports system level abstractions and

execution

Page 12: Coolbot. Overview

[12][www.coolbotproject.org]

CoolBOTOverview

CoolBOT runtime infrastructure is

supported by the OS API and the ACE library for network communications

Page 13: Coolbot. Overview

CoolBOT

[13][www.coolbotproject.org]

CoolBOT Components

Page 14: Coolbot. Overview

CoolBOT

[14][www.coolbotproject.org]

CoolBOT ComponentsCoolBOT components are port automata (input port data packets receptions trigger

automaton transitions)

Page 15: Coolbot. Overview

CoolBOT

[15][www.coolbotproject.org]

CoolBOT ComponentsMeta state running

implements component's functionality. It is user

defined

Page 16: Coolbot. Overview

CoolBOT

[16][www.coolbotproject.org]

CoolBOT Components

Components' input and output ports constitute its external

interface. Through them they receive and send port packets

(data packets)

Page 17: Coolbot. Overview

[17][www.coolbotproject.org]

CoolBOT Port ConnectionsCoolBOT

Port connections are unidirectional (from input port

to output port), and follow a publish/subscribe

communication pattern

one publisher, multiple subscribers

Page 18: Coolbot. Overview

[18][www.coolbotproject.org]

CoolBOT Port ConnectionsCoolBOT

Port connections are unidirectional (from input port

to output port), and follow a publish/subscribe

communication pattern

multiple publishers, one subscriber

Page 19: Coolbot. Overview

[19][www.coolbotproject.org]

CoolBOT Port ConnectionsCoolBOT

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

Page 20: Coolbot. Overview

[20][www.coolbotproject.org]

CoolBOT Port ConnectionsCoolBOT

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.

Page 21: Coolbot. Overview

[21][www.coolbotproject.org]

CoolBOT Port ConnectionsCoolBOT

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.

Port Connections TypologiesActive Publisher/Passive Subscriber (AP/PS)

Output Port Input Port Port Connection Type

tick tick tick connections

generic

last last connections

fifo fifo connections

ufifo unbounded fifo connections

multipacketmultipacket multipacket connections

lazymultipacket

Active Publisher/Passive Subscriber (PP/AS)

poster poster poster connections

Page 22: Coolbot. Overview

[22][www.coolbotproject.org]

CoolBOT Port ConnectionsCoolBOT

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

Page 23: Coolbot. Overview

[23][www.coolbotproject.org]

CoolBOT Port ConnectionsCoolBOT

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

Page 24: Coolbot. Overview

[24][www.coolbotproject.org]

CoolBOT Port ConnectionsCoolBOT

Port connections between components in different

integrations are multiplexed over TCP/IP

connections

Integrations are CoolBOT processes hosting

component instances at runtime

Page 25: Coolbot. Overview

CoolBOT ViewsCoolBOT

[25][www.coolbotproject.org]

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

Page 26: Coolbot. Overview

CoolBOT ViewsCoolBOT

[26][www.coolbotproject.org]

Likewise components, views have also an

external interface of input and output ports

Page 27: Coolbot. Overview

CoolBOT ViewsCoolBOT

[27][www.coolbotproject.org]

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

Page 28: Coolbot. Overview

CoolBOT ViewsCoolBOT

[28][www.coolbotproject.org]

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

Page 29: Coolbot. Overview

[29][www.coolbotproject.org]

CoolBOT ProbesCoolBOT

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

Page 30: Coolbot. Overview

[30][www.coolbotproject.org]

CoolBOT ProbesCoolBOT

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

Page 31: Coolbot. Overview

[31][www.coolbotproject.org]

Development ToolsCoolBOT CoolBOT provides two tools for

developing CoolBOT software: coolbot-bundle and coolbot-c

Page 32: Coolbot. Overview

[32][www.coolbotproject.org]

Development ToolsCoolBOT

coolbot-bundle creates workspaces for developing components, views, port packets and integrations

CoolBOT provides two tools for developing CoolBOT software: coolbot-bundle and coolbot-c

Page 33: Coolbot. Overview

[33][www.coolbotproject.org]

Development ToolsCoolBOT

coolbot-c is the CoolBOT compiler. We can generate C++

skeletons for components, probes, views, port packets

and integrations

CoolBOT provides two tools for developing CoolBOT software: coolbot-bundle and coolbot-c

Page 34: Coolbot. Overview

[34][www.coolbotproject.org]

Development ToolsCoolBOT

coolbot-c is the CoolBOT compiler. We can generate C++

skeletons for components, probes, views, port packets

and integrations

CoolBOT provides two tools for developing CoolBOT software: coolbot-bundle and coolbot-c

Page 35: Coolbot. Overview

[35][www.coolbotproject.org]

Development ToolsCoolBOT

coolbot-c is the CoolBOT compiler. We can generate C++

skeletons for components, probes, views, port packets

and integrations

CoolBOT provides two tools for developing CoolBOT software: coolbot-bundle and coolbot-c

Page 36: Coolbot. Overview

[36][www.coolbotproject.org]

Development ToolsCoolBOT

coolbot-c is the CoolBOT compiler. We can generate C++

skeletons for components, probes, views, port packets

and integrations

CoolBOT provides two tools for developing CoolBOT software: coolbot-bundle and coolbot-c

Page 37: Coolbot. Overview

[37][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

This is an integration

implementing a Secure

Navigation System (SNS) for a mobile

robot, concretely a Pioneer 3 DX

Page 38: Coolbot. Overview

[38][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

It uses Player/Stage for abstracting

the robot hardware, a Global ND+

algorithm implementation, in combination with the MbICP

algorithm for scan matching

Page 39: Coolbot. Overview

[39][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Page 40: Coolbot. Overview

[40][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Component PlayerRobot abstracts the

robot hardware using

Player/Stage

Page 41: Coolbot. Overview

[41][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Component MbICPCorrector implement the MbICP scan

matching algorithm to

reduce odometry errors

Page 42: Coolbot. Overview

[42][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Component GridMap

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

Page 43: Coolbot. Overview

[43][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Component ND makes the robot navigates while

avoiding obstacles using ND+ algorithm

Page 44: Coolbot. Overview

[44][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

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

Page 45: Coolbot. Overview

[45][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Page 46: Coolbot. Overview

[46][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Page 47: Coolbot. Overview

[47][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Page 48: Coolbot. Overview

[48][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Page 49: Coolbot. Overview

[49][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Page 50: Coolbot. Overview

[50][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

Page 51: Coolbot. Overview

[51][www.coolbotproject.org]

Conclusions and Future WorkCoolBOT

∙ 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:

www.coolbotproject.org

Page 52: Coolbot. Overview

[52][www.coolbotproject.org]

Conclusions and Future WorkCoolBOT

● Ongoing/Future work:

1. Documentation.

2. Integration with ROS.

3. Runtime interpret for integrations.

3.1. Component Name Service.

3.2. Remote instantiation Service.

Page 53: Coolbot. Overview

[53][www.coolbotproject.org]

THAT'S ALL! THAT'S ALL!

More info inwww.coolbotproject.org