Re: (no subject)

Herman Bruyninckx <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Message-ID <Pine.LNX.4.33.0112041028210.28528-100000@pc25-213.mech.kuleuven.ac.be>
On Tue, 4 Dec 2001, Cezary Zielinski wrote:

> MRROC++ has two kinds of control law switching incorporated into it:
> 1. Switching of parameters for a control law with a fixed structure
>     - this is fairly easily done, as the algorithm functions on the
>     same variables - only its parameters change.

Have you ever felt the need to monitor/check the range of change of
the variables? Or do you rely on the exception handling to make sure
the change doesn't lead to wild excursions of the robot motion in case
the parameter changes are ``too large''?


> 2. Switching the control law structure
>     - this is complicated, as new control variables are introduced
>     and they have to be properly initiated.

This is indeed the major problem, I know. But what I would like to do
as this moment is to find out (more or less) what the real problems
are, in order to see whether or not such flexibility should/could be
included in the ongoing design. If we have _some_ clue about how to do
this, my suggestion is to include the necessary ``hooks'' into the
design, but in such a way that this overhead need not be taken along
by somebody who doesn't need these advanced features. I was looking
for answers on the following questions: what parts of the
GenoM/MRROC++/Orccad/...  approach are essential/useful for the
required flexibility, what more is needed, and what would be a good
design?

>     For example: if the currently used control law was PD and we are
>     switching to PID an integral term has to be introduced and
>     initiated

These are indeed relevant cases. My doubts are on how to offer this
feature: relay it to the user's servo loop code, or offer support for
it in the framework we are designing? For example, in the form of a
FSM/Petri Net in which the user ``only'' has to fill in a minimum of
information. The latter apporach is only valid _if_ we find a proven
``Pattern'' for the problem :-)

>     How to deal witha a case where the control law is not know in
>     advance I don't know. Nevertheless I am not sure that such a
>     need will arise.

There are different levels of needs. I call them ``hot swappable,''
``warm swappable'' and ``cold swappable'' flexibility:
 - hot swappable: one wants to go from one control law to the next in
   one (or a limited, deterministic) number of samples. We have this
   need in our force-controlled systems, where a detected change of
   contact situation requires an ``appropriate'' change in the control
   law.

- warm swappable: similar as hot swapping, but now the motion of the
  system can be stopped, and the switch to the new controller
  initiated. The new controller is only allowed to have a ``compatible''
  state with the running controller; that is, the new state is a very
  simple function of the old one. In practice: the same state, or a
  subset or a superset.
  We have this need when we want a ``soft interrupt'' to an ongoing
  motion: the speed is reduced to a fraction of the nominal speed.

- cold swapping: the motion is halted completely, and a new controller
  is started. The only advantage of this approach is that no reboot of
  the software is needed.

(The fourth possibility is reboot/recompile, but this doesn't deserve
to be names ``swapping'' :-) )

> Obviously the description of control laws is usually done in
> functional form. No need for FSM or PN in this case. FSM are of use
> when considering the controller as a whole (e.g. including exception
> handling). PNs are of use when in a multi-robot system eof of the
> robots performs partially independently and their actions have to be
> synchronised in time ans space from time to time. In other words
> each robot's FSM has to be synchronised withe other ones. Merging
> PNs, FSMs and functional description is not very difficult and quite
> useful.

I also had these considerations in mind. But I think we have to go a
bit further: a ``control law'' in my opinion is not just a function,
but also a number of constraints (maximum errors, maximum
accelerations, etc.), which, in software terms would be called the
``interface contract'' of the control object/component. And that
object could have an internal FSM/Petri Net for controlling the
transitions in the switch to another controller, _with_ a check of the
constraints, and possible an action to get the constraints in sync. I
think this is not too straightforward, but, again, there is a
difference between _foreseeing_ such a possiblity (what I would like to
do) and _implementing_ it :-)

> Whether the control law should be visible to the user is another
> question. I assume that we are anticipating, among others, also
> users from the research community. Under this assumption the answer
> to this question should be - yes.

Indeed! The first and major ``clients'' of Orocos will be academia :-)

About `visibility': we think to foresee two levels of
authentication/authorisation for the control components: the normal
user (which is the one who runs/programs, for example, a control law
routine, to be executed in the framework), and the supervisor, who is
allowed to do reconfiguration etc in the framework.
Each component will have a different interface for each of the user
levels.

herman
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.