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

Community Tip - When posting, your subject should be specific and summarize your question. Here are some additional tips on asking a great question. X

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

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
13-Aquamarine
(To:XDN)

and trajectory worksheet

13-Aquamarine
(To:XDN)

in first step. Perhaps i make 2 program

first:

Calculate all coordinates for trajectory points in 3D space

with stroke data entry

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 :

wrong ! it's don't work

I don't understand to correctly use mathcad program

13-Aquamarine
(To:XDN)

It's good with LucMeekes solution (give me it in another post)

i don't find it with program solutions

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 ?

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 !

13-Aquamarine
(To:XDN)

I try it

example for stroke dX 0 to 5

but the first 0 is not correct

I don't understand why i have this first 0

13-Aquamarine
(To:XDN)

i find the problem

But it's not work correctly

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

And i need concatenated all in one matrix

13-Aquamarine
(To:XDN)

I try it

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

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.

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 !

13-Aquamarine
(To:XDN)

I thinks it's good

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 is

i think its OK, but is not elegant

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:

my program return

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 ?

13-Aquamarine
(To:XDN)

i find it

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

13-Aquamarine
(To:XDN)

I have corrected some errors

now it's good

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

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

13-Aquamarine
(To:XDN)

sorry this capture is in french language

and finaly

13-Aquamarine
(To:XDN)

For platform calculation

1) geometrical specification

2) 3D space Mark

3) calculate Bi point in 3D space

4) calculate leg lenght and stroke

This calculus is OK

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

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.

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

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

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

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

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

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

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.

13-Aquamarine
(To:Fred_Kohlhepp)

Sorry i don't understand

23-Emerald I
(To:XDN)

@XDN wrote:

Sorry i don't understand

13-Aquamarine
(To:Fred_Kohlhepp)

Thanks Fred, but it's don't work

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 example

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

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

example:

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

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.

13-Aquamarine
(To:Fred_Kohlhepp)

Thanks Fred

I hope, i hope

23-Emerald I
(To:Fred_Kohlhepp)

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!

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

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

Announcements
Top Tags