Você está na página 1de 80

RobotAssist

Users Manual

New River Kinematics, Inc.


4767 Wurno Road
Pulaski, Virginia 24301
www.kinematics.com

TM

New River Kinematics

This manual, associated software disks, algorithms, and visual content


are protected by United States copyright law. All materials are and shall
remain the sole property of New River Kinematics, Inc.
Copyright 1996-2002, New River Kinematics

RobotAssist - Users Manual

New River Kinematics

SOFTWARE LICENSE AGREEMENT OF NEW RIVER KINEMATICS,


INC. ("MANUFACTURER")
NOTICE -- READ BEFORE INSTALLING THIS PACKAGE
CAREFULLY READ THE TERMS AND CONDITIONS OF THIS
AGREEMENT BEFORE INSTALLING THIS PACKAGE. INSTALLING
THIS PACKAGE INDICATES YOUR ACCEPTANCE OF THESE TERMS
AND CONDITIONS. IF YOU DO NOT AGREE WITH THE TERMS AND
CONDITIONS OF THIS AGREEMENT, PROMPTLY RETURN THIS
PACKAGE TO THE PLACE OF PURCHASE FOR REFUND IN THE
AMOUNT YOU PAID.

1. Definitions
The Software Package is licensed (not sold) to you, and Manufacturer
owns all copyright, trade secret, patent and other proprietary rights in the
Software Package. The term "Software Package" includes all copies of
the Spatial Analyzer computer program and its documentations.
2. License
a. Authorized Use. Manufacturer grants you a nonexclusive license to
use the Software Package on a single computer. You may make one
copy of the Software Package's computer program for archive and backup purposes only.
b. Restrictions. You may not: (1) copy (other than once for archive and
back-up purposes), distribute, rent, lease or sublicense all or any portion
of the Software Package; (2) modify or prepare derivative works of the
Software Package; (3) use the Software Package in a computer-based
services business or publicly display visual output of the Software
Package; (4) transmit the Software Package over a network, by
telephone, or electronically using any means; (5) remove or destroy and
proprietary marking of Manufacturer; or (6) reverse engineer, decompile or
disassemble the Software Package. You agree to keep confidential and
use your best efforts to prevent and protect the contents of the Software
Package from unauthorized disclosure or use.

RobotAssist - Users Manual

New River Kinematics

c. Transfer. You may transfer the Software Package, but only if the
recipient agrees to accept the terms and conditions of this Agreement. If
you transfer the Software Package, you must transfer all computer
programs and documentation and erase any copies residing on computer
equipment. Your license is automatically terminated if you transfer the
Software Package.
3.

Disclaimer of Warranty And Limitation of Remedies


YOU UNDERSTAND AND AGREE AS FOLLOWS:

a. MANUFACTURER DISCLAIMS ALL WARRANTIES, EXPRESS


OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY
OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL
OUR LIABILITY OF ANY KIND INCLUDE ANY SPECIAL, INCIDENTAL
OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, EVEN
IF WE HAVE KNOWLEDGE OF THE POTENTIAL LOSS OR DAMAGE.
b. We will not be liable for any loss or damage caused by delay in
furnishing a Software Package or any other performance under this
Agreement.
c. Our entire liability and your exclusive remedies for our liability of
any kind (including liability for negligence except liability for personal injury
caused solely by our negligence) for the Software Package covered by
this Agreement and all other performance or nonperformance by us under
or related to this Agreement are limited to the remedies specified by this
Agreement.
d. Some states do not allow the exclusion of implied warranties, so
the above exclusion may not apply to you. This warranty gives you
specific legal rights, and you may also have other rights which vary from
state to state.
4.

Termination

This Agreement is effective until terminated. You may terminate it at


any time by destroying the Software Package, including all computer
programs and documentation, and erasing any copies residing on
computer equipment. This Agreement also will terminate if you do not
comply with any terms or conditions of this Agreement. Upon such

RobotAssist - Users Manual

New River Kinematics

termination you agree to destroy the Software Package and erase all
copies residing on computer equipment.

RobotAssist - Users Manual

New River Kinematics

RobotAssist TM
1. GETTING STARTED ................................................ 11
1.1 Before Proceeding ............................................. 11
1.2 System Requirements ....................................... 11
1.3 Installation.......................................................... 12
TM
TM
1.3.1 Windows 95 and Windows NT 4.X Installation
........................................................................... 12
1.3.2 Installation of the Dongle Hardware Lock 12
TM

2. INTRODUCTORY ROBOT-ASSIST SESSION ..... 13


2.1 Opening an Existing Model ................................ 13
2.2 Changing the User View .................................... 13
2.3 Moving the Robot............................................... 14
2.4 Storing Desired Locations and Orientations ...... 15
2.5 Moving Between Defined Frames...................... 15
3. BASIC ROBOT MODELING ..................................... 17
3.1 Kinematic Conventions ...................................... 17
3.1.1 Coordinate Frames.................................... 17
3.1.2 Spatial Transformations ............................ 18
3.1.3 Denavit-Hartenberg Notation..................... 19
3.2 ROBOT-ASSISTTM Modeling Architecture.............. 20
3.2.1 Objects ...................................................... 20
3.2.2 Groups....................................................... 20
3.2.3 Manipulator Components .......................... 20
3.3 Beginning a New Model ..................................... 21
3.4 Creating and Using Groups ............................... 21
3.5 Adding Object Primatives to the Model............. 23
3.6 Custom User Defined Objects ........................... 23
3.6.1 Extrusions.................................................. 23
3.6.2 Solids of Revolution................................... 23
3.6.3 Custom or User Defined Object ................ 24
3.7 A Quick Modeling Tutorial.................................. 24
3.7.1 Modeling Example: A Unimation Puma 260 Robot
........................................................................... 26

RobotAssist - Users Manual

New River Kinematics

3.7.2 Running the Robot Generator ................... 26


3.7.3 Editing the Denavit-Hartenberg Parameters27
3.7.4 Test Driving the Manipulator...................... 28
3.7.5 Experimenting with Views and Windows ... 29
3.7.6 Enhancing the Robot Appearance ............ 29
3.7.7 Enhancing the Robot Performance Parameters 32
4. MATERIAL INVENTORY AND LIGHTING ............... 33
4.1 Material Properties............................................. 33
4.1.1 Ambient and Diffuse Reflectivity................ 33
4.1.2 Specular Reflectivity .................................. 33
4.1.3 Emmissive Reflectivity............................... 34
4.1.4 Changing Existing Materials ...................... 34
4.1.5 Adding New Materials............................... 34
4.2 Lighting Properties............................................. 34
5. PLANNING MOTIONS.............................................. 36
5.1 Introduction to Motion Planning ......................... 36
5.2 Interpolation Method .......................................... 36
5.2.1 Frame of Interpolation ............................... 36
5.2.2 Type of Interpolation.................................. 37
5.3 Trajectory Generation Parameters .................... 37
5.3.1 Trajectory Parameters ............................... 37
5.3.2 Joint Parameters ....................................... 39
6. CONTROL PROGRAMS (PRGS) ............................ 41
6.1 Animation Programs .......................................... 41
6.1.1 Storing Model States ................................. 41
6.1.2 Directing an Animation Program................ 42
6.2 Executing a Control Program............................. 43
6.3 Comments ......................................................... 43
6.4 Command Reference......................................... 44
6.4.1 joints .......................................................... 44
6.4.2 trans .......................................................... 44
6.4.3 int............................................................... 45
6.4.4 float ........................................................... 45
6.4.5 jmove......................................................... 45
6.4.6 path ........................................................... 46

RobotAssist - Users Manual

New River Kinematics

6.4.7 peripherals................................................. 46
6.4.8 mark .......................................................... 47
6.4.9 label........................................................... 47
6.4.10 jump......................................................... 47
6.4.11 if .............................................................. 47
6.4.12 incr........................................................... 48
6.4.13 pause....................................................... 48
6.4.14 note ......................................................... 48
6.4.15 jog............................................................ 49
6.4.16 relay......................................................... 49
6.4.17 wait .......................................................... 49
6.5 System Variables............................................... 49
6.5.1 sPosInt ...................................................... 50
6.5.2 sOriInt........................................................ 50
6.5.3 sPosSpec .................................................. 50
6.5.4 sOriSpec.................................................... 50
6.5.5 sMarkMode................................................ 51
6.5.6 sChangeView ............................................ 51
6.5.7 sViaSpacing .............................................. 51
6.5.8 sViaVelocity............................................... 51
6.5.9 sInterpScale .............................................. 51
6.5.10 sWorking ................................................. 51
6.5.11 sBase ...................................................... 52
7. ADVANCED ROBOT MODELING............................ 53
7.1 Merging Model Files........................................... 53
7.2 Peripheral Devices............................................. 53
7.2.1 Creating Peripherals.................................. 53
7.3 Extrinsic Calibration ........................................... 54
7.3.1 Definition ................................................... 54
7.3.2 Data Collection .......................................... 55
7.3.3 Computation (To Move Group to Robot) ... 55
7.3.4 Computation (To Move Robot to Group) .. 56
7.4 Dimensioning ..................................................... 56
7.4.1 Adding a Dimension .................................. 56
7.5 Linkages and Passive Extensible Device Modeling 57
7.5.1 Passive Extensible Actuator Example ....... 58

RobotAssist - Users Manual

New River Kinematics

7.5.2 Adding the required groups. ...................... 58


7.5.3 Creating a Linkage to bind the groups....... 59
7.5.4 Displaying the length of the actuators ....... 59
7.6 IGES Export / Import.......................................... 59
7.6.1 Export ........................................................ 59
7.6.2 Import ........................................................ 60
8. AUTOMATIC MODEL FILE BACKUP ...................... 61
9. ROBOT-ASSIST SYSTEM OPTIONS ...................... 62
9.1 Display Options Page ........................................ 62
9.1.1 Graphics Mode Section ............................. 62
9.1.2 Autoscale Section...................................... 62
9.1.3 Tool and Info Bar Section.......................... 63
9.1.4 Coordinate Frames Section....................... 63
9.1.5 Preset Views Section ................................ 63
9.2 System Increments Page................................... 64
9.2.1 Position Increment..................................... 64
9.2.2 Rotation Increment .................................... 64
9.2.3 Facets Increment....................................... 64
9.3 Light Conditions Page........................................ 64
9.4 Material Inventory Page ..................................... 65
9.4.1 Ambient and Diffuse Reflectivity................ 65
9.4.2 Specular Reflectivity .................................. 66
9.4.3 Emmissive Reflectivity............................... 66
9.4.4 Changing Existing Materials ...................... 66
9.4.5 Adding New Materials............................... 66
9.5 Joint Parameters Page ...................................... 67
9.5.1 Joint Section.............................................. 67
9.5.2 Type Section ............................................. 67
9.5.3 Position Limits Section .............................. 67
9.5.4 Dynamic Limits Section ............................. 67
9.5.5 Conversion Section ................................... 68
9.6 Trajectory Parameters Page .............................. 68
9.6.1 Cartesian Section ...................................... 68
9.6.2 Time Trajectory Section ............................ 69
9.6.3 Simulation Section..................................... 69

RobotAssist - Users Manual

New River Kinematics

9.6.4 Path Blending Section ............................... 70


9.7 Inverse Solver Parameters Page ....................... 70
9.7.1 Stopping Conditions Section ..................... 70
9.7.2 Search Control Section ............................. 71
9.7.3 Last Solution Section................................. 72
9.8 Motion Options Page ......................................... 72
10. APPENDIX A - SPACEBALL INTERFACE ............ 74
11. INDEX ..................................................................... 76

RobotAssist - Users Manual

10

New River Kinematics

1. GETTING STARTED
1.1 Before Proceeding
Warning!
Robots and other machinery can be extremely dangerous. It is the
responsibility of the user to provide appropriate safety training for
operators of this equipment and to design fail-safe protection for all
individuals and equipment near any machinery. New River
Kinematics shall not be liable or responsible for any incidental or
consequential damages resulting from the use or misuse of this
software.

1.2 System Requirements


ROBOTASSISTTM is designed to run on relatively modest computing
platforms. Most currently produced 32-Bit personal computers are capable
of running this software.
Minimum requirements
100 MHz Pentium PC
Windows NTTM or Windows 95TM operating system
16 Megabytes of system RAM
40 Megabytes Hard Drive Storage Space
800 x 600 Video Driver

Recommendations for best performance


Any Pentium II or Pentium III processor
Windows NT or Windows 95 operating system
32 Megabytes of system RAM
40 Megabytes Hard Drive Storage Space
1024 x 768 Video Driver with 64K Color Depth

RobotAssist - Users Manual

11

New River Kinematics

1.3 Installation
TM

The installation of ROBOTASSIST is similar to most windows packages.


TM
ROBOTASSIST is supplied on 1.44 Megabyte floppies. In all cases, the
goal of the installation procedure outlined below is to run the setup.exe
program contained on disk one of the installation disks. Users familiar with
TM
how to accomplish this task in Windows may proceed with any suitable
method. For those unfamiliar with these operations, we have outlined
TM
below the specific steps for installing on Windows 95 and Windows
NTTM systems.

1.3.1 Windows 95TM, Windows NTTM 4.X, and Windows 2000


Installation
1.
2.
3.
4.

Insert the first installation disk in a floppy drive.


Hit the start button on the taskbar.
Select the Run option.
In the Space provided type <Drive Letter>: \setup.exe , (e.g. a:\setup.exe)
and hit OK.
5. You will be prompted for necessary information during the installation
TM
6. If you are using Windows NT as your operating system you must
separately configure the hardware lock drivers as follows:
TM
(Windows NT Only!)
Run the nthwlock.bat file. This file is located in the \sentinel sub-directory
underneath the program directory generated by the install program.

1.3.2 Installation of the Dongle Hardware Lock


TM

ROBOT-ASSIST
uses the most sophisticated dongle hardware lock
available. We have researched alternatives thoroughly and taken all
precautions necessary to ensure that these devices will in no way hinder
TM
the operation of your computer system. In general, the 32-Bit Windows
TM
environments are much more structured than previous 16-Bit Windows
TM
and DOS systems. As a result, you will discover that the poor reputation
of these devices is no longer warranted. To install the dongle simply
remove the cables of any current parallel devices, insert the dongle into
your parallel printer port, and re-connect the parallel cables into the back
of the dongle. Be certain not to install the dongle backwards into any 25pin serial ports that you may have. If allowed by your computer
manufacturer, the dongle may be removed or installed at any time and is
not necessary at the time of boot.

RobotAssist - Users Manual

12

New River Kinematics

2. INTRODUCTORY ROBOT-ASSISTTM SESSION


2.1 Opening an Existing Model
TM

ROBOTASSIST ships with a library of pre-defined models that cover a


wide variety of manipulator types. These robots may be accessed by
opening the associated files. To do this, select the File menu, then the
Open option. A file selection dialog will appear. Move to the directory
containing the sample files, and select the file you wish to work with. The
PUMA 260 file is a good place to start.
The program will load the file quickly and display the model in an isometric
TM
view. Congratulations, you have opened your first ROBOTASSIST model
file.

2.2 Changing the User View


When a model file is first opened, the viewpoint defaults to isometric. You
may change this quickly by using the toolbar buttons. There are several
buttons in the middle of the main toolbar that represent several of the
preset views. Try pressing these toolbar buttons, and the view will change
immediately.
To view the model from a viewpoint that is not pre-defined, you may either
use the mouse or the point-of-view dialog. To use the mouse, press the
right button and drag the mouse (leaving the button depressed.). You will
notice the view changing in response to the mouse motion.
You may also zoom in by dragging a window across the current view. To
do this, hold down the left button and drag the mouse. You will see a
rectangle appear and track your movement. Once you have bounded the
area of interest, release the mouse, and the view will zoom.
If you have trouble remembering the mouse commands, pull up the pointof-view dialog by selecting Point of View from the View Menu. By
pressing the buttons in this dialog, you will be able to perform the same
operations you performed previously using the mouse. You will also be
able to spin the view which cannot be done using the mouse options.

RobotAssist - Users Manual

13

New River Kinematics

There are several other mouse options:


SHIFT + Left Button will pan the view as you drag the mouse.
CONTROL + Left Button will zoom the view in and out as you move the
mouse up and down respectively.
Also note that you may completely redefine the preset views from the
system options Views property page.

2.3 Moving the Robot


Once you have opened a model file, you may immediately begin to move
the robot in the model environment. To do this, select the Control menu,
then the Teach Pendant. A dialog will appear which resembles a
conventional manipulator teach pendant.
You may use the pull-down box in the dialog to set the type of motion the
buttons will initiate. Try selecting Joint motion. Next, press the arrow
buttons and notice the motion of the joints. You may also select Tool
motion, for example. This will cause the kinematic solver to be activated
so that the manipulator can move in the tool coordinate system. Also
notice that when you select tool mode, the text beside the teach pendant
buttons changes to X, Y, Z, Rx, Ry, Rz. The buttons now control the
motion of the tool relative to its local coordinate system.
Also under the Control menu, there is an option for Joint Control. Select
this option to pull up the Joint Control dialog where you can control the
joints of the manipulator or manually enter the joint values. Notice the
Copy and Paste buttons in this window. These will allow you to copy the
joint values to the clipboard and then paste them into a data file for
example. Or, you can take joint values from a data file and paste them
into the joint control window. This feature is especially useful when
programming Control Programs using the ROBOTASSISTTM control
language. For more information on this feature see the Control Language
section.

RobotAssist - Users Manual

14

New River Kinematics

2.4 Storing Desired Locations and Orientations


Desired locations and orientations may either be created by manually
entering the position and orientation for the location, or by storing the
current position and orientation of the manipulator tool.
To manually create a coordinate frame at the desired location. Select the
New menu, then the Frame option. A new frame will be created. Next,
press the transform button and position the frame at the desired position
and orientation. Note that this is the position and orientation where the
tool of the manipulator is to be driven.
In order to create a coordinate frame at the current location of the tool,
simply select any object within the tool group (double-click). Once the
object is highlighted, select the New menu, then the Frame option. This
will create a coordinate frame located at the origin of the selected group
(in this case, the tool frame). You may wish to extend one of the axes of
the new frame to distinguish it from the tool frame. Next select the newly
created coordinate frame, and attach it to the world. This will detach the
frame from the tool so that it will not move when the robot is moved to its
next position. For more information on how to attach objects to other
groups see the chapter on Modeling.
Once the frame has been attached to the world frame, move the
manipulator. The frame should remain at its original location. Move the
manipulator to another location and create another frame. Remember to
attach this frame to world. At this point, there should be two coordinate
frames at the desired locations for the tool. The next section will explain
how to move the robot between these locations.

2.5 Moving Between Defined Frames


In addition to moving the individual joints of the manipulator with the teach
pendant or moving the tool in its coordinate system, it is also possible to
drive the manipulator tool to a predefined location. The previous section
explained how to create coordinate frames both manually and by using
the tool of the manipulator.

RobotAssist - Users Manual

15

New River Kinematics

In order to initiate motion, highlight the goal frame. Select the Control
menu, then Drive Tool To Group. A path will be planned from the current
tool transformation to the goal, via points will be generated, and the robot
will move to the goal. Of course this assumes that the coordinate frame is
within the workspace of the manipulator.
TM

In addition to this method or planning motion, ROBOTASSIST contains a


control language which allows you to plan elaborate motions by using a
text editor. The function is similar to that described here. See the Control
Language section for more detailed information.

RobotAssist - Users Manual

16

New River Kinematics

3. BASIC ROBOT MODELING


Regardless of their complexity, most robotic manipulators can be modeled
in only a few steps using ROBOTASSISTTM. The first step is to use the
Robot Generator to create a kinematic description of the manipulator.
Since the actual link shapes and sizes have yet to be specified,
TM
ROBOTASSIST will generate a default skeleton of links and joints. You
can now experiment with your manipulator by controlling its motion,
specifying a motion sequence, or changing views. In some cases, this
skeletal model will provide a sufficient simulation of the manipulator and
no further work will be needed. The final step in the modeling process is
used to create a more accurate physical representation of the
manipulator. In this step, the manipulator skeleton is "fleshed out" by
attaching actual link and joint shapes using predefined or user-defined
solid geometric entities known as primitives. Once the manipulator has
been created, ROBOTASSISTTM offers a wide variety of simulation and
control features. The following sections will describe in detail the entire
modeling process. Starting with necessary background information and
progressing through the making of a working robot model.

3.1 Kinematic Conventions


TM

ROBOTASSIST uses a widely accepted standard notation for describing


positions and orientations. Users familiar with these conventions may skip
to the next section.

3.1.1 Coordinate Frames


To describe motion we must first establish a frame of reference.
Coordinate frames are a convenient way of representing these reference
systems. In all cases coordinate frames in ROBOTASSISTTM will be
represented by right-handed cartesian coordinate frames (i.e. frames
consisting of X, Y, and Z axes which are at right angle each other such
that the cross-product of the X and Y axes yields the Z axis. It should be
noted however, that a user may obtain coordinates in either cartesian
[x,y,z], cylindric [r,,z], or spheric (also known as polar) [r,,] systems.
Coordinate frames may be added by hitting New, Frame. If no group or
frame is pre-selected the frame will be added relative to the world. If a

RobotAssist - Users Manual

17

New River Kinematics

group or frame is selected the new frame will be added relative to the
selected group.

3.1.2 Spatial Transformations


Spatial transforms are 4 by 4 matrices that are used to represent both
position and orientation simultaneously. This combination of position and
TM
orientation is also referred to as pose. Every object in ROBOTASSIST has
a transformation. You may inspect an objects
transformation in
TM
ROBOTASSIST
by depressing the transform button in the objects
property dialog. Additionally, the actual transform matrix may be viewed
by pressing the view matrix button. An object in three degree-of-freedom
space has a total of six degrees-of-freedom- three positional and three
rotational. Thus, at least six independent parameters are needed to
specify an objects pose.
To more succinctly represent transformations, several intuitive
conventions for describing transformations have been developed. Note
that the spatial transformation for a particular position and orientation is
unique, however, the description of the spatial transformation can take
many forms. We could for example, describe a particular position by
specifying its location using a cartesian description. That is to say we may
describe the position as an X,Y,Z coordinate. Alternatively, we could
describe this position in cylindric or spherical coordinates. Likewise, we
could specify the orientation as a fixed XYZ rotation (where we first rotate
about the reference frames X axis, then Y axis, then Z axis) or we could
specify the orientation as an Euler XYZ rotation (where we first rotate the
object about its X axis, then about its now moved Y axis, then finally
about its resulting Z axis).
For a more detailed discussion of representing pose see Craig[1] .
Since all ROBOTASSISTTM objects possess transformations, a user will
never define a transformation per say. One transformation is generated
with each object that is created. The user may instead manipulate the
transformation by viewing the objects property dialog, selecting
transformation, and the typing in correct values followed by depressing
update, or by using the spin buttons beside the values. Using the spin
buttons will allow the program to animate the position or orientation of the
object as it is changed.

RobotAssist - Users Manual

18

New River Kinematics

3.1.3 Denavit-Hartenberg Notation


Most manipulators are serial devices, meaning they are composed of a
series of links and joints connected in an open chain.
Links are rigid members; joints allow relative motion between the links.
The chain starts at the base, or ground link, and ends at the working tool.
Except for the tool link and the base, each individual link in the chain
begins and ends with a joint. The tool may be a gripper, paint sprayer,
welding tip, electro-magnet or any of a wide variety of devices. Common
manipulators use only revolute (turning) or a prismatic (sliding) joints to
connect links. More complicated forms of joints can always be modeled as
a combination of these simple elements. The function of a link is merely
to fix the relationship between the joints at either end of the link. As long
as the two joints are held at the same relative position and orientation with
respect to one another, the link serves only as a rigid connector. The
actual physical shape of the link can be changed without altering the
kinematic relationship between the two interconnected joints.
A kinematic description of the manipulator is generated by
TM
ROBOTASSIST using the standard Denavit-Hartenberg notation. This
remarkably simple representation uses only two values to describe each
link, and two additional values to describe the joint connection between
adjacent links. Links are described in terms of their length (a) and the
twist they maintain between adjacent joints ( ), as explained below.
Link Length (a): the distance between the two joint axes of a link. This
distance must be measured along a line that is normal (i.e. perpendicular)
to both joint axes. This line is referred to as the common normal between
the joint axes. If the joint axes intersect (a common arrangement in
industrial manipulators), the link will have zero length.
Twist Angle (
): the angle between the first and second joint axes on a
link. This angle is measured in a right-hand sense when viewed directly
along the common normal.
The joint connection between adjacent links is described in terms of the
offset (d) and the joint angle (), as explained below.
Offset (d): The distance between the common normal of one link and
the common normal of the next, measured along the axis of the joint
connecting the two links.

RobotAssist - Users Manual

19

New River Kinematics

Joint Angle (
): The angle between the common normal of one link and
the common normal of the next, measured about the axis of the joint
connecting the two links.
The four parameters a, , d, and , when taken for each link and joint in
the chain, provide a complete kinematic description of the manipulator.
When taken together with a description of the physical shape of each link
and limits on joint motion, an accurate simulation of robot motion and
operating workspace can be developed.
For a more detailed description of Denavit-Hartenberg notation see
Craig[1] .

3.2 ROBOTASSISTTM Modeling Architecture


3.2.1 Objects
TM

The modeling capabilities of ROBOTASSIST are based on its parametric


object database. All object primitives used to create a model are created
based on a set of parameters. At any time through the life of the model,
the user may choose to modify those parameters, and the object will
change accordingly. This allows the user to make modifications without
re-creating the entire object as a series of points, lines, and facets.

3.2.2 Groups
In addition to objects, ROBOTASSISTTM contains groups. Groups are used
to combine multiple objects and other sub-groups into a single, attached
entity. Since each group has a transformation from its coordinate frame
to its parent coordinate frame, it is possible to move groups of objects
relative to their parent groups. This allows the user to construct a
hierarchical tree of groups.

3.2.3 Manipulator Components


Robots are modeled using separate groups for each link. In addition,
there is a group for the base, and a group for the tool. The user may add
additional objects to these groups, or even additional sub-groups to the
link groups. The main distinction between link groups and all other groups
is that link groups are controlled by the kinematics of the manipulator.
The joint values of the robot are used in conjunction with the DenavitHartenberg link description convention to determine the transformation

RobotAssist - Users Manual

20

New River Kinematics

matrices for each link of the manipulator. All objects attached to the link
groups will move as the link moves. In fact, if you modify a link group and
change its transform, the group will move accordingly. The next time you
move the robots joints, however, the group will snap back to its proper
place. This is because the robot has control over the group.

3.3 Beginning a New Model


TM

Start with a fresh ROBOTASSIST


model file by using the File, New
command. Since you have created a new file, there are no objects,
groups, or robots in the model. If you want a robot in the model, use the
File, Robot Generator option. This option will prompt you for the number
of degrees of freedom, and the scale factor of the representative objects.
TM
After setting these options, ROBOTASSIST will display a basic model of
the manipulator. In addition, the Denavit-Hartenberg parameter editor will
appear. This editor allows you to change the kinematic properties of the
links of the robot. Refer to the kinematic conventions section on DenavitHartenberg notation for a more in-depth description.
Once the kinematic structure of the robot has been defined, you can move
on to modeling other objects in the robots workspace, or other objects
attached to the manipulator itself. Note that once the Denavit-Hartenberg
parameters have been properly configured, the model, though crude,
completely represents the kinematic structure of the device. To produce a
more realistic model, replace the default objects, and enhance the model.

3.4 Creating and Using Groups


Grouping provides a easy and intuitive way to enable powerful hierarchical
associations of objects. With grouping, objects have parents and
offspring. An object is always positioned relative to its parent and may
have some number of child objects which are positioned relative to it. To
better illustrate the capability consider the following example.
Suppose you are interested in drawing a table with an assortment of
objects placed on it. If you know the position of one corner of the table
relative to the world coordinate system, you may construct the entire table
relative to that system. To do this, select Group, Add from the main
menu. A new group will be added, and the Group Properties dialog will be
displayed. Note that when a group is created, a frame object is also
created and attached to the group. This is done so that there is an object

RobotAssist - Users Manual

21

New River Kinematics

for you to highlight in order to select the group. At this time, you may
name the group, and perform several operations on the group.
Hit the transform button to modify the position and orientation of the group
relative to its parent frame (WORLD if this particular group has no parent).
If you wish to change the parent of this group, highlight any object
attached to the desired parent, and press the Select Parent button. After
a verification, the group will remain in its original position, but will be
assigned to the proper parent. Note that the transformation of the object
relative to its new parent will be computed at this time so that the object
will not move. There is also a peripheral devices button on the group
properties dialog. For more information on peripheral devices, see the
corresponding section of this manual.
At this point, you have created the new group that will form the corner of
the table. In addition, you may have positioned the representative
coordinate frame at the proper location for the table corner. Now, to add
the table top, select the group coordinate frame, then select Object, New,
and then the object, say a box, that will represent the table top. The
object will appear based at the origin of the new group coordinate frame.
You may modify the object to make it appear realistic. Also, add the legs
of the table in the same manner.
Once the table has been properly assembled, you are free to position it
throughout the model. Select any object attached to the new group, then
select Group, Modify from the main menu. Modify the Transform of the
group, and the table and all its objects will move as one unit.
Now, suppose you wanted to add a circuit board to the top of the table.
First, select any object attached to the table, then press Group, Add. A
new group will be added with the table group as its parent. Move it to the
desired location, and attach the circuit board components to the new
group.
Repeat this process to model the entire working environment of the robot.
The grouping structure allows you to build a complex structure of objects
while maintaining the ability to move groups of objects as a unit.

RobotAssist - Users Manual

22

New River Kinematics

3.5 Adding Object Primatives to the Model


TM

ROBOTASSIST contains an inventory of predefined geometric primatives


that can be used as building blocks to construct realistic representations
of complex objects. To add a new object, click on the New menu item.
You will notice an array of cylinders, boxes, spheres, etc. After selecting
the desired object, you are able to change the objects size, transform, and
material. Note that the point about which the object scales is located at
the center for objects such as cylinders and at one of the objects corners
for some other objects such as boxes. These options were selected this
way to best facilitate modeling operations where the user wishes to joint
two objects by aligning their respective faces.

3.6 Custom User Defined Objects


TM

ROBOTASSIST
contains three types of user-defined (custom) objects.
The dialog box for each of these objects contains a Transform button that
allows the object to be positioned and oriented with respect to its
reference coordinate frame.

3.6.1 Extrusions
The extrusion object allows the user to define general solids of extrusion.
This is done using a shape file (.SHA). This file contains a list of 2-D
points defining the end facet of the extrusion. The extrusion object will
load these points, and then extrude the solid as specified. The file format
is as follows:
5 Points in list
1.6
-6.48
x,y of the point
1.6
1.50
-1.0
1.50
-4.4 -2.00
-4.4 -6.48

3.6.2 Solids of Revolution


The rotation object allows the user to define general solids of rotation.
This is done using a shape file (.SHA). This file contains a list of 2-D
points defining the end facet of the rotation. The rotation object will load
these points, and then rotate the solid as specified. The file format is as
follows:

RobotAssist - Users Manual

23

New River Kinematics

5 Points in list
1.6
-6.48
x,y of the point
1.6
1.50
-1.0
1.50
-4.4 -2.00
-4.4 -6.48

Once a shape has been loaded, the axis of rotation as well as the span of
the rotation may be specified.

3.6.3 Custom or User Defined Object


The Custom object may be used to add any general user defined object to
the model. This object is loaded from a text file (.USR) using the same
format as the Write Object command:
3
Number of points
7
3 5 6
10
10 -4 8
15
4 10 2
3
Number of Lines
7 10
10 15
15 7
1
Number of Facets
3
7 10 15

The points segment includes a list of user defined points. Each point is
preceded by a point ID number. This number if used in the line and facet
section to identify the point. These numbers do not have to be in order
and may skip numbers. The lines segment contains a list of the endpoints
of the lines. 7 10 will connect point 7 to point 10.
The Facets segment contains a list of facet points. These points are
preceded by a count indicating the number of points in the facet. The
points should proceed around the facet in a right-hand sense. In other
words, the right hand rule should yield an outward normal for the facet.
The first three points will be used to compute the normal vector for the
facet.

3.7 A Quick Modeling Tutorial


Regardless of their complexity, most robotic manipulators can be modeled
TM
in only a few steps using ROBOTASSIST . The first step is to generate a

RobotAssist - Users Manual

24

New River Kinematics

starting model which contains the correct number of links and joints that
are roughly the right size. After generating this starting model, the
Denavit-Hartenberg parameter editor can be used to make an exact
kinematic description of the manipulator. Since the actual link shapes and
sizes have yet to be specified, ROBOTASSISTTM will generate a default
skeleton of links and joints.
You can now experiment with your
manipulator by controlling its motion, writing and running a motion
program, changing views, etc. In some cases this skeletal model will
provide a sufficient simulation of the manipulator and no further work will
be needed. The final step in the modeling process is used to create a
more accurate physical representation of the manipulator. In this step,
the manipulator skeleton is "fleshed out" by attaching actual link and joint
shapes using predefined or user-defined solid geometric entities known as
TM
primitives. Once the manipulator has been created, ROBOTASSIST
offers a wide variety of simulation and control features.

RobotAssist - Users Manual

25

New River Kinematics

3.7.1 Modeling Example: A Unimation Puma 260 Robot


The following example will take you through the process of creating an
actual robot model step-by-step. A schematic of the desired manipulator
is shown below. This is a desktop sized, six degree-of-freedom
articulated arm.

3.7.2 Running the Robot Generator


The first step in the modeling process is to use the Robot Generator to
construct a starting model that contains the right number of links and
joints. To do this, Select the Robot Generator option under the File menu,
enter the total number of Degrees-of-freedom (6) and select a nominal
link length (10). The Generator will then construct a serial linkage set with
six joints and links that are 10 units long. This model is shown below. After
making this starting robot the generator will automatically spawn the
Denavit-Hartenberg editor dialog.

RobotAssist - Users Manual

26

New River Kinematics

3.7.3 Editing the Denavit-Hartenberg Parameters


The table below shows the complete Denavit-Hartenberg parameters for
the puma 260 manipulator. Enter these values into the DenavitHartenberg editor dialog by selecting the appropriate link and changing
the values. Note that the values shown are all zero. Since the joints are
revolutes, these values are actually variables and you could enter any
number you like. After entering value hit the Build Default Robot button
and the now segmented model will be replaced with a joined stick figure
model. For a more comprehensive discussion of Denavit-Hartenberg
parameters see Craig[1].
Link
1
2
3
4
5
6

0.0
-90.0
0.0
-90.0
90.0
-90.0

a
0.0
0.0
8.0
0.0
0.0
0.0

d
0.0
0.0
-4.8
8.0
0.0
0.0

0
0
0
0
0
0

Type
Revolute
Revolute
Revolute
Revolute
Revolute
Revolute

After completing this step you now have a fully functional accurate
kinematic model of the manipulator shown below. You could actually use
this for control and simulation tasks without any loss of capabilities.

RobotAssist - Users Manual

27

New River Kinematics

3.7.4 Test Driving the Manipulator


You are now able to fully control and modify the model you have created
To move the manipulator, follow the instructions below:
From the CONTROL menu select TEACH PENDANT. The Teach
Pendant dialog should appear. Move any of the joints and watch the
manipulator move on the screen. You are now controlling the robot using
a direct forward kinematic solution. The "SPEED" arrow at the bottom of
the window can be used to control the magnitude of each joint step.
Selecting the down arrow in the "Joint 1-6" selection box will reveal the
options "Joints 7-12", "Joints 13-18", "World" and "Tool". Some
manipulators contain more than six joints (they are referred to as
redundant manipulators) and thus need additional joint control arrows.
Selecting "World" or "Tool" as the teach coordinate will activate the
inverse kinematic solver and change the meaning of the control buttons.
Selecting "World", for example, will change the window to the one shown
to the right. You can now move the manipulator in the X, Y, or Z directions
(relative to the World coordinate frame) using the first three buttons. If the
solver is unable to find solutions, the step size may be too large so that
workspace boundaries are encountered.
Rotation of the tool now
becomes rotation about the world X, Y, and Z axes, controlled by buttons
4-6.

RobotAssist - Users Manual

28

New River Kinematics

Now that you have a working, controllable model, you can experiment with
different views and windowing options. A few useful options are
described below.

3.7.5 Experimenting with Views and Windows


You can open multiple windows and views of your model as follows.
Select WINDOW, THREE NEW WINDOWS from the main menu - this
should produce four identical views of your manipulator. You should now
have three true-length views (top, front and side) and one oblique view these four view are usually sufficient for later work in "fleshing out" your
model.
Also within the VIEW menu try the ZOOM, PRESET VIEWS,
AUTOSCALE, GRAPHICS MODE, and BACKGROUND TOGGLE
commands. Also note that many of the menu- selected commands
described here are available on the toolbar located below the main menu.
The toolbars is turned on and off from within the main system options
property page (the tab folder array). It is also possible to open windows of
several different robots at the same time by opening stored robot files or
importing existing files into the current file.

3.7.6 Enhancing the Robot Appearance


Although the above model is adequate for most tasks, many users
naturally want their robot model to appear realistic. One of the primary
TM
uses of simulation software such as ROBOTASSIST is to gain detailed
information about the motion of the manipulator with respect to its
surrounding. Clearances or potential interferences are often of great
interest. To obtain this information, it is necessary to have an accurate
physical representation of the manipulator in addition to the kinematic
model already developed.
Accurate physical representation of
components is achieved by "fleshing out" the manipulator with realistically
dimensioned components. Try changing one of the default link shapes
by adding a new primitive and then deleting the original default links
TM
created by ROBOTASSIST . The following steps will illustrate how to

RobotAssist - Users Manual

29

New River Kinematics

enhance the appearance in a very rudimentary form. Further refinements


are easy to accomplish but will not be enumerated here.

1) Select the first blue-colored cylindrical link by double clicking the left
mouse button on the link (the selected object will flash). If you get the
wrong object at first try clicking on the object in another. Selection is
based on a depth sort and it is possible to select an object behind another.
2) Once you have selected the desired link, click NEW in the main menu.
From the sub menus, pick BOXES then ARCHED BOX. This will create a
new object (an arched box primitive) attached to (i.e., it will move with)
the selected link. It will also bring up a window that will allow you to edit
the size and location of the object. Note that you can freely move this
window, change views, zoom and make use of other features as you
attempt to size and position the rounded box.
3) Edit the numbers in the rounded box window to be X-Length = 8, Y-width 1
= 3, Facets = 20, Y-width 2 = 4.5 and Zdepth = 2. This can be done
using the arrow buttons or by clicking on the existing values and editing
them directly. Once the numbers are correct, click UPDATE or, if you
wish, hit update after changing each value so that you can see he resulting
changes. You should now see a link of the desired size and shape on top
of the original link.
4) You can double check your progress to this point by using the TEACH
PENDANT to move the various links. You should see your new object
moving as part of link 1.
5) The new arched box can also be repositioned on its base link (link 1) by
selecting TRANSFORM from the rounded box editing window. Try moving
the link in the X, Y, and Z directions to see what happens. Rotations are a
bit tricky, but, when needed, their meanings become clear with a little
experimentation. For the desired model change the following values in the
transform editor: Y=-2.3, Z= -3.7.
6) Since the arched box represents the desired link shape, you can delete the
original cylindrical link. To do this, be sure the original link is selected
(indicated by a quick flash upon selecting), then select OBJECT followed
by DELETE from the main menu. You will get a request to confirm this
operation before the link is removed.
7) You may now add the following objects to this link in a similar fashion.
Well just present the values here to get you going quickly, but feel free to
play with each of these objects as they are added to the link. Remember to

RobotAssist - Users Manual

30

New River Kinematics

select the link before adding each new object, otherwise the objects will be
added by default to the world.
Object
Box

Cylinder

Cylinder

Parameter Values
X-Length = 2.5
Y-Width = 4.5
Z-Height = 2.0
Dia = 2.0
Length = 3.5
Facets = 20
Dia = 2.0
Length = 3.5
Facets = 20

Transform
X = -2.5
Y = -2.3
Z = -3.7
X = -2.5
Y = -1.25
Z = -2.7
Ry = -90
X = -2.5
Y = 1.0
Z = -2.7
Ry = -90

8) Once you have finished editing an object, you can close its widows to keep
the screen clutter to a minimum. You can always edit objects later by
selecting them using the mouse, then selecting OBJECT, MODIFY from
the main menu. After you have added the first link, your model should
look like the one shown below.

RobotAssist - Users Manual

31

New River Kinematics

That's all there is to it. You can follow the same procedure to modify the
other links and create the complete model. The complexity and accuracy
of the model are up to you. Selecting any object attached to a link will
allow you to add a primitive to that link. Be sure to save your model
periodically just in case you make a mistake and want to go back several
steps. As the next chapter will describe, you can take advantage of
ROBOT-ASSISTs advanced lighting and materials property settings to make
a visually realistic model.

3.7.7 Enhancing the Robot Performance Parameters


You may now further enhance the robot model by adding appropriate
information regarding the joint positional ranges, as well as velocity and
acceleration limits. This is done from the main property page dialog by
selecting the Joint Parameters tab.

RobotAssist - Users Manual

32

New River Kinematics

4. MATERIAL INVENTORY AND LIGHTING


Because of the close relationship between material appearance and
lighting conditions, these two concepts are grouped into this one section
of the manual. For a more detailed description of various lighting and
material models, see Foley and VanDam[2] .

4.1 Material Properties


TM

Each object contained in a ROBOTASSIST model file has an associated


material type.
This material type determines how light from the
environment is reflected toward the viewer for any given configuration.
ROBOTASSISTTM contains a Material Inventory where all of the materials
are cataloged. To access this area, go to the system options property
page and select the Material Inventory tab. You will see a list of materials.
As you select the different materials, you will see their properties in the
window. This catalog of available materials is the same list presented
when you chose to set the material for a given object.
Each material has three separate color components and four additional
parameters. Each will be described below:

4.1.1 Ambient and Diffuse Reflectivity


This is what we normally perceive as the base or principle color of the
object. These are the colors that react to Ambient and Diffuse sources of
light. Diffuse reflection is most intense when the incident light strike the
object surface nearly perpendicular. Ambient reflection is completely
independent of the incident angle. Note that neither of these components
are affected by changing the users viewpoint if the lighting remains fixed..

4.1.2 Specular Reflectivity


The specular reflectivity component determines how the material reacts
to a specular light source. This is the color component of reflection that
yields highlights off of rounded edges. This component of material color is
affected by the position of both the light source and the users viewpoint.
Specular reflectivity is especially useful for producing a metallic looking
object. The shininess factor determines how sharp these highlights are.

RobotAssist - Users Manual

33

New River Kinematics

Consider a stainless steel cylinder. Assigning a shininess factor of 1,


simulates a dull or broad specular surface and the cylinder appears as if it
was sandblasted. Assigning a shininess factor of 128 simulates a highly
polished surface which produces very sharp highlights. In fact, at this
setting, the user will almost never see any highlights because they only
occur when the incident light is exactly reflected toward the user. A
shininess factor value of 30 is a good starting point for many polished
surfaces.

4.1.3 Emmissive Reflectivity


This is the component of light that is emitted from the surface of an object.
This seldom used component could be used to simulate a backlight LCD
display on a robot controller for example.

4.1.4 Changing Existing Materials


To alter an existing materials properties, go to the Robot System Options
property page and select the material inventory tab. Select the material
you wish to change in the left hand column. Hitting the reflectivity button
for the desired component will enable you to select the desired color. If
you change any of these properties and apply the changes, any objects
constructed from the modified material will be immediately updated.

4.1.5 Adding New Materials


You may also add materials in this property page. To do so, run the
Material Inventory dialog, select Add Material, and a new item will be
added to the list. Change the name and press apply. Next, select the
reflectivity (color) for each of the light components. Once all of the
properties are set properly, press the Apply button, and the properties will
be updated. This will insure that the material inventory is updated
properly.

4.2 Lighting Properties


All objects drawn in the ROBOTASSISTTM model are rendered based on
various lighting and material properties. You may change the lighting
properties of the model using the system option property page. To do
this, select the Edit menu, then User Options, then the Lighting Conditions
tab.

RobotAssist - Users Manual

34

New River Kinematics

The Lighting Conditions dialog will allow you to change the properties of
any of the 8 lights in the model. The default condition is to have only light
0 enabled. This is usually sufficient for most models, though additional
lights may be used to add a more realistic feel to the environment. It is
important to note, however, that additional lights substantially increase the
computational burden and will slow the graphics down.
There are three components of light available in the environment:
ambient, specular, and diffuse. Ambient light is the light level that is
present everywhere in the environment and impinges on every part of the
model. Specular light is the light component that only becomes visible
when a surface on the object reflects light directly back toward the users
point of view. Diffuse light emanates from the location of the light source.
This light will reflect off the object based on the orientation of the surfaces
to the light source.
Each component of light may be configured by pressing the associated
button. This will cause the color dialog to appear. Using this dialog,
select the lighting values you want, and press OK. Once you then press
Apply from the Lighting Conditions tab, the change will be visible in the
model environment.
There are several other more advanced lighting configuration options
available such as position, attenuation, and spotlight effects. These are
described well in the Foley VanDamm[2] text or other basic computer
graphics references.

RobotAssist - Users Manual

35

New River Kinematics

5. PLANNING MOTIONS
5.1 Introduction to Motion Planning
TM

ROBOTASSIST contains a sophisticated motion planning and trajectory


generation engine. Path or motion planning is defined as determining the
intermediate transformations the tool of the manipulator must pass
through to reach the desired goal. Trajectory generation is defined as
solving the inverse kinematics for all of the intermediate points and
generating a time trajectory foe each of the joints of the manipulator.
Path planning requires specifications as to the coordinate frame about
which interpolation is to occur as well as the desired tool velocity.
Trajectory generation on the other hand requires information on how fast
each joint of the manipulator is capable of moving.
This chapter will first discuss the path planning side of the problem, then
move into the trajectory generation component.

5.2 Interpolation Method


Given the current location of the tool (including the orientation of the tool)
and a desired goal location, it is necessary to determine intermediate via
points.
Because there are many possible paths between two
transformations, the user must specify the type of motion that is desired.

5.2.1 Frame of Interpolation


During via point interpolation, ROBOTASSISTTM will use the current Working
Frame as the reference coordinate system. This means that if, for
example, a Cylindric path is being generated, the center of the cylinder
used to create the via points will be taken to be the origin of the working
coordinate frame.
To change the working frame, Select User Options from the edit menu.
Next, select the Motion Tab. Under this dialog, there will be a button for
the Working Frame. When you press this button, the Transform dialog

RobotAssist - Users Manual

36

New River Kinematics

will appear, allowing you to change the working frame. Note the Copy and
Paste buttons.
These will facilitate data transfer between other
applications or Control Programs.

5.2.2 Type of Interpolation


Also under the Motion tab of the User Options property page, you will find
a series of options for interpolation mode. These are:
Cartesian Interpolation
Cylindric Interpolation
Spheric Interpolation
Changing the type of interpolation will change the path that the
manipulator will follow when moving between two coordinate frames.

5.3 Trajectory Generation Parameters


Once the desired via points have been determined using the path
planning module, it is necessary to determine the joint trajectories
necessary to accomplish the task. As mentioned before, the inverse
kinematics are run for each via point to determine the joint values at that
particular tool location. Once this is complete, the joint trajectories must
be determined so as not to violate any of the physical constraints of the
manipulator.

5.3.1 Trajectory Parameters


The trajectory parameters control the layout of both the path planning via
points and the trajectory generation joint sequences. To access these
parameters, select User Options from the Edit menu, then select the
trajectory parameters tab. The parameters are as follows:
Cartesian:
* Spacing

RobotAssist - Users Manual

37

New River Kinematics

Controls the distance between via points. If, for example, you were
planning a motion where the tool was to move 10 inches in the x
coordinate direction and the spacing was set to 1 inch, you would get 10
intermediate path via points.
The value of this parameter controls how closely the manipulator will
follow the prescribed path. Note that between the via points, the
manipulator is free to deviate from the path because it is moving in joint
coordinates.
* Velocity
Sets the initial time spacing of the via points prior to the trajectory
generation phase of the computation. The velocity parameter controls the
desired tool-tip velocity along the path. Obviously the manipulator cannot
maintain this velocity at the beginning and the end of the path, but beyond
that, the via points will be spaced so as to obey the velocity constraint.
* Minimum #
Sets the minimum number of via points allowed for a trajectory. This is to
prevent a short trajectory from containing too few via points to provide
adequate room for interpolation of tool orientation.
Time Trajectory:
* Spacing
The amount of time between generated path via points. The value is
usually specified by the controller. Often, a controller will expect points
ten times a second. In that case, set the spacing value to 0.1.
* Points
The number of points to be generated from the time trajectory. If this
value is zero, the Spacing value will be used to determine the number of
points. Only use this field when a constant number of via points is
desired.
* Expand or Compress Time As Needed
These check boxes allow you to specify the consideration given to
physical joint dynamic limits. Each joint has a maximum velocity and
acceleration assigned. When the initial path is defined at the desired
cartesian velocity, it is possible that some of these limits may be
TM
disobeyed. For this reason, ROBOT-ASSIST s Trajectory Generator will
expand or compress the time trajectory to comply with the joint dynamics.
Simulation:
* Time Scale

RobotAssist - Users Manual

38

New River Kinematics

This value controls the amount time is scaled when a trajectory is


simulated. Note that whenever ROBOTASSISTTM executes a trajectory in
simulation mode, the manipulator will move at the actual speed of the
trajectory. If this value were set to 2.0 for example, the manipulator would
move twice as fast. This option may be used to speed up detailed
simulation procedures.
* Show only via points
TM
By enabling this option, ROBOTASSIST will not simulate trajectories in
real-time. Instead, it will merely draw the manipulator at each of the
planned via points as quickly as the graphics will allow.
Path Blending:
* Perturbation
Controls how much the trajectory is moved in order to locate a more
suitable time spacing of the via points.
* Max Move
The largest step that the Trajectory Generation module is allowed to take
when attempting to comply with joint dynamics.
* Search Steps
Sets the number of intermediate search points used by the Trajectory
Generation Module.

5.3.2 Joint Parameters


The joint parameters are used to determine how well the proposed
trajectory complies with the physical dynamics of the joint actuators. The
actual values of these parameters should be obtained from the
manipulator manufacturer.
To set the manipulator joint parameters, select User Options from the Edit
menu. Next, select the Joint Parameters tab. This will show you the
available options for joint parameters. You may scroll through the
different joints using the scroll buttons in the upper left corner of the
dialog.
The position limits, when activated will post a message whenever a
prescribed path will disobey the limits of the joints. These limits may also
be set using this dialog.
The Offset and Scale values allow you to set the mapping from actual
joint values to Denavit-Hartenberg joint values. This will allow you to

RobotAssist - Users Manual

39

New River Kinematics

Scale a joint by -1 if the Denavit-Hartenberg description moves the joint in


the opposite direction of the physical hardware. Be sure to observe the
zero position of the manipulator and verify the values of the offsets.
You may also change the joint type from this dialog. Though you will not
do this everyday, it will allow quick design changes during testing.
The Velocity and Acceleration limits are the dynamic limits of the joint
actuator. These limits should be obtained from the hardware component
manufacturer. Note also that it may be necessary to alter these values
from their design values depending on the frequency of the via points and
the robustness of the hardware controller.

RobotAssist - Users Manual

40

New River Kinematics

6. CONTROL PROGRAMS (PRGS)


ROBOTASSISTTM contains a built-in control language. This language may
be used to execute animation programs and actually control the motion of
the manipulator. You can, for example, program a series of tool
transformations and specify trajectories between them.
The first section of this chapter will deal with animation programs. These
programs are control programs that merely use a subset of the available
commands. This is included at the beginning of the chapter to provide a
TM
quick sample of the broad function of the ROBOTASSIST
Control
Language.
The remainder of the chapter will deal with actual control programs and
provide a general command reference for the language itself.

6.1 Animation Programs


TM

Complex animations may be created using the ROBOTASSIST control


language. These animations may be played back by loading the
TM
model and then executing the control
associated ROBOTASSIST
program.
Animation program are created by storing the current state of the model.
These states are then added into the control program. By interpolating
between these states, ROBOTASSISTTM can re-create the animation.

6.1.1 Storing Model States


States may be stored by first copying them to the Windows clipboard and
TM
then pasting them into the control program. ROBOTASSIST contains a
build in editor for control programs. To use it, create a new control
program and the editor will appear.
Next, move the robot and the view to the desired initial location for the
animation. Copy the state to the clipboard. There are several options for

RobotAssist - Users Manual

41

New River Kinematics

copying the state to the clipboard. These options allow the user to control
which of the model properties should be saved.
A state may include any of the following pieces of information:

Robot joint values


Robot base transformation
View transformation
Peripheral device values
Tool tip transformation

When a state is placed on the clipboard, the user must select which of the
above parameters are included. In addition, the user may name the state.
Once the state has been placed on the clipboard, it should be copied into
the control program document. Repeat this procedure to save several
states in the control program. These state descriptions are equivalent to
variable declaration and initialization in other programming languages.
They do not initiate any action in the simulation language. Instead, they
are pushed on the stack for later use.

6.1.2 Directing an Animation Program


To move directly to a state, use the warp command,
warp state_1
This command will move the model directly to the specified state. Once at
that state, the model may be moved to another state in several ways.
Another warp command may be issued. This will move the model directly
to the specified state. If it is not desireable to move directly to the state,
the interp command may be used to interpolate to the state using a
specified number of steps. The syntax for this command is as follows:
interp state_2 10
This will interpolate from the current model state to the specified state
using 10 steps. Here is a sample animation program:
// Define states needed for program

RobotAssist - Users Manual

42

New River Kinematics

trans bs_Begin 0.00 0.00 0.00


0.00 0.00 0.00
view vs_Begin 115.00 35.00 15.00 10.77 250.26 436.83
peripherals
ps_Begin 3.00
4.00
0.00
3.00
state Begin
* bs_Begin vs_Begin ps_Begin
view vs_Spin 140.42 -47.39 -55.44 11.23 295.89 440.88
state
Spin
* * vs_Spin *

498 647

498 647

trans bs_Close 0.00 0.00 0.00


0.00 0.00 0.00
view vs_Close -134.30 -37.88 158.05 9.59 335.14 385.65 498 647
peripherals ps_Close -11.00
-12.00
-15.00
-12.00
state
Close
* bs_Close vs_Close ps_Close
trans bs_Point 0.00 0.00 0.00
0.00 0.00 0.00
view vs_Point 130.40 -5.63 -43.64 11.31 321.56 409.87 498 647
peripherals ps_Point 13.00
-16.00
-15.00
-29.00
state
Point
* bs_Point vs_Point ps_Point
trans bs_ThumbOut 0.00 0.00 0.00
0.00 0.00 0.00
view vs_ThumbOut 54.91 39.67 -128.20 5.72 334.13 439.14 498 647
peripherals ps_ThumbOut 20.00
-16.00
-15.00
23.00
state
ThumbOut
* bs_ThumbOut vs_ThumbOut ps_ThumbOut
trans bs_OK 0.00 0.00 0.00
0.00 0.00 0.00
view vs_OK 97.15 66.97 -81.47 8.75 338.97 334.00
peripherals ps_OK -16.00
4.00 12.00 -8.00
state
OK
* bs_OK vs_OK ps_OK

498 647

//now, with the states all defined, layout the motion program
float sInterpScale 3
warp Begin
interp Spin 10
interp Close 10
interp Point 10
interp ThumbOut 10
interp OK
10

//set system variable 3X multiplier


//draw model in starting state
// interpolate to Spin with 10 steps
// interpolate to Close with 10 steps
// interpolate to Point with 10 steps
// interp to ThumbOut with 10 steps
// interpolate to OK with 10 steps

The first command following the state declarations sets the value of the
variable sInterpScale to 3. This variable is a system variable (thus the
s prefix) that controls the scale applied to all of the interpolation step
values. In this case, all of the values will be multiplied by 3 resulting in 30
steps for each interpolation. This parameter is used for changing the
resolution of a simulation based on computing platform power and other
speed constraints.

6.2 Executing a Control Program


Once a text file has been created (either using the built in editor or any
other text editor), the program may be executed. Simply select Execute
Control Program from the Control menu, and the program will begin.

6.3 Comments

RobotAssist - Users Manual

43

New River Kinematics

Comments may be inserted anywhere within the program flow. The


syntax for comments follows the C++ line comment convention. A
whack-whack or double backslash (//) is used to designate that a
comment will follow and consume the remainder of the line. The slashstar format(/*.*/) is not supported, however.

6.4 Command Reference


6.4.1 joints
joints

my_joint_set

34.6

56.7

89.7

43.2 4.1

-90

The joints command is a variable declaration. In this case, the variable


joint_set_name is assigned to the set of numerical joint values following
the declaration. The number of joint values specified should correspond
to the number of degrees of freedom of the manipulator.
As with any variable declaration in the ROBOTASSISTTM control language,
the command may occur anywhere within the program flow as long as the
variable is defined before its use.
Also, the current joint values of the maniplator may be stored in a joint
variable. To do this, use the CURRENT keyword as follows:
joints my_joint_set CURRENT

6.4.2 trans
trans

my_transform

10.0 -5.0 34.5

180.0 0.0 90.0

The trans command is used to define a transformation variable. In this


case, my_transform is assigned to the transformation defined by the six
numbers following the variable name.
The way in which the six numbers are interpreted is dependent on the
position and orientation specification modes. The default mode expects

RobotAssist - Users Manual

44

New River Kinematics

X,Y,Z, Rx, Ry, Rz. For information on changing the modes, see the
system variable reference.

6.4.3 int
int my_integer

A variable declarator. In this case, my_integer is assigned to be 3. If,


later in the program the value needs to be changed, simply repeat the
declaration with a different numerical value.
There are several system integer values that may be assigned using the
int declaration. The syntax is identical to user defined integers. The only
difference is the use of a reserved system integer name.

6.4.4 float
float my_float 5.46

A variable declarator. In this case, my_float is assigned to be 5.46. As


with integers, there are special system variables that may also be
changed in this manner.

6.4.5 jmove
jmove

my_joint_set

3.0

This command initiates a joint-space move from the current manipulator


joint set to the joint set defined by my_joint_set (in this case). The
number following the joint set name is the move speed factor. This
number may be interpreted differently depending on the particular
manipulator controller.

RobotAssist - Users Manual

45

New River Kinematics

6.4.6 path
path CLEAR
path my_tool_transform_goal
path my_next_tool_goal
path RUN

The path command initiates the path planning and trajectory generation
components of ROBOTASSISTTM. The path CLEAR command removes any
previous path specifications stored in the trajectory buffer. The path
command used in conjunction with a transformation or joint set variable
will result in appending the trajectory buffer with via points leading from
the current location of the manipulator to the desired goal. These points
will accumulate in the via point buffer with each successive path
command.
The path RUN command will process the via point buffer, determine
based on the capabilities of the manipulators joints a suitable joint-space
trajectory, and initiate motion.
When several path commands are used to compile a list of via point
destinations, a continuous path will result. When each successive path
command is followed by a RUN path command, the manipulator will move
to the goal, stop, and then plan a path to the next goal.

6.4.7 peripherals
peripherals

my_peripheral_values

10.6

-98

70

A variable declaration used to define a peripheral set. This command is


used primarily to define states for an animation sequence. See the
animation programming reference for more information.
In addition, a peripheral value may be set to the current peripheral values.
To do this, use the CURRENT keyword:
peripherals my_perip_values

CURRENT

RobotAssist - Users Manual

46

New River Kinematics

6.4.8 mark
mark my_transform

The mark command will define a coordinate frame at the specified


transformation (in this case, my_transform).
The system variable
sMarkMode must be set to 1 in order for the marking to occur. This
command may be used to mark the requested path via points.

6.4.9 label
[my_label]

The label command defines a label within the program and assigns it the
given name. Later, during the execution of the program, a jump or if
statement will trigger program execution to move to the label. See the
jump and if commands for more information. Note that the label identifier
my_label must be enclosed in a set of square braces[]. The square brace
characters are reserved only for labels and may not be used as part of a
name or other identifier.

6.4.10 jump
jump my_label

This command will jump the program execution to a previously defined


label. Note that the label is referenced without the square braces used in
its definition.

6.4.11 if
if

my_first_int

>

my_other_int

RobotAssist - Users Manual

my_label

47

New River Kinematics

Compare two integer values based on greater than, less than, or equal to
(>,<, or =). If the comparison is true, a jump occurs to the given label.
Note that the label is referenced without the square braces used in its
definition.

6.4.12 incr
incr

my_integer

Increments the given integer value by the specified increment. In this


case, my_integer will be incremented by one.
Example:
Suppose you want to make a loop to execute a move 5 times.
following code will accomplish this:

The

int counter 0
joints begin_joints 10 10 5 7
trans end_tool -10 90 75 0 180 0
[begin]
jmove begin_joints
path CLEAR
path end_tool
path RUN
incr counter 1
if counter < 6 begin

6.4.13 pause
pause Please Change the Tool Tip!

This command will prompt the user from within the execution dialog with
the text following the pause command. The user will be able to press
RESUME or ABORT. RESUME will continue the program while ABORT
will exit.

6.4.14 note

RobotAssist - Users Manual

48

New River Kinematics

note Read this message NOW!

Identical to the pause command except the message is presented without


interrupting execution of the program.

6.4.15 jog
jog 1

-24.6

This command jogs the given manipulator joint (1 in this case) by the
specified number of degrees (-24.6 in this case).

6.4.16 relay
relay 5

This command sets the state of a given relay (5 in this case). 0 turns the
relay off. 1 turns the relay on.

6.4.17 wait
wait <Flag Number>

This command will suspend execution of the program until


ROBOTASSISTTM receives a response message for <Flag Number> from
ROBOTASSISTTM LINK.

6.5 System Variables

There are several pre-defined variables used in the control language.


These variables correspond to the flags and numerical values that may be
TM
set using the dialog-based interface in ROBOTASSIST . By allowing the
language to access these variables, the user may change these constants
directly on the fly.

RobotAssist - Users Manual

49

New River Kinematics

6.5.1 sPosInt

An integer value that controls the method used to interpolate position


during path planning. The modes are as follows:
1 = Cartesian
2 = Cylindric
3 = Spheric

6.5.2 sOriInt

An integer value that controls how orientation is interpolated. The values


are as follows:
10 = Quarternion interpolation
11 = Angle Axis interpolation

6.5.3 sPosSpec

An integer value that sets how the program interprets specifications of


position. This is primairly used in the trans command where user
defined positions are used to set the translation component of the
transformation matrix. The alowed values for this variable are the same
as for sPosInt.

6.5.4 sOriSpec

An integer value that sets how orientation specifications are interpreted.


Currently, this value has no effect on the program. All orientation
specifications are taken to be in x,y,z fixed angles.

RobotAssist - Users Manual

50

New River Kinematics

6.5.5 sMarkMode

An integer value that determines if the program will mark the path points
with coordinate frames. If set to 0, no marking is performed. If set to 1,
each path point will be marked with a coordinate frame.

6.5.6 sChangeView

An integer value used primairly for controlling animation sequences. If set


to 0, the view will not change during an animation. If 1, the view will
change as indicated by the successive states given in the animation.

6.5.7 sViaSpacing

A floating point value specifying the linear distance between path via
points.

6.5.8 sViaVelocity

A floating point value that specifies the linear velocity the tool should
move along the prescribed path.

6.5.9 sInterpScale
A floating point value used to increase or decrease the number of
interpolated steps used in an animation sequence. If, for example, the
user specifies 5 steps for a given state change, and the interpscale is set
to 3, 15 steps will actually be taken.

6.5.10 sWorking

RobotAssist - Users Manual

51

New River Kinematics

A transformation variable that controls the working coordinate frame. This


is the frame which all motion specifications are referenced relative to. By
moving this frame, the user can change the relative base location of a
particular motion.

6.5.11 sBase

A transformation variable that describes the transformation from the


manipulator base coordinate frame to the world coordinate frame.
Changing this variable will immediately move the robot, update the
graphical display, and effect all subsequent kinematic operations.

RobotAssist - Users Manual

52

New River Kinematics

7. ADVANCED ROBOT MODELING

7.1 Merging Model Files


TM

ROBOTASSIST contains a merge function. This function will import part


or all of a model into another model.
There are several restrictions on merging file. First, the robot contained in
the host model will remain no matter what components of the incoming
model are selected. This is because a large amount of information
pertaining to the robot, its joints, and its capabilities are stored in its
model.
All of the groups associated with the incoming robot may, however be
imported. These groups will not, however be tied to the links of the host
model.

7.2 Peripheral Devices


A peripheral device is any object in the model that moves by some other
means than actuation of the manipulators joints. A gripper, for example,
is considered a peripheral device. Conveyor belts, doors, and other
industrial devices may also be modeled as peripheral devices.

7.2.1 Creating Peripherals

There are two steps. First, the peripheral must be created. It is the value
which the user may change via the user interface, or a simulation routine.
To create a peripheral, you must supply a name for the device, and an
initial value. This value is then tied to specific groups in the model. For
the purpose of this example, lets say a peripheral device was created
named Gripper Motor.

RobotAssist - Users Manual

53

New River Kinematics

The second step is to attach a particular group to a peripheral device.


This is done via the group properties dialog. A peripheral is first selected.
For this case, select Gripper Motor. The next step is to determine how
this peripheral device will effect the groups transformation. Select which
of the 6 degrees of freedom the peripheral will control. The options are
X,Y,Z, Rx, Ry, Rz.
In addition, an offset and scale may be entered. These values govern
how the peripheral device value is incorporated into the group
transformation matrix.
If, for example, the Y component of the
transformation was selected as the peripheral control. The Y value would
be:
Y = Offset + Scale*<Peripheral device value>
Multiple groups may be tied to the same peripheral device. This allows for
one peripheral device to cause complex motions throughout the model.
To simulate a gripper, a peripheral device may be tied to each finger
group of the gripper. The scale for one of the fingers may be set
negative. This will cause the fingers to close or open when the value of
the peripheral is changed.

7.3 Extrinsic Calibration

7.3.1 Definition
Extrinsic calibration may be defined as determining the transformation of
the manipulator base coordinate system relative to another external
coordinate system. ROBOTASSISTTM provides a general, built-in, extrinsic
calibration routine. This routine is based on known end-effector touch
points. With this routine you may either calibrate the robot base relative
to a known object or calibrate the unknown pose of an object relative to
the manipulators base.

RobotAssist - Users Manual

54

New River Kinematics

7.3.2 Data Collection


The calibration routine requires data obtained by touching known points
on an object. To do this, drive the manipulator end-effector to a known
location. Store the joint angles and the known location. Note that, in the
case of an object whose pose is being sought, the known location is the
location relative to its group frame. Repeat this process for a total of at
least three points. Any number of points greater than three may be used,
but only three are absolutely necessary.
This data is placed in a calibration data file with the following format.
6
-94.679 -62.140 45.297 7.899 -58.113 -81.408
-84.96 24.36 -54.99
-144.679 -92.140 95.296 7.899 -28.113 -81.408
-42.75 49.20 -10.38
-294.679 -92.140 95.296 7.899 -28.113 -81.408
54.21 46.07 -87.12
-134.679 -132.140 -34.703 -172.100 -58.113 -81.408
37.35 28.85 -103.28

The first number specifies the number of joints on the manipulator. The
following lines are pairs of calibration data. The first line is the joint values
at the calibration point. The following line is the location of the
corresponding calibration point in world coordinates (shown in bold for
clarity only). The above file contains four calibration data points.

7.3.3 Computation (To Move Group to Robot)


First double click to select the group that you wish to calibrate relative to
the robots base. Select extrinsic calibration from the kinematics menu.
The calibration dialog will appear. Select the calibration data file name
and the computation parameters. Select Move currently selected group.
Next, press Calculate. The algorithm will find the least-squares best fit of
the group transform relative to the manipulator. It will attempt to bring all
of the tool-points to the known calibration points by modifying the selected
groups transform.
The transform of the selected group at the time the calibration was started
will be used as the initial guess. It is therefore important to make sure the
group is somewhere near the proper value. This will not only reduce the

RobotAssist - Users Manual

55

New River Kinematics

computation time, but it will also help to insure that the correct solution is
found.
Once the solution has been found, the errors at each point will be
presented. If these are acceptable, select Apply, and the group will be
moved to the new location. Cancel will return the group to its location at
the beginning of the process.

7.3.4 Computation (To Move Robot to Group)


Select extrinsic calibration from the kinematics menu. The calibration
dialog will appear. Select the calibration data file name and the
computation parameters.
Select Move Robot Base. Next, press
Calculate. The algorithm will find the least-squares best fit of the base
transform of the manipulator. It will attempt to bring all of the tool-points
to the known calibration points by modifying the base transform.
The transform of the base of the manipulator at the time the calibration
was started will be used as the initial guess. It is therefore important to
make sure the base is somewhere near the proper value. This will not
only reduce the computation time, but it will also help to insure that the
correct solution is found.
Once the solution has been found, the errors at each point will be
presented. If these are acceptable, select Apply, and the manipulator will
be moved to the new base location. Cancel will return the base to its
location at the beginning of the process.

7.4 Dimensioning
ROBOTASSISTTM will track the distance and vector between the origin of
any two frames in the model. The numerical results are displayed in the
Dimension dialog. This dialog will also allow you to add dimensions, and
remove dimensions.

7.4.1 Adding a Dimension

RobotAssist - Users Manual

56

New River Kinematics

First, make sure a frame exists at the beginning and end of the desired
measurement location. If there are no frames, use the New::Frame option
to add a frame at the proper location. If the frame is to be described
relative to a group, make sure to select an object from the group before
adding the frame, as this will attach the frame to the group.
Display the Dimension dialog. This dialog will contain a list of all currently
active dimensions. Initially, there will be no measurements in this list.
Select the Add Dimension button, and a new line will appear in the list.
You may want to set the name to something descriptive of the quantity
you are about to measure. Remember to press the Apply button after
changing the name of the dimension. This will update the listing and the
programs internal database.
The next step it to set frame A and B. These are the frames between
which the Dimension will be reported. To select a frame, first double click
on the desired frame with the mouse. The frame should highlight, and a
message will appear at the bottom of the screen telling you which object
has been selected. Next, press the Set Frame A button, and the system
will re-assign the frame for A to the selected frame. Repeat this
procedure for B, and the dimension database will be active.
As the model is altered, moving the robot, for example, the dimension
dialog will be updated to reflect the current dimensions between the
selected frames. This will allow you to monitor dimensions during both
simulation and control.

7.5 Linkages and Passive Extensible Device Modeling


ROBOTASSISTTM currently contains the capability to model passive devices
such as extensible actuators. This will allow the user to simulate a dashpot type device attached to two objects. As the objects move, the dashpot
will move so that it always connects the linkage.
The functionality was developed primarily for simulating truss-type
devices. The passive device modeling feature allows the user to provide
a realistic simulation of the device, and the Dimensioning features may be
used to report the actual link-lengths throughout the motion.

RobotAssist - Users Manual

57

New River Kinematics

7.5.1 Passive Extensible Actuator Example


For the purpose of this explanation, assume we are trying to model a
dump truck. The body of the truck and the main support fame are all
attached to the frame group, and the bucket and its associated
components are attached to another group called the bucket group. In
addition, the bucket group is attached to the frame group so that as the
entire truck moves through the model (the frame group), the bucket
comes along with it.
Suppose the bucket rotates about a point on the rear of the truck frame.
This location in the origin of the bucket group. This group could be tied to
a peripheral device so that as the peripheral is actuated, the group
rotates, thus raising the bucket. In any case, the dump truck is fully
functional, but does not look like a conventional dump truck. It does not
have the a piston-cylinder device used to power the bucket lifting
operation. In order to provide this graphical description of the pistoncylinder, we must use a passive extensible actuator.

7.5.2 Adding the required groups.


The passive actuator linkage is basically two groups in the model that are
made to always point at each other. For this example, there should be
one group attached to the frame of the dump-truck, and another attached
to the bucket. Once these groups are bound together using a Linkage,
their z-axes will be forced to point at each other.
The user is responsible for creating two groups. One group for the base
of the actuator, and one for the end of the actuator. Both groups should
be located at the pivot-joint of the actual cylinder. This will provide a
realistic actuator simulation.
Once the groups have been created, objects may be attached to them to
provide a realistic representation of the physical device. One basic
approach is to create 2 cylinders, one along the z-axis of each group. In
addition, make one cylinder larger in diameter than the other to provide
the piston-cylinder appearance. Note that the length of these cylinders
should correspond to the actual lengths of the piston-cylinder components

RobotAssist - Users Manual

58

New River Kinematics

in the model. For the dump-truck, these lengths could be the physical
dimensions of the hydraulic cylinder components.

7.5.3 Creating a Linkage to bind the groups


Once the groups and associated objects are in place, run the Linkage
Dialog. This dialog contains a database of existing linkages, and
functions to add and remove linkages. Press the Add Linkage button. A
new linkage will appear in the list. Re-assign the name to bucket
cylinder, and press Apply.
Next, Select the group for the beginning of the actuator. In this case,
highlight one of the objects attached to the truck frame. Then press the
Begin button, and the group will be assigned. Repeat this process for the
objects attached to the bucket group. Next, press apply. The linkage is
configured. The display will not update until one of the groups is moved,
however. Move the bucket group of the dump truck, and the hydraulic
cylinder should move accordingly.

7.5.4 Displaying the length of the actuators


Often, it may be necessary to know the length of a passive extensible
actuator. To accomplish this, add a dimension between the two group
frames used to create the linkage. As the linkage moves, the distance will
be reported.

7.6 IGES Export / Import

7.6.1 Export
To export a file in IGES format, select the Export, IGES option under the
file menu. You will be prompted for a filename and you may select to
export all objects or the currently selected group.

RobotAssist - Users Manual

59

New River Kinematics

7.6.2 Import
To import a file in IGES format, select the User Defined, Custom option
under the New menu. You may now select the IGES file to import by
hitting the IGES File button.

RobotAssist - Users Manual

60

New River Kinematics

8. AUTOMATIC MODEL FILE BACKUP

ROBOTASSISTTM provides an auto-save feature. This feature is based on


actions instead of time. All actions that impact the model count towards
the action count. When a specified number of actions have occured, the
model is saved.
TM

ROBOTASSIST appends the current date and time to the current model
filename. The extension .bak is also added. These files are placed in the
current working directory. This provides a way to backtrack through the
models history in the event that an undesirable change is made to the
model file.
The user may set the number of operations between auto-saves. In
addition, the autosave feature may be disabled.
If, a backup is desired at a time other than the total actions specified,
simply select Backup from the file menu, and a backup file will be created.

RobotAssist - Users Manual

61

New River Kinematics

9. ROBOTASSIST SYSTEM OPTIONS

All user options may be changed from within the ROBOTASSISTTM System
Options property page. This dialog may be accessed by selecting Edit
from the main menu, then User Options, or by clicking on the User
Options button on the main toolbar. The remainder of this section will
describe page-by-page all user options.

9.1 Display Options Page

9.1.1 Graphics Mode Section


9.1.1.1 Graphics Mode Pull-Down
This control is used to select the graphics display mode. You may select
either Advanced Shading, Wireframe, Flat Shading, Frames Only, or No
Graphics. The first three options are also duplicated on the main toolbar
as buttons.
9.1.1.2 White Background Checkbox
This control is used to set the background color to either white or black. If
checked, a white background is used. If unchecked, a black background is
used.
9.1.1.3 Display Wireframe in Black in White
This control is used to set the object color to the inverse of the
background color. This allows light colored objects to be discernible
against a white background.

9.1.2 Autoscale Section

RobotAssist - Users Manual

62

New River Kinematics

9.1.2.1 Radio Button Set


This control set is used to determine when to autoscale. You may select
either Always, On View Rotation, or Only when directed (ie. when the
autoscale toolbar button is hit or when the View, Autoscale menu is
selected).
9.1.2.2 Window Usage Factor Edit Box
This control sets the percentage of the window to be utilized when
autoscaling. Effectively, this sets the margins within the window.

9.1.3 Tool and Info Bar Section


9.1.3.1 Bar Check Boxes
Use these check boxes to identify which toolbars you wish to be active. If
checked, they are active.

9.1.4 Coordinate Frames Section

9.1.4.1 Display/ Hide All Buttons


These buttons either display all existing frames or hide all existing frames.
9.1.4.2 Label Axes Check Box
If Checked, the coordinate axes of any displayed frames will be labeled x,
y, and z.

9.1.5 Preset Views Section

This section reports the specific point of view direction for each of the four
preset views. The user may customize these values by typing within the
appropriate edit box. Note that the current vantage point is displayed in
the last row. The user may use this to define a preset view to be current
viewpoint.

RobotAssist - Users Manual

63

New River Kinematics

9.2 System Increments Page

9.2.1 Position Increment

This control may be used to set the step size for incrementing or
decrementing a distance when using spin buttons (the up/down arrows to
the right of some edit boxes).

9.2.2 Rotation Increment

This control may be used to set the step size for incrementing or
decrementing an angle when using spin buttons (the up/down arrows to
the right of some edit boxes).

9.2.3 Facets Increment

This control may be used to set the step size for incrementing or
decrementing facets when using spin buttons (the up/down arrows to the
right of some edit boxes).

9.3 Light Conditions Page

All objects drawn in the ROBOTASSIST


various lighting and material properties.

TM

model are rendered based on

The Lighting Conditions dialog will allow you to change the properties of
any of the 8 lights in the model. The default condition is to have only light
0 enabled. This is usually sufficient for most models, though additional
lights may be used to add a more realistic feel to the environment. It is
important to note, however, that additional lights substantially increase the
computational burden and will slow the graphics down.

RobotAssist - Users Manual

64

New River Kinematics

There are three components of light available in the environment:


ambient, specular, and diffuse. Ambient light is the light level that is
present everywhere in the environment and impinges on every part of the
model. Specular light is the light component that only becomes visible
when a surface on the object reflects light directly back toward the users
point of view. Diffuse light emanates from the location of the light source.
This light will reflect off the object based on the orientation of the surfaces
to the light source.
Each component of light may be configured by pressing the associated
button. This will cause the color dialog to appear. Using this dialog,
select the lighting values you want, and press OK. Once you then press
Apply from the Lighting Conditions tab, the change will be visible in the
model environment.

9.4 Material Inventory Page


TM

Each object contained in a ROBOTASSIST model file has an associated


material type.
This material type determines how light from the
environment is reflected toward the viewer for any given configuration.

Each material has three separate color components and four additional
parameters. Each will be described below:

9.4.1 Ambient and Diffuse Reflectivity

This is what we normally perceive as the base or principle color of the


object. These are the colors that react to Ambient and Diffuse sources of
light. Diffuse reflection is most intense when the incident light strike the
object surface nearly perpendicular. Ambient reflection is completely
independent of the incident angle. Note that neither of these components
are affected by changing the users viewpoint if the lighting remains fixed..

RobotAssist - Users Manual

65

New River Kinematics

9.4.2 Specular Reflectivity

The specular reflectivity component determines how the material reacts to


a specular light source. This is the color component of reflection that
yields highlights off of rounded edges. This component of material color is
affected by the position of both the light source and the users viewpoint.
Specular reflectivity is especially useful for producing a metallic looking
object. The shininess factor determines how sharp these highlights are.
Consider a stainless steel cylinder. Assigning a shininess factor of 1,
simulates a dull or broad specular surface and the cylinder appears as if it
was sandblasted. Assigning a shininess factor of 128 simulates a highly
polished surface which produces very sharp highlights. In fact, at this
setting, the user will almost never see any highlights because they only
occur when the incident light is exactly reflected toward the user. A
shininess factor value of 30 is a good starting point for many polished
surfaces.

9.4.3 Emmissive Reflectivity

This is the component of light that is emitted from the surface of an object.
This seldom used component could be used to simulate a backlight LCD
display on a robot controller for example.

9.4.4 Changing Existing Materials

To alter an existing materials properties, go to the Robot System Options


property page and select the material inventory tab. Select the material
you wish to change in the left hand column. Hitting the reflectivity button
for the desired component will enable you to select the desired color. If
you change any of these properties and apply the changes, any objects
constructed from the modified material will be immediately updated.

9.4.5 Adding New Materials

RobotAssist - Users Manual

66

New River Kinematics

You may also add materials in this property page. To do so, run the
Material Inventory dialog, select Add Material, and a new item will be
added to the list. Change the name and press apply. Next, select the
reflectivity (color) for each of the light components. Once all of the
properties are set properly, press the Apply button, and the properties will
be updated. This will insure that the material inventory is updated
properly.

9.5 Joint Parameters Page

9.5.1 Joint Section

This edit box merely selects which joints properties are being displayed.

9.5.2 Type Section

This radio button set determines whether the selected joint is a prismatic
or a revolute joint.

9.5.3 Position Limits Section

Sets the Max and Min angular values for the specified joint as well as
providing a checkbox to indicate whether to enforce these limits or not.

9.5.4 Dynamic Limits Section

Allows the user to set maximum values for both joint velocity and joint
acceleration. The Trajectory parameters page will determine whether or
not to enforce these limits.

RobotAssist - Users Manual

67

New River Kinematics

9.5.5 Conversion Section

The conversion section is provided as a convenient way to convert from


the very rigid Denavit-Hartenberg notation specification of a joint angle to
a more arbitrary user defined specification. Essentially these controls
specify the function that linearly maps from Denavit-Hartenberg notation
to the user desired angle notation. In more advanced applications this
could be used to convert from encoder ticks(or pulses) to joint angle
degrees.

9.6 Trajectory Parameters Page


The trajectory parameters control the layout of both the path planning via
points and the trajectory generation joint sequences.

9.6.1 Cartesian Section

9.6.1.1

Spacing

Controls the distance between via points. If, for example, you were
planning a motion where the tool was to move 10 inches in the x
coordinate direction and the spacing was set to 1 inch, you would get 10
intermediate path via points.
The value of this parameter controls how closely the manipulator will
follow the prescribed path. Note that between the via points, the
manipulator is free to deviate from the path because it is moving in joint
coordinates.
9.6.1.2

Velocity

Sets the initial time spacing of the via points prior to the trajectory
generation phase of the computation. The velocity parameter controls the
desired tool-tip velocity along the path. Obviously the manipulator cannot
maintain this velocity at the beginning and the end of the path, but beyond
that, the via points will be spaced so as to obey the velocity constraint.

RobotAssist - Users Manual

68

New River Kinematics

9.6.1.3

Minimum #

Sets the minimum number of via points allowed for a trajectory. This is to
prevent a short trajectory from containing too few via points to provide
adequate room for interpolation of tool orientation.

9.6.2 Time Trajectory Section

9.6.2.1

Spacing

The amount of time between generated path via points. The value is
usually specified by the controller. Often, a controller will expect points
ten times a second. In that case, set the spacing value to 0.1.
9.6.2.2

Points

The number of points to be generated from the time trajectory. If this


value is zero, the Spacing value will be used to determine the number of
points. Only use this field when a constant number of via points is
desired.
9.6.2.3

Expand or Compress Time As Needed

These check boxes allow you to specify the consideration given to


physical joint dynamic limits. Each joint has a maximum velocity and
acceleration assigned. When the initial path is defined at the desired
cartesian velocity, it is possible that some of these limits may be
disobeyed. For this reason, ROBOTASSISTs Trajectory Generator will
expand or compress the time trajectory to comply with the joint dynamics.

9.6.3 Simulation Section

9.6.3.1

Time Scale

This value controls the amount time is scaled when a trajectory is


TM
simulated. Note that whenever ROBOTASSIST executes a trajectory in
simulation mode, the manipulator will move at the actual speed of the
trajectory. If this value were set to 2.0 for example, the manipulator would

RobotAssist - Users Manual

69

New River Kinematics

move twice as fast. This option may be used to speed up detailed


simulation procedures.
9.6.3.2

Show only via points


TM

By enabling this option, ROBOTASSIST will not simulate trajectories in


real-time. Instead, it will merely draw the manipulator at each of the
planned via points as quickly as the graphics will allow.

9.6.4 Path Blending Section

9.6.4.1

Perturbation

Controls how much the trajectory is moved in order to locate a more


suitable time spacing of the via points.
9.6.4.2

Max Move

The largest step that the Trajectory Generation module is allowed to take
when attempting to comply with joint dynamics.
9.6.4.3

Search Steps

Sets the number of intermediate search points used by the Trajectory


Generation Module.

9.7 Inverse Solver Parameters Page

The inverse solver page deals solely with specifying values that govern
the behavior of the inverse solver algorithm.

9.7.1 Stopping Conditions Section

RobotAssist - Users Manual

70

New River Kinematics

A necessity of the inverse solver algorithm is determining when the


system has converged well enough. A user may assign positional,
orientational, and objective function stopping criteria that behave as
described below. Note that in order for the system to be considered
converged all checked criteria must be satisfied. If all three are checked,
all three conditions must be simultaneously satisfied in order to be
considered converged.
9.7.1.1 Position Edit Box
This sets the bounds to which the inverse solver must reconcile a
positional request. Thus, if a value of 0.1 units is specified, the system
must converge to within 0.1 units of the given goal. If the Check box to the
left is unchecked, position will not be used as a stopping criteria.
9.7.1.2 Orientation Edit Box
This sets the bounds to which the inverse solver must reconcile an
orientation request. Thus, if a value of 0.01 units is specified, the system
must converge to within 0.01 units of the given goal orientation. If the
Check box to the left is unchecked, orientation will not be used as a
stopping criteria.
9.7.1.3 Objective Function Repeat Edit Box
This control sets the magnitude of change required in successive
evaluations of the objective function. If a larger change in magnitude
results from a given iteration, the calculation will continue. If a smaller
change is observed the stopping condition will be satisfied. If the Check
box to the left is unchecked, the objective function change will not be used
as a stopping criteria.

9.7.2 Search Control Section

As part of the general inverse solution process the inverse solver


algorithm determines the best direction in which to move to improve the
current solution. Although this directional information can be exactly
determined, there is no method for choosing how far to move in the
improving direction. The algorithm begins by projecting a hypothesized
solution step. The search control parameters address how the
hypothesized step is then treated.

RobotAssist - Users Manual

71

New River Kinematics

9.7.2.1 Damping Edit Box


One approach is to damp the hypothesized step. (ie. make a step that is
80% (0.80) of the hypothesized step. This often yields faster convergence
by eliminating overshooting of the goal.
9.7.2.2 Max Iterations Edit Box
This sets the maximum number of iterations that the user will allow before
declaring that no solution was obtained.
9.7.2.3 Line Steps Edit Box
An alternative to attenuating the hypothesized step is to divide the
hypothesized step into many smaller steps, evaluate the function at every
node, and use the best solution. If a value of 10 is given the algorithm will
try 10 steps between the current values and the hypothesized values.
9.7.2.4 Robustness Threshold Edit Box
This control is used to set the smallest robustness factor that will be
accepted as nonzero. Should any values fall below this threshold they will
be assumed to be zero.

9.7.3 Last Solution Section

The last solution section provides a way to monitor he results of an


inverse solution. This can also be used to observe what reasonable
values might be for a given system.

9.8 Motion Options Page

The motion options page specifies the type of path generated between
two path points. If Joint, the manipulator will take the shortest joint space
path between two points. If Cartesian, Cylindric, or Spheric the
manipulator will take the shortest cartesian, cylindric, or spheric path
between two points with the path interpolated about the working frame.

RobotAssist - Users Manual

72

New River Kinematics

As an example consider a manipulator moving a probe from point A to


point B on a plane. If Joint motion is specified, it is unlikely that the probe
will remain on the plane. If carteian motion is specified the probe will
follow the straight-line path from A to B and will necessarily remain on the
plane.
Likewise, if A and B lay on a sphere instead of a plane. We could specify
Spheric motion and assign the working frame to be the center of the
sphere. The probe would now travel on a great circle path from A to B on
the sphere.

RobotAssist - Users Manual

73

New River Kinematics

10. APPENDIX A - SPACEBALL INTERFACE

TM

contains a SpaceBall interface based on serial port


ROBOTASSIST
communications. The initial driver supports 9600 baud communications to
a HP Model 2002 spaceball. The spaceball may be used to provide a 6degree of freedom user input. This input may be used to control both the
model view and the robot.
To control the view, select SpaceBall Properties from the ROBOTASSISTTM
menu. You will be able to change the gains and functionality of the
SpaceBall. Most importantly, select the COM port to which the SpaceBall
is attached. Once these properties are set, select activate spaceball from
the menu. The SpaceBall will beep several times, and a message box will
appear indicating a successful initialization of the spaceball.
Be sure nothing is touching the spaceball when it is initialized. This is due
to the fact that the initialization process zeros the strain gauges in the
spaceball. They will not be set properly if there is a force present during
initialization.
Once the spaceball is initialized, grasp the ball and move it as you would
move the object shown in the model. Twisting the ball will rotate the view,
and pushing the ball will translate and zoom.
Several of the buttons on the device may be used to control the properties
of the spaceball.

Button 1 - Toggle Translations on and off.


Button 2 - Toggle Rotations on and off
Button 3 - Toggle dominant mode. This mode will only perform the
component of motion that has the largest force command.
Button 4 - Autoscale
Button 5 - Decrease the Gain on all motions

RobotAssist - Users Manual

74

New River Kinematics

Button 6 - Increase the Gain on all motions

RobotAssist - Users Manual

75

New River Kinematics

11. INDEX
Animation ......................................................................................... See Control Programs
Calibration ....................................................................................................................... 54
Control Programs
System Variables
sBase ...................................................................................................................... 52
sChangeView ......................................................................................................... 51
sInterpScale ............................................................................................................ 52
sMarkMode ............................................................................................................ 51
sOriInt .................................................................................................................... 50
sOriSpec ................................................................................................................. 51
sPosInt.................................................................................................................... 50
sPosSpec................................................................................................................. 50
sViaSpacing............................................................................................................ 51
sViaVelocity........................................................................................................... 51
sWorking ................................................................................................................ 52
System Variables......................................................................................................... 50
Control Programs
Commands
Float ....................................................................................................................... 45
If 48
Incr ......................................................................................................................... 48
Int 45
Jmove ..................................................................................................................... 45
Jog .......................................................................................................................... 49
Joints ...................................................................................................................... 44
Jump ....................................................................................................................... 47
Label....................................................................................................................... 47
Mark ....................................................................................................................... 47
Path ........................................................................................................................ 46
Pause ...................................................................................................................... 48
Peripherals.............................................................................................................. 46
Relay ...................................................................................................................... 49
Suspend .................................................................................................................. 49
Trans....................................................................................................................... 44
Wait........................................................................................................................ 49
Commands .................................................................................................................. 44
Comments ................................................................................................................... 44
Directing ..................................................................................................................... 42
Executing .................................................................................................................... 43
Sample......................................................................................................................... 42
Storing States .............................................................................................................. 41
Control Programs ............................................................................................................. 41
Coordinate Frames
Attaching..................................................................................................................... 15
Creation................................................................................................................. 15, 17
Definition .................................................................................................................... 17
Extending Axes ........................................................................................................... 15
Moving Between Frames............................................................................................. 15
Coordinates
Joint............................................................................................................................. 14

RobotAssist - Users Manual

76

New River Kinematics

Tool............................................................................................................................. 14
World .......................................................................................................................... 14
Denavit and Hartenberg Notation .................................................................................... 19
Definition .................................................................................................................... 19
Editing......................................................................................................................... 19
Parameters................................................................................................................... 19
Denavit-Hartenberg Notation
Tutorial........................................................................................................................ 26
Diffuse ............................................................................................................................. 35
Dimensioning................................................................................................................... 56
Dongle.............................................................................................................................. 12
Extrinsic Calibration ........................................................................................................ 54
File
Opening....................................................................................................................... 13
Groups.............................................................................................................................. 20
Creating....................................................................................................................... 21
Using........................................................................................................................... 21
Hardware Lock................................................................................................................. 12
Hardware Requirements................................................................................................... 11
HP 2002 SpaceBall .......................................................................................................... 74
IGES
Export.......................................................................................................................... 60
Import.......................................................................................................................... 60
IGES ................................................................................................................................ 60
Installation ....................................................................................................................... 12
Joint Acceleration Limits
Setting ......................................................................................................................... 32
Joint Coordinates ............................................................................................................. 14
Joint Parameters
Acceleration Limits ..................................................................................................... 40
Conversion .................................................................................................................. 40
Offset........................................................................................................................... 40
Position Limits ............................................................................................................ 40
Scale............................................................................................................................ 40
Type ............................................................................................................................ 40
Velocity Limits............................................................................................................ 40
Joint Parameters ............................................................................................................... 39
Joint Velocity Limits
Setting ......................................................................................................................... 32
Kinematics
Conventions ................................................................................................................ 17
Lighting............................................................................................................................ 33
Ambient....................................................................................................................... 35
Specular ...................................................................................................................... 35
Lighting............................................................................................................................ 34
Link Parameters ............................................................................................................... 19
Joint Angle .................................................................................................................. 20
Joint Offset.................................................................................................................. 19
Link Length................................................................................................................. 19
Link Twist ................................................................................................................... 19
Linkages........................................................................................................................... 57
Manipulator Components................................................................................................. 20
Materials .......................................................................................................................... 33
Adding New ................................................................................................................ 34

RobotAssist - Users Manual

77

New River Kinematics

Ambient and Diffuse Reflectivity................................................................................ 33


Changing ..................................................................................................................... 34
Editing Properties........................................................................................................ 34
Emmissive Reflectivity ............................................................................................... 34
Specular Reflectivity................................................................................................... 33
Modeling
Advanced .................................................................................................................... 53
Merging Files .............................................................................................................. 53
Peripheral Devices
Creating .................................................................................................................. 53
Peripheral Devices ...................................................................................................... 53
Modeling
Degrees-of-freedom..................................................................................................... 26
Enhancing the Robot Appearance ............................................................................... 29
Enhancing the Robot Performance Parameters ........................................................... 32
File Backup ................................................................................................................. 61
Joint Acceleration Limits ............................................................................................ 32
Joint Velocity Limits................................................................................................... 32
Overview..................................................................................................................... 25
Puma 260 Example ..................................................................................................... 26
Robot Generator.......................................................................................................... 26
Test Driving ................................................................................................................ 28
Tutorial........................................................................................................................ 25
Moing the Robot
Tutorial........................................................................................................................ 28
Motion
Joint............................................................................................................................. 14
Tool............................................................................................................................. 14
World .......................................................................................................................... 14
Motions
Cartesian ..................................................................................................................... 37
Cylindric ..................................................................................................................... 37
Frame of Interpolation................................................................................................. 36
Interpolation Method .................................................................................................. 36
Spheric ........................................................................................................................ 37
Type of Interpolation................................................................................................... 37
Motions............................................................................................................................ 36
Mouse Commands ........................................................................................................... 13
Moving the Robot ............................................................................................................ 14
New Models..................................................................................................................... 21
Objects ............................................................................................................................. 20
Creation....................................................................................................................... 23
Custom ........................................................................................................................ 23
Editing......................................................................................................................... 23
Extrusions ................................................................................................................... 23
Solids of Revolution ................................................................................................... 24
User Defined ............................................................................................................... 24
Passive Extensible Devices .............................................................................................. 57
Paths................................................................................................................................. 36
Pose........................................................................................... See Spatial Transformation
Position and Orientation ........................................................... See Spatial Transformation
Primatives ........................................................................................................................ 23
Robot
Generator..................................................................................................................... 17

RobotAssist - Users Manual

78

New River Kinematics

Modeling Summary..................................................................................................... 17
Robot Generator
Tutorial........................................................................................................................ 26
Rotations
Euler Angle ................................................................................................................. 18
Fixed Angle................................................................................................................. 18
SpaceBall Interface .......................................................................................................... 74
Spatial Transformations ................................................................................................... 18
Changing ..................................................................................................................... 18
Definition .................................................................................................................... 18
Denavit and Hartenberg Notation ........................See Denavit and Hartenberg Notation
Inspecting.................................................................................................................... 18
Rotations ..................................................................................................................... 18
Translations................................................................................................................. 18
States................................................................................................................................ 42
Storing Desired Locations and Orientations .................................................................... 15
System Options
Display Options
Autoscale................................................................................................................ 62
Coordinate Frames ................................................................................................. 63
Graphics Mode ....................................................................................................... 62
Preset Views........................................................................................................... 63
Tool and Info Bars.................................................................................................. 63
Display Options........................................................................................................... 62
Inverse Solver Parameters ........................................................................................... 71
Last Solution .......................................................................................................... 72
Search Control........................................................................................................ 72
Stopping Conditions............................................................................................... 71
Joint Parameters .......................................................................................................... 67
Conversion ............................................................................................................. 68
Dynamics Limits .................................................................................................... 67
Joint Selection ........................................................................................................ 67
Position Limits ....................................................................................................... 67
Type........................................................................................................................ 67
Light Conditions ......................................................................................................... 64
Ambient.................................................................................................................. 65
Diffuse.................................................................................................................... 65
Specular.................................................................................................................. 65
Material Inventory....................................................................................................... 65
Adding.................................................................................................................... 67
Ambient and Diffuse .............................................................................................. 65
Changing ................................................................................................................ 66
Emmissive .............................................................................................................. 66
Specular.................................................................................................................. 66
Motion Options ........................................................................................................... 73
System Increments ...................................................................................................... 64
Facets ..................................................................................................................... 64
Position .................................................................................................................. 64
Rotation.................................................................................................................. 64
Trajectory Parameters.................................................................................................. 68
Cartesian................................................................................................................. 68
Path Blending......................................................................................................... 70
Simulation .............................................................................................................. 70
Time Trajectory ...................................................................................................... 69

RobotAssist - Users Manual

79

New River Kinematics

System Options ................................................................................................................ 62


System Requirements....................................................................................................... 11
Teach Pendant.................................................................................................................. 14
Tool Coordinates.............................................................................................................. 14
Trajectory Generation
Cartesian ..................................................................................................................... 37
Parameters................................................................................................................... 37
Path Blending.............................................................................................................. 39
Simulation ................................................................................................................... 38
Time Trajectory........................................................................................................... 38
Trajectory Generation ...................................................................................................... 36
Transforms ...............................................................................See Spatial Transformations
View
Changing ..................................................................................................................... 13
Mouse Commands....................................................................................................... 13
Point of View .............................................................................................................. 13
Saving as a preset view ............................................................................................... 13
Viewpoint.................................................................................................................... 13
Zoom........................................................................................................................... 13
World Coordinates ........................................................................................................... 14
Zoom................................................................................................................................ 13

RobotAssist - Users Manual

80

Você também pode gostar