What are the differences between an international company, a global company, ...
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]
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]
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]