Re: FSM vs. Petri nets for component modelling...

Daniel Simon <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Message-ID <[email protected]>
Hi Herman, lot of questions this afternoon!

>- do you make distinction between signals and events?
no, but events are classified in pre-conditions, post-conditions, exceptions 
(3 sub-classes) and synchro-signals.

>-what is a typical implementation of this material: single thread,
>  multiple threads, distribution over network?

the current implementation is a single thread for the control law + automaton 
thread + clock-generator thread + system threads

a multi-thread (and thus multi-rate) implementation of the control laws is 
under debug and test

distributed implementation is foreseen, at unknown horizon (funding 
resquested!!!!). It is however possible to manually distribute the code 
(control functions + pieces of automaton) on a distributed target, and connect 
with sockets as we already did in: http://www.inrialpes.fr/bip/people/simon/ise
r97.ps.gz

>- any suggestions about implementation on top of a POSIX API?
the run-time library for linux and solaris already uses the pthread library. 
However, even if the API is the same, it is not implemented the same way, and 
the run time behaviour (e.g. under linux vs solaris) can be very different. We 
are working to fix that, and make the application behaviour system independant.

>- what is the determinacy of the Orccad transition implementation?

It is under control of the automaton and of the OS, and it is as deterministic 
as the OS! A problem is the avoidance of transient cpu overload. It is 
currently done by relaxing the deadline, and a better solution is studied.

>- any ideas about how easy/necessary it is to decouple the _runtime execution_
>  of the synchronization functionality from the specific language
>  chosen to _specify_ the synchronization (i.c., Esterel)?

Esterel is nice because the compiler translates your specification (written in 
source language, with no FSM structure in your brain) into an executable FSM 
(usually in C, but possibly in Java, Ada...). It also provides some formal 
verification tools.
The two difficult steps are: 
i) design, checking and encoding a supervisor (FSM or others)  which meets 
your requirements (strl is nice for that)
ii) interfacing the supervisor with the control code through system calls 
(Orccad binds the I/O functions of the automaton with system calls, and it is 
easier to do that from the standard interface provided by a compiler).

>- any ideas about the `best' specification language? I mean: go for a
>  specialised custom-made language, or use already existing(?) XML
>  based functional specification languages?
Some of my colleagues have design Maestro, a "robotics-oriented" language 
which handles our model of control tasks and compile into Esterel (in 
particular because directly using a synchronous language like Esterel can be 
harmfull). IMO most of the semantics of the robot controller resides in the 
control algorithms (on which the user must have access, not only through a 
blind Move() statement). Thus I consider that the control tasks are activities 
which must be started, stopped, suspended... upon the occurence of events, and 
a general purpose language is able to specify that.

>- I guess each of the Orccad tasks has a default `fail safe' state, to
>  which the system will move when an event occurs for which no
>  `handler' has been foreseen?
Yes, all "T3" exception drives the controller in this state. The default one 
is simply stopping the controller, which is clearly dangerous for most robots. 
A custom fatal handler must be written for every application (or at least for 
every robot).

>- Any suggestions about an object-oriented (re)design of Orccad? That
>  is, events are objects/messages exchanged between components.

The components of Orccad (modules, control tasks, procedures) "are" objects! 
(they have an identity, a behaviour, a state and an interface...). But all is 
statically defined. In particular, I think that dynamically swapping modules 
in a control task would be highly risked, both for the control algorithm and 
the real-time point of view.

>- Have you found the need to distinguish between `events' (`signals')
>  and `commands'? Could they be implemented in the same class tree?

Yes, it is not the same time scale and underlying tools, sampling and control 
theory on one side, discrete events systems (FSM, PNs...) on the other, 
probably with two kind of users.
The frontier between the two sides is the discrete event based behaviour of 
the control task.

>- are the Orccad ideas suitable for supporting _general_ hybrid
> control systems? Or `only' for one particular sub-class?
Although they have been developped and tested in robotics, I guess that these 
ideas are suitable for control systems in general.

>- what are the fundamental differences between FSM/Petri-nets and the
>  new vogue UML? 
tools for implementing probably. and the real-time extensions of UML seems 
very weak.

>I guess that you require the user to provide an explicit transition
>control algorithm if merging is desired for whatever reason?
>(At least, that would be my suggestion :-) )
>Have you had systems where merging would have been really helpful? Do
>you think it is overkill?

The gluing algorithm depends on the application (the robot and the two control 
laws), and user should provide it, if necessary.

But it is necessary only if you need to accurately control the transient 
phase. Exporting the end-point of oldcontrol as init-point of newcontrol 
(while emitting post-conditions) can be often enough. For example, I did not 
worried about that with the submarine because we had enough space in the pool. 
I will be more interesting with our expensive and fragile biped.

> maybe there happens to be a similar event (organised at your
>lab or somewhere else) in the not so far future

We can think about that

Hope this help

	Daniel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.