# NOVA Mobility Assistive System: Developed and Remotely Controlled with IOPT-Tools
## 2 IOPT-Nets and IOPT-Tools  
Petri nets [36; 37] are a very well-known modeling formalism used in several areas to describe systems' behavior, benefiting from a rigorous execution semantics. Petri nets also benefit from a simple graphical representation, allowing for explicit modeling of key system's characteristics, such as sequence, concurrency, conflict, synchronization, sharing of resources, among others. Figure 1: Mobility Assistive System (NOVA-MAS) overview. This simple graphical representation (which supports interaction between different agents that are involved in the system development) is complemented by a mathematical representation (allowing formal analysis of the models supported by a solid body of knowledge), as well as by a textual representation, in particular by the Petri Net Markup Language (PNML). The PNML, defined by the ISO IEC standard 15909 Part 2, supports the integration with computational frameworks. Having the controller behavior modeling in mind, it is of paramount important to include explicit dependencies of the environment under control, namely input and output signals and events. These constraints (among others) lead to the definition of non-autonomous classes of Petri nets. Non-autonomous classes of Petri nets have been widely used in the area of controller design having strong links with automation systems, and they have been widely reported in the literature, namely as in [38]. The Input-Output Place-Transition Petri net class (IOPT nets) was selected as the underlying non-autonomous Petri net class to be used in this paper. The main characteristics of IOPT nets are briefly summarized below; a detailed presentation can be found in [22]. The IOPT net class is a non-autonomous extension of the well-known Place-Transition net class [39] emphasizing the interaction between the in- and output signals and events from the environment and the (autonomous part of the) Petri net model. In this sense, an IOPT-net transition can have associated with it a guard (which is a Boolean expression depending on input signals), a set of input events, as well as a priority. A transition is enabled to fire based on its input places marking (as common in Petri nets) if also ready to fire whenever the associated guard is evaluated to true and associated events occur. Priorities that are associated with transitions can be used to allow a deterministic firing whenever a conflict situation occurs (supporting an automatic conflict resolution modeling strategy). Output signals can be updated depending on place marking or transition firing. Output events are associated with transitions and are generated by their firing. Finally, test (or read) arcs are also available as an effective aid to produce compact controller's models. The IOPT-Tools framework [23] is a model-based development set of tools, supporting the whole flow for distributed controllers development, while using a web-based strategy. IOPT-Tools are publicly available at [[http://gres.uninova.pt/IOPT-Tools/](http://gres.uninova.pt/IOPT-Tools/)]([http://gres.uninova.pt/IOPT-Tools/](http://gres.uninova.pt/IOPT-Tools/)) having as ultimate goal to start with the edition of the IOPT-net model and to support the generation of the implementation code without actually writing a line of code. The whole process is supported by a browser, which means that heterogeneous platforms can be used, ranging from PCs, smartphones, tablets, or any other equipment supporting an up-to-date browser to run. The IOPT-Tools framework is composed by several web-tools addressing the different phases of the development flow, starting with the IOPT net model editing where both autonomous part of the model (places, transitions, and arcs) as well as the non-autonomous part (in- and output signals and events, guards, priorities) can be edited and stored using PNML format. A simulator tool supports an interactive token-player that also allows the production of timing diagrams, where it is possible to interactively validate the net model.