• La page Présentation de HEPHAISTOS
• La page "Présentation" de l'INRIA

# Purpose

xworkspace deals with workspace related problems for Gough platforms i.e. two rigid bodies, the base and the moving platform, connected by 6 articulated links. The links are connected to the base with universal joints and to the platform with ball and socket joints. In each link a linear actuator enables to change the link length.

Workspace limitations are due to the limited range of the linear actuators, the mechanical limits of the passive joints and links interference.

This program is able to perform five different tasks:

1.
computing the workspace of a robot when the orientation of the moving platform is fixed. It is able to compute a cross-section of this workspace or a 3D view with at most 80 cross-sections.
2.
computing the orientation workspace of a robot when the position of the moving platform center is fixed.
3.
verifying that the straight line trajectory between two postures of the moving platform lie within the workspace
4.
finding a path within the workspace for joining two positions of the center of the moving platform.
5.
computing cross-section of the maximal workspace (i.e. all the positions which can be reached with at least one orientation) of a special Gough platform with a triangular platform.

For all these problems xworkspace can take into account all the constraints (although in this implementation the mechanical limits on the ball-and-socket joints of the platform are not considered.

This program is an implementation of a collection of algorithms described in the following papers:[2],[1],[3], [4].

# Availability

Free source codes are available under Free Software Society conventions through anonymous ftp (download for Sun, download for Linux).

This software is provided "as is" without warranty of any kind. In no event shall INRIA be liable for any loss of profits, loss of business, loss of use or data, interruption of business, or for indirect, special, incidental, or consequential damages of any kind, arising from any error in this software.

# Implementation feature

Window system: X
Type: sources
Language: C
OS: Solaris, linux
Total number of lines: around 61000
Size of the executable: 6 Mo (Solaris), 4 Mo (linux)
Output: display, files, graphic output in xjpdraw format

# User's manual

User's manual of xworkspace
J-P. Merlet
INRIA Sophia-Antipolis
October 4, 1999

# Introduction

xworkspace deals with workspace related problems for Gough platforms i.e. two rigid bodies, the base and the moving platform, connected by 6 articulated links. The links are connected to the base with universal joints and to the platform with ball and socket joints. In each link a linear actuator enables to change the link length.

Workspace limitations are due to the limited range of the linear actuators, the mechanical limits of the passive joints and links interference.

This program is able to perform five different tasks:

1.
computing the workspace of a robot when the orientation of the moving platform is fixed. It is able to compute a cross-section of this workspace or a 3D view with at most 80 cross-sections.
2.
computing the orientation workspace of a robot when the position of the moving platform center is fixed.
3.
verifying that the straight line trajectory between two postures of the moving platform lie within the workspace
4.
finding a path within the workspace for joining two positions of the center of the moving platform.
5.
computing cross-section of the maximal workspace (i.e. all the positions which can be reached with at least one orientation) of a special Gough platform with a triangular platform.

For all these problems xworkspace can take into account all the constraints (although in this implementation the mechanical limits on the ball-and-socket joints of the platform are not considered.

This program is an implementation of a collection of algorithms described in the following papers:[2],[1],[3], [4].

# Defining a robot

A Gough platform (figure 1) is defined by the coordinates of the Ai, Bi points together with the maximum and minimum leg lengths.

 1#1

xworkspace is able to read a description of a robot in a file which should contain:

xa1 ya1 za1
xa2 ya2 za2
xa3 ya3 za3
xa4 ya4 za4
xa5 ya5 za5
xa6 ya6 za6
xb1 yb1 zb1
xb2 yb2 zb2
xb3 yb3 zb3
xb4 yb4 zb4
xb5 yb5 zb5
xb6 yb6 zb6
L1 L2 L3 L4 L5 L6
l1 l2 l3 l4 l5 l6

where (xai, yai, zai) stand for the coordinates of Ai, (xbi, ybi, zbi) stand for the coordinates of Bi and Li,li for the maximum and minimum length of link i.

# Running the program

To run the program just type xworkspace. The the first task is to define with which you are working by giving the name of the robot file in the Robot file button. For all the buttons of xworkspace where you indicate a string or values you need to validate you input by ending the input with the Return key.

A shortcut for indicating the name of the robot file is to run the program with:


xworkspace -R [robot file name]


Note that we make an extensive use of the Euler's angles for defining orientation. These angles correspond to a first rotation around the z axis, then a rotation around the next x axis, then a rotation around the new z axis.

# Defining constraints on the passive joints

As mentioned before the robot file contains one of the constraints having an influence on the workspace: the link lengths range. xworkspace can also deal with constraints on the passive joints (in this implementation only constraints on the joints at Ai). To modelize constraint on the joint at Ai we assume that the operator is able to defined a pyramid with apex at Ai and planar faces such that if the constraints on the joints are satisfied link AiBi lie within the interior of the pyramid. For example in figure 2 the user has defined a pyramid with four faces.

 2#2

Therefore a pyramid fully defines the constraints on the joints. A pyramid is defined in a pyramid file. A pyramid file start with three numbers which define the Euler's angles in degree of a frame attached to the platform. Then a number defines the number of facets of the pyramid. For each of these facets it is then necessary to give a keyword which define the type of facet (in the current implementation the only possible keyword is plane) followed by the Euler's angle in degree which define the direction of the normal to the facet. An example of pyramid file is:

3.946457 0 0
4
plan  0 -60
plan 90 -60
plan 180 -60
plan -90 -60

which defines a pyramid with 4 facets, the angle between the main axis of the pyramid and the facets being 30 degree.

# Completing the robot definition

If you intend to study a robot which has always mechanical limits on the base joints and/or for which you want to study links interference you can complete the robot file by giving after the length range 6 names which are the pyramid files (-1 as a name will be understood as no constraint for the joint) and, if needed, the 6 link radii. Therefore for studying only the link interference of a robot whose link has radii 15 you will write at the end of the robot file:

-1 -1 -1 -1 -1 -1
15 15 15 15 15 15


# Constant orientation Workspace

## Cross-section

After having defined a robot you can compute a horizontal cross-section of the workspace. Define the height of the platform in the z button and its orientation in the Orientation button. Then use the instruction Workspace in the Show menu. The dimension of the bounding box of the cross-section and its area are displayed. The Cursor button display the current coordinates of the mouse.

If you have defined pyramid for the base joints the program will take into account the mechanical limits of the joints.

If you have defined links radii in the Safety radii button the program may take into account links interference. To obtain the workspace under this assumption choose the command 2D workspace with Link intersection in the Show menu. The program will display first the workspace W without taking into account the links interference and will then plot the workspace with link intersections whose border will be drawn in thick green line.

The theory states that this border is constituted of arc of conics. The arc which play a role will be displayed in red. If you want to see all the conics which are taken into account (not only the conics having an intersection with W) use the command 2D workspace with Link intersection (all conics) in the Show menu.

## 3D workspace

You can also compute a set of slices between two heights of the platform by indicating the two heights in the z button, then the orientation of the platform in the Orientation button. Then use the instruction 3D view in the Show menu. The volume of the computed workspace is displayed, together with its bounding box. Note that the volume will represent the volume of the full workspace of the robot only if the two heights include the minimal and maximal reachable height. Note that links interference are not taken into account when displaying a 3D workspace (only lengths constraints and joints limits are taken into account).

You can adjust the number of slices in the Nb of slices button. After having computed the workspace you can change the point of view either by clicking in the Perspective, Face, Side, Top buttons or by indicating two angles defining the direction of view in the Rv, Rh buttons.

You can also display a particular slice by giving its number in the Show slice button. The computation of the constant orientation workspace is done using the algorithm described in [2].

If you have defined pyramid and have introduced a range for the z you can see in 3D your pyramids by using the command 3D view with pyramid of the Show menu.

# Orientation workspace

xworkspace is able to compute the orientation workspace of a Gough platform. By orientation workspace we mean the possible rotation of the moving platform around its center. You have therefore to define first the position of the center in the z: button by giving three coordinates.

To represent the possible orientation we attach a virtual segment at the center of the platform and we will display the region that can be reached by the end of the segment. The direction of the virtual segment is by default the z axis of the platform but can be changed to the z axis of a frame whose Euler's angles is given in the Orientation: button. But with this method we can display only two degrees of freedom. To choose these degree of freedom we will assume that we have first fixed one rotation axis by giving a unit vector in the Rotation axis button and then another rotation axis in the Rotation axis(1) button.

The program will perform the following operation:

• rotate with discrete step around the first rotation axis (the total number of steps is define by the number of slices in the Nb of slices button). For a given rotation angle the extremity of the virtual segment will describe an arc on the sphere
• compute the part of the arc on which the constraints are satisfied
The range for the angle of rotation around the first axis is therefore at most 180. A valid range is automatically determined by xworkspace and is displayed in the Quadrant button, which is a flip-flop button enabling to get the two possible quadrant. You can also choose your own quadrant by using th Other quadrant button: a new window will appear enabling to define the new range.

You can also change the type of display using the Display: Arc button. It is a flip-flop button: by clicking you will get Wire frame, Shaded with border and Shaded without border. In these cases the program will join the computed arcs to display spherical region.

To compute the possible rotation use the command Possible rotation (z fixed) button. It is possible to show the possible rotation for only one link by defining the link number (from 1 to 6 )in the Defined link button and using the Possible rotation for Defined link (fixed C) button.

After having computed the orientation workspace you can change the point of view either by clicking in the Perspective, Face, Side, Top buttons or by indicating two angles defining the direction of view in the Rv, Rh buttons.

When the platform rotates around its center the Bi points describe spheres. For one Bi if they is intersection between the sphere and the spheres centered in Ai with radii the minimum and maximum leg length then a full rotation around the center is not possible, due to the leg length limit. These intersection can be seen using the Possible region for B (fixed C) button. xworkspace will display the spheres describes by the Bi and their intersection with the spheres centered in Ai with radii the maximum leg length (the corresponding 3D circle will be displayed in thick line) and with the spheres centered in Ai with radii the minimum leg length (3D circle in thin line). The link number (from 1 to 6) will be displayed on the circle.

The computation of the constant orientation workspace is done using the algorithm described in [1]. The algorithm take into account all the possible constraints

When computing a cross-section of the constant orientation workspace the panels Link 1-2-3 and Link 4-5-6 will display the leg lengths for the current position of the mouse.

# Motion planning

The program enables to compute a trajectory within the workspace between a start and an end point which have the same orientation. Click in the Trajectory button. Define the 6 coordinates (angles in degree) of the start point and of the end point, then click in the Find trajectory button. If the height of the start and end point is the same the program will display the horizontal cross-section of the workspace and the computed path, if any. If the height differ the program will display as many horizontal cross-sections between the two height as indicated in the Nb of slices button and then display the trajectory if any. The computation of the path is done using the algorithm described in [3].

The Write button can be used to save the trajectory in a file called trajectory.

The Test straight line button enables to verify if the segment joining the end and start points is a valid trajectory, fully inside the workspace. This verification is done using the algorithm described in [4]. Invalid portion of the trajectory due to leg lengths constraints are shown in red, due to mechanical limit on the joints in purple, due to links interference in dark red. If the start and end point have same altitude and orientation the horizontal cross-section will be displayed together with the direct trajectory. If the start and end point have not the same altitude the a 3D view with horizontal cross-sections will be displayed together with the direct trajectory. The number of cross-sections is defined by the Nb of slices button. The orientation of the platform for the cross-sections is obtained by linear interpolation between the end and start point. If the start and end point have same altitude but different orientation a 3D view with cross-section will be displayed, the orientation of the platform for the cross-sections being obtained by linear interpolation between the end and start point orientation.

# Computing the maximal workspace of a TSSM

A TSSM is a Gough platform with a triangular platform. Here we will compute all the position which can be reached by one of the Bi point of the platform. Therefore it is necessary that in the robot file two of the Bi have (0,0,0) as coordinates. After having defined the robot give an altitude for the Bi in the z: button and choose the Maximal workspace command in the Show menu. The program will display a cross-section of the maximal workspace. This algorithm take into account only the leg lengths constraints.

# Scale, Zoom, Z dil., X, Y, Z buttons

When having computed a 2D result you can change the scale of the drawing by giving the values of xmin,xmax,ymin,ymax in the Scale button. A similar result will be obtained for 3D drawing with the Zoom button where you give a scaling factor (>1 for a bigger drawing). To dilate a 3D drawing along the z axis give a scale factor in the Z dil. button.

To change the location of the center of the scene for the 3D view give new values in the X, Y, Z button.

# Verify button

This button may be used to verify some result provided by xworkspace. The following operation may be verified:
• test of a straight line trajectory. A new trajectory will be displayed along the trajectory, the validity of the trajectory being tested using a discretization method
• the orientation workspace: using a discretization method valid arcs will be displayed very close to the determined arc. This works also if the arcs have been computed for the Defined link.

# Saving in xjpdraw format

Any result displayed on the screen can be saved in a format which can be understood by the drawing editor xjpdraw which is available via anonymous ftp. This enable to create a drawing directly from the result of xworkspace and to incorporate it in a LaTeX document. Give the name of a file in the Save in button. To create a drawing use the command:

xjpdraw -X 7 -Y 7 -F [file name]

where 7 is the width of the box in centimeter which will include your drawing. See the xjpdraw manual for further details.

# Command file

As in xjpdraw a command language enables to compute automatically results with xworkspace.

## Mode

Mode defines what is displayed about workspace.

## Orientation mode

In this mode we compute the orientation workspace of a parallel manipulator. The available mode are:


The mode B-link_motion enables to compute the posible location of the point B of the current segment. The mode N-link_motion enables to calculate the posible location of the N vector according to the constraint on the current segment. The mode N-all-link_motion enables to calculate the possible motion of the vector N according to the constraint on all the links.

An option of the mode in these cases is the range of the angle of rotation around X1. For example


%0=0
%1=180
mode N-all-link_motion ( %0 , %1 )
\begin{verbatim}
indicates that we will display the motion of vector N when the angle
vary from 0 to 180 degre.
\subsection {Conditionnal instruction}
The language enables some conditionnal structure like
{\tt if}, {\tt while}, {\tt for} enabling to change the
processing of the data.
\subsection {{\tt if} structure}

\begin{verbatim}
%0=600
%1=20
if (%0>500 || %1 <50)
bloc
print(%0,">500 ou",%1,"<50\n")
if (%0 >500 && %1 < 50)
bloc
print(%0,">500 et",%1,"<50\n")
end_bloc
end_bloc

quit


## Current segment

We are able to define the current link by using

segment [number]

For example segment 1 indicates that the current link is link 1. Here is a commented example:

/*---------------------------
Demo program
-----------------------------*/
/* load a robot */
robot "robot.car"
/* define the orientation of the platform */
angle 0 0 0

/* define the value of different variables */
%2=530

%50=10
%51=50
%52=70
%53=90
%54=110
%55=130

/* erase screen */
erase

interrupt

/* define the altitude of the platform */

pos_data %2

/* compute a cross section of the workspace  */
mode workspace

interrupt

%20=450
%21=700

erase

interrupt

/* compute 30 cross section between z=450 and 750 */

slices 30
pos_data %20, %21
mode workspace3D

interrupt

erase

/* add constraint on the base joint */

base_pyramid "a1.pyr a2.pyr a3.pyr a4.pyr a5.pyr a6.pyr"
pos_data %2

/* compute a cross section */

mode workspace_pyramide

interrupt

/* compute 30 cross section between z=450 and 750 */
slices 30
pos_data %20, %21
mode workspace3D

interrupt

erase

/* now define radius for the links for taking into account

safety_distance "2"

/* compute 30 cross sections */

slices 30
pos_data %20, %21
mode workspace3D

interrupt

erase

/* now compute an orientation workspace */

interrupt

%80=0
%81=0

pos_data %80, %81 , %2

/* unset base joint limits and interference constraints */
base_pyramid "-1 -1 -1 -1 -1 -1"
safety_distance "-1"

quit


## Bibliography

1
Merlet J-P.
Orientation workspace of a parallel manipulator with a fixed point.
In ICAR, pages 141-146, Tokyo, November 1-2,1993.

2
Merlet J-P.
Manipulateurs parallèles, 5eme partie : Détermination de l'espace de travail à orientation constante.
Research Report 1645, INRIA, March 1992.

3
Merlet J-P.
Manipulateurs parallèles, 7eme partie : Vérification et planification de trajectoire dans l'espace de travail.
Research Report 1940, INRIA, June 1993.

4
Merlet J-P.
Trajectory verification in the workspace for parallel manipulators.
The Int. J. of Robotics Research, 13(4):326-333, August 1994.

## Contents

• La page Présentation de HEPHAISTOS
• La page "Présentation" de l'INRIA

Jean-Pierre Merlet