home *** CD-ROM | disk | FTP | other *** search
/ Between Heaven & Hell 2 / BetweenHeavenHell.cdr / 500 / 471 / rccovr.txt < prev   
Text File  |  1987-12-20  |  29KB  |  764 lines

  1. .ND
  2. .FS
  3. This work was partially supported by a Grant from the CNRS
  4. project ARA (Automatique et Robotique Avanc\o"e\'"e), France, and
  5. by the Ransburg Chair of Robotics.
  6. This material is also based on work supported by the National
  7. Science Foundation under the Grant No. MEA-8119884.
  8. Any opinions, findings, conclusions, or recommendations
  9. expressed in this publication are those of the authors
  10. and do not necessarily reflect the views of the National
  11. Science Foundation.
  12. Facilities to perform this research are provided by the Purdue University
  13. CIDMAC
  14. project.
  15. .FE
  16. .ce 1
  17. Introduction to RCCL : A Robot Control "C" Library
  18. .sp 7
  19. .ce 1
  20. Vincent Hayward
  21. .sp 5
  22. .ce 3
  23. School of Electrical Engineering
  24. Purdue University
  25. West Lafayette, Indiana, 47907
  26. .sp 5
  27. .ce 1
  28. TR-EE 83-43
  29. .sp 5
  30. .ce 1
  31. October 1983
  32. .bp
  33. .EQ
  34. delim $$
  35. .EN
  36. .AB
  37. RCCL is a robot programming system that enables a user to
  38. specify robot manipulators tasks employing a set of primitive system calls
  39. similar in spirit to those of the UNIX input-output system.
  40. This document is not intended to be a manual, but tries to give
  41. the flavor of the underlying ideas.
  42. The goals addressed in the RCCL system are:
  43. .IP
  44. manipulator task description;
  45. .IP
  46. sensor integration;
  47. .IP
  48. updatable world representation;
  49. .IP
  50. flexibility;
  51. wide range of applications;
  52. .IP
  53. medium level robot programming;
  54. .IP
  55. off-line programming;
  56. .IP
  57. efficiency;
  58. .IP
  59. manipulator independence;
  60. .IP
  61. portability;
  62. .IP
  63. foreground-background programming;
  64. .IP
  65. Cartesian path programming;
  66. .IP
  67. Arbitrary path specification;
  68. .IP
  69. Tracking;
  70. .IP
  71. Force control;
  72. .AE
  73. .bp
  74. .NH 1
  75. Introduction
  76. .PP
  77. Most of the current robot programming systems are based on a dedicated
  78. programming language.
  79. Quite a large number of them exit
  80. (AL, AML, HELP, JARS, LM, MCL, RAIL, VAL).
  81. They consist of a language interpreter running at low priority
  82. specifying motion parameters to a trajectory generator.
  83. The trajectory generator, running at high priority,
  84. and usually interrupt driven,
  85. computes the sequence of joint variables
  86. so as to produce the desired motion.
  87. The sequence of joint variables is in turn transmitted to
  88. a servo process capable of actuating the robot's joints.
  89. The execution flow of the robot program is synchronized with the
  90. actual motion of the manipulator.
  91. Most language based systems, if not all,
  92. are strongly tied to the computer hardware they are running
  93. on, as well as to the type of manipulator they control.
  94. The more sophisticated robot programming languages become,
  95. the more they resemble high level computer programming languages
  96. (ALGOL, PASCAL, etc.)
  97. augmented with the data structures and operators
  98. necessary to control robots.
  99. Some languages can handle concurrent
  100. processing.
  101. .PP
  102. RCCL is not a language but a set of system calls suitable for the
  103. control of robot manipulators.
  104. Manipulator programs become ordinary computer programs, and the
  105. manipulator is considered as a peripheral device.
  106. Since manipulator control primitives are put at the system level,
  107. a program written in any language able to provide the proper
  108. list of arguments can use the manipulator primitives.
  109. .PP
  110. Instead of designing yet another robot programming language,
  111. we use the C language to obtain manipulators programs.
  112. The RCCL system is itself written the C language.
  113. C is a high level structured language suitable for any project sizes,
  114. but allows us to deal with low level implementation details.
  115. Programs are easily portable, and yet can be efficiently implemented.
  116. Two criticisms are often made of compiled languages based systems.
  117. The compilation time increases the edit-test cycle time.
  118. If a program fails either because it is wrong from the manipulation
  119. point of view, or from the programming point of view, the whole
  120. task has to be stopped.
  121. Practice has shown that these limitations are largely offset
  122. by the gain in flexibility and generality.
  123. If for some applications, an interpreted language is needed,
  124. the interpreter of a general purpose or a dedicated
  125. language can also make use of RCCL system calls.
  126. We would obtain, in that case, a large gain in modularity.
  127. The RCCL design approach has advantages in modularity,
  128. flexibility and hardware independence.
  129. .FS
  130. The first implementation runs on a VAX 11/780 computer under UNIX.
  131. It has been used to control a PUMA manipulator and a Standord Arm.
  132. .FE
  133. .NH 1
  134. Overview
  135. .NH 2
  136. Manipulator task description
  137. .PP
  138. The location of an object is described by its position and orientation
  139. with respect to some reference coordinate frame.
  140. In the remaining, the word 'position' will implicitly
  141. stand to 'position and orientation'.
  142. Tasks are described in terms of positions to be reached in space
  143. to grasp, displace or exert forces on objects located in the robot
  144. work space.
  145. Tasks are also described by the sequence and the type of motions necessary
  146. to carry out the work.
  147. Position descriptions require special data structures and
  148. sequential operations of a robot require special primitives.
  149. Both can however be implemented with the tools provided by
  150. high level languages, namely, data structures, functions ,and
  151. structured flow of control.
  152. (The C language does not know anything about a file, for example.
  153. Users wishing to manipulate files in their programs have to include
  154. a system file called "stdio.h".
  155. This file contains a description
  156. of the necessary data structures.
  157. Files can be manipulated by system
  158. primitive functions like
  159. .I
  160. read, write, filbuf, or, flsbuf
  161. .R
  162. [1]).
  163. .NH 3
  164. Structured position description
  165. .PP
  166. RCCL handles what is referred to as structured position description [2].
  167. The basic construct is the homogeneous transformation
  168. that is a mathematical construct
  169. describing the position of coordinate frames.
  170. A homogeneous transformation can  either be interpreted
  171. as the description of the position of a
  172. coordinate frame with respect to another, or
  173. as a transformation performed on the first coordinate frame.
  174. Homogeneous transformations are a very general tool [3],
  175. however in manipulation we will restrict them to
  176. to the following :
  177. .EQ
  178. left [
  179. matrix {
  180.   ccol { n sub x above n sub y above n sub z above 0 }
  181.   ccol { o sub x above o sub y above o sub z above 0 }
  182.   ccol { a sub x above a sub y above a sub z above 0 }
  183.   ccol { p sub x above p sub y above p sub z above 1 }
  184. }
  185. right ]
  186. .EN
  187. .PP
  188. The left upper 3 by 3 matrix is a rotation matrix constructed with three
  189. orthogonal vectors $n$, $o$, and $a$.
  190. When the corresponding coordinate frame is attached to
  191. the end-effector of a manipulator, the three vectors
  192. $n$, $o$, and $a$ can be interpreted as the
  193. .I normal
  194. vector,
  195. the
  196. .I orientation
  197. vector, and the
  198. .I approach
  199. vector.
  200. The $p$ vector is a translation vector or
  201. .I position
  202. vector of the end of the manipulator.
  203. .PP
  204. Relative positions of objects can be described with
  205. transformations products.
  206. For example, let $OBJ$, a transformation, describe the position of
  207. an object relative to a reference coordinate frame.
  208. Let $HOLE$ represent the position of a hole with respect to
  209. the frame $OBJ$.
  210. The matrix product $OBJ~HOLE$
  211. which is also a homogeneous transformation,
  212. describes the position of the hole relative to the
  213. reference coordinate frame.
  214. One important property of orthogonal homogeneous transformation
  215. is that the inverse transformation can be obtained
  216. at reduced computational costs.
  217. .PP
  218. One dedicated transformation $T6$, represents the
  219. position of the end-effector with respect to the reference
  220. coordinate frame located at the base of the manipulator.
  221. A given manipulator position can be specified in base
  222. coordinates by writing:
  223. .EQ
  224. T6~=~POS
  225. .EN
  226. However, such a description is usually insufficient.
  227. For instance, one might need to express that a tool
  228. attached to the arm end-effector must reach the position $POS$.
  229. This is achieved by writing:
  230. .EQ
  231. T6~TOOL~=~POS
  232. .EN
  233. A more complete description of a motion to a goal position is often
  234. written as:
  235. .EQ
  236. REF~T6~TOOL~=~CONV~OBJ~PG
  237. .EN
  238. Where:
  239.  
  240. .IP $REF$ 8
  241. is the position of the manipulator with respect to
  242. the reference coordinate frame.
  243.  
  244. .IP $T6$ 8
  245. describes the position of the manipulator end-effector with respect to
  246. the reference coordinate frame attached to the shoulder or
  247. to the base of the manipulator.
  248.  
  249. .IP $TOOL$ 8
  250. expresses the position of a tool attached to the end-effector.
  251.  
  252. .IP $CONV$ 8
  253. represents a conveyor belt, it can be a moving coordinate
  254. frame with respect to the reference coordinate frame.
  255.  
  256. .IP $OBJ$ 8
  257. is the position of the object to be grasped lying on the conveyor belt.
  258.  
  259. .IP $PG$  8
  260. is the position of the end-effector,
  261. relative to $OBJ$, where the object is to be grasped.
  262.  
  263. .PP
  264. Position equations are solved for $T6$ to obtain the desired
  265. position of the manipulator with respect to the reference coordinate
  266. frame:
  267. .EQ
  268. T6~=~REF sup -1~CONV~OBJ~PG~TOOL sup -1
  269. .EN
  270. One RCCL system call directly implements position equations in
  271. terms of dynamic data structures.
  272. The positions can be modified at the level of the move
  273. statement in terms of small translations and rotations described
  274. in the
  275. .I tool
  276. frame.
  277. This provides a convenient short hand for specifying approach and deproach
  278. positions, or for specifying purposely over shooting motions if the arm
  279. is to perform a guarded motion [21].
  280. .NH 3
  281. Motion description
  282. .PP
  283. A task is made up of a number
  284. .I
  285. path segments
  286. .R
  287. between successive positions.
  288. There are many ways for generating trajectories for a manipulator[4][5].
  289. RCCL provides two types of motions.
  290. The first one, called
  291. .I
  292. joint mode,
  293. .R
  294. consists of computing
  295. the set of joint values for each end of path segment and generating
  296. all intermediate values by linear interpolation.
  297. The second type, that we will call
  298. .I
  299. Cartesian mode,
  300. .R
  301. requires the system to solve a modified position equation
  302. each sample intervals
  303. and to compute the corresponding joint coordinates.
  304. The position equation is internally modified in such a way
  305. that one frame, called
  306. .I
  307. tool frame,
  308. .R
  309. moves along straight lines and rotates around
  310. fixed axis.
  311. These motion types are discussed elsewhere [3][6].
  312. Here, we will assume that we are dealing with a manipulator for which
  313. exists an analytical solution relating a Cartesian position to
  314. a set of joints coordinates [7][8][9][10].
  315. In the current implementation, manipulator motions are obtained
  316. by specifying a sequence of desired joint values to the servo processes
  317. controlling the manipulator joints.
  318. However, most of what follows does not assume a particular control
  319. method.
  320. .PP
  321. Path segment transitions involve three positions.
  322. The manipulator is on its way from position $P1$, is about to
  323. perform a transition next to $P2$ in order to head toward $P3$.
  324. Transition are rendered necessary to avoid velocity discontinuities, and
  325. are computed using a quartic polynomial.
  326. At the time of a transition, the subsequent
  327. .I
  328. path segment
  329. .R
  330. is fully described by the goal position $P3$, $P1$ and $P2$ being known
  331. from the current motion, by the time of the transition,
  332. and by the time of
  333. the segment itself.
  334. RCCL allows to specify velocities, as well as segment times.
  335. If the velocity is specified, the Cartesian distance of each tool frame
  336. is determined to
  337. automatically compute the segment time.
  338. .PP
  339. When the manipulator is to move while exerting forces or torques
  340. on objects, the manipulator must be controlled in a such a way that
  341. forces and torques are controlled directly in place of positions.
  342. The manipulator is then said to be controlled in a
  343. .I comply
  344. mode.
  345. Several methods [11][12][13][14] are proposed for such a control.
  346. RCCL provides for compliance specifications in the
  347. .I tool
  348. coordinate frame which is specified in the position equation.
  349. Compliance is specified in terms of forces along, and torques
  350. around the principal axes of the
  351. .I tool
  352. frame.
  353. The manipulator looses one if the positional degree of freedom for
  354. each direction along, or around which the manipulator is complying in force.
  355. The trajectory is then constrained by the geometrical features of the
  356. objects in contact.
  357. A more complete discussion of this subject can be found in [15].
  358. .NH 2
  359. Sensor integration; Updatable world representation;
  360. .PP
  361. One of the main goals of RCCL is to facilitate the integration of sensors [16].
  362. Sensors are used to influence the behavior of the manipulator according
  363. to information acquired from itself or from its environment.
  364. Sensor information can be classified in many different ways :
  365. according to the data type necessary to
  366. represent it, booleans, scalars, vectors, arrays, tensors, etc...;
  367. by meanings, touch, limit, distance, position, temperature,
  368. vibrations, forces, etc...;
  369. by the order of magnitude of the acquisition time, minutes, seconds,
  370. milliseconds, microseconds; by accuracy ;and so on.
  371. Considering this variety, the RCCL approach
  372. is to deliberately ignore, when possible,
  373. the type of information we may have to deal with, but on the contrary,
  374. to provides means for an efficient utilization of this information.
  375. .NH 3
  376. Foreground - background programming
  377. .PP
  378. As robot programs will have to interact with the environment
  379. while the manipulator is moving, programs are not implicitly synchronized
  380. with the robot motions.
  381. Each time a motion is required, a
  382. .I motion
  383. .I request
  384. is entered into a 'First-in first-out' queue.
  385. The request consists of a record containing all the informations
  386. necessary to perform the corresponding path segment.
  387. This feature allows us to specify ahead at time a sequence of
  388. motions and to perform input output operations and calculations
  389. as the robot is executing the requests.
  390. When the motion queue becomes empty, the manipulator is brought to
  391. rest.
  392. This is obtained by repeatedly evaluating the last position.
  393. We will see that it does not necessarely mean that the manipulator
  394. is brought to a stop in absolute coordinates.
  395. Slow sensors as computer vision systems requiring lengthy computations
  396. can then be efficiently used as there is no need to stop the manipulator
  397. while the data is acquired and processed.
  398. A 'wait' primitive is provided when it is necessary to synchronize
  399. the execution of the program with the manipulator's motions.
  400. A similar technique to allow for the simultaneous control of
  401. several manipulators or positioning devices may be implemented in the future.
  402. .NH 3
  403. Influencing positions
  404. .PP
  405. End of segment positions can be modified according to information
  406. acquired at run time.
  407. This is achieved by changing the value of transformations within
  408. position equations.
  409. Transformations likely to be modified at run time must be declared as such
  410. (
  411. .I hold
  412. transforms).
  413. The system makes a copy the transformation at the time
  414. the corresponding
  415. .I move
  416. .I request
  417. is issued, and enters it in the motion queue.
  418. It is therefore possible to use the same transformation to
  419. describe a coordinate frame whose value is different from
  420. one path segment to another.
  421. Using a copy of the transformation, makes
  422. possible to change its value at an arbitrary instant
  423. even if the corresponding position equation is currently being evaluated.
  424. For efficiency, this feature is used only when specified.
  425. The use of
  426. .I hold
  427. transformations causes more processing to be performed at run
  428. time because they prevent the optimization of transform equations by
  429. pre-multiplication of constants transformations.
  430. .PP
  431. User interaction and slow sensors like computer vision
  432. require the use of
  433. .I hold
  434. transformations.
  435. Position data can be acquired ahead at time in a completely asynchronous
  436. manner.
  437. .NH 3
  438. Influencing trajectories
  439. .PP
  440. Fast sensors can provide for direct synchronous sensory feedback.
  441. This corresponds to the class of
  442. .I functionally
  443. defined transformations.
  444. In this case, a transformation is attached to a function that
  445. will be evaluated at sample time intervals.
  446. The purpose of the function is to calculate the value of the transformation
  447. as a function of sensor readings.
  448. The position equation in section 2.1.1. makes use of such a functionally
  449. defined transform to describe a position with respect to a conveyor belt.
  450. If the motion is performed in
  451. .I Cartesian
  452. mode, the tracking is perfectly
  453. accurate, since the position equation is evaluated at sample time intervals.
  454. When the motion is performed in
  455. .I joint
  456. mode, the system estimates the expected position at the end of the
  457. segment by linear extrapolation.
  458. If the functionally defined transform is computed as a function of time,
  459. we can obtain mathematically described motions (circles, ellipses etc...).
  460. .PP
  461. The transitions to, or from path segments involving moving coordinate frames
  462. must deal with unpredictable velocity changes.
  463. Smooth transitions are obtained by adding a third order polynomial trajectory
  464. modification during the transition time.
  465. We have seen that manipulator stops are obtain by repeating a move to
  466. the same position.
  467. When the position involves moving coordinate frames, the stop will be
  468. relative to those moving coordinate frames.
  469. If a stop in absolute coordinates is required, a move to a fixed position must
  470. be performed before specifying the stop.
  471. The system internally maintains a position equation which always reflects
  472. the current position of the manipulator.
  473. It is therefore possible to have the manipulator stop at an arbitrary instant
  474. at the position it currently occupies.
  475. Functionally described transformations can be used anywhere in a position
  476. equation.
  477. Trajectories can be affected with respect to any coordinate frame which
  478. provides unlimited applications.
  479. .NH 3
  480. Influencing path segment times
  481. .PP
  482. The second way to influence the manipulator behavior is to modify
  483. the length of the path segments, to start and to stop the manipulator
  484. according to external events.
  485. The RCCL system allows to interrupt the execution
  486. and cause a transition to the next
  487. path segment at any moment
  488. by merely setting a global flag.
  489. A motion termination code enables to determine the cause
  490. of the path segment termination.
  491. For example, the system internally checks for joint limits and
  492. brings the manipulator to an absolute stop when one of them is reached.
  493. The termination code allows us to check the proper termination
  494. of the motions that may cause a joint limit and to take an appropriate
  495. action.
  496. For any motion terminated on condition, a meaningfull termination code is
  497. returned.
  498. An arbitrary monitoring function
  499. can be specified as part of a motion
  500. request, the termination code is then chosen by the user.
  501. Start, stop, motion interruption and resumption are achieved using the
  502. same mechanism.
  503. .NH 3
  504. Internal sensing
  505. .PP
  506. Internal information is acquired from the manipulator
  507. itself.
  508. Two particularly useful kinds of informations
  509. are internally maintained in RCCL: position and force.
  510. .NH 4
  511. Position
  512. .PP
  513. For any motion terminated on a condition, the world model
  514. may have to be updated to account for the actual position where
  515. the manipulator stopped.
  516. The system is then
  517. asked to
  518. .I update
  519. a transformation in a position equation.
  520. The equation is solved for requested transformation using the
  521. actual value of $T6$ when the path segment ends.
  522. This new position information might be very useful
  523. in any subsequent motion related to this location.
  524. For example, consider the case of
  525. a manipulator picking up an object which it had previously
  526. placed on a surface whose height is only approximatively known.
  527. The manipulator
  528. is able to retrieve the object immediately
  529. if the final position of the object was updated.
  530. .NH 4
  531. Force
  532. .PP
  533. Joint torques are also obtained
  534. from the manipulator state.
  535. The complete determination of the forces and torques
  536. exerted on an object based on the joint torques leads to lengthy
  537. computations [17], RCCL, however provides a mechanism that
  538. compares the actual forces and torques against expected values.
  539. This information may be used to cause a path segment termination when
  540. some specified limit is reached.
  541. The subsequent path segment will usually contain compliance specifications.
  542. .NH 1
  543. The RCCL implementation
  544. .PP
  545. When a manipulator in under RCCL control, four processes
  546. are concurrently running.
  547. At the lower level a
  548. .I
  549. servo process
  550. .R
  551. controls the position or the torque
  552. of each manipulator joint
  553. as input parameters.
  554. The
  555. .I
  556. setpoint process,
  557. .R
  558. running at interrupt level, computes the Cartesian
  559. trajectories and determines the corresponding joint parameters.
  560. A real time
  561. communication channel swaps information between the
  562. .I
  563. servo process
  564. .R
  565. and the
  566. .I
  567. setpoint process.
  568. The
  569. .I
  570. user process
  571. .R
  572. running under time sharing contains the RCCL system calls.
  573. The
  574. .I
  575. setpoint process
  576. .R
  577. communicates with the
  578. .I user
  579. process via a motion request queue containing all the necessary information.
  580. .NH 2
  581. Servo process
  582. .PP
  583. The present implementation makes use of Unimation PUMA robot controllers.
  584. These controllers include six micro processors, one per joint.
  585. Each joint servo micro processor receives position commands specified
  586. in incremental encoder values.
  587. The joint processors can also read and transmit the joint position information.
  588. The Stanford arm controller has been modified [18][19] so that
  589. joint 1, 2, and 3 can be force servoed.
  590. The Puma arm controller can drive the joints motors with current
  591. specifications.
  592. A method for relating joint torques to motor currents has been
  593. developed and implemented by Zhang Hong [20].
  594. The method take into account the friction effect of the joint drives.
  595. .NH 2
  596. Joint processor control and host machine interface
  597. .PP
  598. A LSI11 microprocessor supervises the joint processors and establishes
  599. the communication with the host machine.
  600. At each sample time interval, the microprocessor gather data from the
  601. manipulator, transmits it to the host machine, accepts commands,
  602. and sendss the corresponding values to the joint processors.
  603. It also executes a calibration procedure at startup time.
  604. .NH 2
  605. Real time channel communication
  606. .PP
  607. The real channel, besides transmitting information between the
  608. controllers and the host machine performs several functions such as
  609. the conversions of encoder values to trigonometric angles,
  610. the torque to current mapping,
  611. joint limits ,maximum velocities
  612. and maximum currents monitoring.
  613. It also checks for data integrity.
  614. A manual stepping mode and an automatic rest position return are built in.
  615. .NH 2
  616. Setpoint process
  617. .PP
  618. The
  619. .I setpoint
  620. process is interrupt driven.
  621. Each time a path segment terminates, the process attempts to obtain
  622. a new motion request from the queue.
  623. If there is one, the transition parameters are computed according
  624. to the type of path segment and the transition parameters are computed.
  625. Many types of transitions occur : joint mode, Cartesian mode, moving coordinate
  626. frames, constrained motions.
  627. The final result is always a set of joint positions and torques.
  628. .NH 2
  629. User process
  630. .PP
  631. The
  632. .I user
  633. process consist of the user program calling the RCCL primitives.
  634. Memory space is dynamically allocated for each new position
  635. equation.
  636. This space can be released when needed no longer needed.
  637. Several functions are provided to handle transformations:
  638. rotations, Euler angles, roll pitch and angles, transform multiply,
  639. transform inversion, etc...
  640. .NH
  641. Tools
  642. .NH 2
  643. Trajectory planning
  644. .PP
  645. There exists a version of the RCCL library, which instead of computing
  646. the trajectories in real time, computes them off-line.
  647. This is simply achieved by calling the setpoint function in a loop instead
  648. of activating it on interrupt.
  649. The same manipulator programs, provided that they do not depend on
  650. external events and information, can be run in this fashion.
  651. Some debugging tools are then provided.
  652. The system can be asked to keep a trace of the motion requests,
  653. to store the sequence of setpoints on file in order to replay them afterwards,
  654. or to plot them.
  655. .NH 2
  656. Teaching
  657. .PP
  658. A manual control program is included within RCCL.
  659. It consists of a very simple command line language
  660. enabling an operator to interactively move the manipulator in
  661. Cartesian space.
  662. Motions can be specified in world or tool coordinates.
  663. Positions can be recorded via the
  664. .I update
  665. primitive.
  666. The manual control program is entirely implemented in terms
  667. of RCCL primitives.
  668. .NH 2
  669. Transformations data base
  670. .PP
  671. A simple data base system has also been developed.
  672. Transformations values can be recorded and read on line
  673. in manipulator programs.
  674. The values can be displayed and modified off-line for maintenance.
  675. .NH
  676. Conclusion
  677. .PP
  678. The main goal of this project was to show that manipulator
  679. control could be brought in a more general context than within
  680. the framework of a stand alone controller bound to it's own language.
  681. The current RCCL implementation does not yet offer the convenience
  682. of dedicated robot controllers because it requires a large machine.
  683. However,
  684. as microprocessor based computers become more powerful and
  685. can run operating systems like UNIX, the RCCL approach shows
  686. many advantages over conventional robot controller design.
  687. The conclusion is that robot control can be though as an addition
  688. to an already existing, tested, and standardized system, rather
  689. than the design from scratch of a system arround robot control.
  690. .NH 1
  691. References
  692. .IP [1]
  693. Kernighan ,B. K., "The C Programming Language",
  694. Prentice-Hall, 1978.
  695. .IP [2]
  696. Paul ,R. P., "Manipulator Language", Workshop On The Research
  697. Needed to Advance The State Of Knowledge In Robotics,
  698. April 15-17, 1980, organized by J. Birk and R. Kelley, supported by N.S.F.
  699. .IP [3]
  700. Paul, R. P., "Robot Manipulators: Mathematics, Programming,
  701. and Control", MIT Press 1981.
  702. .IP [4]
  703. Derby, S., "Simulating Motion Elements of General-Purpose Robot Arms",
  704. International Journal of Robotic Research, Vol. 2, No. 1, Spring 1983.
  705. .IP [5]
  706. Castain, R. H., Paul, R. P.,
  707. "Polynomial Robotic Trajectories: A New Approach",
  708. TR-EE 82-37, Dec 1982.
  709. .IP [6]
  710. Hayward, V., Paul, R. P.,
  711. "Robot Manipulator Control Using the C Language Under UNIX",
  712. IEEE Workshop on Languages for Automation, Chicago, Nov. 1983.
  713. .IP [7]
  714. Shimano, B. E., "The Kinematic Design and Force Control of Computer
  715. Controlled Manipulators",
  716. Stanford Artificial Laboratory, Stanford University, AIM 313, 1978.
  717. .IP [8]
  718. Paul, R. P., Stevenson, C. N., "Kinematics of Robot Wrists",
  719. International Journal of Robotic Research, Vol. 2, No. 1, Spring 1983.
  720. .IP [9]
  721. Paul, R. P., Shimano, B. E., Mayer , E. G.,
  722. "Kinematic Control Equations for Simple Manipulator",
  723. IEEE Transactions on Systems, Man, and Cybernetics,
  724. Vol SMC-11, No 6, June 1981.
  725. .IP [10]
  726. Fisher, W. D., Private communication.
  727. .IP [11]
  728. Inoue, H., "Force Feedback In Precise Assembly Tasks",
  729. MIT Artificial Intelligence Laboratory, Memo 308, Aug 1974.
  730. .IP [12]
  731. Raiberg, M. H., Craig J. J., "Hybrid Position/Force Control of Manipulators",
  732. Journal of Energy Resources Technology, Vol. 103, June 1981.
  733. .IP [13]
  734. Salisbury, J. K., "Active Stiffness Control of a Manipulator In Cartesian
  735. Coordinates", 19th IEEE Conference on Decision and Control, Dec. 1980,
  736. Albuquerque, New Mexico.
  737. .IP [14]
  738. Geschke, C. C., "A System for Programming and Controlling Sensor-Based
  739. Robot Manipulators", IEEE Transactions on Pattern Matching and Machine
  740. Intelligence, Vol. PAM1-5, No. 1, Jan 1983.
  741. .IP [15]
  742. Mason M. T., "Compliance and Force Control for Computer Controlled
  743. Manipulators", MIT TR-515, April 1979.
  744. .IP [16]
  745. Rosen, C. A., Nitzan, D., " Use of Sensors In Programmable Automation",
  746. Computer Magazine, December 1977.
  747. .IP [17]
  748. Paul, R. P., "Computational Requirements of Third Generation Manipulators"
  749. .IP [18]
  750. Fisher, W. D., "The Modification of a Robotic Manipulator and Digital
  751. Controller to Incorprate Both Force and Possition Control", MSEE Thesis,
  752. Purdue University, May 1981.
  753. .IP [19]
  754. Luh, J. Y. S., Fisher W. G., Paul, R. P.,
  755. "Joint Torque Control by Direct Feedback for Industrial Robots",
  756. IEEE Transactions on Automatic Control, Vol. AC-28, No. 2, February 1983.
  757. .IP [20]
  758. Zhang, H., Paul, R. P.,
  759. "Determination of Simplified Dynamics of Puma Manipulator", Purdue University.
  760. .IP [21]
  761. Will, P. M., Grossman D. D.,
  762. "An Experimental System for Computer Controlled Mechanical Assembly",
  763. IEEE Trans. Computers C-24 9, 1975, 879-888.