RE: API discussion...

"Cezary Zielinski" <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Message-ID <[email protected]>
My comments follow Herman's.
Cezary 


-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Herman
Bruyninckx
Sent: Thursday, March 18, 2004 10:04 PM
To: unlisted-recipients:; no To-header on input
Cc: 'Open RObot COntrol Software'
Subject: RE: [Orocos] API discussion...

On Wed, 17 Mar 2004, Cezary Zielinski wrote:

> It is sufficient to have only two motion instructions: 
> Wait - waiting for an initial condition to be satisfied (a condition that
> enables the motion to start),

Is this "busy waiting"? In the sense that the motion control is
already active, but the setpoint is "zero motion"? If not, than this
does not belong in the motion API, but in the startup/shutdown procedure.
("execution flow", "PLC" activities, whatever you want to call it)
If it is, it is a normal Move, but with a "zero motion" setpoint. Or
maybe you mean something else...?

----> This is simply waiting for a certain condition to be fulfilled. During
that time the servos obtain a 0 increment, so the robot is static. The
condition can be tested at the sampling rate or a low multiple of that. You
can call it busy waiting, but it does not have to be implemented that way.

> Move - executing the motion according to a certain pattern (provided by a
> motion generator) simultaneously monitoring the terminal condition.

How would you provide the desired end position as a "terminal
condition"? I see some problem here, because the generator must get
somehting to satrt producing interpolated setpoints, and I don't
immediately see how this is done semantically with a termination
condition. Maybe some examples could help.

----> The motion generator is a function that the user provides, thus
anything can be coded. In the majority of cases the following suffices. The
generator generates consecutive geometrical trajectory points one at a time
(e.g. like a linear interpolator). Thus it knows the endpoint not from the
terminal condition, but from the geometrical description. The termination
function delivers extra information from sensors for a premature stop. In
rarer cases the end-point might not be known. The sensors deliver the
information for the generation of the next trajectory point. The termination
function might tke into account both the information obtained from sensors
and the current end-effector position (this is available from the list of
effectors).

> Thus the programmer needs to provide for the Wait instruction a function
> describing the specific initial condition and for the Move instruction two
> functions - one, describing the specific termination condition and the
> second is a function generating the next motion step 
But this function also needs setpoints, doesn't it? 

----> Yes, the motion generator produces them. As the user delivers that
generator the program executes exactly what he/she wants, i.e. task at hand.

> Those functions form three hot spots.
Yes, we call it the "plug-in functionality" of the Generator, and the
other components. (So, we have a maximum of more than three "hot
spots".)

----> Exactly.

> Both Move and Wait instructions must know what are the sources of
> information (eteroceptors and interoceptors)
Can you define these concepts, please?

Exteroceptors are in my newspeak receptors (sensors) delivering information
from outside the robot, i.e. the environment, e.g. cameras. Ineroceptors are
the sensors that provide the information about the internal state of the
robot, e.g. encoders providing information about the position of the motor
shafts, and thus the links and consequently the end-effector. I got the
names from biology, so I hope that they are all right for our community.

> two lists have to be provided. One is the list of effectors (robots) and
the
> other is the list of virtual sensors (aggregated data from real hardware
> sensors). As this are lists it is not important how many robots are
> controlled simultaneously and it is not important how many sensors we use.
I think it _is_ important for the functionality plugged in in the
Generator and the other components, isn't it? Probably I misunderstand
what you mean, but this short description of yours creates an image of
"the ultimately flexible" Generator :-)

----> This was my intension. Actually the list of effectors and the list of
virtual sensors are the lists of certain images (models) of those artefacts.
Each such artefact contains the current state of the effector or the current
reading from the sensor. Moreover the generator introduces into them either
the new (computed) setpoint or a demand for a new sensor reading (in the
simplest case) or a sensor reconfiguration command (in a more complex case)

> For the general semantics of those instructions the type of robots and
> sensors is also irrelevant. 
I agree.

> Obviously the three functions (initial
> condition, terminal condition and setpoint generator) will differ both
with
> number and type of sensors and effectors - well, but this are the hot
spots.
> If you are interested in the flow charts of those instructions you can
find
> a more detailed discussion in:
> http://www.ia.pw.edu.pl/~zielinsk/ROMOCO99.pdf
> I can also provide the C++ code for them.
A short stand-alone example on the mailinglist would do :-)

----> Please see the attached paper, namely section 7. of it. If this will
not suffice I'll provide the full code of whatever part you need.

What I get from your posting is that you say with me that a very small
interface is all we need (for the motion specification at least), but
that we have currently a little different semantics?
(Anyway, the Orocos infrastructure has no problems with more than one
"non-realtime user API" on top of the same C++ realtime code.)

----> I agree that there are many possible interfaces and OROCOS might
benefit from the multitude, however such a multitude might be frustrating
for newcomers to the field. 
----> I do not fully understand the remark about the real time. The Wait and
Move are used for real time control of MRROC++ based robot controllers. 

Herman
Cezary

-- 
  K.U.Leuven, Mechanical Engineering, Robotics Research Group
<http://people.mech.kuleuven.ac.be/~bruyninc> Tel: +32 16 322480

_______________________________________________
Orocos mailing list
[email protected]
http://mail.mech.kuleuven.ac.be/mailman/listinfo/orocos
advrob.pdf (application/pdf, 198.3 KB) - not displayed
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.