highperformancerelaying%of% c++11objects% acrossprocesses ... · highperformancerelaying%of%...
TRANSCRIPT
![Page 1: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/1.jpg)
High Performance Relaying of C++11 Objects across Processes and Logic-‐Labeled Finite-‐State Machines V. ESTIVILL-‐CASTRO* *Griffith University, Nathan Campus, Brisbane, Australia. v.es;vill-‐[email protected], In collabora;on with Rene Hexel, Carl Lusty and many other members of MiPal
(c) V
lad Es+vill-‐Castro
1
![Page 2: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/2.jpg)
Outline • Two tools
• clfsm!• mipal gusimplewhiteboard!• What do they do?
• Finite-‐State Machines (FSM) • Logic-‐labeled FSMs
• Examples
• What have they enabled • soEware architectures /middleware • Model-‐driven development • Formal verifica+on
• Conclusions • What can I do so you would use them?
(c) V
lad Es+vill-‐Castro
2
![Page 3: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/3.jpg)
Outline • Two tools
• clfsm!• mipal gusimplewhiteboard!• What do they do?
• Finite-‐State Machines (FSM) • Logic-‐labeled FSMs
• Examples
• What have they enabled • soEware architectures /middleware • Model-‐driven development • Formal verifica+on
• Conclusions • What can I do so you would use them?
(c) V
lad Es+vill-‐Castro
3
![Page 4: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/4.jpg)
clfsm : compiled logic-‐labeled Cinite-‐state machines!
• Complete POSIX and C++11 compliance. • Open source catkin ROS package release (mipal.net.au/downloads.php). • Transi+ons are labeled by Boolean expressions (not events), facilita+ng formal verifica+on
and elimina+ng all need for concerns about event queues. • Transi+on labels are arbitrary C++11 Boolean expressions, enabling reasoning into what
may otherwise seem a purely reac+ve architecture. • Handling of machines constructed with states that have UML 2.0 (or SCXML) OnEntry, OnExit, and Internal sec+ons with clear seman+cs.
• Guaranteed sequen/al ringlet schedule for the concurrent execu+on of FSMs (removing the need for cri+cal sec+ons and synchroniza+on points).
• Efficient execu+on as the en+re arrangement runs as compiled code without thread switching.
• Being agnos+c to communica+on mechanisms between machines, allowing, for example use with ROS:services and ROS:messages – however, we recommend the use of our class-‐oriented gusimplewhiteboard.
• Mechanisms for sub-‐machine hierarchies and introspec+on to implement complex behaviors. FSMs can be suspended, resumed, or restarted, as well as queried as to whether they are running or not.
• Formal seman+cs that enables simula/on, valida/on, and formal verifica/on. • Associated tools such as (MiEditLLFSM and MiCASE) that enable rapid development of
FSM arrangements. • Tested in 64-‐bit, 32-‐bit CPUs and even 8-‐bit controllers like the Atmel AVR.
(c) V
lad Es+vill-‐Castro
4
![Page 5: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/5.jpg)
Outline • Two tools
• clfsm!• mipal gusimplewhiteboard!• What do they do?
• Finite-‐State Machines (FSM) • Logic-‐labeled FSMs
• Examples
• What have they enabled • soEware architectures /middleware • Model-‐driven development • Formal verifica+on
• Conclusions • What can I do so you would use them?
(c) V
lad Es+vill-‐Castro
5
![Page 6: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/6.jpg)
• Widely used model of behavior in embedded systems • QP (Samek, 2008), Bot-‐ Studio (Michel, 2004) StateWORKS (Wagner et al.,
2006) and MathWorks⃝R StateFlow. The UML form of FSMs derives from OMT (Rumbaugh et al., 1991, Chapter 5), and the MDD ini+a+ves of Executable UML (Mellor and Balcer, 2002).
• The original Subsump+on Architecture was implemented using the Subsumption Language
• It was based on finite state machines (FSMs) augmented with +mers (AFSMs)
• AFSMs were implemented in Lisp
Finite-‐State Machines (FSM)
(c) V
lad Es+vill-‐Castro
6
![Page 7: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/7.jpg)
© V
. Es+vill-‐Castro
7
State Diagram / Finite State Automaton
Motors forward Motors halted For 0.1 sec
Light visible
Light visible
Light NOT visible
Light NOT visible
In UML, events label transi+ons
![Page 8: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/8.jpg)
© V
. Es+vill-‐Castro
8 LabVIEW (short for Laboratory Virtual Instrument Engineering Workbench) LEGO RoboLab
![Page 9: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/9.jpg)
Robot control (philosophies) • Open Loop Control
• Just carry on, don’t look at the environment
• Feedback control • Minimize the error to the desired state
• Reac+ve Control • Don’t think, (re)act.
• Delibera+ve (Planner-‐based/Logic -‐based) Control • Think hard, act later.
• Hybrid Control • Think and act separately & concurrently.
• Behavior-‐Based Control (BBC) • Think the way you act.
(c) V
lad Es+vill-‐Castro
9
No use of logic no use of common sense no intelligence?
![Page 10: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/10.jpg)
How is a robot architecture organized
(c) V
lad Es+vill-‐Castro
10
From “Behavior-Based Robotics” by R. Arkin, MIT Press, 1998
![Page 11: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/11.jpg)
Logic-‐labeled FSMs • A second view of +me (since Harel’s seminal paper)
• Machines are not wai+ng in the state for events • The machines drive, execute • The transi+ons are expressions in a logic
• or queries to an expert system
(c) V
lad Es+vill-‐Castro
11
akack for a bit
is the game over?
I am injured?
did the team lost possession?
are the fans misbehaving?
![Page 12: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/12.jpg)
% BallConditions.d!!name{BALLCONDITIONS}.!!input{badProportionXY}.!input{badProportionYX}.!input{badDensityVsDensityTolerance}.!!BC0: {} => is_it_a_ball.!BC1: badProportionXY => ~is_it_a_ball. BC1 > BC0.!BC2: badProportionYX => ~is_it_a_ball. BC2 > BC0.!BC3: badDensityVsDensityTolerance => ~is_it_a_ball. BC3 > BC0.!!output{b is_it_a_ball, "is_it_a_ball"}.!
Example from robotic soccer ORANGE_BLOB_FOUND
OnEntry { extern blobSizeX; extern blobSizeY; extern blobArea; extern blobNumPixels; toleranceRatio = 2; densityTolerance = 3; badProportionXY = blobSizeX/blobSizeY > toleranceRatio; badProportionYX = blobSizeY/blobSizeX > toleranceRation; badDensityVsDensityTolerance = blobArea / blobNumPixels > densityTolerance;}OnExit {}{}
BALL_FOUND
is_it_a_ball
(c) V
lad Es+vill-‐Castro
12
Logic labeled FSMs provide delivera+ve control
Any C++11 code
Any C++11 Boolean
expression (code)
![Page 13: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/13.jpg)
Outline • Two tools
• clfsm!• mipal gusimplewhiteboard!• What do they do?
• Finite-‐State Machines (FSM) • Logic-‐labeled FSMs
• Examples
• What have they enabled • soEware architectures /middleware • Model-‐driven development • Formal verifica+on
• Conclusions • What can I do so you would use them?
(c) V
lad Es+vill-‐Castro
13
![Page 14: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/14.jpg)
Example 1: Pure reactive control
• hkps://www.youtube.com/watch?v=F8K4V78vUbk&feature=youtu.be
(c) V
lad Es+vill-‐Castro
14
![Page 15: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/15.jpg)
Example 2: BatMan moves (reactive control on a Nao)
• hkps://www.youtube.com/watch?v=gN6rIveCWNk&feature=youtu.be
(c) V
lad Es+vill-‐Castro
15
![Page 16: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/16.jpg)
Example 2: BatMan moves (reactive control on a Nao)
• hkps://www.youtube.com/watch?v=gN6rIveCWNk&feature=youtu.be
(c) V
lad Es+vill-‐Castro
16
![Page 17: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/17.jpg)
Example 3: Reactive control on ROS!
• hkps://www.youtube.com/watch?v=AJYA2hB4i9U&feature=youtu.be
(c) V
lad Es+vill-‐Castro
17
![Page 18: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/18.jpg)
A turtle afraid of the walls
(c) V
lad Es+vill-‐Castro
18
![Page 19: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/19.jpg)
A turtle afraid of the walls
(c) V
lad Es+vill-‐Castro
19
![Page 20: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/20.jpg)
Example 4: Behavior Based Control / Subsumption Architecture
Mechanisms for sub-‐machine hierarchies and introspec+on to implement complex behaviors. FSMs can be suspended, resumed, or restarted, as well as queried as to whether they are running or not.
(c) V
lad Es+vill-‐Castro
20
![Page 21: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/21.jpg)
Example 5: RoboCup Game Controller
(c) V
lad Es+vill-‐Castro
21 Mechanisms for sub-‐machine hierarchies and introspec+on to implement complex behaviors. FSMs can be suspended, resumed, or restarted, as well as queried as to whether they are running or not.
![Page 22: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/22.jpg)
clfsm : compiled logic-‐labeled Cinite-‐state machines!
• Complete POSIX and C++11 compliance. • Open source catkin ROS package release (mipal.net.au/downloads.php). • Transi+ons are labeled by Boolean expressions (not events), facilita+ng formal verifica+on
and elimina+ng all need for concerns about event queues. • Transi+on labels are arbitrary C++11 Boolean expressions, enabling reasoning into what
may otherwise seem a purely reac+ve architecture. • Handling of machines constructed with states that have UML 2.0 (or SCXML) OnEntry, OnExit, and Internal sec+ons with clear seman+cs.
• Guaranteed sequen/al ringlet schedule for the concurrent execu+on of FSMs (removing the need for cri+cal sec+ons and synchroniza+on points).
• Efficient execu+on as the en+re arrangement runs as compiled code without thread switching.
• Being agnos+c to communica+on mechanisms between machines, allowing, for example use with ROS:services and ROS:messages – however, we recommend the use of our class-‐oriented gusimplewhiteboard.
• Mechanisms for sub-‐machine hierarchies and introspec+on to implement complex behaviors. FSMs can be suspended, resumed, or restarted, as well as queried as to whether they are running or not.
• Formal seman+cs that enables simula/on, valida/on, and formal verifica/on. • Associated tools such as (MiEditLLFSM and MiCASE) that enable rapid development of
FSM arrangements. • Tested in 64-‐bit, 32-‐bit CPUs, and even 8-‐bit controllers like the Atmel AVR.
(c) V
lad Es+vill-‐Castro
22
SUMMARY
![Page 23: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/23.jpg)
Outline • Two tools
• clfsm!• mipal gusimplewhiteboard!• What do they do?
• Finite-‐State Machines (FSM) • Logic-‐labeled FSMs
• Examples
• What have they enabled • soEware architectures /middleware • Model-‐driven development • Formal verifica+on
• Conclusions • What can I do so you would use them?
(c) V
lad Es+vill-‐Castro
23
![Page 24: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/24.jpg)
gusimplewhiteboard :In memory OO-‐messages/classes!• Completely C++11 and POSIX compliant; thus, plarorm independent: used on Mac OS X (Mountain Lion), LINUX 13.10, Aldebaran Nao 1.14.3, Webots 7.1, the Raspberry Pi (www.raspberrypi.org), and Lego NXT.
• Released as a ROS:catkin package (mipal.net.au/downloads.php).
• Extremely fast performance for add_Message and get_Message, intra-‐process as well as inter-‐process.
• Completely OO-‐compliant. The classes that can be used are not restricted, the full data-‐structure mechanisms of C++11 are available.
• Very clear semantics that removes lots of issues of concurrency control.
(c) V
lad Es+vill-‐Castro
24
![Page 25: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/25.jpg)
Middleware -‐ Architecture • In robo+cs we need to integrate many pieces of soEware in charge of different things • Sensors
• Actuators
• Filtering the sensors • Fusing the sensors
• Coordina+ng the actuators • making the motors in an arm control the arm
• Perform tasks, make decision, plan, learn
• Communicate with others
© V
. Es+vill-‐Castro
25
![Page 26: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/26.jpg)
Software Engineering concerns • Modularity • Integra+on • Reliability/ Tes+ng • Development cycle
• Simula+ons • Monitoring
© V
. Es+vill-‐Castro
26
![Page 27: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/27.jpg)
Whiteboard/Blackboard architecture
© V
. Es+vill-‐Castro
27
Reduce the number of APIs
![Page 28: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/28.jpg)
Conceptual cycle • Similar to a ‘reac+ve-‐architecture’ • Similar to a whiteboard architecture
(c) V
lad Es+vill-‐Castro
28
whiheboard
sensor 1
sensor space of the robot
sensor 2
sensor 3
sensor 4
sensor n
CONTROL AT ITS OWN TIME
Do the right thing by the state of the world
their own time
• Delibera+ve control architecture by symbolic-‐modeling systems (logics)
• Behavior-‐base control by arrangements of FSMs
![Page 29: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/29.jpg)
Modes of communication • PULL (closer to +me-‐triggered)
• receivers query the whiteboard for the latest from the sender • own thread for the receiver • sender just does and add message
• PUSH (closer to event-‐driven) • the receivers subscribe a call-‐back in the whiteboard • add message by sender spans new threads in the receivers
© V
. Es+vill-‐Castro
29
Whiteboard
Sender Receiver Receiver
Receiver Receiver
![Page 30: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/30.jpg)
add_Message!• Includes #include "gugenericwhiteboardobject.h" !#include "guwhiteboardtypelist_generated.h”!!• Declare a handler Ball_Belief_t wb_ball; !
• Construct you objects (with the constructor of the OO-‐class) Ball_Belief a_ball(50,30); ! • Use the seker to actually post to the whiteboard wb_ball.set(a_ball); !
(c) V
lad Es+vill-‐Castro
30
![Page 31: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/31.jpg)
get_Message!• Includes #include "gugenericwhiteboardobject.h" !#include "guwhiteboardtypelist_generated.h”!!• Declare a handler Ball_Belief_t wb_ball; !
• Retrieve your object Ball_Belief ball = wb_ball.get(); !// or alternatively: ball = wb_ball(); !
(c) V
lad Es+vill-‐Castro
31
![Page 32: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/32.jpg)
Illustration of OO facility
• Declare a handler
(c) V
lad Es+vill-‐Castro
32
• Retrieve an object and its property
• Proper+es are objects
![Page 33: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/33.jpg)
Speed • Of the order of 50 +mes faster than ROS
• 2013 Mac Pro, 3 GHz 8-‐Core Intel Xeon E5, 32 GB memory 1867 MHz DDR3 ECC RAM
• Iden+cal compiler flags (compiled with catkin_make)
(c) V
lad Es+vill-‐Castro
33
![Page 34: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/34.jpg)
One Minute Microwave • Widely discussed in the literature of soEware engineering
• Analogous to the X-‐Ray machine • Therac-‐25 radia+on machine that caused harm to pa+ents
• Important SAFETY feature • OPENING THE DOOR SHALL STOP THE COOKING
(c) V
lad Es+vill-‐Castro
34
![Page 35: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/35.jpg)
Requirements
(c) V
lad Es+vill-‐Castro
35
Requirements Description
R1 There is a single control button available for the use of the oven. If the oven is closed and you push the button, the oven will start cooking (that is, energize the power-tube) for one minute
R2 If the button is pushed while the oven is cooking, it will cause the oven to cook for an extra minute.
R3 Pushing the button when the door is open has no effect.
R4 Whenever the oven is cooking or the door is open, the light in the oven will be on.
R5 Opening the door stops the cooking.
R6 Closing the door turns off the light. This is the normal idle state, prior to cooking when the user has placed food in the oven.
R7 If the oven times out, the light and the power-tube are turned off and then a beeper emits a warning beep to indicate that the cooking has finished.
and does not clear the +mer and stops the +mer
![Page 36: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/36.jpg)
One of the FSMs
(c) V
lad Es+vill-‐Castro
36
% MicrowaveCook.d
name{MicrowaveCook}.
input{timeLeft}.
input{doorOpen}.
C0: {} => ~cook.
C1: timeLeft => cook. C1 > C0.
C2: doorOpen => ~cook. C2 > C1.
output{b cook, "cook"}.
![Page 37: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/37.jpg)
Embedded systems are performing several things • The models is made of several finite state-‐machines
• Behavior-‐based control
• With a rich language of logic, the modeling aspect is decomposed
• the ac+on /reac+on part of the system • the states and transi+ons of the finite-‐state machine
• the declara+ve knowledge of the world • the logic system
(c) V
lad Es+vill-‐Castro
37
![Page 38: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/38.jpg)
The complete arrangement
(c) V
lad Es+vill-‐Castro
38
2 OFFOnEntry {int sound; sound=0;}OnExit {}{}
1 ARMEDOnEntry {}OnExit {}{}
timeLeft
timeout(2000000)
1 RINGINGOnEntry {sound=1;}OnExit {}{}
!timeLeft
2 NOT_COOKINGOnEntry {int motor; motor=0;}OnExit {}{}
1 COOKINGOnEntry {motor=1;}OnExit {}{}
!doorOpen && timeleft
doorOpen || ! timeLeft
2 NOT_SHINE_LIGHTOnEntry {int light; light=0;}OnExit {}{}
1 SHINE_LIGHTOnEntry {light=1;}OnExit {}{}
doorOpen || timeLeft
!doorOpen && ! timeLeft
1 INITOnEntry {int currentTime; extern buttonPushed; extern doorOpen; currentTime=0;}OnExit {}{}
2 TESTOnEntry {timeLeft=0<currentTime;}OnExit {}{}
true
true
4 DECREMENTOnEntry {currentTime=currentTime-1;}OnExit {}{}
buttonPushed && !doorOpen && (currentTime<4035)
3 ADD_60OnEntry {currentTime=60+currentTime;}OnExit {timeLeft=1;}{}
!buttonPushed
!doorOpen && timeLeft && timeout(1000000)
Light Motor
Bell
Timer
Execute in predefined schedule ti ringlets
of FSM Mi
DPL LOGIC IS COMPILED
![Page 39: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/39.jpg)
That is all folks!
© Vlad Es+vill-‐Castro
39
![Page 40: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/40.jpg)
Demo video hkp://www.youtube.com/watch?v=t4ueI1o67Xk&feature=relmfu
(c) V
lad Es+vill-‐Castro
40
![Page 41: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/41.jpg)
Simulator (embedded system: Industrial press)
(c) V
lad Es+vill-‐Castro
41
hkp://www.youtube.com/watch?v=FpVUSrvLI0c&feature=relmfu
![Page 42: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/42.jpg)
On-‐line debugging and simulation
(c) V
lad Es+vill-‐Castro
42
![Page 43: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/43.jpg)
Outline • Two tools
• clfsm!• mipal gusimplewhiteboard!• What do they do?
• Finite-‐State Machines (FSM) • Logic-‐labeled FSMs
• Examples
• What have they enabled • soEware architectures /middleware • Model-‐driven development • Formal verifica+on
• Conclusions • What can I do so you would use them?
(c) V
lad Es+vill-‐Castro
43
![Page 44: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/44.jpg)
Regulate the number of threads
clfsm SMGameController Safety_BatteryMonitor SMFallManager SMButtonChest SMButtonLeftFoot SMButtonRightFoot SMRobotPosition SMSayIP SMShutdown!!clfsm SMSoundStartStop SMSoundWhistle SMSoundDemo SMGetUp SMPlayer SMBallFollower SMKicker SMHeadScanner SMBallSeeker SMReadyFromInitial SMReadyFromAnywhere SMHeadBallTracker SMWalkScanner SMSeeker Color_Learner SMHeadScannerGoal SMHeadGoalTracker SMGetCloseToGoal SMSet SMFindGoalOnSpot SMGoalieSaver SMFindGoalOnSpot SMLeapController SMTeleoperationController SMTeleoperation SMTeleoperationHeadControl BatNaoMoves StopMotionRecorder SMYouCannotCatchMe!!clfsm gukalmanfilter!!clfsm guUDPreceiver!
(c) V
lad Es+vill-‐Castro
44
One thread
Second thread
Third thread
Fourth thread
![Page 45: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/45.jpg)
Very quick development of behaviors • Very rapidly produces results
• Very rapidly we can trace the observed behavior to the code
• Very rapidly we have building blocks that add sophis+ca+on • All the behaviors in one go
(c) V
lad Es+vill-‐Castro
45
![Page 46: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/46.jpg)
The two paradigms • Event-‐triggered
• op+mis+c • best-‐case, response +me
• can’t handle event-‐showers
• not predictable • not scalable
• repeat the verifica+on
• Time-‐triggered • pessimis+c
• regular response +me
• predictable • scalable
(c) V
lad Es+vill-‐Castro
46 Kopetz, H.: “Should Responsive Systems be Event-‐Triggered or Time-‐ Triggered?” IEICE Transac;ons on Informa;on and Systems 76(11), 1325 (November 1993)
![Page 47: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/47.jpg)
Check out clfsm
(c) V
lad Es+vill-‐Castro
47
Let us know what you think
![Page 48: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/48.jpg)
© V
. Es+vill-‐Castro
48
![Page 49: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/49.jpg)
Conceptual cycle • Similar to a ‘reac+ve-‐architecture’ • Similar to a whiteboard architecture
(c) V
lad Es+vill-‐Castro
49
whiheboard
sensor 1
sensory space of the robot
sensor 2
sensor 3
sensor 4
sensor n
CONTROL AT ITS OWN TIME
Do the right thing by the state of the world
their own time
• Delibera+ve control architecture by logics
• Behavior-‐base control by vectors of FSMs
under one CPU rate for the sensors
![Page 50: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/50.jpg)
Conceptual cycle • Similar to a ‘reac+ve-‐architecture’ • Similar to a whiteboard architecture
(c) V
lad Es+vill-‐Castro
50
whiheboard
sensor 1
sensory space of the robot
sensor 2
sensor 3
sensor 4
sensor n
CONTROL AT ITS OWN TIME
Do the right thing by the state of the world
their own time
• Delibera+ve control architecture by logics
• Behavior-‐base control by vectors of FSMs
under one CPU rate for the sensors
+me t2
![Page 51: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/51.jpg)
Conceptual cycle • Similar to a ‘reac+ve-‐architecture’ • Similar to a whiteboard architecture
(c) V
lad Es+vill-‐Castro
51
whiheboard
sensor 1
sensor space of the robot and memory is FINITE
sensor 2
sensor 3
sensor 4
sensor n
CONTROL AT ITS OWN TIME
Do the right thing by the state of the world
their own time
• Delibera+ve control architecture by logics
• Behavior-‐base control by vectors of FSMs
under one CPU rate for the sensors
+me t3
![Page 52: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/52.jpg)
Conceptual cycle • Similar to a ‘reac+ve-‐architecture’ • Similar to a whiteboard architecture
(c) V
lad Es+vill-‐Castro
52
whiheboard
sensor 1
sensory space of the robot and memory is FINITE
sensor 2
sensor 3
sensor 4
sensor n
CONTROL AT ITS OWN TIME
Do the right thing by the state of the world
their own time
• Delibera+ve control architecture by logics
• Behavior-‐base control by vectors of FSMs
under one CPU rate for the sensors
+me t3
FULL REACTIVE DO THE RIGHT THING FOR MEMORY AND SENSOR SPACE
![Page 53: HighPerformanceRelaying%of% C++11Objects% acrossProcesses ... · HighPerformanceRelaying%of% C++11Objects% acrossProcesses% and%% LogicLabeled% FiniteStateMachines %% % V.#ESTIVILL)CASTRO*](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02d2ee7e708231d40630e9/html5/thumbnails/53.jpg)
Conceptual cycle • Similar to a ‘reac+ve-‐architecture’ • Similar to a whiteboard architecture
(c) V
lad Es+vill-‐Castro
53
under several CPU rate for the sensors
whiheboard
sensor 1
sensor 2
sensor 3
sensor 4
sensor n
CONTROL AT ITS OWN TIME
Do the right thing by the state of the world
FULL REACTIVE DO THE RIGHT THING FOR MEMORY AND SENSOR SPACE
whiheboard
sensor 1
sensor 2
sensor 3
sensor 4
sensor n
CONTROL AT ITS OWN TIME
Do the right thing by the state of the world
FULL REACTIVE DO THE RIGHT THING FOR MEMORY AND SENSOR SPACE
sensor C1
sensor C2