CpE460X Introduction to Robotics

Semester Project (Spring 1996)




A Robotics Toolbox for MATLAB

Matlab, a software that is available on various computer platforms, is a very powerful environment. Its environment is used for linear algebra and graphical presentations. Application specific toolboxes provide extension of its core functionality. Since Matlab has an interactive environment and powerful graphical functions, it is very convenient to make robotic simulation as well as experimental analysis with it.

The Robotics Toolbox allows a matlab user to create and manipulate datatypes that are fundamental to robotics. Examples of these datatypes are homogeneous transformations, quaternions and trajectories. For arbitrary serial-link manipulators, the functions provided by the Toolbox include forward and inverse kinematics, Jacobians, and forward and inverse dynamics.

This Toolbox has many functions which are very useful in Robotics, especailly when it comes to areas such as kinematics and dynamics. When conducting experiments with real robots, the toolbox is useful for simulation and analyzing experimental results.

The Toolbox is written based on a general concept in which description matrices are used to represent kinematics and dynamics of serial-link manipulators. The user can create these matrices for any serial-link manipulator. The well-known robots, i.e., the Puma 560 and the Stanford arm, are some of the examples provided in the Toolbox. These matrices give a precise description of a robot model and can accommodate the sharing of robot models across the research community. As a result, the simulation results can be analyzed and compared with the current ones in a better and more meaningful way. The Toolbox is equipped with functions needed to manipulate important datatypes such as vectors, homogeneous transformations and unit-quaternions. These datatypes are used to represent 3-dimensional position and orientation.

In this project, my task is to understand and rewrite the toolbox to accommodate for the configuration of the SIR1 robotics arm which served as our research model.

In order to allow us to write a matrix that represents the configuration of a robotic arm(SIR1), we have to understand the following dyn matrix which describes the kinematics and dynamics of a manipulator in a general way using the standard Denavit-Hartenberg conventions. Each row represents one link of the manipulator and the columns are assigned according to the following table.


Column Symbol Description

1

alpha

link twist angle

2

A

link length

3

theta

link rotation angle

4

D

link offset distance

5

sigma

joint type; 0 for revolute, non-zero for prismatic

6

m

mass of the link

7

rx

link COG with respect to the link coordinate frame

8

ry

link COG with respect to the link coordinate frame

9

rz

link COG with respect to the link coordinate frame

10

Ixx

elements of link inertia tensor about the link COG

11

Iyy

elements of link inertia tensor about the link COG

12

Izz

elements of link inertia tensor about the link COG

13

Ixy

elements of link inertia tensor about the link COG

14

Iyz

elements of link inertia tensor about the link COG

15

Ixz

elements of link inertia tensor about the link COG

16

Jm

armature inertia

17

G

reduction gear ratio;joint speed/link speed

18

B

viscous friction, motor referred

19

Tc+

coulomb friction (positive rotation), motor referred

20

Tc-

coulomb friction (negative rotation), motor referred



The following configuration is for the SIR1 Robotics arm at University of Bridgeport in Computer Science and Engineering Department.


% alpha A theta D sigma m rx ry rz Ixx Iyy Izz Ixy Iyz Ixz Jm G B Tc+ Tc-
sir1 = [
pi/2 0 1.65*pi 0.205 0 0 0 0 0 0 0.35 0 0 0 0 200e-6 -62.6111 1.48e-3 .395 -.435
0 0.204 -pi*0.75 0 0 17.4 -.3638 .006 .2275 .13 .524 .539 0 0 0 200e-6 107.815 .817e-3 .126 -.071
0 0.250 -pi/2 0 0 4.8 -.0203 -.0141 .070 .066 .086 .0125 0 0 0 200e-6 -53.7063 1.38e-3 .132 -.105
pi/2 0 pi 0 0 0.82 0 .019 0 1.8e-3 1.3e-3 1.8e-3 0 0 0 33e-6 76.0364 71.2e-6 11.2e-3 -16.9e-3
0 0 2*pi 0.036 0 .09 0 0 .032 .15e-3 .15e-3 .04e-3 0 0 0 33e-6 76.686 36.7e-6 3.96e-3 -10.5e-3
];

In order to see the changes of the movements of SIR1, the following commands are used:

qz=[0 0 0 0 0] % 0 represents revolute, whereas 1 represents prismatic
qr=[0 0 -pi/2 0 0]