coolbot. overview

Post on 06-Aug-2015

2.298 Views

Category:

Business

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

[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

Ove

rvie

wC

oolB

OT

[2][www.coolbotproject.org]

CoolBOT is a distributed

CBSE (Component

Based Software Engineering) C++

programming framework

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.

Ove

rvie

wC

oolB

OT

[4][www.coolbotproject.org]

A system is composed by

integrations and software

components

Ove

rvie

wC

oolB

OT

[5][www.coolbotproject.org]

There are three kinds of software

components: components,

views and probes

Ove

rvie

wC

oolB

OT

[6][www.coolbotproject.org]

Integrations are processes in the underlying OS. They contain components

Ove

rvie

wC

oolB

OT

[7][www.coolbotproject.org]

Integrations also may contain views, and a

machine can host several integrations

Ove

rvie

wC

oolB

OT

[8][www.coolbotproject.org]

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

and viceversa

[9][www.coolbotproject.org]

CoolBOTOverview

[10][www.coolbotproject.org]

CoolBOTOverview

CoolBOT users program at system

level

[11][www.coolbotproject.org]

CoolBOTOverview

CoolBOT runtime infrastructure

supports system level abstractions and

execution

[12][www.coolbotproject.org]

CoolBOTOverview

CoolBOT runtime infrastructure is

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

CoolBOT

[13][www.coolbotproject.org]

CoolBOT Components

CoolBOT

[14][www.coolbotproject.org]

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

automaton transitions)

CoolBOT

[15][www.coolbotproject.org]

CoolBOT ComponentsMeta state running

implements component's functionality. It is user

defined

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)

[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

[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

[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

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

[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

[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

[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

[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

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

CoolBOT ViewsCoolBOT

[26][www.coolbotproject.org]

Likewise components, views have also an

external interface of input and output ports

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

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

[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

[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

[31][www.coolbotproject.org]

Development ToolsCoolBOT CoolBOT provides two tools for

developing CoolBOT software: coolbot-bundle and coolbot-c

[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

[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

[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

[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

[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

[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

[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

[39][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

[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

[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

[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

[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

[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

[45][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

[46][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

[47][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

[48][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

[49][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

[50][www.coolbotproject.org]

An

Exa

mpl

e: A

Sec

ure

Nav

igat

ion

Sys

tem

Coo

lBO

T

[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

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

[53][www.coolbotproject.org]

THAT'S ALL! THAT'S ALL!

More info inwww.coolbotproject.org

top related