home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Between Heaven & Hell 2
/
BetweenHeavenHell.cdr
/
500
/
470
/
rccl026
< prev
next >
Wrap
Text File
|
1987-03-02
|
8KB
|
148 lines
Dir : src
RCCL source directory
Data Structures.
Set of Joint Variables
A set of Joint variables if a string expressing the arm configuration and
six (sometimes seven or more) joint variables expressed in their range.
When the set of joint variables is calculated, the string expresses the
configurations changes, when T6 is determined, the string is built.
Transforms
Transforms have a name, a value, a type, and an age. The name is a string,
the value four vectors, the type a function, and the age an integer. The
age is the last time the transform has been used, if it is functionally
defined evaluating the function more than one time within a sample period
can be avoided. Transforms are individual entities, they can be pointed to
but have no pointers.
Terms
A terms is an elements of an equation. A term has a pointer to the user's
provided transform, a pointer to an internal alternate transform, and a
pointer to an internal old transform, the value it had before being
changed. When is transform is of type 'hold', the three values occupy
three different memory locations and can be distinct values. When a
transform is of type 'varb', 'const', or functional, the three values are
the same user supplied transform and the term's three pointers are
identical. If it is of type 'varb', a value change causes the equation it
belongs to to be changed. If is 'const' its value should not change. If
it is functional, the associated function will be evaluated each time
sample of the equation evaluation and the function is expected to change
the value. A term has a boolean to indicate in which member of the
equation it belong to. A term has a queue header to be able to queue the
successive values of the hold transforms. A term has pointer to the next
term in the equation and a pointer to the previous. Terms are not known
from the user.
Position Equations
An equation is a doubly linked ring of terms. At least one of the terms is
the T6 term in the lhs, and one term is in the rhs. A position equation
has a name, a termination code set when it has been moved to, a scalar that
goes from 0 to 1 minus eps during the motion, and event when it is reached.
Internally to the system, a position equation has also four predicates to
indicate if the canonical equation has a COORD part, a TOOL part and is
these parts are functional or not. It has also a pointer to the T6 term, a
pointer to the TOOL term (that determines the tool frame on its left), and
a pointer to the POS term between the COORD and the TOOL part. Knowing a
term permits to solve the equation for a transform without knowing which
equation nor transform.
The solve functions take three arguments, the result : a transform, and two
terms. The result is the value of a partial path in the graph. If the two
terms are the same, the equation is solved for this term. Two functions
cover all the cases : one path or another, the direct or the inverse.
Motion Records
A motion record has a final acceleration time (possibly null), a segment
time (if null time is left to the system computations), a pointer to the
position equation (if null use the last one), a motion mode (cart joint),
an arm configuration change, a pointer to a term whose transform has to be
updated (if null none), a pointer to a monitor background function (if null
none), a new sample rate (if zero keep the last). A motion record has also
an object mass to carry, a force limit selection word and values, a comply
specification word and values, a maximum differential motion selection word
and values, and a distance modifier selection word and values. Motion
records are queued are the user's level and dequeued at interrupt level.
Differential Motions and Generalized Forces
A diff motion or a force is a set of two vectors.
Queues
A queue is a singly linked list of items. An item has a pointer to the
next and a variable value part. A queue has a head with two pointers :
'get' where items are taken out of the queue and 'put' where they are
entered. When the queue is empty, 'put' and 'get' are null. The last item
in the queue is mark with a null pointer. The function 'queue' returns a
pointer to a free area where the value must be copied. The function
'dequeue' returns a pointer to where the values can be copied from or
returns a null pointer if the queue is empty.
Trajectory Generation
Regardless of the motion mode, the trajectory generator keep track of T6
and J6. It also maintains the COORD, the TOOL and the POS part of the
equation. The POS part cannot be functional because it has to be solved
for. In comply mode, still regardless of the motion type, it maintains the
COMPLY part.
The trajectory generator implements the methods described by Prof. R.
Paul in "Robot Manipulators: Mathematics, Programming, and Control", MIT
Press 1981 with the following additions :
Cart to Joint transition :
Joint value set in point B is obtained by linear extrapolation of the value
set in point A given the velocity and the transition time.
Joint to Cart transition :
T6 in point B is obtained by extrapolation of the drive parameters from
last T6 of previous motion and T6 in A.
Cart to Cart transition with moving frames :
Velocity caused by the moving frames is assumed to be continuous. T6 in B
is recomputed at the beginning of the transition as well as T6 in A with
previous equation because they have moved (if there is no moving coordinate
frame COORD and TOOL are not revaluated). Then the classic method is
applied and POS in A and B are calculated using T6 in A and B. The T6 in B
has been kept from time t-1 and the extra velocity cause by the moving
frames of last equation can be derived. A set of differential drive
parameters is derived and will be involved in the final transition
polynomial. The second point of the transition, a similar method is
applied to obtain the extra velocity of the moving frames of the new
equation. The differential parameters are used in a third order polynomial
added to the regular quartic polynomial. The derivative of this polynomial
at the beginning of the transition is chosen as to compensate the extra
velocities and is zero at the end. The value of the polynomial is zero at
each end. This method is complicated but allows to deal with moving frames
moving at speeds of the same order of magnitude as the robot capabilities.
Trajectories can be different from one path to another and do not need to
connect. If the same moving frame is used across path segments, extra
velocities cancel each other and the tracking is not affected.
Joint to Joint transition with moving frames :
Second point of the transition, extra velocity is derived the same way as
above and the expected position at the end of the path estimated.
Whenever the motion is interrupted of the arm is comply mode, the
extrapolation method is used, according to each case.
When the current equation has 'hold' transforms, the value is kept at the
end of the path segment.
Sat Nov 5 17:25:36 EST 1983
The file moves.c has been modified as to guarantee that the data in the
queue is valid when it is dequeued. The free area is first allocated, data
copied into, and then entered into the queue. A slight modification had to
be done to the file manip.h. Old versions are kept under the name moves.bad
and manip.bad in the corresponding directories.