|4

m-I [q

mm

U

t.J

L_

' N

CALIBRATION OF THE ARONSON

6-DOF ROBOTIC PLATFORM

w

L

w

by

Amy Y. Lin

[m]

1

.'_ i

Rensselaer Polytechnic Institute

Electrical, Computer, and Systems Engineering Department

Troy, New York 12180-3590

m

August 1991

CIRSSE REPORT #102

L_

!
m

m

mm

I

_mm

gi

|

mm

E

I

N

i

im

I

m

m

m

ii

m

m

[]

|

m

I

m

z

IR

N

m

g

D

B

m

m

II

El

m
m

=

m

CONTENTS

m_

w

E_

= =

m

u

m

!_

LIST OF TABLES ................................. v

LIST OF FIGURES ................................ vi

ACKNOWLEDGMENT .............................. vii

ABSTRACT .................................... viii

1. INTRODUCTION ...... _ ........................ 1

1.1 Purpose ................................. 2

1.2 Objectives ................................. 3

1.3 Summary ................................. 3

2. HARDWARE SELECTION AND DESCRIPTION ............. 4

2.1 Platform Environment .......................... 4

2.1.1 Labeling Convention ....................... 4

2.1.2 Joint Range .......... .- . . ............... 6

2.1.3 Incremental Encoder with Whedco Interface .......... 7

2.2 Preliminary Approaches and Design Considerations .......... 7

2.2.1 Translational A.'ds ........................ 7

2.2.'2 Rotational Axis .......................... 9

2.2.3 Tilt Axis .............................. 9

2.3 Final Design ................................ 9

2.3.1 Translational Axis ........................ i0

2.3.2 Rotational Axis .......................... 13

2.3.3 Tilt Axis .............................. 13

2.4 Summary ................................. 13

3, HARDWARE INSTALLATION AND INFORMATION FLOW ....... 14

3.1 Equipment Supports ........................... 14

3.1.1 Linear Transducer ........................ i4

3.1.2 FlexibIe Transducer ........................ 20

3.1.3 Absolute Encoder ......................... 26

ii
mm

3.2 In_erconnection Box ........................... 26

3.3 CIRSSE Multiplexer ........................... 29

3.4 Parallel Interface/Timer Module ..................... 32

3.5 Hardware Calibration ............. _............... 32

3.6 Summary ................................. 33

4. PLATFORM CALIBRATION ......................... 34

4.1 Purpose .................................. 34

4.2 System Calibration ............................ 34

4.2.I Calibration Procedure ...................... 35

4.3 Power-up Calibration ........................... 39

4.4 Summary ................................. 40

5. SOFTWARE DESCRIPTION ......................... 41

5.1 Description of Functions ......................... 41

5.1.1 platcalPit.c ............................ 41

5.1.2 platcalLib.c ............................. 43

5.2 Calibration Programs . . ......................... 45

5.:) I-IeaderFiles..._i_.. '.. .......... ............. 46

5.4 Summary ................................. 46

6. CONCLUSION AND FUTURE WORK ................... 47

LITERATURE CITED .............................. 49

APPENDICES ................................... 50

A. SOFTWARE UPDATE ............................. 50

A.1 platcalPit.c ................................ 50

A.2 platcalPit.h ................................ 50

A.3 platcalLib.c ................................ 50

A.4 platcalLib.h ................................ 51

A.5 p[atcalConst.c ............................... 5i

A.6 ZeroIndexPosTest.c • 51

A.7 platPowerCal0.c .............................. 51

A.8 PowerCal0Test.c ............................. 52

m

m

I

m

mm

i

m

m

|

[]

m

|

I

m

F_

ml

m

!

q

i

el

m i

m!

0°.

Ili

f
N

N

-- i

!

A.9 platSysCa[.c ................................ 52

A.10 piatPowerCaI.c .............................. 53

A.11 [oad.sh ................................... 53

_Z

u

=

I

m

m

g

m_m

iv

W
_I

ill

i

|

m

l

mR

|

m

I

i

!

i

|

mDmE

M

Ig

Ig

um

I

mul

I
u

m

m

i_

I

l-d

-" =

u

N

Table 2. t

Table 2.2

Table 2.3

Table 3.1

Table 3.2

Table 3.3

Table 3.4

Table 4.1

Table 4.2

LIST OF TABLES

Joint Numbers and Coordinate Frames ............. 5

The Range of Motion of the Platform .............. 6

Incremental Encoder Count Conversions ............ 8

Commands for Activating Transducer or Absolute Encoder . . 30

Commands for Activating Electromagnet Pair ......... 30

Pin Connections for Signals between Multiplexer and Parallel

Board .................. i ............ 31

Commands for Activating Transducer and Electromagnet Pair 32

Absolute Encoder/Transducer Count Conversions ....... 3.5

Stopping Distances from the Zero Indices ............ 36

2-

U

I

n
m

?

Figure 2.1

Figure 2.2

Figure 3.I

Figure 3.2

Figure 3.3

Figure 3.4

Figure 3.5

Figure 3.6

Figure 3.7

Figure 3.8

Figure 3.9

Figure

Figure

Figure

Figure

Figure

LIST OF FIGURES

The 6-DOF Platform System .................. 5

Waveguide Interaction ...................... i 1

The Configuration of" the Temposonics Transducer and the

Electromagnets .......................... 15

The Electromagnet Support ................... 16

The Linear Transducer Support ................. 17

The Linear Transducer Assembly ................ 18

The Transducer Rod Position within an Open Magnet . . . . 19

The Flexible Transducer Support ................ 21

The Permanent Magnet Support - Part [ ............ 22

The Permanent Magnet Support - Part II ........... 23

The Flexible Transducer Assembly ............... 24

3.10 The Support for the Head of the Flex-ible Transducer ..... 25

3.11 The Optical Encoder Support .................. 27

3.12 The Center Piece for the Tilt Axis ............... 9_8

3.13 The Interconnection Box with Signal Flow ........... 29

4.1 The Locations of" Critical Points in System Calibration .... 38

m

m

|

m

|

!

l

m

i

|

|

m

n

m

If

i

I

i

i

u

i

vi i

i
2 :

m

W

m

W

ACKNOV/LEDGMENT

The author would like to express her gratitude to her thesis advisor, Dr. Robert

Kelley, for the guidance received under his supervision. The author would also like

to recognize a number of people without whom this project would not have been

possible: Ken Walter and Lee Wilfinger, for their expertise in the development of the

hardware and software systems, respectively; Tim Southward and Sam Charrington,

for their help in the installation of hardware; and especially Dr. Steve Murphy,

whose advise and encouragement at all stages of this project's development are

greatly appreciated.

The author would like to thank her family and friends for their support. Lastly,

the author would like to dedicate this work to the memory of her grandfather, Dr.

Chao-han Lin.

l

.:L

m

w

_---___-

immm

=

vii
I

ABSTRACT

This thesis is a discussion of the calibration of the Aronson six-degree-of-freedom

platform. Absolute encoders are used to determine the starting positions of all six

joints. The hardware implemented are described in detail. Software programs are

used to calibrate the hardware and to build the look-up tables that are needed in

determining the initial joint positions. The descriptions of all software routines used

are given.

[]

I

m

B

m

M

m

M

g

I

mm

M

Z

U

m

I

==.

U

m

===

u

m

a

Vlll l

B
i

CHAPTER 1

INTRODUCTION

m

L i

= =

b

L_

m

J

m

i

m

w

The purpose of this project is to determine the absolute position of each joint of

the Aronson six-degrees-of-freedom (6 DOF) platform when high power is on. This

allows the system to know where the platform joints are at with respect to the world

coordinate frame. The platform consists of two carts, each with three-degrees-offreedom (3 DOF) - translation, rotation, and tilt. The carts are situated on a

common twelve foot long rail.

This project is divided into two distinct parts - hardware and software. Different position transducers are used for each of the three degrees of freedom. A

Unear magnetic transducer (NITS Temposonics II Linear Transducer) is used for

the linear axis; a flexible magnetic transducer (NITS Temposonics I Fle.,dble Transducer) is used for the rotating axis; and an optical transducer (R96 Series Heavy

Duty Absolute Encoder) is used for the tilt axis. The Temposonics I and II transducers are manufactured by the Sensor Division of NITS Systems Corporation in

North CaroUna. The Absolute Optical Encoders are the product of ROBBINS _:

MYERS/RENCO of Gole_a, California.

The software is written in C. These programs perform bo_h system calibration

and power-up calibration. System calibration involves calibrating the transducers

(Temposonics I and II) and absolute encoders with respect to known zero positions

in the world coordinate frame. A look-up table is then formed for each joint with the

value of absolute positions that correspond to the occurrence of zero indices in the

incremenCa[ encoder. Power-up calibration involves reading the absolute position

from the transducer or absolute encoder then comparing it to the values in _he lookup table. A torque is given to move the joint to the closest zero index. The platform

is thus calibrated and ready to be used.
9

- B

I.i Purpose

The purpose in calibratingthe platform isto determine the exact position of

each jointwhen the platform isin use. Each jointis equipped with an incremental encoder. For the linearaxis,the resolutionis0.00002327 meters per encoder count; for

therotating axis,0.000020139 radians per count; and for the tiltaxis,0.000021817

radians per count. One revolution of the encoder corresponds to 0.018616 meters,

0.0161112 radians (0.923l degrees), emd 0.01745.36 radians (_1.000017617 degrees)

respectively. It takes more than one turn of these encoders to measure the fuI1 motion of each joint. The Whedco Incremental Encoder Interface can keep track of

the number of revolutions the encoders make after the power is turned on by using

the index pulse of the incremental encoder. However, this information is lost when

power is shut off. Therefore, a way of getting that starting position is needed.

One way to obtain reliable starting position is to move each joint to one of its

two limit switches then back the joint otT that limit switch to the first zero index of

the incremental encoder. By knowing the exact position with respect to the world

coordinate of this zero index, the initial position of the joint is determined. However,

without prior knowledge of the configuration of the two PUMA arms situated on

top of this platform, large motions in the joints of the platform might cause damage

or coUision in the system. Therefore, an approach that can accurately determine the

starting positions with small movements in each joint would be a better solution.

The absolute encoder and transducers are used in this case to obtain the starting

position. For the linear axis, the resolution of Temposonics II transducer is 0.00005

meters per count; for the rotating axis, the resolution of Temposonics I transducer

is 0.000184187 radians per count; for the tilt axis, the resolution of the Optical

Absolute Encoder is 0.00613._923 radians per count.

m

w

I

[]

E

I

z

U

i

m

I

I

I

I

w

U

M

i

I

I

I

m

i

I

I
3

=

1.2 Objectives

The objectives of this project are:

1. Select and assemble the necessary hardware for all six joints.

2. Complete the path of input/output of signals from hardware to Parallel Interface/Timer Module on the V2v[E cage.

3. Calibrate the platform with respect to limit switches (system calibration case

zero).

=

4. Calibrate hardware with respect to known zero positions of each joint.

5. Set up a look-up table for each joint.

m

_z

U

.°

6. Calibrate platform at power-up.

1.3 Summary

The results of this thesis provide the Aronson platform system with the capability of determining the absolute p0sition of each joint when the power is on.

m

g-7

-:_.._

_Z

u
m

CHAPTER 2

HARD%VARE SELECTION AND DESCRIPTION

The Aronson platform consists of two carts on top of a twelve foot long rail. Each

cart has three degrees of freedom - translation, rotation, and tilt. Different position

transducers are used to obtain the absolute position for each joint. This chapter

goes through some of the preliminary methods, designs and approaches that were

considered. It also covers the final design and theory of operation of each piece of

equipment in detail. First, a brief description of the existing hardware.

rl

i

m

M

i

|

m

m

2.1 Platform Environment

The Aronson 6-DOF robotic platform with the two PUMA robotic arms that

are currently mounted on its two carts form the CIRSSE Coordinated Assembly

Testbed System. This system is capable of eighteen-degree-of-freedom motion when

aJ,1joints of both PUMA arms and all joints of the platform are activated. Each cart

and its corresponding robotic arm can atso form a separate nine-degree-of-freedom

robot.

2.1.1 Labeling Convention

There exists a uniform assignment of the coordinate frames for the 18-DOF

testbed. This, together with two conventions of labeling the joints, is given in

CIRSSE Technical Memorandum #1[1]. This section introduces a third convention

that is used in the remaining portion of this paper and in the platform calibration

software. This convention is used for the joints of the platform only. Table 2.1 sho_:s

all three conventions. The first three co[um_ns give the joint convention number, the

cart and the joint type. The fourth column gives the coordinate frame number

of these joints in the 18-DOF system. The last two columns show the labeling

m

m

I

|

R

U

i

B

B

m

z

m

M

m

i

i
5

m

= =

LEFT CART

Rotational

, Axis

!

!

! |

.__ _ _ Tilt

3" Axis

I I

........ o:

_ . Axis

RIGHT CART

! 1

I ]

! I

,__=,

= =

M

m

wlw

. j---

i

z:: :-

= , w

Figure 2.1: The 6-DOF Platform System

convention used for the 18-DOF system and the 9-DOF systems.

The numbering of the joints starts with the left cart (left when looked from

the SUNs). Joints 1, 2 and 3 refer respectively to translate, rotate and tilt axes of

the left cart, joints 4, 5 and 6 to similar joints on the right cart. A diagram of the

platform system is shown in figure 2.1 with PUN[A arms removed. Many details of

the platform are left out to improve the clarity of the joints.

Table 2.1: Joint Numbers and Coordinate Frames

Joint Joint Frame Global Local

Number Cart Type Number Label Label

1 Left Translate 1 G 1 L 1

2 Left Rotate 2 G2 L2

3 Left Tilt 3 G3 L3

4 Right Translate l0 G10 RI

•5 Right Rotate Ii Gll R2

6 Right Tilt 12 G12 R3

= :

I

3
8

Table 2.2: The Range of Nlotion of the Platform

Joint Number Range of

1 (-4.5, 1.79) ft

2 (-150, 150) deg

3 (.45, 45) deg

4 (-1.79, 4.5) ft

5 (-150, 150) deg

6 (-45, 45) deg

Motion

(-1.3716, 0.5456) m

(-2.618, 2.618) tad

(-0.785, 0.785) rad

(-0.5456, 1.3716) m

(-2.618, 2.618) rad

(-0.785, 0.785) rad

2.1.2 Joint Range

The two robotic carts sit on a twelve foot long rail. The base of each cart is

two feet lengthwise (along the rail). With both at their respective limit switches,

the edges of the carts are 2.13 meters (7 feet) apart. At minimum separation, the

edges of the carts are 0.15 meters (6 inches) apart. The limit switch mechanisms for

linear motion take up 0.15 meters at both ends of the track. A soft stop mechanism

is placed between the two carts[2]. It is used both as a safety mechanism and

as a second limit switch for the linear axes in platform system calibration. The

interrupter of this mechanism extends from the left cart toward the right cart for

1

I inches). The linear range of motion becomes 1.92 meters (8 feet 3 0.22 meters (8

inches or 6.29 feet). This range is achieved only when the cart not in motion is at

its limit switch. Otherwise, the linear range of motion is less. The range of motion

for the rotational axis is 300 degrees (+/- 150 degrees occur at the limit switches).

The range of motion for tilt axis is 90 degrees, 45 degrees from the vertical in either

direction. Table 2.2 shows the range of motion for each joint of the platform in both

SI and English units.

m

m

m

m

i

m

m

E

[]

R

m

U

m

m

U

m

[]

m

m

m

IF
-- 7

w 2.1.3 Incremental Encoder with Whedco Interface

All six joints of the platform are fittedwith BE][ H25 Incremental Optical

Encoder. Each encoder outputs two channels (A and B) of quadrature pulses and

one index line. The Whedco Incremental Encoder Interface has two channels that

accepts quadrature and index pulses from two BEI encoders. The interface#,an

accumulate positions up to 4,o94,967,296 counts (or +/- 2,147,483,648 counts in

minus-to-plus range mode). Table 2.3 shows the conversion from encoder count to

distance or angle measurement. It also gives the distance and angle measured by

the encoder in every revolution.

m

L

m

o:;

2.2 Preliminary Approaches=and Design Considerations

By using the incremental encoder, it is possible to obtain _eat accuracy in

terms of joint positions (meters for linear axis, radians for rotate and tilt axes).

However, column three of Table 2.3 shows that each revolution the encoder can only

measure a small part of the total joint range. The position counter of the interface

can keep track the number of counts the encoder has turned in the clockwise or

counterclockwise direction. However, when the power to the platform is turned off,

that count is lost. Thus, a method of getting the absolute position at power up is

needed. For the additional hardware to be useful, it should be able to determine

which revolution the incremental encoder is on. Thus, the hardware should have an

accuracy of at least half a revolution. More detailed explanation of the theory is

covered in Chapter 4.

L

--=

2.2.1 Translational Axis

The translational (linear) axis motion is used to measure the location of center

of each cart along the rail. For linear motion, each revolution of the incremental

encoder measures 0.018616 meters. To determine the placement of either cart, it is
Table 2.3: Incremental Encoder Count Conversions

Joint Type Conversion

Translate 0.00002327m/count

Rotate 0.000020139 tad/count

Tilt 0.000021817 tad/count

Per EncoderRevolution

0.018616m

0.0161112 tad

0.0174536 tad

necessary to be able to tell where the starting point is. The hardware has to have

an accuracy of 0.009308 meters or less. This permits the correct identification of

the revolution of the encoder.

A linear potentiometer assembly using Nichrome wire was considered. A 3.6.58

meters (12 foot) long Nichrome wire placed along the backside of platform approximately 0.].3 meters (5 inches) above the floor acts as the conductor. Two mechanisms, one for each cart, placed at the center backside of each cart would be used

to measure the movement of the center of the carts. When the request for absolute

position is initiated, the correct mechanism (either right or left) would be activated.

Then by using the voltage divider rule, the placement of the center of the cart with

respect to the full rail can be calculated. The major disadvantage of this system is

the low accuracy and low precision of its output.

Another approach was the multi-turn potentiometer. Each cart is driven by

the servo motor with a 12:1 motor-to-joint reduction ratio. The pinion situated on

the bottom of each cart rotates and moves the cart [eft and right. By aligning the

center of potentiometer with the center of the pinion, it is then possible to keep

track of the absolute position of the linear axis. The pinion turns 8.87 times as the

cart moves down the rai!, therefore, a 9 turn potentiometer is needed. This idea is

not practical since the carts are both in place with PUMA arms already attached.

At this time, it is not possible to take the system apart and invert the carts to drill

holes that are needed to install the equipment.

m

I

m

I

E

I

m

!

[]

m

m

m

i

l

g

u

Im

I

I

I

i

m

M

D

i i
w

w

u

L_

w

L'

m

z=

w

2.2.2 Rotational Axis

For the rotational axis, each turn of the incremental encoder measures

0.0161112 radians (slightly less than 1 degree) per revolution. Therefore, hardware

for this joint needs to be able to resolve less than half of a degree.

For this axis, a 10-bit optical absolute encoder is required. To accurately

measure the angles, it is necessary to access the center of the rotating a._is. Unfortunately, the center is purposely left open for pulling cables through. Thus, it is not

possible to get to the center. To access the center from the bottom brings up the

implementation problem. Gear reduction assembly to obtain the one to one turn

ratio of the rotating axis was considered. This however introduces the problems of

backlash, and the placement of the gears assemble both inside and on top of the

rectangular cart.

A potentiometer was also considered. A gear assembly is also needed even

though a one to one turn ratio is not essential. Similar mechanical problems exist

for this implementation as for an optical absolute encoder.

2.2.3 Tilt Axis

For the tilt axis, each turn of the incremental encoder measures 0.01;4536

radians (approximately 1 degree). The hardware has to resolve at [east a half of a

de_ee. A 10-bit optical absolute encoder is used. It has an accuracy of 0.35 degree.

2.3 Final Design

Fo[- the final design, a Temposonics II Linear Transducer is used for the linear axis, a Temposonics I Fle×ib[e Transducer for the rotate a:ds, and an Optical.

Absolute Encoder for the tilt axis.

w

5--

t_

W
2.3.1 Translational Axis

The Temposonics II Linear Displacement Transducer System with Digital Output is produced by the Sensor Division of MTS Systems Corporation. This system

contains a Linear Displacement Transducer Waveguide, a Digital Interface Box, and

a Digital Counter Card. The transducer senses the position of a pair of external electromagnets. This is used to measure displacements of the linear joint to a

high degree of resolution. The resolution of the transducer is factory set to 0.025

millimeters per count. This system measures the time interval between an interrogation pulse and a return pulse. The interrogation pulse is transmitted through the

transducer waveguide. The return pulse is generated by two electromagnets at the

displacement to be measured.

2.3.1.1 Linear Displacement Transducer Operation

The interrogation pulse travels the transducer by a conducting wire inside the

hollow of the waveguide. This waveguide is spring loaded inside the transducer rod.

It exhibits the physical property of magnetostriction. When the magnetic field of

the interrogation pulse interacts with the stationary magnetic field of the external

electromagnet, a torsional strain pulse (or twist) is produced in the waveguide. This

strain pulse travels up and down the rod, away from the magnet. At the end of the

waveguide, the strain pulse is damped inside a dead zone. This zone is 0.06 meters

(2.5 inches) long for the Temposonics II. At the head of the transducer, there are

two magnetically coupled sensing coils. These coils are attached to strain sensitive

tapes which translates the strain pulses into an electrical return pulse. The coil

voltage is amplified by the electronics in the head of the transducer before it is sent

to the interface box.

Figure 2.2 gives a visual representation of the waveguide interactions. For

the linear rail application, two electromagnets are used in place of the permanent

I

I

I

m

I

E

l

m

[]

m

[]

Z

I

mm

I

I

!

i

H

Z

m

m

I

I

I

I

u

I
m

ll

t

m

mini

/

/

Conductinq

Etemen¢

l Figure 2.2: _Vavegulde Interaction

l

U

u
12

J

magnet. The twist is produced in the same manner when the electromagnet pair is

activated. The electromagnet pairs are chosen for this application since the absolute

position of both carts are determined by the same transducer. Thus, when calibrating the left cart, the left pair is acti_ated, similarly for the right cart. This way,

only one pair of electromagnets is on at any one time. Therefore, the transducer is

not confused by signals from two locations.

J

m

m

m

2.3.1.2 Digital Interface Box

The Digital Interface Box contains the intelligence for sensing the interrogation

and return pulses. The frequency for the interrogation pulse comes preset from

the factory to aIlow sufficient time for return pulse sensing based on recirculation

(factory preset) and the stroke length. The interrogation pulse turns on a flip-flop.

The return pulse switches the flip-flop off. The elapse time is directly proportional

to the position of the electromagnet pair. The on time of the flip-flop is sent to the

counter card as the pulse duration signal.

I

B

I

U

I

2.3.1.3 Digital Counter Card

The digital counter card measures the time interval of the pulse duration signal

from the interface box. The leading edge of this pulse enables the counter register.

The trailing edge triggers a latch pulse that downloads the count into the output

registers. This latch pulse is normally low for the receiver device to interpret as data

valid. Its frequency is the same as the interrogation frequency with the duration of

1 microsecond.

For more details, see the manual for Temposonics II transducer[3].

I

=z

U

m

m

m

g

I

D

I
m

13

m

2.3.2 Rotational Axis

The Temposonics I Flexible Transducer is used for the rotational axis. The

direct digitaloutput system consistsof a Flexible Linear Displacement Transducer

Waveguide, a Digital Interface Box, and a Digital Counter Card.

The description of the working of each item is the same as that for the Temposonics II transducer with a couple of differences. The transducer waveguide is

flexible so it can be bent to measure circular distances. Since one transducer is used

for each cart, a permanent magnet is used. The dead zone is 8 inches.

For more detail, see the manual for Temposonics I transducer[4].

i

=

L

r:_

r_

i

2.3.3 Tilt Axis

The tilt axis use the R96 Heavy Duty Absolute Encoder from R.OBBINS &

MYERS/RENCO. This encoder outputs t0-bit gray code for 1024 unique positions.

It is accurate up to :t=1⁄2count. Clockwise rotation of shaft produces ascending count.

See the technical manual for Absolute Encoder for more detail[5].

2.4 Summary

This chapter gave a brief overview of the platform environment and the existing incremental encoders and the Whedco Incremental Encoder Interface that are

available for determining positions: It also covered some of the design considerations

and several preliminary designs that were considered for obtaining the absolute joint

position. Lastly, the final hardware configuration was described in detail.

w

N

= =
mI

CHAPTER 3

HARDWARE INSTALLATION AND INFORMATION FLOW

This chapter covers the installation of the hardware. Since the sensing device for

each motion is different, special supports are designed to place each transducer

at the required locations. The flow of the signals iS traced from the hardware

to the computer. The output from each hardware is piped through the CIRSSE

multiplexer then onto MVME340A Parallel Interface/Timer (PIT) Module. Finally,

the calibration of equipment is discussed.

i

I

I

i

l

m

g

|

m

3.1 Equipment Supports

The hardware used for platform calibration are one Temposonics II Linear

Transducer, two Temposonics I Flexible Transducer, and two Absolute Optical Encoder. The description of installation of each piece is given below.

3.1.1 Linear Transducer

One linear transducer is used to determine the position of both the leh and

right carts. As mentioned previously, only one pair of electromagnets is allowed to be

on at one time, otherwise, the digital interface box would get confused. As shown in

Figure 3.1, the nominal distance between the transducer rod and the electromagnet

is 1.588 millimeters (1⁄2 inches). The two coils are mounted 180 degrees apart to

produce a sufficient magnetic field. The center line of the magnetic poles has to

pass through the center line of the transducer rod. Electromagnet supports and

transducer supports are designed to ensure the alignment of the center lines.

l

|

S

M

m

I

D

g

u

m

==

14

[]

mm

i
t5

i L

u

L_

u

r_i

I

j_

I

w

+

Figure S.l: The Configuration of theTemposonics Transducer and the

Electromagnets

3.1.1.1 Electromagnet Support

An L shaped bracket was designed to keep the magnets in place. Figure 3.2

shows the top view of"the bracket with the dotted Hne showing the placement of the

electromagnet pa.ir.

3.1.1.2 Linear Transducer Supports

Another L shaped support is designed for the transducer itself. Figure 3.3

sh-0ws all three-views of ihe support with the dimensions. _ A small post is also used

to hoid the transducer rod further up on the L support. The significance of this

post will be explained later. Since _b.e transducer works on using magnetic fields,

non-ferrous material (brass shim) is used to b.o[d _:he transducer rod onto _he post.

All _he supports except _'ol"_he brass shim are made of aluminum.

= =

m

m
16 u

i

i

I

m

u

5 3_

3_ I :I:

!

1318

?,

t

T

2 11/16

SIov*,_holes wl

cIe,_mncefor

OA6I dia.

Not_: AU d_ermionsare in_nchcs.

Figure3.2: The Electromagnet Support

i

i

z

m

s

!

I

= ,z

m

I

I

g

m

m

I

I

I

m

!

[]

m

m

I
_ 17

r

w

u

L _

W

u

m

,n -C

31/2

Note: All dime..._ic_ a_ in _nc21cs.

forLL"*clrTnmn:_cm"

Figure 3.3: The Linear Transducer Support

i

U
i

i

E_p

Med_n_n

E-Magnet

Platform Ba,,._

Figure 3.4: The Linear Transducer Assembly

g

z

i

I

m

Z

I

I

i

m

m

I
-- 19

-- =

il

n

=_

W

. = .

mmm

t

w

Figure 3.5:

ZORE

Unsafe zone

The Transducer Rod Position within an Open Magnet

3.1.1.3 Support Assembly

Figure 3.4 shows the placement of the electromagnet pair with respect to the

transducer rod. It also shows where all the supports are located. _'otice that if the L

shaped transducer suppor_ had extended further up to the rod itself,itwould ha_.'e

hit the electromagnet located next to _he emergency stop mechanism. N'inesets of

transducer suppoL't, pos: and brass shim are used to hold up _he linear transducer.

The shaft of the electromagnet coil was loose. The motion of the cart could

shif_ it out of its housing. Thus, Epoxy adhesive was used to keep it [n place.

This does not affect the performance of the coil. Vv'ashers are used to lower the

electromagnets Erom the L shaped bracke_ for the finalalignment of _he center o[

the transducer _'odw[ch :he cen_er of elecaromagnets.

u

r_

lii

m
20 u

3.1.2 Flexible Transducer

The flexible transducer is used to obtain the absolute position of _he rotational

axis. The center of the cross section of the flexible transducer is placed at 38.1

millimeters (t.5 in) from the side of the turn table. Since the range of motion is

5.236 radians (300 degrees), it is necessary to shape the fle.,cible transducer to a

perfect circle for at least 5.236 radians.

A permanent magnet is used in this application to create the strain pulse. Figure 3.5 shows the safe zone and the unsafe zone for the transducer. The two sample

placement of the transducer rods are inside the safe zone. The permanent magnet

support and the flexibIe transducer supports are designed to keep the transducer in

shape and within the safe zone.

3.1.2.1 Flexible Transducer Supports

Figure 3.6 shows the three views of the design of the flexible transducer support. It places the center of the transducer 69.85 millimeters (2 1⁄4 inches) above the

top of the rectangular cart. Again, a brass shim is used to keep the transducer in

place.

3.1.2.2 Permanent Magnet Support

Figures 3.7 and 3.8 show both parts of the assembly that is used to keep the

permanent magnet in place. The magnet is placed close to the zero degree mark of

the rotating axis (the limit switches are at +/- 150 degrees). The screws and nuts

used to keep the permanent magnet in place are brass to minimize interference with

the magnetic field.

m

m

=

m

E

m

[]

I

[]

J

m

g

m

l

J

m

|
-- 21

e

w

% _

=- _

m

E_

72

w

. =

7_

w

t

3/4

2 314

--ii

_._LI -7-.

_ sore's.

f LI4

"l_.r_dcd hole for

• 4 _o'_w. Dx-'O}

I/4

,,2

"-3t15

Note: All du_emians are in u'_,,.h_.

Rex_l¢ T_du¢_" Sugpor't

Date: 12Juiy .t991 ,[_] Sh. t ot_ I [_ Rev.:

Figure 3.6: The Flexible Transducer Support

m

w
22 ""

Ill

m

li

m

m

J

I

t_' -.L-L--8-_I_

Thrcad_ hol¢for

scrc,_.(8x32)

' I i_ :I;

,311 j 3/._ 3/_,

f Tt_'e_i_d hole for #6 ,_,,v+ (6x32)

Dr_wrc Amy Y rin

Now: At] d_m_nsions ire m mche_.

( lll_t )

JDai=12J'utyI99[ _Sh. I of 2 ]_Re_v.:

Figure 3.'7: The Permanent Magnet Support - Part I

m

[]

z

W

i

i

i

Z

I

[]

l

!

i

!

m

I

U

i

i

I

i
=

w

for

itt6 u_.ew.

3,_6d 1--/- ¢'_.L_: _r

.__ _j.8 t

1" z3t8 "t

JDrawn: Amy Y l.in

No_e: All dl,mer_ions are in i,nchet

( Plate )

IDate:i21ulyt991 t_X_]Sh-2 o(2 _"_ Rev.: )

Figure 3.8: The Permanent Magnet Support - Part II

m_
24

I

i

mj

i

i

2 3t"

P*.a._orm

gl

i

II

Ill

m

lib

m

[]

Figure 3.9: The Flexible Transducer Assembly i

i

z

l

z

tam

g

i
2:5

u

L

m

m

. r

i

3_ ,'

+

-Ti

I

--rt

i +

_ I

i I I

i I I

I I

I [ I •

'1'

---II 3/4 --

=i

m Figure 3.10: The Support for the Head of the Flexible Transducer
26

l

3.1.2.3 Support Assembly

The sideview of the magnet assembly and the transducer support is shown

in Figure 3.9. This figure also shows the location of each supports. Ten sets of

aluminum support and brass shim are used to keep the circularform of the flexible

transducer. The head of the transducer isclamped in place. Figure 3.10 shows the

front view of this clamp.

3.1.3 Absolute Encoder

An absolute encoder is used to determine the absolute position of the tilt axis.

The encoder is placed such that its shaft is aligned with the center of rotation of the

tilt axis. Figure 3.11 shows the support that holds the encoder in place. A center

piece made of aluminum was used to turn the shaft of the encoder (Figure 3.12).

During installation, it was found that an aluminum piece is not the best choice.

A 9.5 millimeters (_ inch) steel bolt is used for the tilt axis of the right cart. The

unthreaded part is kept at 6.35 millimeters (1 1⁄4 inch) to maintain the original design

specifications. A Helical Coupling (AC100-12-12) is used to clamp the shaft of the

encoder to the stationary center piece.

3.2 Interconnection Box

This box contains the electronics for the calibration hardware. The digital

interface box and digital counter card for each transducer resides here. The power

supply for the system is also included. The 18-bit signals from the transducers are

converted in this box to 16-bit digital output. The most significant bit (),[SB) is

not, used since the count for both Temposonics I: and II never goes that high.. The

least significant bit (LSB) is also not connected. This changes the resolution of the

transducers from 0.025 millimeters per count to 0.05 millimeters per count. The

I

=

g

i

I

M

g

I

i

[]

|

|

!

i

RI

m

R

i

l

m

i

--=- i

i i
Z

27

m

=

_4

L__

z

m

L

w

l/2.

---_ 3/_---- 2.65

....... I

--L-..-, . .,-*.

., -

$ IN

I

' v

_ '... L....I..

.,. : } i'_ , :,: :,:

',_ I" 1"

Note: All dimcrsio_ _'_ in Laches.

cl_ t'or L/4 - ZO bolt

: 3/_ 2

÷

D'e_,,,,,¢ Amy Y L_ Date: ].2 July L_91 _. I o( _ Rgv.:

Figure 3.11: The Optical Encoder Support
2_

[

{Dr'twm Amy Y Lm

No_: All _._-'_ic_,s are in inch..

][_te:t2Jut_L99,l t_Sh. t or' I (_Rcv:

Figure 3.12: The Center Piece for the Tilt Axis

|

m

[]

m

i

i

m

w

=_

J

m

m

I

: m

|
99

k]

= •

L

II 3 V'ME-35?O-E ENCs 1

I MV'ME-340A Pf/'C

I20vAc _

DT'FE RCO_',_,'ECTIO N BOX

MTS I 2._v

Di_iul |

Cou_r, er l

cla_/conu'ol

_o _I_:_o_ incr=menI_[ _ncodcfs

M'I_ Tcmposonic3 I:I Tran._uc_

l.,_ MTS Temposonics I Tt_ca"

Ric, ht NITS T=mp_sonic_ 1 Tr_n._uc=r

L_R Elec_'orna_,nez Pau"

Right F.I=c._mtna_in_ P_b"

[.=,_ Absolute Optical Enc_ler

Right ..,kbso[uc¢ Op{ic_l E,'lcodeJ"

Figure 3.13: The Interconnection Box with Signal Flow

10-bit signals from the encoders and the IS-bit signals (now 16-bit from the transducers are piped through a multiplexer (._[UX) and our, of the box to the Parallel

Interface/Timer (PIT) board. Both the MUX and _he PIT will be described further

in the next two sections. Figure 3._.3 shows the block diagram of the interconnect

box showing the signal flow.

m

L"

m

E

U

3.3 ClRSSE Multiplexer

The purpose of the CIRSSE multiplexer is to rou_e _he signal from the selected

transducer or encoder to the PIT board. When accessing the MUX, a command

needs to specify which transducer or encoder and e!ec:romagnet pair to activate. A

6-bit command is used to define _he combination. Table 3.1 shows the commands

used to specie" the transducer. Table 3.:2 shows the comm_nds for the electromagnet
Table 3.1:

3D

Commands for Activating Transducer or Absolute Encoder

Transducer Select Activate Transducer

0 0 0 No Selection

0 0 _ Linear Transducer

0 I 0 ==Left :Flexible Transducer

0 1. l Right Flexible Transducer

i 0 0 Left Absolute Encoder

1 0 1 Right Absolute Encoder

1 1 0 No Selection

i 1 i No Selection

i

m

l

i

M

|

pair selection. Two pairs of electromagnets (one for the linear motion of the left cart

and one for the right cart) are connected. The multiplexer is designed to handle up

to four pairs electromagnets. Only two pair are needed to determine the absolute

positions of the linear axes, therefore, the third and fourth ones are not used.

A 50 pin ribbon cable is used for getting signals out of the MUX. Most of the

even pins are connected. The odd numbered ones are not used (grounded). Pins

2 through 1.2 are used for the specification of the transducer/encoder and magnet

pairs. Pins 1.4 through 44 are used to output the 16-bit data to the PIT. Table 3.3

describes the function of each pin.

Table 3.2: Commands for Activating Electromagnet Pair

Transducer Select Activate Electromagnet Pair

0 0 0 No Selection

0 0 1 Electromagnet Pair #I

'-'o 0 t 0 Electromagnet Pair frO l 1 Electromagnet Pair #3

1 0 0 Electromagnet Pair #4

1 0 1. No Selection

1 l 0 No Selection

1. 1. i No Selection

Joint Type

Left Translate

Right Transla'_e

Not Used

Not Used

i

m

U

i

i

|

E

U

I

I

U

I

m

i
• i

31

u

w

w

Table 3.3: Pin Connections for Signals between _Iultiplexer and Parallel Board

MUX Pin

2

4

6

8

10

12

14

16

18

20

22

24

26

28

3O

32

34

36

38

40

42

44

46

48

50

MUX Signal

Transducer Select 0 (LSB)

Transducer Select i

Transducer Se[ect "2 (MSB)

Electromagnet Select 0 (LSB)

Electromagnet Select 1

Electromagnet Select 2 (MSB)

Transducer Data 0 (LSB)

Transducer Data I

Transducer Data 2

Transducer Data 3

Transducer Data 4

Transducer Data 5

Transducer Data 8

Transducer Data 7

Transducer Data 8

Transducer Data 9

Transducer Data I0

Transducer Data l 1

Transducer DateL 12

Transducer Data 13

Transducer Data 14

Transducer Da_a I5 (MSB)

Not Connected

Not Connected

Not Connected

PIT Pin PIT Signal

C8 PB14

C6 PB15

C4 PB16

C16 PB10

C14 PBll

C12 PB12

A31 PA20

A29 PA21

A27 PA22

A25 PA23

A23 PA24

A21 PA25

A19 PA26

A17 PA27

AI5 PAl0

AI3 PAll

All PAl2

A9 PAl3

A7 PAI4

A5 PAl5

A3 PAl8

A1 PAl7

w
:32

w

Table 3.4: Commands for Activating Transducer and Electromagnet Pair

Platform Joint Transducer/E-magnet Select Command

l 0 0 0 1 0 0 0 1 Oxll

'2 0 0 i 0 O0 O0 Ox20

3 0 i 000000 0.-<40

4 0 00100 10 0x12

5 00 I i 0000 0x30

6 0 I010000 0x50

3.4 Parallel Interface/Timer Module

The MVME340A Parallel Interface/Timer Module is the gateway for the software and hardware. C programs send out commands to activate the hardware

through the PIT board. Signals from the hardware are also read from the PIT

board.

The parallelboard isconfigured fordevice-parallel16-bit input/output. Port

A for both chip I and 2 is used for the signal (input) while Port B of chip 1 is used

for the command (output). Port B of chip 2 is not connected to the .MUX. The

command send to the parallel port is 8-bits wide. while she input to the MUX is

6-bits wide. By not connecting bit 7 and 3 of the signal going to MUX and setting

them to be zero, the commands used (shown in Table 3.4) are realized. The last

column shows the command in hexadecimal. The connections for the input/output

signals to the PIT are shown in the [_t two columns of Table 3.3.

For more information on the PIT, see the user's manual[6].

g

I

[]

m

ml

m

M

!

s

m

!

n

m

mE

l

l

M

!

[]

I

l

D

m

I

!

I

U

m

3.5 Hardware Calibration

The calibration of each piece of hardware is done during system calibration.

A known zero position for each joint is used to offset the absolute encoder position.

The zero position of each joint is defined as the zero meter or zero radian mark in

m

I

m

m :

w

[]
33

=

the range of motion. More detail is given in Chapter '4.

3.6 Summary

This chapter presented the installation of the hardware and the designs of the

supports that are required to keep each piece of equipment in place. It also covered

the interconnection box that is used to supply the power and to house the electronics

of the transducers. Finally, hardware calibration was briefly mentioned.

- r I

_---=_

. T

w
_m

CHAPTER 4

PLATFORM CALIBRATION

This chapter-cOVer-s'the purpose of platfo'rm calibration. [t defines the terms system

calibration, and power-up calibration and then goes over the steps that were taken

to accomplish ea&.

4.1 Purpose

As mentioned previously, the purpose of calibration is to determine the position

of each joint of the platform when the high power is on. The incrementaI encoders

that came with the Aronson Platform are capable of measuring a small section of

the joint range very accurately. With a Whedco Dual Channel Incremental Encoder

Interface, the system is capable of tracking the number of times the encoders rotate

clockwise or counterclockwise from a starting position at power-up. The Whedco

interface gives the relative change of location of each joint. However, without the

knowledge of the starting point, the system is unaware of the absolute joint position.

This is where absolute position calibration of the pIatform comes in. By using

absolute encoders to determine the initial positions, the system is then able to tell

where the starting position is for each joint in the world coordinate frame.

4.2 System Calibration

System calibration of the platform is used to set up look-up tables (header

flies) each containing a list of absolute encoder positions and a second list wkh the

corresponding joint positions. There is one header file for each of the platform joint.

Each absolute encoder position in that table occurs at the zero index mark (when

index pulse is high) of the corresponding incremental encoder. It is essential to

know the absoIute encoder position at each zero index since the look-up table wilI

34

II

!

i

|

w

m

I

u

m

I

B

m

u

i

I

B

|

R

Ill

mm

u

U

m

[] ,

m ;
= =

|i

W

11

Table 4.1: Absolute Encoder/Transducer Count Conversions

35

Joint Type

Translate

Rotate

Tilt

Conversion

0.00005 m/count

0.000184[87 rad/count

0.006135923 rad/count

be used by the power-up calibration as a ruler. Each list contains all the possible

zero indices the joint will encounter as it moves from one limit switch to the other.

This calibration should be done periodically (e.g., every six month) or whenever the calibration hardware has been moved.

The incremental encoder position given by platPo.sSRead of platLib.c (software

program in platform library) is in meters for the linear axis and radians for the

rotating and tilt axes. To keep the units consistent, the outputs from transducers

and absolute encoders are converted accordingly. The conversions factors are shown

in TaMe 4.1.

w

4.2.1 Calibration Procedure

This section describes the procedure used to system calibrate the platform.

The ideal way to do the caIibration is to move each joint from one of its limit to

the other one and stop at each zero index mark to read and store the absolute

encoder position. However, due to the momentum of platform and the simplicity of

the velocity controller that is used, it is not possible to stop the joints exactly at

the zero index mark. After the command of freeze joint motion is given, each joint

drifts a bit before it comes to a full stop. To stop a joint more exact on the zero

index position, a PID controller shoul.d be considered. Tabie 4,.2 shows the range of

stopping distance when the command of moving to the first zero index off the limit

switch then stop (platcalFirstfero[ndez) is given. This drift of distance is taken into

2--
36

Table 4.2: Stopping Distances from the Zero Indices

Joint Limit Minimum Position Maximum Position

1 left 0.002527 m 0.02.5889 m

2 cw 0.008196 tad 0.0t0814 rad

2 ccw -0.001973 tad -0.022998 rad

3 cw 0.004188 rad 0.005977 rad

3 ccw -0.000589 tad -0.002203 tad

4 right -0.007562 m -0.023851 m

5 cw 0.006907 tad 0.010109 tad

5 ccw -0.002618 tad -0.012063 rad

6 cw 0.002661 tad 0.010297 tad

6 ccw -0.002748 tad -0.003534 rad

M

|

|

[]

Ii

|

account in both calibration procedures. The joints are calibrated one at a time.

For system calibration, the test pendant is used to move a joint to some position off the limit switch. This distance is chosen to be about 0.1745 radian (10

deg) for the rotation and tilt axes and 0.45 meters (1.5 ft) for the translation axis.

The software controller then takes over to bring the joint to the limit switch, The

reason for using the test pendant to move a joint is to save time. This is particularly

noticeable when calibrating the rotational axes. The software controller is designed

to move the joint toward its limit switch slowly. 'This way. the joint will not hit

more than one zero index after the limit switch is reached. The joint is placed at a

sufficient distance away from the limit to allow the motion of the joint to become

smooth and slow enough. Because of static friction, all platform joints need a kick

start. In essence, the required starting torque is a lot higher than the moving torque.

The joint is then backed off from the limit switch to the first zero index and

stopped. A feature of the Whedco Interface, find zero index then set the position

count to zero, is used. Both absolute encoder position (init_abs_pos) and incremental

encoder position (igit,pos) are recorded. The joint is then moved to its zero position

with the test pendant. Again, the absolute encoder position (:ero_ab.s.posl) and

I

I

m

m

U

R

L

W

i

Ii

---- i

U

Z

il

I
f

3T

_=_

]

m

incremental encoder position (zero_posl) are stored. This process is repeated with

the limit switch on the other extreme. The positions are stored in final_abs_pos and

final_pos and then zero_abs_pos2 and zero_pos2 respectively. Figure 4.1 shows the

location of each of these positions with respect to one another, zero_pos2 can also

occur on the o_her side of zero_posl.

=

The movement of each joint is performed so that the incremental position count

increases as it moves from the first limit switch to the second while the absolute

position count decreases. Since init_pos is taken at the zero index and :ero_posl

is the positional difference between the zero index and the zero position a joint,

init_pos is assigned the value of -i * zero_posl while zero_posl is assigned the value

of 0.0. A similar relationship exists between final_pos and zero_pos2. However.

instead of setting the value of negative zero_po.s3 to final_pos, the difference between

:ero_posl and zero_pos2 also needs to be accounted for. There is some error between

the two zero positions due to human error in lining up the joint with a mark at

the zero position using the test pendant. The difference can be compensated for

by using the difference between the two absolute encoder zero positions. Thus

final_pos = -1 _, zero_pos2 - ( zero_abs_po.,:2 - zero_abs_pos l ).

The Locations of the first and the Last zero indices are known. The distance

between successive zero indices is also known for the incremental encoder. The

number of zero indices a joint goes through (including the first and last ones) are

del:ermined. The increment between successive zero indices for the absolute encode;

positions is then calculated.

Before the increment of the absolute position can be calculated., the drift in

each join_ has to be taken into account. (The drift is the overshoo_ of _he joint after

the stopping command is given.) Since the absolute position reading is taken when

joint has stopped fully, there is some difference between the zero index position

and where the reading is actually taken. This can be compensated for by using the
:38

i

i

Incremental Encoder

Positions

÷

Figure 4.1:

First Zero Index

init_pos

f'mal_.pos

Last Zero Index

m

m

;witch

_nR_abs pos

zero_abs_pos I

zero abs..pos 2

fmal_abs_pos

Second Limit Switch

Absolute Encoder

Positions

+

The Locations of Critical Points in System Calibration

|

m

!

il

|

i

m

_==

i

i

m

i

m

|

m

I

mm

m

i
: = 39

w

7

w

= :

2 i

incremental position readings. Theposition given by Whedco Interface keeps track

of the distance between the the zero index and the point where the joint stopped.

init_pos is taken when the joint has fullystopped, at some position very close to

th.e zero index. Since the position of a joint is set to zero when a zero index is

encountered, init_pos can be use to correct init_abs_pos. This is done before init_pos

takes the value of -1 . Zero_posl. Similar process is used for the final position

readings.

Using the number of zero index count, the increment in absolute position,

the increment in incremental encoder, and the initial and final positions a look-up

table is formed. This table contains a fist of absolute encoder positions that occur

at all the zero index of that joint. It also contains a list of incremental encoder

positions that corresponds to these absolute encoder positions. The table is stored

in a C header file that is included in any future programs that require joint position

informations. There is one header file for each joint.

The zero position of the tilt axis is defined at the midpoint between the -0.785

radians (+4.5 degrees) and -0.78.5 radians limit switches when the base for PUMA

is parallel to the ground. For the Linear axis, the zero position is defined at a point

for which the center of either cart lines up with the center of the rail. This is where

zero [ocation of the zero coordinate frame is defined. The zero position of the rotate

axis is defined at the midpoint between the +1.50 degrees and -150 degrees limit

switches.

4.3 Power-up Calibration

Power-up calibration of the platform is used to de_ermine the initial position

of each joint after high power is turned on. This should be run before any joint is

to be moved.

The first step in power-up calibration is to read the absolute encoder position
4O

W

from the PIT. That value is then compared to the list in the correct look-up table

which is created during system _calibration. The closest zer? index is determined.

A torque is then applied to the joint to move it to that index. A second feature

of the Whedco interface is used here - find zero index then set position count to a

specified value. The incrementa[ position that corresponds to the absolute position

(at the closest zero index) is set onto the Whedco Interface. From that point on,

the Whedco Interface is able to keep track of where the joint is with any increment

or decrement of position.

M

R

I

m

I

|

m

I

I

!

4.4 Summary

This chapter presented the theory of system and power-up calibration. It also

stepped through the procedures for each calibration.

!

__=

[]

U

i

!

I

I

I

I

m

Imm

I

w

[]

[]
CHAPTER 5

SOFTWARE DESCRIPTION

=

This chapter lists the routines used for both system caIibration and power-up calibration. The parameters and returns ['or each routines are given. A short description

of the purpose of each routine is also included. Lastly, the calibration programs and

the header files are described.

5.1 Description of Functions

There is one library, platcalLib, which includes all the routines used in both

system and power-up calibration, platcalPit.c includes routines used to initialize,

release, read, and write from the Parallel Interface/Timer Module. platcalLib.c holds

routines that initialize the correct hardware, move the platform to limit switches

and zero indices, get absolute encoder positions, create header files, and release

hardware.

w

.°= :

5.1.1 platcalPit.c

The routines in this program are called by the routines in platcatLib.c to obtain the absolute position count of each joint.

w

Routine: platcalPit[nit

Parameter: None.

Return: PLATCALPITOK - indicates successful PIT initialization.

Purpose: Configures PIT board to receive 16-bit data from the CrRSSE

multiplexer and to send 8-bit command for the selection transducer and

electromagnet pair.

a

u

41
42

Routine: ptatcaIPitRelease

Parameter: None.

Return: None.

Purpose: Resets registers on PIT board.

i

i

Routine: platcalPitClear

Parameter: direction - specifies whether the read registers or the write registers

are to be cleared.

Return: PLATCALPITOK - indicates registers cleared successfully.

Purpose: Clears the selected PIT registers before next read or write command.

Routine: platcalPit Write

Parameter: command - specifies which channet of the multiplexer is to be activate.

Return: PLATCALPITOK - write success.

Purpose: Writes a command to port B of chip 1 of the PIT board to specify the

transducer/absoIute encoder and electromagnet pair to activate.

Routine: platcalPitRead

Parameter: location - 16-bit absolute position count.

Return: PLATCALPITOK - read success.

Purpose: Obtains the absolute position count of a specified joint from port A

of both chip 1 and chip 2.

i

i

U

|

R

U

i

i

R

[]

The header file ptatcalPit.h defines the hexadecimal command used to specify the

encoder/transducer and electromagnet pair. It does the forward decIaration of all

the function in this library. The macros for identifying the Parallel Interface/Timer

board and the two chips that are presently being used are also defined. The return
N

43

"--lJ code for each function is also specified.

5.1.2 platcalLib.c

This program contains the routines required for both system calibration and

power up calibration.

=

Routine: platcal[nit

Parameter: None.

Return: PLATCALOK - success.

Purpose: Initializes the required hardware and turns high power off.

w

°:

Routine: platcaliD[ove To£irnit

Parameter: joint - joint of platform to be moved.

limit - direction the platform is to move in.

position - pointer to position of joint.

Return: PLATCALOK- success.

PLATCALERROR - hardware not responding correctly.

Purpose: Moves a joint to the specified limit switch.

Routine: platcalFirstZerofndez

Parameter: joint - joint of platform to move.

limit - direction the platform is to move in.

mode - specify to set Whedco Interface position count zero or a specified value.

position - pointer to position of joint.

Return: PLATCALOK - success.

PLATCAflERROR- hardware not responding correctly.

Purpose: ),[ores a joint toward a specified Iimit switch and stop the joint
44

U

at the first zero index encountered.

i

I

Routine: pfatcalRelease

Parameter: None.

Return: PLATCALOK - success.

Purpose: Releases hardware after calibration is done.

Routine: platcal.4bsPosition

Parameter: joint - joint of platform to find absolute position of.

abs_position - pointer to absolute position of a joint.

Return: PLATCALOK - successfully reads the position.

Purpose: Writes a command to specify encoder/transducer and electromagnet

pair then reads absolute position from PIT board; gives the absolute

position of joint in meters or radians.

Routine: platcalSetTable

Parameter: init_pos[ ] - initial position vector for incremeat,al encoder.

zero_post[ ] - first zero position vector of each joint.

zero_pos2[ ] - second zero position vector of each joint,.

final_post ] - final position vector for incremental encoder.

imt_abs_pos[ ] - initial position vector for absolute encoder.

zero_abs_posl[ ] - first absolute zero position of each joint,.

zero_abs_pos2[ ] - second absolute zero position of each joint.

final..abs_pos[ ] - final position vector for absolute encoder.

Return: PLATCALOK - success.

Purpose: Uses incremental and absolute encoder positions to make a look-up table

(stored as a C header file) for each joint. This function is called after all

!

I

m

I

|

m

m

=

m

m

i

g

g

-=_

j

!

=- i

i !

Z

B

z
r

= =

i. i

45

¢..../

the positions (incremental and absolute) have been obtained.

K

=

i

The header file platcalLib.h contains the macro for joint identification. It does

the forward declaration of all the routines in platcalLib, e..4. couple of timer constants

are also defined. These timers are used by the velocity controller inside the routines

platcalMoveToLimit and platcalFirstZero[ndez. The conversion factor for absolute

encoder are given in platcalLib.c.

5.2 Calibration Programs

The program, ptatN_j.sOal.c, is used for system calibration. It initializes the

hardware. It defines the limit switches for each joint. I: directs the user to move the

joint to a specified position off the limit switch starting with joint one. platcaIMoveToLirnit then moves the joint to the limit, platcalFirstZero[ndez backs the joint off

the limit switch and stops the joint at the first zero index. The incremental encoder

and absolute encoder positions are obtained by using platPosSRead (a function from

platLib.c) and platcalAbsPo.sition respectively. This process is repeated for the limit

at the other extreme. When all the positions from all six joints are obtained, platcalSetTable is called to set up header files. Lastly, platcalRelea.se is used to reset the

hardware.

The program platPowerCaI.c is used for power-up calibration. It initializes

the hardware. It defines the limit switches for each joint. Two pointers_ ab.sPtr

and incPrt, are used to point to the absolute position and incremental position

arrays in the look-up table. This program then reads the absolute encoder of a joint

starting with joint one. This absolute encoder position is compared with the values

in absolute position array. The closest zero index is de:ermined. The incremental

encoder position corresponds to that zero index is loaded into the Whedco In_erface.

This is done by using the second feature of the interface (find zero index then set
46

I

position count to a specified value). The joint position is set to the incremental

encoder value from the look-up table when the zero index is detected. As in system

calibration, plaecalRelease is used to reset the hardware.

5.3 Header Files

The header files are written by platcalSetTable. The name of each header

files is platcalYoing * .A (* is a number from 1 to 6). ZERO_INDEX_COUNT,,,

is the number of zero index joint , has. The two arrays inside the header files are

abs_enc_pos,[ZERO_[NDEX_COUNT,] and inc_enc_pos,,[ZERO_INDEX_COUNT,,].

All six header files are included in the power-up calibration.

5.4 Summary

This chapter reviewed the routines used in both platform calibration and power

up calibration. The purpose of each routine was described. System calibration and

power-up calibration programs were also mentioned.

I

!

m

B

I

|

i

I

|

i

I

I

I

[]

I

I

i

I

I

i

I

m

i

N

I

i

I
m

|2

W

CHAPTER 6

CONCLUSION AND FUTURE WORK

m

w

m

_-==

f-

°- :

u

w

Thegoal of this project is to determine the position of the joints of the platform when

it is in use. Absolute encoders and Temposonics transducers are used to determine

the joint position at start up. Software programs are written to do system calibration

(calibrate the hardware and set up header files) and power-up calibration (find the

starting position).

The hardware (Temposonics I Flexible Transducer, Temposonics II Linear

Transducer and Absolute Optical Encoders) is installed.The electronics are also in

place. Software programs for system calibration (platSysCaI.c) and power-up calibration(platPowerCai.c) have already been written. System calibration will be done

as soon as the diagnostic for the hardware is run.

Before signals from the absolute encoders become available, the absolute positions of all six joints at the first zero indices need to be measured by hand and

hard coded into the system calibration program. This then requires the power-up

calibration to be done off the limit sw{tches.

The results of platPo_zerCaI.c, the joint positions, are stored in an array. These

positions are printed out on the monitor. It is possible to pass the position information to a program which requires the knowledge of starting position of the joints. A

simple program that calls the power-up calibration will be use to test, the availability

of this information.

The follow still need to be accomplisked:

1.. Run the diagnostic on the hardware.

2. Run case zero of _he system calibration.

3. Calibrate the system with platSgsCat.c.

47
4S

R

4. Test platPowerCal.c.

5. Modify platPowerCal.c for more general usage.

[]

m

!

m

m

m

|

i

!

I

I

B

m

i

m

m

m

[]

m

m

[]

m

i

m

w
LITERATURE CITED

u

Eli

{21

Jim Vratson, Testbed Kinematics Frames and Routines. CIRSSE Technica[

.Memorandum #1, March 1991.

Atiya Husain, _'Motion Problem of Two Arm Robotic System," ECSE Senior

Project Report, Rensselaer Polytechnic Institute, May, 1991.

[3] Temposonics II Linear Displacement Transducer Installation and Instruction

C41

[21

[61

Manu.a[, Sensors Division, NITS Systems Corporation, NC.

Temposonics Brand Linear Displacement Transducer System with Direct

Digital Output Installation and Instruction Manual, Sensors Division, MTS

Systems Corporation, NC.

Absolute Encoder Tech Manual, RENCO Corporation, Goleta, CA.

MVMEa40A Parallel Interface/Timer Module User's Manual, Motorola Inc.,

Tempe, AZ.

m

m

=

L._

L

49
Him

APPENDLX A

SOFTWARE UPDATE

This appendix describes all the important programs in the platcalf.-ib directory. Some

of them has already been mentioned in Chapter 5. Thus, the changes made in those

programs are also given.

A.1 platcalPit.c

As mentioned before, the routines in platca/Pit.c are used to initialize, release,

read and write from the Parallel Interface/Timer Module. The read and write routines are called by" ptatcal,4b.sPosition located in platcalLib.c, platcatPitRead is used

to obtain a specified absolute encoder position, platcalPit Write is used to select the

correct absolute encoder with its corresponding electromagnet pair. ptatcalPitfnit

and ptatcaIPitRelease are called by platcaIfnit and platcalRelease respectiveIy.

The description of all four of these functions has been given in Chapter 5.

A.2 platcalPit.h

This header file is includes in all the programs that require the knowledge of

the macros defined in it.

A.3 platcalLib.c

This program contains the routines required for platform calibration. The

description of the t'unc_ions has already been given in Chapter 5. Two changes were

made in the parameters of platcalSetTab/e. The first is the addition of the parameter,

joint. The second is the change of the positions passed in from arrays to pointers.

This is done so it is be possible to calibrate the platform one joint at a time.

5O

m

|

|

i

|

n

u

z

_=

i

m

m

__: i

m

[]

m

HI
2 :

W

m ifndefand # if clef are put in to activate and deactivate the diagnostic print

lines in the routines, respectively. Only one set should be use at one time.

The functions in th.is routines are called by the calibration programs.

: E

u

m

L

xiu

.4..4 platcalLib.h

Aside from the forward declaration of the platcaILib.c, the ones for both platPowerCalO.c and platPowerCaI.c are also included. A structure type, PLATC.4LCONSTTYPE, is defined here. It is used to define the constants tb.at are used by

all the routines.

A.5 platcalConst.c

This program contains an array abs_consts[PLATN_C_I.]OLVTS+i]. Each element of this array is a structure of PLATCALCONSTTYPE type. The conversion

factor from absoIute encoder readings to radians or meters is given. The command

for activating the correct combination of absolute encoder and electromagnet pair

is included. In addition, the limit switch and the initial torque required to move

the joint in that direction is also given. This array is used in nil the calibration

programs.

A.6 ZeroIndexPosTest.c

This program is used to determine the location of the firs: zero index for

: 7

each joint. The result of this program is used to hardcode the absolute position in

platPowerCalO.c (case 0 of power-up calibration).

A.7 platPowerCal0.c

This program contains two routine, platPowerCaIO and pIatPower'CalO.4iI.

They are used to calibrated the platform manually at power-up, platPou.'erC,:_.O
is called to calibrate aspecified joint, platPowerCalOAll is used to calibrated all six

joints at one time. The descriptions of the functions are given below.

Routine: platPowerCatO

Parameter: joint - the joint to be calibrated.

pos - pointer to the calibrated position of a joint.

Return: None.

Purpose: Determine the position of the first zero index of a joint with respect

to the world coordinate frame.

Routine: platPowerCalOAll

Parameter: pos[] - position vector.

Return: None.

Purpose: Determine the position of the first zero index of all joints.

|

i

m

m

m

A.8 PowerCal0Test.c

This is a test program that calls platPowerCalOAlt. It then prints out the

position of each joint with respect to the world coordinate frame.

A.9 platSysCal.c

platSgsCal.c is used to calibrate the hardware with respect to known zero

positions. It then sets up look-up tables (header files) for power-up calibration.

This program asks the user to specify" the joint, it then walk the user through the

calibration procedure. Lastly, it sets up the header file for that joint.

[]

E

m

M

I

I

i

m

i
-i

F_

i

i

m

n

w

= ;

!

53

,4..10 platPowerCal.c

This program contains two routine, platPowerCal and platPowerCaiAll. They

are used to calibrated the platform at power-up, platPowerCal is called to calibrate

a specified joint, platPowerCalAlI is used to calibrated all six joints at one time.

Routine: platPowerCal

Parameter: joint - the joint to be calibrated.

pos - pointer to the calibrated position of a joint.

Return: None.

Purpose: Determine the position of the first zero index of a joint with respect

to the world coordinate frame.

Routine: platPowerCaIAll

Parameter: pos[] - position vector.

Return: None.

Purpose: Determine the position of the first zero index of all joints.

A.11 load.sh

This program is used to load the required objet (.o) files onto the VME cage.

To execute the following programs, PowerCatOTest.c, platPowerCatO.c, Zero[ndezPosTest.c, platSysCal.c, ptatPowerCal.c, just type in the name of the program

without the .c.
z

I

N

_h

I

m

m_

i

il

mm

m

B

m

IB

II

m

I

B

m

Ii

m

[]

Lm

m

mR

m

I