From 502bf91a774b8389b7da0b42d24dac55b484b193 Mon Sep 17 00:00:00 2001 From: Marco Lampacrescia Date: Mon, 8 Jul 2024 19:14:57 +0200 Subject: [PATCH 1/6] Implement initial state with onentry tag Signed-off-by: Marco Lampacrescia --- .../scxml_helpers/scxml_tags.py | 26 ++++++++--- .../battery_example/output_GROUND_TRUTH.jani | 46 +++++++++++++++++-- .../test/test_systemtest_scxml_to_jani.py | 19 ++++---- 3 files changed, 72 insertions(+), 19 deletions(-) diff --git a/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py b/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py index 90947029..586f5e0f 100644 --- a/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py +++ b/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py @@ -309,11 +309,26 @@ def write_model(self): self.automaton.set_name(self.element.get_name()) super().write_model() # Note: we don't support the initial tag (as state) https://www.w3.org/TR/scxml/#initial - # initial_state = self.element.get_state_by_id(self.element.get_initial_state_id()) - # if initial_state.get_onentry() is not None: - # raise NotImplementedError("Initial state with onentry not supported.") - # else: - self.automaton.make_initial(self.element.get_initial_state_id()) + initial_state_id = self.element.get_initial_state_id() + initial_state = self.element.get_state_by_id(initial_state_id) + # Make sure we execute the onentry block of the initial state at the start + if initial_state.get_onentry() is not None: + source_state = f"{initial_state_id}-first-exec" + target_state = initial_state_id + onentry_body = initial_state.get_onentry() + hash_str = _hash_element([source_state, target_state, "onentry"]) + new_edges, new_locations = _append_scxml_body_to_jani_automaton( + self.automaton, self.events_holder, onentry_body, source_state, + target_state, hash_str, None, None) + # Add the initial state and start sequence to the automaton + self.automaton.add_location(source_state) + self.automaton.make_initial(source_state) + for edge in new_edges: + self.automaton.add_edge(edge) + for loc in new_locations: + self.automaton.add_location(loc) + else: + self.automaton.make_initial(initial_state_id) class StateTag(BaseTag): @@ -332,7 +347,6 @@ def get_children(self) -> List[ScxmlTransition]: def write_model(self): state_name = self.element.get_id() self.automaton.add_location(state_name) - # TODO: Make sure initial states that have onentry execute the onentry block at start super().write_model() diff --git a/jani_generator/test/_test_data/battery_example/output_GROUND_TRUTH.jani b/jani_generator/test/_test_data/battery_example/output_GROUND_TRUTH.jani index 298f5268..4c42d62b 100644 --- a/jani_generator/test/_test_data/battery_example/output_GROUND_TRUTH.jani +++ b/jani_generator/test/_test_data/battery_example/output_GROUND_TRUTH.jani @@ -27,6 +27,9 @@ { "name": "level_on_send" }, + { + "name": "use_battery-first-exec-use_battery-766fa6e4" + }, { "name": "use_battery-use_battery-1b935c10" } @@ -40,10 +43,16 @@ }, { "name": "use_battery-1-1b935c10" + }, + { + "name": "use_battery-first-exec" + }, + { + "name": "use_battery-first-exec-0-766fa6e4" } ], "initial-locations": [ - "use_battery" + "use_battery-first-exec" ], "edges": [ { @@ -86,6 +95,37 @@ } ], "action": "level_on_send" + }, + { + "location": "use_battery-first-exec", + "destinations": [ + { + "location": "use_battery-first-exec-0-766fa6e4", + "assignments": [] + } + ], + "action": "use_battery-first-exec-use_battery-766fa6e4" + }, + { + "location": "use_battery-first-exec-0-766fa6e4", + "destinations": [ + { + "location": "use_battery", + "assignments": [ + { + "ref": "level.data", + "value": "battery_percent", + "index": 0 + }, + { + "ref": "level.valid", + "value": true, + "index": 0 + } + ] + } + ], + "action": "level_on_send" } ], "variables": [ @@ -210,9 +250,9 @@ { "result": "level_on_receive", "synchronise": [ + "use_battery-first-exec-use_battery-766fa6e4", null, - "level_on_receive", - "level_on_receive" + null ] }, { diff --git a/jani_generator/test/test_systemtest_scxml_to_jani.py b/jani_generator/test/test_systemtest_scxml_to_jani.py index 8e93d300..6bed1833 100644 --- a/jani_generator/test/test_systemtest_scxml_to_jani.py +++ b/jani_generator/test/test_systemtest_scxml_to_jani.py @@ -53,10 +53,10 @@ def test_basic_example(self): convert_scxml_root_to_jani_automaton(scxml_root, jani_a, eh) automaton = jani_a.as_dict(constant={}) - self.assertEqual(len(automaton["locations"]), 1) - init_location = automaton["locations"][0] - self.assertIn("Initial", init_location["name"]) - self.assertIn("Initial", automaton["initial-locations"]) + self.assertEqual(len(automaton["locations"]), 2) + locations = [loc['name'] for loc in automaton["locations"]] + self.assertIn("Initial-first-exec", locations) + self.assertIn("Initial-first-exec", automaton["initial-locations"]) def test_battery_drainer(self): """ @@ -73,12 +73,11 @@ def test_battery_drainer(self): automaton = jani_a.as_dict(constant={}) self.assertEqual(automaton["name"], "BatteryDrainer") - self.assertEqual(len(automaton["locations"]), 2) + self.assertEqual(len(automaton["locations"]), 4) self.assertEqual(len(automaton["initial-locations"]), 1) - init_location = automaton["locations"][0] - self.assertEqual(init_location['name'], - automaton.get("initial-locations")[0]) - self.assertEqual(len(automaton["edges"]), 2) + locations = [loc['name'] for loc in automaton["locations"]] + self.assertIn(automaton.get("initial-locations")[0], locations) + self.assertEqual(len(automaton["edges"]), 4) # Variables self.assertEqual(len(automaton["variables"]), 1) @@ -154,7 +153,7 @@ def test_example_with_sync(self): self.assertIn({"automaton": "BatteryManager"}, elements) self.assertIn({"automaton": "level"}, elements) syncs = jani_dict["system"]["syncs"] - self.assertEqual(len(syncs), 3) + self.assertEqual(len(syncs), 4) self.assertIn({'result': 'level_on_send', 'synchronise': [ 'level_on_send', None, 'level_on_send']}, From e5471cc01fa1fa5228be8abb507a940c80e6b6d2 Mon Sep 17 00:00:00 2001 From: Marco Lampacrescia Date: Tue, 9 Jul 2024 15:58:13 +0200 Subject: [PATCH 2/6] Ensure consistency for transitions translation Signed-off-by: Marco Lampacrescia --- .../scxml_helpers/scxml_tags.py | 61 +++++++++++++++---- 1 file changed, 50 insertions(+), 11 deletions(-) diff --git a/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py b/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py index 586f5e0f..356d6ea1 100644 --- a/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py +++ b/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py @@ -19,7 +19,7 @@ import xml.etree.ElementTree as ET from hashlib import sha256 -from typing import List, Optional, Tuple, Union +from typing import Dict, List, Optional, Tuple, Union from jani_generator.jani_entries import (JaniAssignment, JaniAutomaton, JaniEdge, JaniExpression, JaniGuard, @@ -347,7 +347,29 @@ def get_children(self) -> List[ScxmlTransition]: def write_model(self): state_name = self.element.get_id() self.automaton.add_location(state_name) - super().write_model() + # Dictionary tracking the conditional trigger-based transitions + self._event_to_conditions: Dict[str, List[str]] = {} + # List of events that trigger transitions without conditions + self._events_no_condition: List[str] = [] + for child in self.children: + transition_events = child.element.get_events() + transition_event = "" if transition_events is None else transition_events[0] + transition_condition = child.element.get_condition() + # Add previous conditions matching the same event trigger to the current child state + child.set_previous_siblings_conditions( + self._event_to_conditions.get(transition_event, [])) + if transition_condition is None: + # Make sure we do not have multiple transitions with no condition and same event + assert transition_event not in self._events_no_condition, \ + f"Event {transition_event} in state {self.element.get_id()} already has a" \ + "transition without condition." + self._events_no_condition.append(transition_event) + else: + # Update the list of conditions related to a transition trigger + if transition_event not in self._event_to_conditions: + self._event_to_conditions[transition_event] = [] + self._event_to_conditions[transition_event].append(transition_condition) + child.write_model() class TransitionTag(BaseTag): @@ -359,12 +381,18 @@ class TransitionTag(BaseTag): def get_children(self) -> List[ScxmlBase]: return [] + def set_previous_siblings_conditions(self, conditions_scripts: List[str]): + """Add conditions from previous transitions with same event trigger.""" + self._previous_conditions = conditions_scripts + def write_model(self): - scxml_root = self.call_trace[0] - current_state = self.call_trace[-1] - current_state_id = current_state.get_id() - target_state_id = self.element.get_target_state_id() - target_state = scxml_root.get_state_by_id(target_state_id) + assert hasattr(self, "_previous_conditions"), \ + "Make sure 'set_previous_siblings_conditions' was called before." + scxml_root: ScxmlRoot = self.call_trace[0] + current_state: ScxmlState = self.call_trace[-1] + current_state_id: str = current_state.get_id() + target_state_id: str = self.element.get_target_state_id() + target_state: ScxmlState = scxml_root.get_state_by_id(target_state_id) assert target_state is not None, f"Transition's target state {target_state_id} not found." event_name = self.element.get_events() # TODO: Need to extend this to support multiple events @@ -384,14 +412,25 @@ def write_model(self): existing_event = self.events_holder.get_event(transition_trigger_event) existing_event.add_receiver( self.automaton.get_name(), current_state_id, action_name) + # Prepare the previous expressions for the transition guard + previous_expressions = [ + parse_ecmascript_to_jani_expression(cond) for cond in self._previous_conditions] + if event_name is not None: + for expr in previous_expressions: + expr.replace_event(transition_trigger_event) transition_condition = self.element.get_condition() if transition_condition is not None: - expression = parse_ecmascript_to_jani_expression(transition_condition) + current_expression = parse_ecmascript_to_jani_expression(transition_condition) if event_name is not None: - expression.replace_event(transition_trigger_event) - guard = JaniGuard(expression) + current_expression.replace_event(transition_trigger_event) + # If there are multiple transitions for an event, consider the previous conditions + merged_expression = _merge_conditions(previous_expressions, current_expression) + guard = JaniGuard(merged_expression) else: - guard = None + if len(previous_expressions) > 0: + guard = JaniGuard(_merge_conditions(previous_expressions)) + else: + guard = None original_transition_body = self.element.get_executable_body() From 399dac5c2ca4a97114cc41433fd104a72363bda1 Mon Sep 17 00:00:00 2001 From: Marco Lampacrescia Date: Tue, 9 Jul 2024 16:05:52 +0200 Subject: [PATCH 3/6] Make sure to have an edge even in case the else body is ont explicitly defined Signed-off-by: Marco Lampacrescia --- .../scxml_helpers/scxml_tags.py | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py b/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py index 356d6ea1..5c2d69b3 100644 --- a/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py +++ b/jani_generator/src/jani_generator/scxml_helpers/scxml_tags.py @@ -194,18 +194,19 @@ def _append_scxml_body_to_jani_automaton(jani_automaton: JaniAutomaton, events_h new_edges.extend(sub_edges) new_locations.extend(sub_locs) previous_conditions.append(current_cond) - # Add else branch: - if ec.get_else_execution() is not None: - print(f"Else: {ec.get_else_execution()}") - jani_cond = _merge_conditions( - previous_conditions).replace_event(trigger_event) - sub_edges, sub_locs = _append_scxml_body_to_jani_automaton( - jani_automaton, events_holder, ec.get_else_execution(), interm_loc_before, - interm_loc_after, '-'.join([hash_str, _hash_element(ec), 'else']), - JaniGuard(jani_cond), None) - new_edges.extend(sub_edges) - new_locations.extend(sub_locs) - # TODO: If no else branch, we probably need to add an branch with empty body! + # Add else branch: if no else is provided, we assume an empty else body! + else_execution_body = ec.get_else_execution() + else_execution_body = [] if else_execution_body is None else else_execution_body + print(f"Else: {ec.get_else_execution()}") + jani_cond = _merge_conditions( + previous_conditions).replace_event(trigger_event) + sub_edges, sub_locs = _append_scxml_body_to_jani_automaton( + jani_automaton, events_holder, ec.get_else_execution(), interm_loc_before, + interm_loc_after, '-'.join([hash_str, _hash_element(ec), 'else']), + JaniGuard(jani_cond), None) + new_edges.extend(sub_edges) + new_locations.extend(sub_locs) + # Prepare the edge from the end of the if-else block new_edges.append(JaniEdge({ "location": interm_loc_after, "action": edge_action_name, @@ -340,7 +341,6 @@ class StateTag(BaseTag): def get_children(self) -> List[ScxmlTransition]: # Here we care only about the transitions. # onentry and onexit are handled in the TransitionTag - # TODO: If multiple conditional transitions, we need to track and negate the previous cond. state_transitions = self.element.get_body() return [] if state_transitions is None else state_transitions From 464b8c2d3cf5a132034043184c9c6fb577166d13 Mon Sep 17 00:00:00 2001 From: Marco Lampacrescia Date: Tue, 9 Jul 2024 17:25:12 +0200 Subject: [PATCH 4/6] Convert drawio diagrams to svg and initial conversion description Signed-off-by: Marco Lampacrescia --- .../graphics/scxml_if_handling.drawio.png | Bin 113420 -> 0 bytes .../graphics/scxml_if_handling.drawio.svg | 2 + docs/source/graphics/scxml_to_jani.drawio.png | Bin 132563 -> 0 bytes docs/source/graphics/scxml_to_jani.drawio.svg | 1 + docs/source/index.rst | 1 + docs/source/scxml-jani-conversion.rst | 55 ++++++++++++++++++ 6 files changed, 59 insertions(+) delete mode 100644 docs/source/graphics/scxml_if_handling.drawio.png create mode 100644 docs/source/graphics/scxml_if_handling.drawio.svg delete mode 100644 docs/source/graphics/scxml_to_jani.drawio.png create mode 100644 docs/source/graphics/scxml_to_jani.drawio.svg create mode 100644 docs/source/scxml-jani-conversion.rst diff --git a/docs/source/graphics/scxml_if_handling.drawio.png b/docs/source/graphics/scxml_if_handling.drawio.png deleted file mode 100644 index 14c0112ab4d1562e0f6ace9f06a809a578b1e262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113420 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 LKCbATO~n5Jt$DYr diff --git a/docs/source/graphics/scxml_if_handling.drawio.svg b/docs/source/graphics/scxml_if_handling.drawio.svg new file mode 100644 index 00000000..8966a88c --- /dev/null +++ b/docs/source/graphics/scxml_if_handling.drawio.svg @@ -0,0 +1,2 @@ +
State: 1
onentry:
- if cond_a:
  - send event_a
-else:
  - send event_b
onexit:
- send event_c
State: 1...
Generic SCXML Model
Generic SCXML Model
Original SCXML
Original SCXML
State: 2
onentry:
- assign x = x + 1
State: 2...
transition ext_event:
- transition body
transition ext_event:...
transition:
- transition body
transition:...
State: 1
State: 1 +
Generic SCXML Model
Generic SCXML Model
SCXML  with body in transition
SCXML  with body in transition
State: 2
State: 2
transition ext_event:
- state 1 onexit block
  - send event_c
- transition body
- state2 onentry block
transition ext_event:...
transition:
- state 2 onexit block (empty)
- state 1 onentry block
- transition body
transition:...
Jani Translation (single automaton)
Jani Translation (single automaton)
ext_event_on_receive
ext_event_on_receive
1
1
1-1-a
1-1-a
event_c_on_send
- ... transit. body  
- assign x = x + 1
event_c_on...
2-1-x
2-1-x
2
2
2_1_bef_aft_if_a
cond: a
2_1_bef_aft_if_a...
2_1_bef_aft_if_b
cond: b
2_1_bef_aft_if_b...
2_1_bef_if
2_1_bef_if
2-1-x
2-1-x
2_1_aft_if
2_1_aft_if
event_a_on_send
event_a_on_send
2_1_bef_
aft_if_a
2_1_bef_...
event_b_on_send
event_b_on_send
2_1_bef_
aft_if_b
2_1_bef_...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/source/graphics/scxml_to_jani.drawio.png b/docs/source/graphics/scxml_to_jani.drawio.png deleted file mode 100644 index 992c4da5d868d5e6db7dc892b64a1026cac66d4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132563 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

4&fKUeQ*x^L<^suzWU&( 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

State 1:...
Battery Drainer
Battery Drainer
transition:
- assign:
  - battery_percent-= 1
transition:...
State: 1
State: 1
Battery Manager
Battery Manager
transition (ev: level):
- assign: battery_alarm = level.data < 30
transition (ev: level):...
Original SCXML
Original SCXML
Jani Translation
Jani Translation
Battery Drainer
Battery Drainer
Battery Manager
Battery Manager
level_on_receive
- assign: battery_alarm = level.data < 30
level_on_receive...
Variables: level.data, battery_alarm
Variables: level.data, battery_alarm
1_entry
1_entry
1
1
Variables: battery_percent
Variables: battery_percent
level_on_send:
- assign level.data = battery_percent
level_on_send:...
battery_drainer_act_0:
- assign battery_percent -= 1
battery_drainer_act_0:...
1
1
level_sync
level_sync
wait
wait
received
received
level_on_send
level_on_send
level_on_send
level_on_send
level_on_receive
level_on_receive
Composition
Composition
Battery drainer
Battery drainer
Battery manager
Battery manager
level_sync
level_sync
level_on_send
level_on_send
level_on_send
level_on_send
-
-
level_on_send
level_on_send
level_on_receive
level_on_receive
-
-
level_on_receive
level_on_receive
level_on_receive
level_on_receive
battery_drainer_act_0
battery_drainer_act_0
battery_drainer_act_0
battery_drainer_act_0
-
-
-
-
Current limitation: The BatteryDrainer could advance indefinitely, before the BatteryManager receives the updates!
Current limitation: The...
Text is not SVG - cannot display \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index b83c0079..d1c20315 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -25,4 +25,5 @@ Contents :maxdepth: 2 tutorials + scxml-jani-conversion api diff --git a/docs/source/scxml-jani-conversion.rst b/docs/source/scxml-jani-conversion.rst new file mode 100644 index 00000000..2f6a3254 --- /dev/null +++ b/docs/source/scxml-jani-conversion.rst @@ -0,0 +1,55 @@ +SCXML to Jani Conversion +======================== + +SCXML and Jani +---------------- + +In CONVINCE, we expect developers to use Behavior Trees and SCXML to model the different parts of a robotic systems. + +SCXML (Scope XML) is an high level format that describes a single state machine, and allows it to exchange information with other state machines using events. Each SCXML file defines its variables (datamodel), states and transitions. + +With SCXML, the system consists of a set of state machines, each one represented by a SCXML file, that are synchronized together using events. Operations are carried out when a state machine receives an event, enters a state, or exits a state. + +With Jani, the whole system is contained in a single JSON file, consisting of a set of global variables, automata (equivalent to state machines) with their edges (equivalent to transitions), and a composition description, describing how Automata should be synchronized by the mean of advancing specific edges at the same time. + +The main difference between SCXML and Jani is that in Jani there is no concept of events, so synchronization must be achieved using the global variables and composition description. + +High-Level (ROS) SCXML Implementation +--------------------------------------- + +In CONVINCE, we extended the standard SCXML format defined `here `_ with ROS specific features, to make it easier for ROS developers to model ROS-based systems. + +In this guide we will refer to the extended SCXML format as High-Level SCXML and the standard SCXML format as Low-Level SCXML. + +Currently, the supported ROS-features are: +- ROS Topics +- ROS Timers (Rate-callbacks) + +TODO: Example of Topic and Timer declaration + usage. + +Low-Level SCXML Conversion +---------------------------- + +Low-Level SCXML is the standard SCXML format defined `here `_. + +Our converter is able to convert High-Level SCXML to Low-Level SCXML by translating the ROS specific features to standard SCXML features. +In case of timers, we need additional information that cannot be encoded in SCXML, so that information is generated at runtime. + +The conversion between the two SCXML formats is implemented in ScxmlRoot.as_plain_scxml(). TODO: Link to API. + +TODO: Describe how we translate the High-Level SCXML to the Low-Level SCXML. + +Jani Conversion +---------------- + +Once the Low-Level SCXML is obtained, together with the timers information, we can convert it to Jani. + +The core of the conversion lies in the translation of the SCXML state machines to Jani automata and the handling of the synchronization between them. + +The following picture shows how our conversion works: + +.. image:: graphics/scxml_to_jani.drawio.svg + :alt: Conversion process + :align: center + +The main idea... \ No newline at end of file From e941e962ac5878a30fdb41e548d7dfa254fdecb4 Mon Sep 17 00:00:00 2001 From: Marco Lampacrescia Date: Tue, 9 Jul 2024 18:15:36 +0200 Subject: [PATCH 5/6] Embed all pictures in docs Signed-off-by: Marco Lampacrescia --- .../graphics/scxml_if_handling.drawio.svg | 2 - .../scxml_to_jani_entry_exit_if.drawio.svg | 604 ++++++++++++++++++ docs/source/scxml-jani-conversion.rst | 34 +- .../battery_example/output_GROUND_TRUTH.jani | 12 +- 4 files changed, 644 insertions(+), 8 deletions(-) delete mode 100644 docs/source/graphics/scxml_if_handling.drawio.svg create mode 100644 docs/source/graphics/scxml_to_jani_entry_exit_if.drawio.svg diff --git a/docs/source/graphics/scxml_if_handling.drawio.svg b/docs/source/graphics/scxml_if_handling.drawio.svg deleted file mode 100644 index 8966a88c..00000000 --- a/docs/source/graphics/scxml_if_handling.drawio.svg +++ /dev/null @@ -1,2 +0,0 @@ -
State: 1
onentry:
- if cond_a:
  - send event_a
-else:
  - send event_b
onexit:
- send event_c
State: 1...
Generic SCXML Model
Generic SCXML Model
Original SCXML
Original SCXML
State: 2
onentry:
- assign x = x + 1
State: 2...
transition ext_event:
- transition body
transition ext_event:...
transition:
- transition body
transition:...
State: 1
State: 1 -
Generic SCXML Model
Generic SCXML Model
SCXML  with body in transition
SCXML  with body in transition
State: 2
State: 2
transition ext_event:
- state 1 onexit block
  - send event_c
- transition body
- state2 onentry block
transition ext_event:...
transition:
- state 2 onexit block (empty)
- state 1 onentry block
- transition body
transition:...
Jani Translation (single automaton)
Jani Translation (single automaton)
ext_event_on_receive
ext_event_on_receive
1
1
1-1-a
1-1-a
event_c_on_send
- ... transit. body  
- assign x = x + 1
event_c_on...
2-1-x
2-1-x
2
2
2_1_bef_aft_if_a
cond: a
2_1_bef_aft_if_a...
2_1_bef_aft_if_b
cond: b
2_1_bef_aft_if_b...
2_1_bef_if
2_1_bef_if
2-1-x
2-1-x
2_1_aft_if
2_1_aft_if
event_a_on_send
event_a_on_send
2_1_bef_
aft_if_a
2_1_bef_...
event_b_on_send
event_b_on_send
2_1_bef_
aft_if_b
2_1_bef_...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/source/graphics/scxml_to_jani_entry_exit_if.drawio.svg b/docs/source/graphics/scxml_to_jani_entry_exit_if.drawio.svg new file mode 100644 index 00000000..1da0f3da --- /dev/null +++ b/docs/source/graphics/scxml_to_jani_entry_exit_if.drawio.svg @@ -0,0 +1,604 @@ + + + + + + + + +
+
+
+ + State: 1 +
+
+ + onentry: +
+
+ - if cond_a: +
+ - send event_a +
+ -else: +
+ - send event_b +
+ + onexit: + +
+ - send event_c +
+
+
+
+ + State: 1... + +
+
+ + + + +
+
+
+ + Generic SCXML Model + +
+
+
+
+ + Generic SCXML Model + +
+
+ + + + +
+
+
+ + Original SCXML + +
+
+
+
+ + Original SCXML + +
+
+ + + + + + +
+
+
+ + State: 2 +
+
+ + onentry: +
+
+ - assign x = x + 1 +
+
+
+
+ + State: 2... + +
+
+ + + + + + +
+
+
+ transition ext_event: +
+ - transition body +
+
+
+
+ + transition ext_event:... + +
+
+ + + + +
+
+
+ transition: +
+ - transition body +
+
+
+
+ + transition:... + +
+
+ + + + + +
+
+
+ + State: 1 +
+
+
+
+
+
+ + State: 1 + +
+
+ + + + +
+
+
+ + Generic SCXML Model + +
+
+
+
+ + Generic SCXML Model + +
+
+ + + + +
+
+
+ + SCXML  with body in transition + +
+
+
+
+ + SCXML  with body in transition + +
+
+ + + + + + +
+
+
+ + State: 2 + +
+
+
+
+ + State: 2 + +
+
+ + + + + + +
+
+
+ transition ext_event: +
+ - state 1 onexit block +
+ - send event_c +
+ - transition body +
+ - state2 onentry block +
+
+
+
+ + transition ext_event:... + +
+
+ + + + +
+
+
+ transition: +
+ - state 2 onexit block (empty) +
+ - state 1 onentry block +
+ - transition body +
+
+
+
+ + transition:... + +
+
+ + + + + +
+
+
+ + Jani Translation (single automaton) + +
+
+
+
+ + Jani Translation (single automaton) + +
+
+ + + + + +
+
+
+ + ext_event_on_receive + +
+
+
+
+ + ext_event_on_receive + +
+
+ + + + +
+
+
+ 1 +
+
+
+
+ + 1 + +
+
+ + + + +
+
+
+ 1-1-a +
+
+
+
+ + 1-1-a + +
+
+ + + + + +
+
+
+ + event_c_on_send +
+
+ - ... transit. body +
+ - assign x = x + 1 +
+
+
+
+ + event_c_on... + +
+
+ + + + + +
+
+
+ + 2-1-x + +
+
+
+
+ + 2-1-x + +
+
+ + + + +
+
+
+ 2 +
+
+
+
+ + 2 + +
+
+ + + + + +
+
+
+ + + 2_1_bef_ + + + + + aft_if_b +
+
+ cond: b +
+
+
+
+
+ + 2_1_bef_aft_if_b... + +
+
+ + + + + +
+
+
+ + 2_1_bef_aft_if_a +
+
+ cond: a +
+
+
+
+ + 2_1_bef_aft_if_a... + +
+
+ + + + +
+
+
+ 2_1_bef_if +
+
+
+
+ + 2_1_bef_if + +
+
+ + + + + +
+
+
+ + 2-1-x + +
+
+
+
+ + 2-1-x + +
+
+ + + + +
+
+
+ 2_1_aft_if +
+
+
+
+ + 2_1_aft_if + +
+
+ + + + + +
+
+
+ + event_a_on_send + +
+
+
+
+ + event_a_on_send + +
+
+ + + + +
+
+
+ 2_1_bef_ +
+ aft_if_a +
+
+
+
+ + 2_1_bef_... + +
+
+ + + + + +
+
+
+ + event_b_on_send + +
+
+
+
+ + event_b_on_send + +
+
+ + + + +
+
+
+ 2_1_bef_ +
+ aft_if_b +
+
+
+
+ + 2_1_bef_... + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/docs/source/scxml-jani-conversion.rst b/docs/source/scxml-jani-conversion.rst index 2f6a3254..42f01160 100644 --- a/docs/source/scxml-jani-conversion.rst +++ b/docs/source/scxml-jani-conversion.rst @@ -42,14 +42,40 @@ TODO: Describe how we translate the High-Level SCXML to the Low-Level SCXML. Jani Conversion ---------------- -Once the Low-Level SCXML is obtained, together with the timers information, we can convert it to Jani. +Once the Low-Level SCXML is obtained, we can use it together with the timers information in the conversion to a Jani model. -The core of the conversion lies in the translation of the SCXML state machines to Jani automata and the handling of the synchronization between them. +Simple Overview +________________ -The following picture shows how our conversion works: +The following picture gives a simple overview of how our conversion works: .. image:: graphics/scxml_to_jani.drawio.svg :alt: Conversion process :align: center -The main idea... \ No newline at end of file +The core of the conversion lies in the translation of the SCXML state machines to Jani automata and the handling of the synchronization between them. +In the example above, we have two SCXML state machines, BatteryDrainer and BatteryManager, that are synchronized using the event "level". + +At start, the BatteryDrainer state machine sends a "level" event out, containing the current battery level in the "data" field. +In Jani, this translates to an edge, i.e. "level_on_send", that advances the BatteryDrainer automaton to a next state where the sending action is carried out and, at the same time, assigns a global variable corresponding to the event parameter, i.e. "level.data", and another edge with the same name that advances an additional automaton "level_sync" from the "wait" to the "received" state, signaling that an event "level" was sent out and needs to be processed. + +The BatteryManager automaton has an edge "level_on_receive", that can now be triggered since the "level_sync" automaton is in the "received" state. When executing the edge, the BatteryManager automaton assigns the global variable "battery_alarm" based on the data contained in the "level.data" variable and goes back to the same state, waiting for the next "level" event. Similarly, the "level_sync" automaton transitions back to the "wait" state using the edge "level_on_receive". + +The BatteryDrainer can execute the edge "battery_drainer_act_0" and transition back to the initial state either before or after the "level_on_receive" action, as there is no constraint enforcing a specific order of execution. + +Similarly, since the automaton "level_sync" has an outgoing edge "level_on_send" that stays in the "received" state, the BatteryManager can send a "level" event before the BatteryDrainer has processed the previous one. +This has been introduced to make the synchronization more similar to how it works in ROS, where messages can be overridden before being processed. + +Handling onentry, onexit and conditions +________________________________________ + +TODO + +.. image:: graphics/scxml_to_jani_entry_exit_if.drawio.svg + :alt: How execution blocks and conditions are translated + :align: center + +Handling of (ROS) Timers +__________________________ + +TODO \ No newline at end of file diff --git a/jani_generator/test/_test_data/battery_example/output_GROUND_TRUTH.jani b/jani_generator/test/_test_data/battery_example/output_GROUND_TRUTH.jani index 4c42d62b..8dade4fa 100644 --- a/jani_generator/test/_test_data/battery_example/output_GROUND_TRUTH.jani +++ b/jani_generator/test/_test_data/battery_example/output_GROUND_TRUTH.jani @@ -250,9 +250,9 @@ { "result": "level_on_receive", "synchronise": [ - "use_battery-first-exec-use_battery-766fa6e4", null, - null + "level_on_receive", + "level_on_receive" ] }, { @@ -263,6 +263,14 @@ "level_on_send" ] }, + { + "result": "use_battery-first-exec-use_battery-766fa6e4", + "synchronise": [ + "use_battery-first-exec-use_battery-766fa6e4", + null, + null + ] + }, { "result": "use_battery-use_battery-1b935c10", "synchronise": [ From 6fc9d5000e4923367704c7de262c2fcb943e1eeb Mon Sep 17 00:00:00 2001 From: Christian Henkel Date: Thu, 11 Jul 2024 09:22:19 +0200 Subject: [PATCH 6/6] change method name Signed-off-by: Christian Henkel --- .../src/scxml_converter/scxml_entries/scxml_ros_entries.py | 6 +++--- scxml_converter/src/scxml_converter/scxml_entries/utils.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scxml_converter/src/scxml_converter/scxml_entries/scxml_ros_entries.py b/scxml_converter/src/scxml_converter/scxml_entries/scxml_ros_entries.py index 60449d6f..9ecb15bb 100644 --- a/scxml_converter/src/scxml_converter/scxml_entries/scxml_ros_entries.py +++ b/scxml_converter/src/scxml_converter/scxml_entries/scxml_ros_entries.py @@ -22,7 +22,7 @@ as_plain_execution_body) from scxml_converter.scxml_entries.utils import replace_ros_msg_expression from xml.etree import ElementTree as ET -from scxml_converter.scxml_entries.utils import check_topic_type_known +from scxml_converter.scxml_entries.utils import is_topic_type_known class RosTimeRate(ScxmlBase): @@ -96,7 +96,7 @@ def from_xml_tree(xml_tree: ET.Element) -> "RosTopicPublisher": def check_validity(self) -> bool: valid_name = isinstance(self._topic_name, str) and len(self._topic_name) > 0 - valid_type = check_topic_type_known(self._topic_type) + valid_type = is_topic_type_known(self._topic_type) if not valid_name: print("Error: SCXML topic subscriber: topic name is not valid.") if not valid_type: @@ -141,7 +141,7 @@ def from_xml_tree(xml_tree: ET.Element) -> "RosTopicSubscriber": def check_validity(self) -> bool: valid_name = isinstance(self._topic_name, str) and len(self._topic_name) > 0 - valid_type = check_topic_type_known(self._topic_type) + valid_type = is_topic_type_known(self._topic_type) if not valid_name: print("Error: SCXML topic subscriber: topic name is not valid.") if not valid_type: diff --git a/scxml_converter/src/scxml_converter/scxml_entries/utils.py b/scxml_converter/src/scxml_converter/scxml_entries/utils.py index f53ee0e9..0fbf52d5 100644 --- a/scxml_converter/src/scxml_converter/scxml_entries/utils.py +++ b/scxml_converter/src/scxml_converter/scxml_entries/utils.py @@ -18,7 +18,7 @@ from typing import Dict -def check_topic_type_known(topic_definition: str) -> bool: +def is_topic_type_known(topic_definition: str) -> bool: """Check if python can import the provided topic definition.""" # Check the input type has the expected structure if not (isinstance(topic_definition, str) and topic_definition.count("/") == 1):