- 1989, 1999, 2005
Gyoung H. Kim, Ph.D.
gyounghkim@open-robotics.com
Programming and Controlling PUMA Robot Arms 1989, 1999, 2005 - - PowerPoint PPT Presentation
Programming and Controlling PUMA Robot Arms 1989, 1999, 2005 Gyoung H. Kim, Ph.D. gyounghkim@open-robotics.com Contents I. Controlling PUMA Robot Arms with VAL, RCCL, Kali, or ALVIN, 1989. II. RCCL Variants and RCCL Porting Guide,
gyounghkim@open-robotics.com
(Programmable, Universal Machines for Assembly)
Initialization Wait for interrupt Timer Interrupt Disable Host Interrupt Read Encoder Counter Enable Host Interrupt Position/current control Deferred Command Execution Return Host Interrupt Save command in buffer YES Execute immediate command NO Return Deferred Command ?
Torque Processor Board Servo Control Module Expansion Memory (Optional) Arm Interface Board Distribution Board Major Power Amplifier Minor Power Amplifier Signal Connection Board Robot Arm Unival Controller VDT Disk Drive
Smart I/O Teach Pendant
DAC M E
N AXES Digital Servo and Robot Controller N Axes
Command
+ + + + +
Linearlizer
PWM Chip Current Offset A / D Motor
Power Amp
Hardware Software
Ki 1 - Z
Cable Position and velocity Servos VAL AMPS
TPB SCM AIB
PWM
ROBOT
Encoders Potentio- meters Position Feedback upon Startup Feedback from Robot Current Feedback Command from VAL
Processor Module A / D MUX Servo and Robot Control Module 3 Axes PWM Chip 3 Axes PWM Chip 3 Axes Power AMP M
E
3 Axes Power AMP
Arm Interface Module
Encoder Feedback Current Feedback
The hardware does not provide sufficient processing power
computer in a flexible way. The I/O module is only able to provide control signals and process elementary information received from sensors.
with VAL.
cannot be defined off-line.
joint position regulation.
1. The ability to implement closed-loop control of the manipulator in both task and joint configuration spaces.
kinematics, for trajectory planning, and for control in real-time
and real-time control
bus interface
commands not available in VAL.
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. 4. Serial interface through the DLV-11J serial card in the PUMA controller is used.
(1983) RCCL, McGill (1986) RCCL, McGill (1985) RCCL, McGill (1988) Level II, Cybotech (1987) Kali, McGill (1988) RCCL, JPL (1986) Multi-RCCL, JPL (1990) Timix,
(1988) ALVIN, Purdue RWRCCL, RWU (2001)
RCCL PROGRAM RCCL PROGRAM
VAX COMPUTER
COMMUNICATION I/O CONTROLLER
LSI 11 CPU
A/D CONVERTER TEACH PENDANT
6503 JOINT CONTROLLERS TO ROBOT
HIGH SPEED PARALLEL LINK SERIAL LINE FOR LOADING I/O CONTROL PROGRAM UNIMATION CONTROLLER
LSI-11 RAM ROM DLV-11J DRV-11 Qbus CRT Floppy Teach pend. Aux Digital Servo Analog Servo Power AMP. SERVO INTERFACE CLOCK Arm Cable current encoder pulses
PUMA 560 ARM Unimation Controller
FIFO FIFO UNIBUS
VAX 780
Serial
Servomotor Control Arm Interface
Torque-current mapping Angles-encoders mapping Safety limits Arm-dependent data
World Model
Transformations Equations
Trajectory Generation
Cartesian Joint Interpolation Compliance
Arm Kinematics
Cartesian-joint Jacobian Arm configuration
Queue User’s Process
Arm state Set points Current command Motor state
Motion requests
Positions Updates
TG state Synchronization
Robot Controller
AND PROCESS EXECUTION SWITCH TO CONTROL PROGRAM MEMORY CONTEXT RESTORE MEMORY CONTEXT NORMAL TASK AND PROCESS EXECUTION EXECUTE CONTROL: CYCLE read data from LSI 11 call RCI check routine write commands to LSI 11 call control function DRIVER INTERRUPT HANDLER TAKES CONTROL INTERRUPT HANDLER RETURNS
FOR NEXT CYCLE IDLE CONTROL FUNCTION INTERNAL CHECKING COMMAND CHECKING
CONTROL LEVEL TASK
CONTROL DIRECTIVE NORMAL EXECUTION RELEASE DIRECTIVE OR ERROR CONDITION OPEN DIRECTIVE CLOSE DIRECTIVE DATA FROM LSI 11 COMMANDS TO LSI 11
p1 = Z T61 E1 T61 = Z-1 p1 E1
= R1 p1 T1 At point p2, p1 = Z T62 E2 T61 = Z-1 p2 E2
= R2 p2 T2 Let 2p1 = R2
From point p1 to point p2, T6 = R2
2p1 Drive(s) T2
where Drive(0) = Identity Drive(1) = 2p1
Generally, T6 = R P Drive Comply T
Driver Level II Library Application Program Menu Interface
Axis Board 1 Axis Board 2 Supervisor Board Geometric Operator Board Environment Board Tape Drive Programming Console Axis Board 3 TTY Sensor Interface System Securities Hand Control I/O
1. Programming and control of multiple manipulators
2. Hybrid force/velocity task space with dynamic compensation. 3. Selection of the largest amount of off-the-shelf computing technology. 4. Open architecture design.
1. Super or mini-super computers. 2. Workstations with special very high performance floating point accelerations. 3. Special purpose chips such as DSPs (AT&T, TI., etc). 4. Many single board computers operating in parallel.
68020 CPU 2 68020 CPU 3 68020 CPU 4 68020 CPU 5 68020 memory board DAC board power amplifier robot I/O board parallel I/O board force/torque sensor
VME BUS PUMA 560 ROBOT ARM
encoder pulses brake release power
VSB
ethernet board
SUN 3 workstation
ethernet link
ii.Dynamic computations
Host: Unix-based workstation Target: real-time operating system (VxWorks) Target-host communication - ethernet
Servo CPUs: 1 ms servo rate PID control algorithm One CPU for three joints (CPU3 and CPU4) Computational CPUs:
B : the Manipulator base transform M : the manipulator transform T : the tool transform A : the accommodation transform D : the drive transform C : the goal position of the control frame
68030 CPU 2 68030 memory board
VMEbus PUMA 560 ROBOT ARM VSB
ethernet board
SUN 3 workstation
ethernet link VMEbus adaptor Qbus adaptor
Unimation MK I PUMA controller
Qbus Digital Servo Analog Servo Power AMP. SERVO INTERFACE CLOCK Arm Cable
PUMA 560 ARM Unimation MK I Controller
VMEbus Bus Adaptor Bus Adaptor CPU 0 68030 CPU 1 68030 Shared- Memory Ethernet Controller VSB Engineering Computer Network
VMEbus System
workstation CRT Ethernet Card CPU 0 (68040) CPU 1 (68040) CPU 2 (68040) CPU 3 (68030) CPU 4 (68030) Shared Memory VMEbus Adaptor VMEbus Adaptor CRT
VMEbus System Engineering Computer Network Unimation MK III Controller PUMA 562 Robot Arm
Digital Servo Paddle Arm Cable
B-interface
ADC
A-interface
Qbus Adaptor ADC DRV-11 Arm Interface Digital Servo Clock / term. Analog Servo Paddle Arm Cable
Unimation MK I Controller PUMA 560 Robot Arm
Qbus Adaptor
boards power amplifier servomotors B interface A interface CPU board potentiometers encoders arm signal board high power function bd. C interface
panel I/O PCA user connect CX PCA CMOS memory board I/O interface terminal disk driver teach pendant aux. Super. Alter digimig Spare Quad serial board Quad serial board ENC POT
PUMA MK III CONTROLLER
boards power amplifier servomotors B interface A interface potentiometers encoders arm signal board high power function bd. C interface CX PCA ENC POT
Qbus adaptor VMEbus adaptor
VME BUS
VME BUS SYSTEM UNIMATION CONTROLLER
amplifier servomotors potentiometers encoders arm signal board high power function bd. C interface CX PCA ENC POT
VME BUS Robot I/O Board Parallel I/O Board DAC Board ADC Board Motor Current
68040 CPU 2 68040 CPU 3 68040 CPU 4 68030 CPU 5 68030 memory board power amplifier parallel I/O board force/torque sensor
VME BUS PUMA 560 & 562 ROBOT ARMS VSB
ethernet board
SUN workstation
DAC board
Unimation MK I & III PUMA Controllers
parallel I/O board ADC board robot I/O board Vision Board CCD Cameras
IEEE Micro, Feb. 1985. Paul L. Borrill, "MicroStandards Special Feature: A Comparison of32-Bit Buses," IEEE Micro, Dec. 1985. Walter S. Heath, "Software Design for Real-Time MultiprocessorVMEbus Systems," IEEE Micro, Dec. 1987. Shlomo Pri-Tal, "MicroStandards - The VME subsystem bus (VSB)," IEEE Micro, Apr. 1986. Craig MacKenna and Rick Main,"Backup support gives VMEbus powerful multiprocessing architecture," Electronics, Mar. 22, 1984.
[vrtx 1] James F. Ready, "VRTX: A Real-Time Operating System for Embedded Microprocessor Applications,“ IEEE Micro, Aug. 1986. [vrtx 2] J. Mattox, "A Multi-processor Approach to Using UNIX in a Real-Time Environment,“ WESCON '86 [vrtx 3] S. J. Doyle and P. Bunce, "Real-Time Multiprocessing Requirements,“ WESCON '86 [vxworks 1] Jerry Fiddler and Leslie Kirby, "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, "VxWorks/Unix Real-Time Network and Development System,“ Mini/MicroNortheast, 1986 [vxworks 3] Wind River Systems, VxWorks version 3.20, 1987.
[puma 1] B. Fisher and V. Hayward, "Communication Routines Between the LSI 11-03 and the 6503's", Purdue University, (undated, unpublished) [puma 2] B. Fisher and V. Hayward, "Robot Controller,“ Purdue University, (undated, unpublished) [puma 3] Unimation Inc., "Controlling the PUMA Series 500 Robot Arm Without using VAL", (undated, unpublished, company confidential) [puma 4] R. Vistnes, "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, "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, "A New Approach to Operating a PUMA manipulator Without Using VAL,“ Robots 12 and Vision '88, 1988 [puma 8] P. Nagy, "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) [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
[val 3] B. Shimano, "VAL: A Versatile Robot Programming and Control System,“ Proc. COMPSAC 79 [val 4] B. E. Shimano, C. C. geschke, and C. H. Spalding III, "VAL-II: A New Robot Control System for Automatic Manufacturing" IEEE Intl Conf on Robotics, Mar. 1984 [unival 1] E. M. Onaga and L. L. Woodland, "Six-Axes Digital Torque Servo for Robotics,“ Robots 11/ISIR 17, 1987 [unival 2] Unimation Inc., UNIVAL Robot Controller - 19 inch Rack Mount Equipment Manual Apr., 1988
LEVEL II
[level II 1] R. Guptill and P. Stahura, "Multiple Robotic Devices: Position Specification and Coordination,“ IEEE Intl Conf. Robotics and Automation, 1987
[rccl 1] V. Hayward, Robot Real Time Control User's Manual, TR-EE 83-42, School of Electrical Engineering, Purdue Univ., Oct. 1983. [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, School of Electrical Engineering, Purdue Univ., Oct. 1983. [rccl 5] J. Roger, "VAX-LSI Interprocessor FIFO", Purdue University, (undated, unpublished) [rccl 6] V. Hayward and R. P. Paul, "Robot manipulator Control Under Unix,“ ISIR 13/ Robots 7, 1983. [rccl 7] V. Hayward and R. P. Paul, "Robot manipulator Control under Unix RCCL: A Robot Control "C" Library," Intl J. Robotics Research, Vol.5, No.4, 1986. [rccl 8] J. S. Lee, S. Hayati, V. Hayward, and J. E. Lioyd, "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, "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, "An RCCL Simulator for the Microbo Robot,“ Computers in Eng., ASME, 1988. [rccl 11] J. Lloyd, M. Parker, and R. McClain, "Extending the RCCL programming Environment to Multiple Robots and Processors,“ IEEE Intl Conf Robotics and Automation, 1988.
Kali
KALI Project “ McGill Research Center for Intelligent Machines, Aug. 1, 1989.
LSI-11 RAM ROM DLV-11J DRV-11 Qbus CRT Floppy Teach Pend. Aux Digital Servo Analog Servo Power AMP. SERVO INTERFACE CLOCK Arm Cable current encoder pulses
PUMA 560 ARM Unimation Controller
FIFO FIFO UNIBUS
VAX-11780
Serial
(1) main(): The main program. (2) startup(): Connect "setpoint_n()" to the clock interrupt. Initialize and check hardware connection. (3) move(park): "park" 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) jnsend_n(): Send the setpoints to the robot controller in the global variable "chg". (8) getobsj_n(): Get the actual robot position from the global variable "how". (9) getobst_n(): Get the arm currents from the ADC from the global variable "how".
Qbus CRT Digital Servo Analog Servo Power AMP. SERVO INTERFACE CLOCK Arm Cable current encoder pulses
PUMA 560 ARM Unimation Controller
Bus adapter Bus adapter
68030s/VxWorks
VMEBus Shared Mem.
CPU #1
Qbus Digital Servo Analog Servo Power AMP. SERVO INTERFACE CLOCK Arm Cable current encoder pulses
PUMA 560 ARM Unimation Controller
Bus adapter Bus adapter
Host PC/QNX
PCI Bus
LSI-11 RAM ROM DLV-11J DRV-11 Qbus CRT Floppy Teach Pend. Aux Digital Servo Analog Servo Power AMP. SERVO INTERFACE CLOCK Arm Cable current encoder pulses
PUMA ARM Unimation Controller
Parallel I/O Parallel I/O
Host Computer
Serial Host computer bus
John Lloyd and Vincent Hayward, 1992. Official release of Multi-RCCL.
John Lloyd, 1997. Simulation mode on Linux.
Torsten Scherer, 1999. Unofficial modifications for Linux.
RCCL modified by Matthew Stein at Roger Williams University in 2000.
– ARM: a single puma560 only. – Hardware: PC + Trident TRC 004/006 boards. – Software: RCCL ported to rtlinux. Position control is added to RCCL.
PUMA ARM Unimation Controller
TRC006 Board TRC004 board
Host PC/Linux
ISA bus
Power amplifier
PUMA ARM Unimation Controller
Preamplifiers filtering circuits MultiQ board
Host PC
PCI bus
Power amplifier
rtai, rtai_sched, rtai_fifos, rtai_shm, rtai_libm
(Modes are specified at h/switch.h)
the Unimation controller.
recent Linux distributions with lib6 are SYSV-flavored.
(1) Install BSD headers and libraries. On debian, apt-get install altgcc (2) Do the following modifications:
<bsd/signal.h> and <bsd/sgtty.h>, respectively.
compiling.
(3) Link the BSD library with the option, -lbsd.
(BSD mode with lib5)
(1) Change from BSD stuffs to SYSV
(2) Change pre-ANSI C stuffs to gcc
(3) Change clock( ) location
(4) Do the following minor modifications:
(SYSV mode with libc6)
(A general-purpose robot simulator for kinematics)
connel
(robot controller)
simmel
(forward kinematics calculator)
bemmel
(X-windows drawing program)
Desired joint angles, velocities, accelerations Homogeneous matrices of robot links
Current joint angles Graphic visualization
Simderella
For on-line simulation, 1. Modify connel/main.c so that desired joint angles are from j6, a global variable of RCCL. 2. Combine the main.c of RCCL and the main.c of connel. After setpoint_n( ), call user_move_robot( ) at each clock signal. 3. Modify user_move_robot( ) and move_robot( )
calculations. 4. Adjust D-H parameters of PUMA arms. 5. Link RCCL libraries when compiling connel/main.c. 6. Run Simderella. (Simderella as a graphic simulator of RCCL)
from a RCCL program.
the joint angles.
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( )
calculations. 3. Adjust D-H parameters of PUMA arms. 4. Compile connel/main.c. 5. Run a RCCL program with “-d” option. 6. Copy @.out to connel directory. 7. Run Simderella.
(1) User command monitor:
kernel space.
(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:
Change malloc( ) and free ( ) to kmalloc( ) and kfree( ), respectively.
Make shm_printf( ) and redirect all the file output/stdout/stderr to the shared memory.
(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
(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
1. Install rtai modules 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. 5. After the RCCL tasks are finished, joint angles and other information are saved to file “@.out”
– PLAN/FAKE/REAL modes can be compiled. – PLAN and FAKE modes run correctly. – Clock intervals less than 1 ms work.
– FAKE mode with 30ms clock interval work. – Faster than 30ms is impossible due to the slow socket communication of Simderella.
– Clock rate 50Hz (20ms) works without any 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.
(1) gcc-dependent: newline in a literal string, sys_errlist, varargs.h (2) imake configuration bug.
(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)
independent and/or coordinative modes.