Community Tip - Want the oppurtunity to discuss enhancements to PTC products? Join a working group! X
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 ?
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 am bad in programming
please help me
I don't understand to correctly use mathcad program
It's good with LucMeekes solution (give me it in another post)
i don't find it with program solutions
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
And if i want calculate position for one point in 3D space ! it's same divide by 0
example
dxmax= 30
dxmin= 30
error !
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
i find the problem
is ORIGIN Mathcad parameter
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
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
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.
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 !
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
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 ?
i find it
it's work, but it always not elegant ...
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.)
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
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.
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
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)
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
@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.
Sorry i don't understand
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
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.
Thanks Fred
I hope, i hope
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!
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