Programming and Controlling
     PUMA Robot Arms



       1989, 1999,
       1989 1999 2005



     Gyoung H. Kim, Ph.D.
...
Contents


I. Controlling PUMA Robot Arms with VAL,
             g                         ,
RCCL, Kali, or ALVIN, 1989.

...
Controlling PUMA Robot Arms
With VAL RCCL Kali or ALVIN
     VAL, RCCL, Kali,



            1989




     Gyoung H. Kim, ...
Contents

•   PUMA
      - MK I controller
      - MK II controller
      - MK III controller
      - UNIVAL controller

•...
PUMA




       5
PUMA
     (Programmable, Universal Machines for Assembly)

• Vendor:   Unimation,Inc.

• Arm Types:
      260 Series,
    ...
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
PUMA MK III Controller Configuration

 1. control card set

   [1] LSI-11/73 CPU board
   [2] 64 KW RAM board
   [3] quad ...
2.
2 power card set

 [1] C interface board
 [2] high power function board
 [3] power amplifier boards - PWM type




    ...
Servo Code Block Diagram


     Main                  Timer             Host
                         Interrupt        Int...
29
30
31
UNIVAL




         32
UNIVAL Block Diagram


 Unival Controller

          Torque                            Servo    Expansion
        Processo...
Typical Controller with Analog Torque Loop


                        Torque Loop / Amplifier

                  DAC       ...
UNIVAL Torque Processor Loop


                  Software                                    Hardware

 Torque   +        ...
UNIVAL Signal Loops


                                                                    Arm
                            ...
UNIVAL Servo System Block Diagram


Arm Interface Module
                                                             M   ...
PUMA Control with VAL
1.   The hardware does not provide sufficient     processing power
     --- it is too slow for real-...
PUMA Control without VAL
Advantages :

1.   The ability to implement closed-loop control of the manipulator
     in both t...
Alternative Hardware Configurations

1.   The PUMA's Arm Interface Board is disconnected from the DRV-
     11 card and co...
RCCL




       41
RCCL ( Robot Control quot;Cquot; Library)
                         RCCL, Purdue
                             (1983)



   ...
Ph i l Implementation of RCCL
     Physical I l   t ti    f
                                VAX Computer
                 ...
RCCL Block Diagram (Purdue)


  VAX 780                                                                   UNIBUS

        ...
45
RCCL Block Diagram


                                            Robot Arm

                       Current command
       ...
Internal Control-level Execution Sequence

                  NORMAL TASK
                  AND PROCESS
                   ...
Execution Cycle at the Control Level
                                       CONTROL
                                     L...
49
Position E
       P iti Equations
                  ti
At point p1,
        p1 = Z      T61 E1
        T61 = Z-1   p1 E1-1...
LEVEL II




           51
Th Four Levels of the Robot
The F   L   l f th R b t
 Programming Environment


          Menu Interface



      Applicat...
RC-X Control Boards


Tape              Programming                     System              Hand
Drive                Cons...
54
Kali




       55
K li
                      Kali
          (A creature with many arms
              in Hi d
              i Hind mythology)...
High Performance Computing System

Current trends:

1. Super or mini-super computers.

2. Workstations with special very h...
Kali Software Directory




                          58
Kali src Directory




                     59
Kali Block Diagram


     SUN 3
  workstation

ethernet
   link                                                VSB
       ...
R
         Run-Time Structure
             Ti   St   t

 1.
 1 Synchronous processes
      i. Trajectory generator
      i...
Real time Computing
             Real-time
1. Software support

  Host: Unix-based workstation
  Target: real-time operati...
63
Kali Graphic Simulator




                         64
Kali Graphic Simulator




                         65
Kali Graphic Simulator




                         66
Spatial Relationships
            (Ring Structures)
                B M T A D C = Identity

where

B : the Manipulator bas...
68
69
ALVIN




        70
ALVIN
(ALmost Very Intelligent, but Not)


  - Purdue's new robot system



  - Named by Prof. C S G Lee


  - Advanced sy...
72
72
73
73
ALVIN Block Diagram(Stage I)

     SUN 3
  workstation

ethernet
   link                              VSB

       ethernet...
ALVIN Block Diagram (Stage I)

                VMEbus System                                          VSB

Engineering    ...
ALVIN Block Diagram (Stage II)

                      Engineering Computer Network


    SUN                              ...
optinal
                                                                                                                  ...
VME BUS

                                                 VMEbus
                                                  adaptor...
VME BUS

         Parallel I/O                  ADC                       DAC                      Robot I/O
             ...
ALVIN Block Diagram (Stage III)


       SUN
   workstation
      k t ti

                                                ...
R f
                                              References
VME bus / VSB
Wayne Fischer, quot;IEEE P1014 - A Standard for...
PUMA/VAL
[puma 1] B. Fisher and V. Hayward, quot;Communication Routines Between the LSI 11-03 and the 6503'squot;, Purdue ...
RCCL ( a Robot Control C Library)
[rccl 1] V. Hayward, Robot Real Time Control User's Manual, TR-EE 83-42,
               ...
End of Part 1




                84
RCCL V i t
     Variants



       1999



Gyoung H. Kim, Ph.D
G      H Ki Ph D
RCCL-related Systems

•   RCCL v1.0-based

•   Multi-RCCL

•   RWRCCL

•   Qrobot

•   ARCL




                          ...
RCCL v1.0
        v1 0
Configurations




                 87
RCCL (Purdue, 1983)

    VAX-11780                                                       UNIBUS

                         ...
RCCL Architecture




                    89
RCCL Routines




                90
Routine Explanation

(1) main(): The main program.
(2) startup():
      Connect quot;setpoint_n()quot; to the clock interr...
ALVIN-RCCL (Purdue, 1991)

68030s/VxWorks
                                      VMEBus

                   CPU #1        C...
RCCL-ALVIN (P d
               RCCL ALVIN (Purdue, 1998)

Host PC/QNX
                                                    ...
Software Architecture of ALVIN RCCL
                         ALVIN-RCCL




                                      94
RCCL / RCI (Standard)

 Host Computer                                           Host computer bus

                       ...
Multi-RCCL

•   Multi-RCCL v5.0
        John Lloyd and Vincent Hayward, 1992.
         Official release of Multi-RCCL.

• ...
Hardware Architecture of Multi-RCCL




                                      97
RWRCCL

•   RWRCCL(Roger Williams RCCL):
       RCCL modified by Matthew Stein at Roger Williams
       University in 2000...
RWRCCL (TRC Boards)

 Host PC/Linux                   ISA bus

                                      TRC004 board




Unim...
Hardware Architecture of RWRCCL




                                  100
Software A hit t
S ft     Architecture of RWRCCL
                       f




                                  101
Graphic Simulator of RWRCCL




                              102
QRobot


•   A multitasking QNX/PC b
        ltit ki QNX/PC-based robot control system.
                            d b t ...
RCCL-QRobot (MultiQ Board)

 Host PC                       PCI bus

                                    MultiQ board




U...
ARCL
   (Advanced Robot Control Language)


• Developed by Peter I. Corke, 1993.

• Inspired by an early version of RCCL.
...
Structure of ARCL




                    106
End of Part 2




                107
Porting and Running the RCCL
   on a R l ti
        Real-time Li
                  Linux/PC
                       /PC



...
RCCL Poring
•   Porting RCCL v1.0 to Linux.

•   Developing a graphic simulator for RCCL v1.0.

•   Porting RCCL v1.0 to L...
Test Environment

•   RCCL: v1.0 (1983)
•   Simderella: v2.0.2 (1995)
•   gcc: 2 9 x 3 0 4 3 2
         2.9.x, 3.0.4, 3.2
...
RCCL v1.0 on Linux




                     111
Running Modes of RCCL

(Modes are specified at h/switch.h)

1. PLAN mode (no signal or interrupt)
     - setpoint_n() is r...
Running RCCL on Linux
                   (BSD mode with lib5)
•   RCCL v1.0 written in pre-ANSI C run on BSD Unix.
•   Whi...
Running RCCL on Linux
                   g
                 (SYSV mode with libc6)

(1) Ch
    Change f from BSD stuffs t ...
Simderella
    (A general-purpose robot simulator for kinematics)


                Current joint angles

Simderella
     ...
RCCL + Simderella (on-line)
             (Simderella as a graphic simulator of RCCL)



For on-line simulation,
1.
1    Mo...
Screenshot of RCCL + Simderella




•     g                           p
    Right window: connel’s window printing out joi...
RCCL + Simderella (off-line)
                               (off-

For off-line simulation,
1.    Modify connel/main.c so ...
RCCL v1.0 on Linux/RTAI




                          119
Porting RCCL to RTAI

 Software Architecture




                         120
Software Components

1. User-space task
   (1) User command monitor:
     - Send start/stop/break/resume command to RT tas...
RTAI Porting Procedure
1. Kernel memory allocation
      Change malloc( ) and free ( ) to kmalloc( ) and kfree( ) respecti...
RTAI Running Procedure
1.
1    Install t i
     I t ll rtai modules
                    d l
        modprobe rtai
        ...
RCCL Porting Results
•   RCCL on BSD- and SYSV-mode Linux
     – PLAN/FAKE/REAL modes can be compiled.
     – PLAN and FAK...
RWRCCL on Linux/RTAI




                       125
Analysis Results of RWRCCL


• Routines are fully documented
                     documented.

• Trace and analysis of the...
Updating RWRCCL to a newer RTLinux

•   Environment:
       - debian sarge 3.1r1
       - gcc 3 3 6
             3.3
     ...
Porting Results of RWRCCL-rtlinux

• Trajectory generation sampling interval: 27ms

• Servo sampling interval: 0.9 ms
  (p...
Porting RWRCCL to RTAI
•   RTAI:
    RTAI
       - rtai-3.2
       - kernel 2.4.27

•   Patches
       (1) rtlinux-depende...
Ongoing Projects

•   Modifying RCCL for running various arms.

•   Porting RCCL v1 0 to Xenomai
                 v1.0 Xen...
End f P t
E d of Part 3




                131
Upcoming SlideShare
Loading in …5
×

Programming And Controlling Puma Arms

5,109 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,109
On SlideShare
0
From Embeds
0
Number of Embeds
38
Actions
Shares
0
Downloads
209
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Programming And Controlling Puma Arms

  1. 1. Programming and Controlling PUMA Robot Arms 1989, 1999, 1989 1999 2005 Gyoung H. Kim, Ph.D. 1
  2. 2. Contents I. Controlling PUMA Robot Arms with VAL, g , RCCL, Kali, or ALVIN, 1989. II. RCCL Variants and RCCL Porting Guide, 1999. III. Porting and Running the RCCL on a Real- time Linux/PC 2005 Linux/PC, 2005. 2
  3. 3. Controlling PUMA Robot Arms With VAL RCCL Kali or ALVIN VAL, RCCL, Kali, 1989 Gyoung H. Kim, Ph.D 3
  4. 4. Contents • PUMA - MK I controller - MK II controller - MK III controller - UNIVAL controller • RCCL • Level II • Kali • ALVIN 4
  5. 5. PUMA 5
  6. 6. PUMA (Programmable, Universal Machines for Assembly) • Vendor: Unimation,Inc. • Arm Types: 260 Series, 550 Series, 560 Series 552 Series, 562 Series Series Series, Series 760 Series • Controller Types: Mark I, Mark II, Mark III, UNIVAL • Robot Programming Language: VAL, VAL VAL II 6
  7. 7. 7
  8. 8. 8
  9. 9. 9
  10. 10. 10
  11. 11. 11
  12. 12. 12
  13. 13. 13
  14. 14. 14
  15. 15. 15
  16. 16. 16
  17. 17. 17
  18. 18. 18
  19. 19. 19
  20. 20. 20
  21. 21. 21
  22. 22. 22
  23. 23. 23
  24. 24. 24
  25. 25. 25
  26. 26. PUMA MK III Controller Configuration 1. control card set [1] LSI-11/73 CPU board [2] 64 KW RAM board [3] quad serial board [4] parallel I/O board [5] A interface card [6] B interface card [7] digital servo boards [8] arm signal interface board 26
  27. 27. 2. 2 power card set [1] C interface board [2] high power function board [3] power amplifier boards - PWM type 27
  28. 28. Servo Code Block Diagram Main Timer Host Interrupt Interrupt Initialization Disable Host Interrupt Deferred NO Command ? YES Wait for Read interrupt Encoder Save Execute C Counter t command immediate in buffer command Enable Host Interrupt Return Position/current control Deferred Command Execution Return R t 28
  29. 29. 29
  30. 30. 30
  31. 31. 31
  32. 32. UNIVAL 32
  33. 33. UNIVAL Block Diagram Unival Controller Torque Servo Expansion Processor Control Memory Board Module (Optional) CX Module Distribution VDT Arm Interface Board Board Disk Drive Aux. Port Smart I/O Teach Pendant Major Power Minor Power Amplifier Amplifier Signal Connection Board Robot Arm 33
  34. 34. Typical Controller with Analog Torque Loop Torque Loop / Amplifier DAC M E N AXES Digital Servo and Robot Controller N Axes 34
  35. 35. UNIVAL Torque Processor Loop Software Hardware Torque + Kp + Linearli er Linearlizer PWM Chip Power Amp Command - + Motor Ki 1-Z -1 + A/D + Current Offset 35
  36. 36. UNIVAL Signal Loops Arm Cable SCM AIB Command Position from and TPB PWM ROBOT VAL velocity Servos AMPS Current Feedback Feedback from Robot Encoders VAL Position Feedback upon Startup Potentio- meters 36
  37. 37. UNIVAL Servo System Block Diagram Arm Interface Module M E Servo Torque 3 Axes 3 Axes and Processor PWM Chip Power Robot Module AMP Control Module A/D 3 Axes 3 Axes PWM Chip Power AMP MUX Current Feedback Encoder Feedback 37
  38. 38. PUMA Control with VAL 1. The hardware does not provide sufficient processing power --- it is too slow for real-time control real time control. 2. The system is not designed to communicate with external computer in a flexible way The I/O module is only able to way. provide control signals and process elementary information received from sensors. 3. Memory resources may not be sufficient for large programs. 4. Communication with other computers is limited to interactions with VAL. 5. Inverse kinematics software is not available, hence, trajectories , , j cannot be defined off-line. 6. Control of the arm is performed at the joint level, providing only joint position regulation. 38
  39. 39. PUMA Control without VAL Advantages : 1. The ability to implement closed-loop control of the manipulator in both task and joint configuration spaces. 2. The ability to use the more powerful processor for inverse kinematics, for trajectory planning, and for control in real-time 3. The ability to test advanced mathematical models for dynamics and real-time control 4. The ability to connect sensory devices through serial, parallel or bus interface 5. The ability to create a new control language which includes commands not available in VAL. 6. The ability to access to a database. 39
  40. 40. Alternative Hardware Configurations 1. The PUMA's Arm Interface Board is disconnected from the DRV- 11 card and connected to the parallel interface card in the external machine(only for MK I controllers). 2. Both computers are connected through a standard DEC parallel interface, which offers higher data rates than those of a serial interface. 3. A custom-built interface for bus-to-bus connection can be used. This interface contains a FIFO (First In First Out) hardware buffer. buffer 4. Serial interface through the DLV-11J serial card in the PUMA controller is used. used 40
  41. 41. RCCL 41
  42. 42. RCCL ( Robot Control quot;Cquot; Library) RCCL, Purdue (1983) RCCL, McGill ( (1985) ) RCCL, JPL RCCL, McGill (1986) (1986) Level II, Cybotech (1987) Timix, U. of Pennsylvania RCCL, McGill (1988) (1988) Kali, McGill (1988) ALVIN, ALVIN Purdue Multi-RCCL, Multi RCCL JPL (1990) RWRCCL, RWU (2001) 42
  43. 43. Ph i l Implementation of RCCL Physical I l t ti f VAX Computer p VAX COMPUTER RCCL RCCL PROGRAM PROGRAM SERIAL LINE FOR LOADING I/O CONTROL HIGH SPEED PROGRAM PARALLEL LINK TEACH LSI 11 CPU PENDANT COMMUNICATION I/O CONTROLLER A/D CONVERTER 6503 JOINT CONTROLLERS UNIMATION CONTROLLER TO ROBOT 43
  44. 44. RCCL Block Diagram (Purdue) VAX 780 UNIBUS Serial FIFO Unimation Controller Teach CRT Floppy ppy Aux pend. pend CPU RAM ROM DLV-11J FIFO LSI-11 Qbus CLOCK DRV-11 DRV 11 SERVO Digital Analog Power INTERFACE Servo Servo AMP. current Arm Cable encoder pulses PUMA 560 ARM 44
  45. 45. 45
  46. 46. RCCL Block Diagram Robot Arm Current command C t d Motor t t M t state Robot Controller Servomotor Control Arm Interface Torque-current mapping Angles-encoders mapping Safety limits Arm-dependent data Set points Arm state Positions Trajectory Arm World Model Generation Kinematics Cartesian-joint Transformations Updates Cartesian Jacobian Equations Joint Interpolation Arm Compliance configuration Queue TG state Synchronization Motion requests q User’s Process 46
  47. 47. Internal Control-level Execution Sequence NORMAL TASK AND PROCESS EXECUTION DRIVER INTERRUPT HANDLER TAKES SWITCH TO CONTROL CONTROL PROGRAM MEMORY CONTEXT EXECUTE CONTROL: CYCLE read data from LSI 11 call RCI check routine write commands to LSI 11 call control function RESTORE MEMORY CONTEXT INTERRUPT HANDLER RETURNS NORMAL TASK AND PROCESS EXECUTION 47
  48. 48. Execution Cycle at the Control Level CONTROL LEVEL TASK WAIT FOR NEXT CYCLE DATA CONTROL FROM INTERNAL DIRECTIVE LSI 11 CHECKING OPEN DIRECTIVE COMMANDS CONTROL IDLE TO COMMAND FUNCTION LSI 11 CHECKING NORMAL EXECUTION CLOSE RELEASE DIRECTIVE DIRECTIVE OR ERROR CONDITION 48
  49. 49. 49
  50. 50. Position E P iti Equations ti At point p1, p1 = Z T61 E1 T61 = Z-1 p1 E1-1 = R1 p1 T1 At point p2, p1 = Z T62 E2 T61 = Z-1 p2 E2-1 = R2 p2 T2 Let 2p1 = R2-1 R1 p1 E1 E2-1 From point p1 to point p2, T6 = R2 2p1 Drive(s) T2 where Dri e(0) = Identity here Drive(0) Identit Drive(1) = 2p1-1 p2 Generally, T6 = R P Drive Comply T 50
  51. 51. LEVEL II 51
  52. 52. Th Four Levels of the Robot The F L l f th R b t Programming Environment Menu Interface Application Program Level II Library Device Driver 52
  53. 53. RC-X Control Boards Tape Programming System Hand Drive Console Securities Control Supervisor Geometric Environment I/O Board Operator Board Board B d TTY Mother Board Sensor Interface Axis Board 1 Axis Board 2 Axis Board 3 53
  54. 54. 54
  55. 55. Kali 55
  56. 56. K li Kali (A creature with many arms in Hi d i Hind mythology) th l ) Characteristics: 1. Programming and control of multiple manipulators operating in close cooperation. p g p 2. Hybrid force/velocity task space with dynamic compensation. compensation 3. Selection of the largest amount of off-the-shelf computing technology. technology 4. Open architecture design. 56
  57. 57. High Performance Computing System Current trends: 1. Super or mini-super computers. 2. Workstations with special very high performance floating p y g p g point accelerations. 3. Special purpose chips such as DSPs (AT&T, TI., etc). 4. Many single board computers operating in parallel. 57
  58. 58. Kali Software Directory 58
  59. 59. Kali src Directory 59
  60. 60. Kali Block Diagram SUN 3 workstation ethernet link VSB ethernet CPU 1 CPU 2 CPU 3 CPU 4 CPU 5 memory board 68020 68020 68020 68020 68020 board VME BUS DAC robot I/O p parallel board board I/O board power power force/torque amplifier on/off sensor brake encoder release pulses PUMA 560 ROBOT ARM 60
  61. 61. R Run-Time Structure Ti St t 1. 1 Synchronous processes i. Trajectory generator ii. Servo control iii. iii I/O process 2. Asynchronous process i. User process ii.Dynamic computations Processor Communication 1. Message passing 2. Shared memory 61
  62. 62. Real time Computing Real-time 1. Software support Host: Unix-based workstation Target: real-time operating system (VxWorks) Target-host communication - ethernet T th t i ti th t 2. 2 Hardware support Servo CPUs: 1 ms servo rate PID control algorithm One CPU for three joints (CPU3 and CPU4) Computational CPUs: I. User program, trajectory generator, kinematics (CPU1) ii. Dynamic computation (CPU2) iii. Supervisor - all I/O information handling(CPU0) 62
  63. 63. 63
  64. 64. Kali Graphic Simulator 64
  65. 65. Kali Graphic Simulator 65
  66. 66. Kali Graphic Simulator 66
  67. 67. Spatial Relationships (Ring Structures) B M T A D C = Identity where B : the Manipulator base transform M : the manipulator transform T : the tool transform A : the accommodation transform D : th d i transform the drive t f C : the goal position of the control frame 67
  68. 68. 68
  69. 69. 69
  70. 70. ALVIN 70
  71. 71. ALVIN (ALmost Very Intelligent, but Not) - Purdue's new robot system - Named by Prof. C S G Lee - Advanced system in hardware and software 71
  72. 72. 72 72
  73. 73. 73 73
  74. 74. ALVIN Block Diagram(Stage I) SUN 3 workstation ethernet link VSB ethernet CPU 1 CPU 2 memory board 68030 68030 board VMEbus VMEbus adaptor Qbus Unimation MK I adaptor PUMA controller PUMA 560 ROBOT ARM 74
  75. 75. ALVIN Block Diagram (Stage I) VMEbus System VSB Engineering Ethernet CPU 0 CPU 1 Shared- Computer Controller 68030 68030 Memory Network VMEbus Bus Adaptor Unimation MK I Controller Bus Adaptor Qbus DRV-11 SERVO Digital Analog Power INTERFACE Servo Servo AMP. CLOCK Arm Cable PUMA 560 ARM 75
  76. 76. ALVIN Block Diagram (Stage II) Engineering Computer Network SUN VMEbus System workstation Ethernet Card CPU 0 (68040) CRT CPU 1 (68040) CPU 2 (68040) CRT Unimation Unimation MK III CPU 3 (68030) MK I Controller CPU 4 (68030) Controller Qbus Adaptor Shared Memory Qbus Adaptor VMEbus Adaptor ADC ADC VMEbus Adaptor DRV-11 A-interface Arm Interface B-interface Digital Servo Digital Servo g Paddle Clock / term. Arm Cable Analog Servo Paddle Arm Cable PUMA 562 PUMA 560 Robot Arm Robot Arm 76
  77. 77. optinal i l disk teach aux. Super. Alter digimig Spare terminal driver pendant Quad serial Quad serial board b d board b d user I/O PCA I/O CPU CMOS memory connect interface board board operator A panel interface C B POT CX PCA interface interface digital servo ENC boards power amplifier high power servomotors function bd. potentiometers encoders arm signal board PUMA MK III CONTROLLER 77
  78. 78. VME BUS VMEbus adaptor VME BUS SYSTEM UNIMATION CONTROLLER Qbus adaptor A interface C B POT CX PCA interface interface digital servo ENC boards power amplifier high power servomotors function bd. potentiometers encoders arm signal board PUMA MK III Controller Modified f M difi d for ALVIN I 78
  79. 79. VME BUS Parallel I/O ADC DAC Robot I/O Board Board Board Board Motor Current ENC POT C CX PCA interface power amplifier high power servomotors function bd. potentiometers encoders arm signal board PUMA MK III Controller Modified for ALVIN II 79
  80. 80. ALVIN Block Diagram (Stage III) SUN workstation k t ti VSB ethernet CPU 1 CPU 2 CPU 3 CPU 4 CPU 5 memory board 68040 68040 68040 68030 68030 board VME BUS Vision ADC DAC robot I/O parallel parallel Board board board board I/O board I/O board CCD force/torque Cameras power Unimation sensor amplifier MK I & III PUMA Controllers PUMA 560 & 562 ROBOT ARMS 80
  81. 81. R f References VME bus / VSB Wayne Fischer, quot;IEEE P1014 - A Standard for the High-Performance VME Bus,quot; IEEE Micro, Feb. 1985. Paul L. Borrill, quot;MicroStandards Special Feature: A Comparison of 32-Bit Buses,quot; IEEE Micro, Dec. 1985. Walter S. Heath, quot;Software Design for Real-Time Multiprocessor VMEbus Systems,quot; IEEE Micro, Dec. 1987. Micro Dec 1987 Shlomo Pri-Tal, quot;MicroStandards - The VME subsystem bus (VSB),quot; IEEE Micro, Apr. 1986. Craig MacKenna and Rick Main, quot;Backup support gives VMEbus powerful multiprocessing architecture,quot; Electronics, Mar. 22, 1984. VxWorks, VRTX [vrtx 1] James F. Ready, quot;VRTX: A Real-Time Operating System for Embedded Microprocessor Applications,“ IEEE Micro, Aug. 1986. [vrtx 2] J. Mattox, quot;A Multi-processor Approach to Using UNIX in a Real-Time Environment,“ WESCON '86 [vrtx 3] S J Doyle and P Bunce quot;Real-Time Multiprocessing Requirements,“ WESCON '86 S. J. P. Bunce, Real-Time Requirements 86 [vxworks 1] Jerry Fiddler and Leslie Kirby, quot;How to use VMEbus and Ethernet to build real-time distributed systems,“ VMEbus Systems, Sep.-Oct. 1987. [vxworks 2] Jerry Fiddler and David N. Wilner, quot;VxWorks/Unix Real-Time Network and Development System,“ Mini/MicroNortheast, 1986 [vxworks 3] Wind River Systems, VxWorks version 3.20, 1987. 81
  82. 82. PUMA/VAL [puma 1] B. Fisher and V. Hayward, quot;Communication Routines Between the LSI 11-03 and the 6503'squot;, Purdue University, (undated, unpublished) [puma 2] B. Fisher and V. Hayward, quot;Robot Controller,“ Purdue University, (undated, unpublished) [puma 3] Unimation Inc., quot;Controlling the PUMA Series 500 Robot Arm Without using VALquot;, (undated, unpublished, company confidential) [puma 4] R. Vistnes, quot;Breaking Away From VAL, or How to use your PUMA without using VAL,“ Stanford University, (undated, unpublished) [puma 5] A. Melidy and A. A. Goldenberg, quot;Operation of PUMA 560 Without VAL,“ Robots 9, 1985 [puma 6] S.-Y. Lee, A Study on the Wrist Servo-Controller of PUMA-760 Robot, MS Thesis, Dept of ME, KAIST, Feb., 1986. [puma 7] P. Nagy, quot;A New Approach to Operating a PUMA manipulator Without Using VAL “ Robots 12 and Vision '88, 1988 P Nagy VAL,“ '88 [puma 8] P. Nagy, quot;The Puma 560 Industrial Robot: Inside-Out,“ Robots 12 and Vision '88, 1988 [puma 9] Unimation Inc., Unimate Puma Robot Volume I - Technical Manual 398H1, Oct. 1981 [puma 10] Unimation Inc., PUMA MARK III Robot 500 Series Models 552/562 Equipment Manual 398AH1, Jan. 1987 [puma 11] R. M. Stanley, Host Control of PUMA 6503-based Servos Communication Protocol and Arm Specific information, June 1986. Unimation Inc., (company confidential) [p ] , y [puma 12] P. I. Corke, The Unimation PUMA servo system, MTM-226, CSIRO, 1994 , , , [val 1] Unimation Inc., User's Guide to VAL version 12, June 1980 [val 2] Unimation Inc., Programming Manual User's Guide to VAL II version 2.0, Part 1 - Control from the System terminal Part 2 - Communication with a Supervisory System Part 3 - Real-Time Path Control Dec. 1986. [val 3] B. Shimano, quot;VAL: A Versatile Robot Programming and Control System,“ Proc. COMPSAC 79 [val 4] B. E. Shimano, C. C. geschke, and C. H. Spalding III, quot;VAL-II: A New Robot Control System for Automatic Manufacturingquot; IEEE Intl Conf on Robotics, Mar. 1984 [unival 1] E. M. Onaga and L. L. Woodland, quot;Six-Axes Digital Torque Servo for Robotics,“ Robots 11/ISIR 17, 1987 [unival [ ni al 2] Unimation Inc UNIVAL Robot Controller - 19 inch Rack Mo nt Eq ipment Man al Apr 1988 Inc., Mount Equipment Manual Apr., LEVEL II [level II 1] R. Guptill and P. Stahura, quot;Multiple Robotic Devices: Position Specification and Coordination,“ IEEE Intl Conf. Robotics and Automation, 1987 82
  83. 83. RCCL ( a Robot Control C Library) [rccl 1] V. Hayward, Robot Real Time Control User's Manual, TR-EE 83-42, School of Electrical Engineering, Purdue Univ., Oct. 1983. g g [rccl 2] V. Hayward, Introduction to RCCL: A Robot Control 'C' Library, TR-EE 83-43, School of Electrical Engineering, Purdue Univ., Oct. 1983. [rccl 3] V. Hayward, RCCL User's Manual Version 1.0, TR-EE 83-46, School of Electrical Engineering, Purdue Univ., Oct. 1983. [rccl 4] V. Hayward, RCCL Version 1.0 and Related Software Source Code, TR-EE 83-47, V Hayward 10 Code 83-47 School of Electrical Engineering, Purdue Univ., Oct. 1983. [rccl 5] J. Roger, quot;VAX-LSI Interprocessor FIFOquot;, Purdue University, (undated, unpublished) [rccl 6] V. Hayward and R. P. Paul, quot;Robot manipulator Control Under Unix,“ ISIR 13/ Robots 7, 1983. [rccl 7] V. Hayward and R. P. Paul, quot;Robot manipulator Control under Unix RCCL: A Robot Control quot;Cquot; Library,quot; Intl J. Robotics Research Vol.5, No.4, 1986. Research, Vol 5 No 4 1986 [rccl 8] J. S. Lee, S. Hayati, V. Hayward, and J. E. Lioyd, quot;Implementation of RCCL, a robot control C library on a microVAX II,“ SPIE VoL. 726, Intelligent Robots and Computer Vision, 1986. [rccl 9] D. Kossman and A. Malowany, quot;A Multi-processor Robot Control System for RCCL under iRMX,“ IEEE Intl Conf Robotics and Automation, 1987. [rccl 10] A. S. Malowany and M. Pilon, quot;An RCCL Simulator for the Microbo Robot,“ Computers in Eng., ASME, 1988. A S M Pilon Robot “ Eng ASME 1988 [rccl 11] J. Lloyd, M. Parker, and R. McClain, quot;Extending the RCCL programming Environment to Multiple Robots and Processors,“ IEEE Intl Conf Robotics and Automation, 1988. Kali V. Hayward, L. Daneshmend, A. Nilakantan, and A. Topper, A Selection of Papers quot; KALI Project “ McGill Research Center for Intelligent Machines, Aug. 1, 1989. A. Topper, The McGill Robot I/O Board Rev B, May 1989. 83
  84. 84. End of Part 1 84
  85. 85. RCCL V i t Variants 1999 Gyoung H. Kim, Ph.D G H Ki Ph D
  86. 86. RCCL-related Systems • RCCL v1.0-based • Multi-RCCL • RWRCCL • Qrobot • ARCL 86
  87. 87. RCCL v1.0 v1 0 Configurations 87
  88. 88. RCCL (Purdue, 1983) VAX-11780 UNIBUS Serial FIFO Floppy Teach Aux Pend. CRT CPU RAM ROM DLV-11J FIFO LSI-11 Qbus CLOCK DRV-11 SERVO Digital Analog Power INTERFACE Servo Servo AMP. current Arm Cable Unimation Controller encoder pulses PUMA 560 ARM 88
  89. 89. RCCL Architecture 89
  90. 90. RCCL Routines 90
  91. 91. Routine Explanation (1) main(): The main program. (2) startup(): Connect quot;setpoint_n()quot; to the clock interrupt. Initialize and check hardware connection. (3) move(park): quot;parkquot; is a built-in position. Usually the robot starts from this position. (4) pumatask(): The actual user process. Users write only this routine. (5) release(): Stop the trajectory generator. (6) setpoint(): The trajectory generator. (7) j jnsend_n(): d () Send the setpoints to the robot controller in the global variable quot;chgquot;. (8) getobsj_n(): Get the actual robot position from the global variable quot;howquot;. (9) getobst_n(): Get the arm currents from the ADC from the global variable quot;howquot;. 91
  92. 92. ALVIN-RCCL (Purdue, 1991) 68030s/VxWorks VMEBus CPU #1 CPU #2 Shared Mem Mem. Bus adapter CRT Bus adapter Qbus CLOCK DRV-11 SERVO Digital Analog Power INTERFACE Servo Servo AMP. current t Arm Cable Unimation Controller encoder pulses PUMA 560 ARM 92
  93. 93. RCCL-ALVIN (P d RCCL ALVIN (Purdue, 1998) Host PC/QNX PCI Bus Bus adapter Bus adapter Qbus CLOCK DRV-11 SERVO Digital Analog Power INTERFACE Servo Servo AMP. current t Arm Cable Unimation Controller encoder pulses PUMA 560 ARM 93
  94. 94. Software Architecture of ALVIN RCCL ALVIN-RCCL 94
  95. 95. RCCL / RCI (Standard) Host Computer Host computer bus Serial Parallel I/O Floppy Teach Aux Pend. Unimation Controller CRT C CPU RAM ROM DLV-11J Parallel I/O LSI-11 Qbus CLOCK DRV-11 SERVO Digital Analog Power INTERFACE Servo Servo AMP. current Arm C bl A Cable encoder pulses PUMA ARM 95
  96. 96. Multi-RCCL • Multi-RCCL v5.0 John Lloyd and Vincent Hayward, 1992. Official release of Multi-RCCL. • Multi-RCCL v5.1 John Lloyd, 1997. Simulation mode on Linux. • Multi-RCCL v5.1.4 Torsten Scherer, 1999. Unofficial modifications for Linux Linux. 96
  97. 97. Hardware Architecture of Multi-RCCL 97
  98. 98. RWRCCL • RWRCCL(Roger Williams RCCL): RCCL modified by Matthew Stein at Roger Williams University in 2000. • Configuration – ARM: a single puma560 only. – H d Hardware: PC + Trident TRC 004/006 b T id t boards. d – Software: RCCL ported to rtlinux. Position control is added to RCCL. RCCL 98
  99. 99. RWRCCL (TRC Boards) Host PC/Linux ISA bus TRC004 board Unimation Controller U i ti C t ll TRC006 Board Power amplifier Arm Cable PUMA ARM 99
  100. 100. Hardware Architecture of RWRCCL 100
  101. 101. Software A hit t S ft Architecture of RWRCCL f 101
  102. 102. Graphic Simulator of RWRCCL 102
  103. 103. QRobot • A multitasking QNX/PC b ltit ki QNX/PC-based robot control system. d b t t l t • Developed at Clemson University in 1998. • Target arm: PUMA 560. • Hardware: PC + MultiQ board + Unimation controller. 103
  104. 104. RCCL-QRobot (MultiQ Board) Host PC PCI bus MultiQ board Unimation Controller U i ti C t ll Preamplifiers filtering circuits Power amplifier Arm Cable PUMA ARM 104
  105. 105. ARCL (Advanced Robot Control Language) • Developed by Peter I. Corke, 1993. • Inspired by an early version of RCCL. • Monitor and Interpreter to run VAL-II programs. 105
  106. 106. Structure of ARCL 106
  107. 107. End of Part 2 107
  108. 108. Porting and Running the RCCL on a R l ti Real-time Li Linux/PC /PC 2005 Gyoung H. Kim, Ph.D H Kim Ph D 108
  109. 109. RCCL Poring • Porting RCCL v1.0 to Linux. • Developing a graphic simulator for RCCL v1.0. • Porting RCCL v1.0 to Linux/RTAI. • Porting RCCL v1.0 to Linux/Xenomai. • Patching Multi-RCCL for a newer Linux. • Patching RWRCCL for a newer Linux. Linux • Porting RWRCCL to Linux/RTAI. g 109
  110. 110. Test Environment • RCCL: v1.0 (1983) • Simderella: v2.0.2 (1995) • gcc: 2 9 x 3 0 4 3 2 2.9.x, 3.0.4, 3.2 • Linux distribution: - Redhat 7.3, Redhat 8.0 - D bi woody, Debian sarge Debian d D bi • CPU: Pentium III, Pentium 4, VIA C3 • RTAI - Linux kernel: 2.4.19 (only for RTAI) - RTAI distribution: 2.4.11 - RTAI modules used by RCCL: y rtai, rtai_sched, rtai_fifos, rtai_shm, rtai_libm 110
  111. 111. RCCL v1.0 on Linux 111
  112. 112. Running Modes of RCCL (Modes are specified at h/switch.h) 1. PLAN mode (no signal or interrupt) - setpoint_n() is repeatedly called until completed = 0. 2. FAKE mode (signal – simulated interrupt) - At every 28ms, clock() generate a signal. - Si Signal h dl calls setpoint_n(). l handler ll t i t () 3. REAL mode (hardware interrupt) - At every 28ms, a hardware interrupt signal is generated from the Unimation controller. - Interrupt service routine calls setpoint n(). setpoint_n(). 112
  113. 113. Running RCCL on Linux (BSD mode with lib5) • RCCL v1.0 written in pre-ANSI C run on BSD Unix. • While older Linux distributions with lib5 were BSD-flavored, recent Linux distributions with lib6 are SYSV-flavored. • To port RCCL v1.0 to Linux, (1) Install BSD headers and libraries. On debian, apt-get install altgcc , p g g (2) Do the following modifications: - Change <signal.h> and <sgtty.h> to <bsd/signal.h> and <bsd/sgtty.h>, respectively. - Implement nap( ) with usleep( ). - Insert more FAKE and REAL mode switches for cleaner compiling. - Correct up some K & C C-language syntax. - Remove malloc_l( ) and free_l( ) routines. (3) Link the BSD library with the option -lbsd option, -lbsd. 113
  114. 114. Running RCCL on Linux g (SYSV mode with libc6) (1) Ch Change f from BSD stuffs t SYSV t ff to - sgtty to termio - nap( ) to usleep( ) (2) Change pre-ANSI C stuffs to gcc - const( ) to rccl_const ( ) (3) Change clock( ) location - In RCCL v1.0, separated clock.c and vfork ( ) were used. - Add clock( ) to main.c and replace vfork ( ) with fork ( ). ( ) ot e o o (4) Do the following minor modifications: g o od cat o s - Add print.c for more printouts. - Add printst( ) to jnsend_n( ) of misc.c - Create linux directory for examples examples. - Move main.c from src to linux directory. - Adjust the delay parameter of usleep( ). - Add FAKE_DEBUG for better debugging FAKE DEBUG debugging. 114
  115. 115. Simderella (A general-purpose robot simulator for kinematics) Current joint angles Simderella connel (robot controller) Desired joint angles, velocities, accelerations simmel (f (forward kinematics calculator) d ki ti l l t ) Homogeneous matrices of robot links bemmel (X-windows drawing program) Graphic visualization 115
  116. 116. RCCL + Simderella (on-line) (Simderella as a graphic simulator of RCCL) For on-line simulation, 1. 1 Modify connel/main.c so that desired joint angles are from j6, connel/main c j6 a global variable of RCCL. 2. Combine the main.c of RCCL and the main.c of connel. After setpoint_n( ) setpoint n( ), call user_move_robot( ) at each clock signal user move robot( signal. 3. Modify user_move_robot( ) and move_robot( ) of connel/moving.c to bypass some dynamics and kinematics calculations. 4. Adjust D-H parameters of PUMA arms. 5. Link RCCL libraries when compiling connel/main.c. p g 6. Run Simderella. 116
  117. 117. Screenshot of RCCL + Simderella • g p Right window: connel’s window printing out joint angles g j g from a RCCL program. • Left window: bemmel’s window drawing a PUMA arm with the joint angles. 117
  118. 118. RCCL + Simderella (off-line) (off- For off-line simulation, 1. Modify connel/main.c so that desired joint angles are read from an external file, @.out and they are fed into user_move_robot( ). 2. Modify user_mode_robot( ) and move_robot( ) of connel/moving.c to bypass some dynamics and kinematics calculations. 3. Adjust D-H parameters of PUMA arms. 4. 4 Compile connel/main c connel/main.c. 5. Run a RCCL program with “-d” option. 6. Copy @.out to connel directory. 7. Run Simderella. 118
  119. 119. RCCL v1.0 on Linux/RTAI 119
  120. 120. Porting RCCL to RTAI Software Architecture 120
  121. 121. Software Components 1. User-space task (1) User command monitor: - Send start/stop/break/resume command to RT tasks in the kernel space. - Receive fifo messages from the RT tasks - Print out the content of the shared memory. memory 2. Kernel-space tasks (1) RT task #1: the main.c of RCCL (non-periodic) (2) RT task #2: the TG + RTC + moper of RCCL (periodic task) (3) fifo handler: - Send commands to the RT tasks. -R i d f Receive commands from User command monitor U d it 3. Shared memory: Store all the output data from RT tasks. 121
  122. 122. RTAI Porting Procedure 1. Kernel memory allocation Change malloc( ) and free ( ) to kmalloc( ) and kfree( ) respectively ), respectively. 2. File output/stdout/stderr Make shm_printf( ) and redirect all the file output/stdout/stderr to the shared memory. 3. Modify kernel vprintf( ) to handle float variables. 4. Replacement of glibc (1) sprintf – kernel’s lib.a (2) strcat, strcpy, strlen - #include <rtai.h> (3) math library – rtai_libm.o module (4) others – gcc’s bootstarp libgcc.a 5. Follow the compiling/linking options of RTAI. 6. Distribution- or CPU specific options: Distribution CPU-specific (1) Redhat 7.3: use kgcc without -mpreferred-stack-boundary=2. (2) Redhat 8.0: use gcc with -mpreferred-stack-boundary=2. (3) VIA EPIA 800 board: use –m586 m586 122
  123. 123. RTAI Running Procedure 1. 1 Install t i I t ll rtai modules d l modprobe rtai modprobe rtai_sched modprobe rtai_fifos modprobe rtai_shm modprobe rtai_libm 2. Install the RCCL realtiime module insmod rccl.o 3. Start the “user command monitor” as ./rccl_app 4. Type s/q/b/r keys at the prompt of “rccl_app” to start/quit/break/resume realtime RCCL tasks. q 5. After the RCCL tasks are finished, joint angles and other information are saved to file “@.out” 123
  124. 124. RCCL Porting Results • RCCL on BSD- and SYSV-mode Linux – PLAN/FAKE/REAL modes can be compiled. – PLAN and FAKE modes run correctly. – Clock intervals less than 1 ms work. • RCCL + Simderella in on-line mode – FAKE mode with 30ms clock interval work. – Faster than 30ms is impossible due to the slow socket p communication of Simderella. • RCCL on RTAI – Clock rate 50Hz (20ms) works without any p ( ) y problem. – All the examples which do not need a real arm can be compiled and run correctly. – A faster clock rate is possible when moper functions are needed. – For the Unination controller still with the digital servo boards, clock interrupt signals should be received from the Unimation controller to prevent clock drifts. t ll t t l k d ift 124
  125. 125. RWRCCL on Linux/RTAI 125
  126. 126. Analysis Results of RWRCCL • Routines are fully documented documented. • Trace and analysis of the program execution flow are done. • Documentation on the program execution flow is almost done. 126
  127. 127. Updating RWRCCL to a newer RTLinux • Environment: - debian sarge 3.1r1 - gcc 3 3 6 3.3 - glibc 2.3.2 • RTLinux: - rtlinux-3.2-rc1 - kernel 2.4.27 • Patches (1) gcc-dependent: newline in a literal string gcc dependent: string, sys_errlist, varargs.h (2) imake configuration bug. 127
  128. 128. Porting Results of RWRCCL-rtlinux • Trajectory generation sampling interval: 27ms • Servo sampling interval: 0.9 ms (pos t o control ode, (position co t o mode, PID control) co t o ) • Simulation mode needs a slower sampling rate due to the slow X11 graphics. • Dry running mode in real-time is added Dry-running real time added. 128
  129. 129. Porting RWRCCL to RTAI • RTAI: RTAI - rtai-3.2 - kernel 2.4.27 • Patches (1) rtlinux-dependent directories: $RCCL/jls (kernel modules) $RCCL/puma (user-space routines) (2) Utilities for the puma interface card: $RCCL/rtlinux (3) Conflicting macro definition: FREE(x) is changed to RCCL_FREE(x) (FREE(x) is also defined at rtai_lxrt.h) rtai lxrt h) 129
  130. 130. Ongoing Projects • Modifying RCCL for running various arms. • Porting RCCL v1 0 to Xenomai v1.0 Xenomai. • Developing a front-end interpreter for RCCL. • Modifying RCCL v1.0 for running multiple arms in independent and/or coordinative modes. • Running RCCL on Non-X86 CPUs. 130
  131. 131. End f P t E d of Part 3 131

×