Re: A working document

"Cezary Zielinski" <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Message-ID <[email protected]>
My comments are included in the text.
C.

----- Original Message -----
From: "Anthony Mallet" <[email protected]>
To: <[email protected]>
Cc: <[email protected]>
Sent: Friday, December 21, 2001 4:41 PM
Subject: Re: [Orocos] A working document


>
> | 1) Does fig.1 imply that all hardware elements (e.g. actuators, sensors)
=
> | have to be connected  to the upper layers of the system through the =
> | operating system? Is no direct connection (i.e. port access) =
> | anticipated? My experience is that usually sensors and actuators are not
=
> | handled by the operating system directly.
>
> It's true that the 'sensors layer' can sometimes bypass the OS (e.g. for
> huge data transmissions). However, those mechanisms are provided by
> system calls. Thus the OS is still involved, at least for the setup
> phase.
>
My experience is that it usually bypasses the OS. Usually direct
input/output from ports is used. Unless you are thinking about those fancy
sensors connected to the system through RS232 etc. In that case you are
right that OS facilities for handling RS232 are used.


> It's difficult to choose a good place for the OS in the figure you
> mention. Maybe we should draw a single box, made of the two components
> 'OS' and 'sensors interface'.
>

That would solve only the outward appearance, but still leave the problem of
implementation untouched. As I understand OROCOS either wants to use a
public domain OS (such as Linux) or create one for our own use. In both
cases we have to decide where the low level communication with sensors will
be located.

>
> | 2) How important do you think time-out is in the case of robotic =
> | components?=20
>
> I think you talking about the 'max-time' field of services and codels?
> The timeout is only a way to detect failures (e.g. a servoing task that
> lasts too much and thus cannot execute properly). Once detected, it is
> possible to make the information available for other modules or for the
> decision layer.
> For instance, a module could run perfectly on a machine with much CPU,
> but I could completely fail on another machine, or if the CPU gets
> overloaded.
> Not all the components  are interrested in such temporal properties, but
> for the lowest (real-time) level, I think it's important. Don't you?
>

Such a feature of the system would be usefull, but quite difficult to
implement as we are taking of measuring time with high resoluton (e.g. less
than 1 ms). If a system is not able to execute the srvo loop in prescribed
time (e.g. 1 ms) will it be able to measure time with that resolution? RTOS
usually depend on timeslices. For slow CPUs thay can be 10ms or 50ms. The
other problem is that the fact that the CPU is too slow would emerge at
run-time. That would mean that the servo algorithm is already executing.
Large delays destabilise the system and that you usually hear as the robot
starts to shake, so ypu wuill have the information aboyt the inadequacy of
the CPU long before you will be able to read the warning off the screen.
Nevertheless maybe there are some technicl means (which currently don't come
to my mind) that can solve the above mentioned problems. Maybe the
utilisation of external clock (hardware) and high priority interrupts could
solve the problem.

>
> | 3) Are codels pure code? (no data structures). That would imply =
> | disjunction between code and data which is contrary to object oriented =
> | paradigm, which has its benefits.
>
> Yes, definitely. Codels are made of code, and perform tasks on data that
> come from elsewhere.
>
> The purpose of modules is to give a specification of their interface in
> terms of functionality, so that the decision procedures can do symbolic
> reasonning. Besides this, you are free to put what you need into the
> codels. For instance, I see no problem in sharing the same class between
> several modules, and thus use a pure object oriented approach _within_
> codels, to manipulate the structure that are exchanged between the
> modules.
>
>
> | 4) I would suggest a change in terminology. Instead of using the term =
> | "database" I would use the term "component image". Database has a =
> | slightly different meaning in computer science. In this case the outside
=
> | world (other components) percive the component through the exported =
> | image. This compnent perceives other components through imported image.
=
> | Thus we have a component image.
>
> Yes, database is not the good word :). This is rather an _internal_
> repository that represents the instataneous value of the parameters of
> modules.
> However, this repository is not visible to the outside world. What is
> visible is the exported data (the production of the module), and the
> services that either produce that data or modify the internal parameters.
> So I'm not sure that 'component image' applies here?
>

Again I misunderstood the text. I thought that the database is visible to
the outside world. Under those circumstances i withdraw my suggesion, but
still don't like the name "database".

>
>
> | 5) The question wether communication should be handled within codels or
=
> | outside I would answer in favour of - inside. After all we want to hide
=
> | from the user all the unnecessary details - he/she should concentrate on
=
> | the task not on the communication details. Maybe special communication =
> | codels would do the trick (an intermediate solution).
>
> I completely agree with you on the fact that communication should not be
> left to the user (user = module programmer). This is exactly why I think
> that communication should _not_ be defined within codels: codels are the
> only part the programmer will write. The communication should be handled
> by the module internal engine (which is roughly the same for all modules,
> and thus it is generic and written only once).
> Are you ok with this?

OK. It seems that I misunderstood the concept of codels. I thought that they
are atomic entieties delivered by us to the users (kind of library
procedures). Then out of codels the user assambles his/her algorithm. Your
explanation suggests that the user writes the internal workings of the
codels. In that case you are right that the communication should be placed
outside codels. Nevertheless after some time of using the system people will
have their own libraries of codels, so perhaps the system designers could
deliver some codels in advance? And then we return to the location of the
communication.
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.