cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Have a PTC product question you need answered fast? Chances are someone has asked it before. Learn about the community search. X

Gough Stewart Platform

XDN
13-Aquamarine
13-Aquamarine

Gough Stewart Platform

Hi

I want to use a hexapod (gough stewart platform)  in mechanical application.

The hexapode is formed with:

_ 1 base plate (ground)

_ 1 end effector (platform)

_ 6 leg (mechanical drive effector)

This system have 6 DoF for platform

For build this mechanical device, I need to calculate:

_ inverse kinematics : If i know the posture of platform, I find the leg lenght

  (the posture is : 3 positions : dX,dY,dZ and 3 rotations : dRX,dRY,dRZ)

_ Leg Forces (traction-compression only generated in leg)

For start, i build the geometrical model, for this, i define a ground mark : O with coordinates 0,0,0

1)

I define the hinge point of base : Ai

2)

I define the hinge point of platform : Bi

3)

I define the C point is the géometrical center of platform

Now the leg are AiBi vector

 

I define a user mark

The  user mark M ( 3 positions + 3 orientations) is define to mark O ( the origin of mark M is the point of interest)

For moving the platform, i define a new mark Mc from M

This mark is mark M augmented with strokes

Hexapod.jpg

 

 

And finally i calculate the AiBi vector, and i find the leg lenght.

I calculate AiBi at nominal position : not mouved platform

I calculate AiBi at mouved position

I find the stroke of effector (leg displacement)

 

Now I have a problem for Trajectory calculation

For know the stroke of effector, is necessary to compute leg lenght for trajectory.

The start point is define with stroke (in Mc)

dXmin  dRXmin

dYmin  dRYmin

dZmin dRZmin

The end point is

dXmax  dRXmax

dYmax  dRYmax

dZmax dRZmax

I use a lambda parameter for hash trajectory with 20 points for example

Now I find 20 group of position parameter.

I want to run my calculus for all position  group, and finally i make a graph with leg lenght for position parameter group.

 

 

 

My calculus is right for calculate leg lenght for one position of platforme in 3D space.

But i can’t calculate for trajectory ( group of parameter ) and i can’t make a graph

I’am a mechanical men, not a software programmer (lol)

Do you can to help me ?

35 REPLIES 35
XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

and trajectory worksheet

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

in first step. Perhaps i make 2 program Smiley Frustrated

 

first:

Calculate all coordinates for trajectory points in 3D space

with stroke data entrystroke.JPG

 

 

now

i make program wich calculate sucessive positions for all 6 parameters

 

example for only dX translation:

first position is  dXmin

second position is dXmin+dXstep

...  ( the step is (dXmax - dXmin) / lambda)

end with last position = dXmax

 

All position (dX,dY,dZ,dRX,dRY,dRZ) are must be concatenated in matrix Mc

 

Perhaps :program.JPG

 

 

Smiley Mad wrong ! it's don't work Smiley Sad

I am bad in programming  Smiley Sad

please help me

I don't understand to correctly use mathcad program Smiley Frustrated

 

 

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

It's good with LucMeekes solution (give me it in another post)Trajectory coordinates.JPG

 

i don't find it with program solutionsSmiley Sad

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

But i have problem with LucMeekes solution's

Example

if the dY strokes = 0 (dYmin=0 , dYmax=0)

I don't have 0 in matrix ! because i divide by 0 in dY stroke calculus ! it,s wrong!

I want to give 0 in my matrix if  stroke =0

maybe it's necessary to build programming solution  for resolve this ?

 

i'm very sad, i'm alone in the dark with mathcad programming

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

And if i want calculate position for one point in 3D space ! it's same divide by 0

example

dxmax= 30

dxmin= 30

error !

 

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

I try it

example for stroke dX 0 to 5

program_1.JPG

 

 

but the first 0 is not correct Smiley Frustrated

 

I don't understand why i have this first 0 Smiley Sad

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

i find the problem

is ORIGIN Mathcad parameter Smiley Surprised

 

 

But it's not work correctlyprogram_2.JPG

 

 

and i need same number of point for each matrix

 

example

if dx have 20 rows

i need dy,dz,dRx,dRy,dRz have equal rows , here 20 rows

if, for example dy=0

i need 20 rows equal 0 in dy matrix ...

I'm very very bad in programming Smiley Mad

 

 And i need concatenated all in one matrix

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

I try itprogram 3.JPG

 

 

But i have another problem

it's OK for stroke = 0 at 0 positions

 

But it's wrong if the stroke =0 , nut the position = 5 for example

If dZmin= 5 and dZmax=5 the stroke =0 but the position of platform = 5

and finally i need my dZ matrix have :

5

5

5

...

 

for this last item, it's wrong, but i'm getting closer

Fred_Kohlhepp
23-Emerald I
(To:XDN)

You know the coordinates in 3D cartesean space of the base of your six effectors (the A's in your diagram.)  

 

If you know the posture of the platform then you know the coordinates of the B's, the ends of the effectors.

 

The length of each effector then is the magnitude of the vector |B-A|.

 

The challenge is going to be to restrict the platform to the range of acceptable effector lengths.

XDN
13-Aquamarine
13-Aquamarine
(To:Fred_Kohlhepp)

Yes !

it's for this i need to make a trajectory generator!

 

if i have M1 point in 3Dspace and M2 point in 3Dspace

the vector M1M2 is my trajectory

if i hasch this vector, and i calculate AiBi for each hasching position , i find the stroke i need for this trajectory.

my problem is the mathcad using for this !

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

I thinks it's good program_4.JPG

 in this example

dX move 0 to 5

dY don't move, but the steady position is 2

dZ d'on't move

 

and finally the translation matrix isprogram_5.JPG

 

 

i think its OK, but is not elegant Smiley Wink

 

 

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

Oh no !!

I see a new problem!

If i want to calculate for only one point in 3D space

for example:

 

program_6.JPG

 

my program return

 

program_7.JPG

 

it's correct

but i want only one row if

all rows are equal in 1 colum

all rows are equal in 2 colum

all rows are equal in 3 colum

 

for example here , i want

one row : 5 2 1

 

How i make it ?

 

 

 

 

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

i find it

it's work, but it always not elegant ...program_8.JPG

 

 

 

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

I have corrected some errors

now it's good Smiley Wink

 

Fred_Kohlhepp
23-Emerald I
(To:XDN)

Attached is a Prime 4,0 file that illustrates how I would start.  It allows a computation of a translated and a rotated platform and shows how to get the lengths of the six effectors as a function of position.  This could be extended to functions of position.  (Right now only a few examples are shown.)

XDN
13-Aquamarine
13-Aquamarine
(To:Fred_Kohlhepp)

i agree with you

what you are doing it's OK for me.

in my worksheet  in the first post is more complicated because i regarded a user mark in 3D space

And this mark can be out of platform

 

For me your rotation matrix is not Euler convention , but Cardan convention

Euler is Rz,Ry,Rz(with another angle parameter)

in order, Cardan is : Roll, Pitch, Yaw

But is just stuff

 

Thanks

 

Now, i beguin more difficult part ...using my trajectory generator with my gough stewart platform calculus

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

sorry this capture is in french languagematrice_1.JPG

 

 

and finalymatrice_2.JPG

 

 

 

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

For platform calculation

1) geometrical specificationgeometrical.JPG

 

 

2) 3D space MarkMark.JPG

 Mark_Mc.JPG

 

 

 

3) calculate Bi point in 3D spacebi1.JPG

 bi2.JPG

 bi3.JPG

 

 

 

 

4) calculate leg lenght and strokeleg.JPG

 

This calculus is OK

 

Now i need to use my position matrix and my orientation matrix are calculated with trajectory program

trajectory matrix.JPG

 

 

 

I need to make new program wich take a value in matrix and it's use this value for define Mc Mark

 

1) dXmc=5 , dYmc=0 , dZmc=0 , dRXmc=-5 , dRYmc=0 , dRZmc = -4

the program calculate leg lenght and stroke for this parameter

2) dXmc=5 , dYmc=0 , dZmc=0.05 , dRXmc=-4.8 , dRYmc=0 , dRZmc = -3.75

the program calculate leg lenght and stroke for this parameter

.

.

.

n) dXmc=5 , dYmc=0 , dZmc=1 , dRXmc=-1 , dRYmc=0 , dRZmc = -1

the program calculate leg lenght and stroke for this parameter

 

And trace chart for all value

with it I know the leg lenght for all position trajectory

 

I don't think if make myself understood, because i not speak correctly your language.

XDN
13-Aquamarine
13-Aquamarine
(To:XDN)

Anyone can help me ?

I can't do it 

First, perhaps it's necessary to create mor subprogram ?

for example

Mc transformation matrix:

How can write one matrix, with submatrix for trajectory parameter parameter.JPG

 T_matrix.JPG

 

 

 

 

 

 

Fred_Kohlhepp
23-Emerald I
(To:XDN)

The command "stack" will create one array by stacking its arguments on top of each other.  (Augment puts them side by side.)

Capture.PNG

build this with XX := stack(top, second, third,    , last)

XDN
13-Aquamarine
13-Aquamarine
(To:Fred_Kohlhepp)

Thanks Fred

But i not understand ?

 

I need a program,( perhaps with for loop ?)

This program calculate the transformation matrix with all posture trajectory

And finally the program stack all submatrix was calculate in one matrix

 

 

The program define first group of parameter (issue to matrix trajectory)

dXMc=-5 dYMc=0 dZMc=0  dRXMc=-5deg dRYMc=0deg dRZMc=0deg

after this, the program calculate transformation matrix

For this, the program must be use transformation function T(dXMc,dYMc,dZMc,dRXMc,dRYMc,dRZMc)

with previous settings

and finally the program find the homogeneous transformation matrix for first posture

 

I need the program repeating this loop for all trajectory parameter

 

and finally i create one matrix stack all submatrix

 

I can't write it

please help

 

Fred_Kohlhepp
23-Emerald I
(To:XDN)


@XDN wrote:

Thanks Fred

But i not understand ?

 

I need a program,( perhaps with for loop ?)

This program calculate the transformation matrix with all posture trajectory

And finally the program stack all submatrix was calculate in one matrix

 

 

The program define first group of parameter (issue to matrix trajectory)

dXMc=-5 dYMc=0 dZMc=0  dRXMc=-5deg dRYMc=0deg dRZMc=0deg

after this, the program calculate transformation matrix

For this, the program must be use transformation function T(dXMc,dYMc,dZMc,dRXMc,dRYMc,dRZMc)

with previous settings

and finally the program find the homogeneous transformation matrix for first posture

 

I need the program repeating this loop for all trajectory parameter

 

and finally i create one matrix stack all submatrix

 

I can't write it

please help

 


I can't program--Express won't allow that.  

Put all of your parameters

dXMc=-5 dYMc=0 dZMc=0  dRXMc=-5deg dRYMc=0deg dRZMc=0deg

into a matrix.  (let's name that PAR for this discussion)

Then write a program function:

TRAJ(PAR) := for i Є 0..rows(PAR) - 1

                          row i of  ANS<-- T(row i of PAR)      (There are ways to select either a row or column of an .  

                                                                                     array,  "row i of" means that operator with i as the value

                     return ANS

 

This program should (I hope) return an array with all of the T() arrays stacked in it.

XDN
13-Aquamarine
13-Aquamarine
(To:Fred_Kohlhepp)

Sorry i don't understand Smiley SadCapture-2.JPG

 

 

 

Fred_Kohlhepp
23-Emerald I
(To:XDN)


@XDN wrote:

Sorry i don't understand Smiley SadCapture-2.JPG

 

 

 


Replace your line with

Capture1.PNG

XDN
13-Aquamarine
13-Aquamarine
(To:Fred_Kohlhepp)

Thanks Fred, but it's don't work

 

par.JPG

 

perhaps i can't explain correctly my problem

I try to explain it again (sorry, i don't speak and write correctly your language)

 

1) I have a PAR matrix : for examplePAR_matrix.JPG

 

 

Where in this matrix :

the 1 row is dX_Mc parameter

the 2 row is dY_Mc parameter

the 3 row is dZ_Mc parameter

the 4 row is dRX_Mc parameter

the 5 row is dRY_Mc parameter

the 6 row is dRZ_Mc parameter

 

and after i have a Transformation matrix T

Transformation_matrix.JPG

 Now i want calculate a T matrix for one line PAR matrix parameter

example: Capture-3.JPG

 

 

and finally , i want to calculate this for all line in PAR matrix, one by one

after, concatenated all value in one matrix

This final matrix have one row with  sub matrix (same number of line PAR matrix of course)

in this submatrix i find all result of Tmatrix

 

In final calculus, probably PAR matrix have over 1000 lines.

I hope is more clear

 

Fred_Kohlhepp
23-Emerald I
(To:XDN)

Without being able to view and modify your files this is becoming too difficult.  (Not because of your language skills!)

 

Sorry, maybe someone who can access and modify your code can pick this up.

XDN
13-Aquamarine
13-Aquamarine
(To:Fred_Kohlhepp)

Thanks Fred

I hope, i hope Smiley Wink

sincerely thanks for your help

Just for giggles I input your hinge points into my simple program.  (This is not to your level, but notice: by using vector operations I don't have to program.)

 

This is impressive work!

XDN
13-Aquamarine
13-Aquamarine
(To:Fred_Kohlhepp)

Why not 150 in last row ? because this worksheet is not completed.

When i design hexapod,  it's convenient to modify this value faster to find optimum design

is only reason Smiley Wink

In the same way, the last worksheet have a parametrisation for define hinge

for example :

i just modify radius, and angle between hinge, it's more convenient. It's not necessary to make first design with cadsystem

Capture.JPG

 

 

 

Top Tags