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