home *** CD-ROM | disk | FTP | other *** search
/ Between Heaven & Hell 2 / BetweenHeavenHell.cdr / 500 / 470 / rccl026 < prev    next >
Text File  |  1987-03-02  |  8KB  |  148 lines

  1. Dir : src
  2.                            RCCL source directory
  3.  
  4.  
  5. Data Structures.
  6.  
  7.     Set of Joint Variables
  8.  
  9. A set of Joint variables if a string expressing the arm  configuration  and
  10. six  (sometimes  seven  or  more) joint variables expressed in their range.
  11. When the set of joint variables is calculated,  the  string  expresses  the
  12. configurations changes, when T6 is determined, the string is built.
  13.  
  14.     Transforms
  15.  
  16. Transforms have a name, a value, a type, and an age.  The name is a string,
  17. the  value  four vectors, the type a function, and the age an integer.  The
  18. age is the last time the transform has been used,  if  it  is  functionally
  19. defined  evaluating  the function more than one time within a sample period
  20. can be avoided.  Transforms are individual entities, they can be pointed to
  21. but have no pointers.
  22.  
  23.     Terms
  24.  
  25. A terms is an elements of an equation.  A term has a pointer to the  user's
  26. provided  transform,  a  pointer  to an internal alternate transform, and a
  27. pointer to an internal  old  transform,  the  value  it  had  before  being
  28. changed.  When  is  transform  is  of  type 'hold', the three values occupy
  29. three different memory  locations  and  can  be  distinct  values.  When  a
  30. transform  is  of type 'varb', 'const', or functional, the three values are
  31. the same  user  supplied  transform  and  the  term's  three  pointers  are
  32. identical.  If  it is of type 'varb', a value change causes the equation it
  33. belongs to to be changed.  If is 'const' its value should  not  change.  If
  34. it  is  functional,  the  associated  function  will be evaluated each time
  35. sample of the equation evaluation and the function is  expected  to  change
  36. the  value.  A  term  has  a  boolean  to  indicate  in which member of the
  37. equation it belong to.  A term has a queue header to be able to  queue  the
  38. successive  values  of the hold transforms.  A term has pointer to the next
  39. term in the equation and a pointer to the previous.  Terms  are  not  known
  40. from the user.
  41.  
  42.     Position Equations
  43.  
  44. An equation is a doubly linked ring of terms.  At least one of the terms is
  45. the  T6  term  in the lhs, and one term is in the rhs.  A position equation
  46. has a name, a termination code set when it has been moved to, a scalar that
  47. goes from 0 to 1 minus eps during the motion, and event when it is reached.
  48. Internally to the system, a position equation has also four  predicates  to
  49. indicate  if  the  canonical  equation has a COORD part, a TOOL part and is
  50. these parts are functional or not.  It has also a pointer to the T6 term, a
  51. pointer  to the TOOL term (that determines the tool frame on its left), and
  52. a pointer to the POS term between the COORD and the TOOL  part.  Knowing  a
  53. term  permits  to  solve the equation for a transform without knowing which
  54. equation nor transform.
  55. The solve functions take three arguments, the result : a transform, and two
  56. terms.  The result is the value of a partial path in the graph.  If the two
  57. terms are the same, the equation is solved for  this  term.  Two  functions
  58. cover all the cases : one path or another, the direct or the inverse.
  59.  
  60.     Motion Records
  61.  
  62. A motion record has a final acceleration time (possibly  null),  a  segment
  63. time  (if  null  time is left to the system computations), a pointer to the
  64. position equation (if null use the last one), a motion mode  (cart  joint),
  65. an  arm configuration change, a pointer to a term whose transform has to be
  66. updated (if null none), a pointer to a monitor background function (if null
  67. none), a new sample rate (if zero keep the last).  A motion record has also
  68. an object mass to carry, a force limit selection word and values, a  comply
  69. specification word and values, a maximum differential motion selection word
  70. and values, and a distance  modifier  selection  word  and  values.  Motion
  71. records are queued are the user's level and dequeued at interrupt level.
  72.  
  73.     Differential Motions and Generalized Forces
  74.  
  75. A diff motion or a force is a set of two vectors.
  76.  
  77.     Queues
  78.  
  79. A queue is a singly linked list of items.  An item has  a  pointer  to  the
  80. next  and  a  variable  value part.  A queue has a head with two pointers :
  81. 'get' where items are taken out of the  queue  and  'put'  where  they  are
  82. entered.  When the queue is empty, 'put' and 'get' are null.  The last item
  83. in the queue is mark with a null pointer.  The function 'queue'  returns  a
  84. pointer  to  a  free  area  where  the  value must be copied.  The function
  85. 'dequeue' returns a pointer to where the  values  can  be  copied  from  or
  86. returns a null pointer if the queue is empty.
  87.  
  88.  
  89. Trajectory Generation
  90.  
  91. Regardless of the motion mode, the trajectory generator keep  track  of  T6
  92. and  J6.  It  also  maintains  the  COORD, the TOOL and the POS part of the
  93. equation.  The POS part cannot be functional because it has  to  be  solved
  94. for.  In comply mode, still regardless of the motion type, it maintains the
  95. COMPLY part.
  96.  
  97. The trajectory generator implements  the  methods  described  by  Prof.  R.
  98. Paul  in  "Robot Manipulators:  Mathematics, Programming, and Control", MIT
  99. Press 1981 with the following additions :
  100.  
  101. Cart to Joint transition :
  102. Joint value set in point B is obtained by linear extrapolation of the value
  103. set in point A given the velocity and the transition time.
  104.  
  105. Joint to Cart transition :
  106. T6 in point B is obtained by extrapolation of  the  drive  parameters  from
  107. last T6 of previous motion and T6 in A.
  108.  
  109. Cart to Cart transition with moving frames :
  110. Velocity caused by the moving frames is assumed to be continuous.  T6 in  B
  111. is  recomputed  at  the beginning of the transition as well as T6 in A with
  112. previous equation because they have moved (if there is no moving coordinate
  113. frame  COORD  and  TOOL  are  not  revaluated).  Then the classic method is
  114. applied and POS in A and B are calculated using T6 in A and B.  The T6 in B
  115. has  been  kept  from  time  t-1 and the extra velocity cause by the moving
  116. frames of last equation  can  be  derived.  A  set  of  differential  drive
  117. parameters  is  derived  and  will  be  involved  in  the  final transition
  118. polynomial.  The second point  of  the  transition,  a  similar  method  is
  119. applied  to  obtain  the  extra  velocity  of  the moving frames of the new
  120. equation.  The differential parameters are used in a third order polynomial
  121. added to the regular quartic polynomial.  The derivative of this polynomial
  122. at the beginning of the transition is chosen as  to  compensate  the  extra
  123. velocities  and is zero at the end.  The value of the polynomial is zero at
  124. each end.  This method is complicated but allows to deal with moving frames
  125. moving  at speeds of the same order of magnitude as the robot capabilities.
  126. Trajectories can be different from one path to another and do not  need  to
  127. connect.  If  the  same  moving  frame  is used across path segments, extra
  128. velocities cancel each other and the tracking is not affected.
  129.  
  130. Joint to Joint transition with moving frames :
  131. Second point of the transition, extra velocity is derived the same  way  as
  132. above and the expected position at the end of the path estimated.
  133.  
  134. Whenever the  motion  is  interrupted  of  the  arm  is  comply  mode,  the
  135. extrapolation method is used, according to each case.
  136.  
  137. When the current equation has 'hold' transforms, the value is kept  at  the
  138. end of the path segment.
  139.  
  140.  
  141. Sat Nov  5 17:25:36 EST 1983
  142.  
  143. The file moves.c has been modified as to guarantee that  the  data  in  the
  144. queue  is valid when it is dequeued. The free area is first allocated, data
  145. copied into, and then entered into the queue.  A slight modification had to
  146. be done to the file manip.h. Old versions are kept under the name moves.bad
  147. and manip.bad in the corresponding directories.
  148.