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].

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.

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 of `xworkspace`

J-P. Merlet

INRIA Sophia-Antipolis

October 4, 1999

J-P. Merlet

INRIA Sophia-Antipolis

October 4, 1999

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].

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 l6where (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.

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.

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

3.946457 0 0 4 plan 0 -60 plan 90 -60 plan 180 -60 plan -90 -60which defines a pyramid with 4 facets, the angle between the main axis of the pyramid and the facets being 30 degree.

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

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.

In this mode the panel `DIS1` will display
for position of the robot defined by the current position of the
mouse the distance between links 1
and the other five links, `DIS2` will display the distance between links
2 and links 3, 4, 5, 6 and the panel `DIS345` will display the distance
between link 3 and links 4, 5, 6, the distance between link 4 and links 5, 6
and finally the distance between link 5 and 6. If a collision occur (i.e.
the distance between the link is lower than the sum of the radii of two
links) a panel will indicate that a collision occurs. Note that the area of
the fully constrained workspace is not computed.

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.

`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

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

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.

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

- 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.

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

mode B-link_motion mode N-link_motion mode N-all-link_motionThe mode

An option of the mode in these cases is the range of the angle of rotation
around *X*_{1}. 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

segment [number]For 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 links interference */ 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" %20=mode N-all-link_motion quit

**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.

- Purpose
- Availability
- Implementation feature
- User's manual
- Introduction
- Defining a robot
- Running the program
- Defining constraints on the passive joints
- Completing the robot definition
- Links interference
- Constant orientation Workspace
- Orientation workspace
- Link lengths
- Motion planning
- Computing the maximal workspace of a TSSM
`Scale, Zoom, Z dil., X, Y, Z`buttons`Verify`button- Saving in
`xjpdraw`format - Command file
- Bibliography
- Contents