You do not have permission to edit this page, for the following reason:

You are not allowed to execute the action you have requested.


You can view and copy the source of this page.

x
 
1
<!--<div class="center" style="width: auto; margin-left: auto; margin-right: auto;">
2
'''DEVELOPMENT OF A COMPUTER PROGRAM FOR DIMENSIONAL SYNTHESIS OF A FOUR-BAR MECHANISM THAT GENERATES A PRESCRIBED TRAJECTORY'''</div>
3
4
Cesar Hernandez Vielma<sup>a</sup> 
5
6
Jhanie Rodriguez<sup>b</sup> 
7
8
<sup>a</sup>Departmento de Ingeniería Mecánica, Universidad Técnica Federico Santa María, Chile.
9
10
<sup>b</sup>Escuela de Ingeniería Mecánica, Universidad del Zulia, Venezuela.
11
-->
12
==Abstract==
13
14
This work aims to develop a computational tool for synthesizing a four-bar linkage mechanism that can generate a prescribed path for a point coupler link to follow. The dimensional synthesis of the mechanism involves determining the lengths of each of its links. In this case, two possible configurations are evaluated: crank-rocker and/or double crank. The prescribed path consists of an arbitrary number of points contained in a plane, along with the corresponding rotation degrees of the driver element.
15
16
Dimensioning the mechanism involves many variables, and it is possible to obtain various configurations that generate paths that are approximately the desired path. Therefore, the synthesis problem arises as an optimization problem in which the objective function seeks to minimize the Euclidean norm between the prescribed points and the points earned.
17
18
To solve the optimization problem, a user-friendly computer program called SIDIGETRA was developed using the genetic algorithms numerical technique. Design constraints were imposed to obtain an open configuration of the mechanism and to avoid branching defects, order, and Grashof. The program's proper functioning was validated by comparing the results obtained in case studies published in a research article in which the genetic algorithms technique was also applied. The percentage relative errors between the coordinates of the obtained points and prescribed points were calculated and found to be satisfactory. Additionally, the results generated by SIDIGETRA were validated with a visual comparison between the prescribed trajectory and the one obtained by simulating the position analysis of the synthesized mechanism using a commercial software tool designed for this purpose.
19
20
'''Keywords''': Four bar articulated mechanism, dimensional synthesis, trajectory generation, genetic algorithms, computer program development
21
22
==1. Introduction==
23
24
Dimensional synthesis refers to the determination of the lengths of the links in a mechanism such that it performs a certain task [1]. More specifically, dimensional synthesis for trajectory generation refers to finding a mechanism that properly follows a curve through a point on its coupler link [2-5].
25
26
There are numerous techniques for dimensional synthesis of mechanisms to generate a desired trajectory, all based on either the closed-loop equations or the equation of the coupler curve [3]. In both cases, the equations to be satisfied are nonlinear, which complicates their solution due to the large number of variables involved. On the other hand, non-feasible solutions can be found that satisfy all the equations simultaneously but do not correspond to a real mechanism [6].
27
28
The trajectory generation problem can be approximately solved by posing the problem as an optimization problem, as proposed by Nieto [6], which can be solved using Genetic Algorithms and programming [7,8].
29
30
Therefore, the objective is to develop a user-friendly computer program for the dimensional synthesis of a four-bar mechanism that generates a desired trajectory with prescribed timing for a point on the coupler using genetic algorithms.
31
32
==2. Development of the program==
33
34
The goal is to dimensionally synthesize a 4-bar mechanism so that a tracing point on the coupler link generates a trajectory with a prescribed timing. In this regard, Nieto [6] states that in the case of mechanism synthesis, the classic optimization problem can be posed by minimizing a certain error function. Since the problem is approached as an optimization one, the design variables, objective function, and constraints must be defined.
35
36
<div id='img-1'></div>
37
{| class="wikitable" style="margin: 0em auto 0.1em auto;border-collapse: collapse;width:auto;" 
38
|-style="background:white;"
39
|style="text-align: center;padding:10px;"| [[Image:Draft_Hernandez_561122732-image1.png|300px]]
40
|-
41
| style="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 1'''. A four-bar mechanism that generates a trajectory
42
|}
43
44
45
===2.1. Design variables===
46
47
A set of design variables is chosen, consisting of the coordinates of the points located at the joints of the mechanism: <math display="inline">X_A</math>, <math display="inline">Y_A</math>, <math display="inline">X_B</math>, <math display="inline">Y_B</math>, <math display="inline">X_C</math>, <math display="inline">Y_C</math>, <math display="inline">X_D</math>, and <math display="inline">Y_D</math>. As shown in [[#img-1|Figure 1]], the chosen variables completely define the 4-bar mechanism and are homogeneous, making them suitable for use with genetic algorithms. However, they do not locate the tracing point <math display="inline">P</math> in the plane, so it is chosen to coincide with one of the prescribed points. On closer analysis, it can be observed that <math display="inline">Y_B</math> can be expressed in terms of the other coordinates. Based on [[#img-1|Figure 1]]:
48
49
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
50
|-
51
| 
52
{| style="text-align: center;margin:auto;width: 100%;"
53
|-
54
| <math>{\alpha }_{1}=a\tan\left( \frac{{Y}_{D}-{Y}_{A}}{{X}_{D}-{X}_{A}}\right)</math> 
55
|}
56
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(1)
57
|}
58
59
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
60
|-
61
| 
62
{| style="text-align: center;margin:auto;width: 100%;"
63
|-
64
| <math>{Y}_{B}={Y}_{A}+\left( {X}_{B}-{X}_{A}\right) {_\ast}\mathrm{tan}\,\left( {\alpha }_{1}+\right. </math><math>\left. {\theta }_{2}\right)</math> 
65
|}
66
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(2)
67
|}
68
69
where <math display="inline">{\theta }_{2}</math> is the prescribed angular position of the crank corresponding to the prescribed point <math display="inline">U</math>, which is selected to position point <math display="inline">P</math>. Thus, the design variables are <math display="inline">X_A</math>, <math display="inline">Y_A</math>, <math display="inline">X_B</math>, <math display="inline">X_C</math>, <math display="inline">Y_C</math>, <math display="inline">X_D</math>, <math display="inline">Y_D</math>, and all the other variables can be calculated from these
70
71
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
72
|-
73
| 
74
{| style="text-align: center;margin:auto;width: 100%;"
75
|-
76
| <math>e=\sqrt{{\left( {Y}_{U,N}-{Y}_{B}\right) }^{2}+{\left( {X}_{U,N}-{X}_{B}\right) }^{2}}</math>
77
|}
78
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(3)
79
|}
80
81
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
82
|-
83
| 
84
{| style="text-align: center;margin:auto;width: 100%;"
85
|-
86
| <math>{\alpha }_{2}=a\tan\left( \frac{{Y}_{U,N}-{Y}_{B}}{{X}_{U,N}-{X}_{B}}\right) -a\tan\left( \frac{{Y}_{C}-{Y}_{B}}{{X}_{C}-{X}_{B}}\right)</math> 
87
|}
88
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(4)
89
|}
90
91
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
92
|-
93
| 
94
{| style="text-align: center;margin:auto;width: 100%;"
95
|-
96
| <math>a=\sqrt{{\left( {Y}_{A}-{Y}_{B}\right) }^{2}+{\left( {X}_{A}-{X}_{B}\right) }^{2}}</math>
97
|}
98
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(5)
99
|}
100
101
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
102
|-
103
| 
104
{| style="text-align: center;margin:auto;width: 100%;"
105
|-
106
| <math>b=\sqrt{{\left( {Y}_{C}-{Y}_{B}\right) }^{2}+{\left( {X}_{C}-{X}_{B}\right) }^{2}}</math>
107
|}
108
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(6)
109
|}
110
111
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
112
|-
113
| 
114
{| style="text-align: center;margin:auto;width: 100%;"
115
|-
116
| <math>c=\sqrt{{\left( {Y}_{C}-{Y}_{D}\right) }^{2}+{\left( {X}_{C}-{X}_{D}\right) }^{2}}</math>
117
|}
118
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(7)
119
|}
120
121
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
122
|-
123
| 
124
{| style="text-align: center;margin:auto;width: 100%;"
125
|-
126
| <math>d=\sqrt{{\left( {Y}_{A}-{Y}_{D}\right) }^{2}+{\left( {X}_{A}-{X}_{D}\right) }^{2}}</math>
127
|}
128
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(8)
129
|}
130
131
where <math>{X}_{U,N}</math> and <math>{Y}_{U,N}</math> represent the coordinates of the prescribed point <math>N</math>. The orientation angle of the coupler link <math display="inline">{\theta }_{3}</math> is obtained from the Freudenstein equation [6], which produces two possible values of <math display="inline">{\theta }_{3}</math> for each of the points of interest, corresponding to the open and crossed configurations of the mechanism according to Norton [3]
132
133
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
134
|-
135
| 
136
{| style="text-align: center;margin:auto;width: 100%;"
137
|-
138
| <math>{\theta }_{3}=2{_\ast}a\tan\left( \frac{-{K}_{B}\pm \sqrt{{K}_{B}^{2}-4{_\ast}{K}_{A}{_\ast}{K}_{C}}}{2{_\ast}{K}_{A}}\right)</math> 
139
|}
140
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(9)
141
|}
142
143
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
144
|-
145
| 
146
{| style="text-align: center;margin:auto;width: 100%;"
147
|-
148
| <math>{K}_{A}=\cos\left( {\theta }_{2}\right) -{K}_{1}+{K}_{2}{_\ast}\cos\left( {\theta }_{2}\right) +</math><math>{K}_{3}</math>
149
|}
150
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(10)
151
|}
152
153
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
154
|-
155
| 
156
{| style="text-align: center;margin:auto;width: 100%;"
157
|-
158
| <math>{K}_{B}=-2{_\ast}\sin\left( {\theta }_{2}\right)</math> 
159
|}
160
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(11)
161
|}
162
163
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
164
|-
165
| 
166
{| style="text-align: center;margin:auto;width: 100%;"
167
|-
168
| <math>{K}_{C}={K}_{1}+\left( {K}_{2}-1\right) {_\ast}\cos\left( {\theta }_{2}\right) +{K}_{3}</math>
169
|}
170
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(12)
171
|}
172
173
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
174
|-
175
| 
176
{| style="text-align: center;margin:auto;width: 100%;"
177
|-
178
| <math>{K}_{1}=\frac{d}{a}</math>
179
|}
180
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(13)
181
|}
182
183
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
184
|-
185
| 
186
{| style="text-align: center;margin:auto;width: 100%;"
187
|-
188
| <math>{K}_{2}=\frac{d}{b}</math>
189
|}
190
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(14)
191
|}
192
193
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
194
|-
195
| 
196
{| style="text-align: center;margin:auto;width: 100%;"
197
|-
198
| <math>{K}_{3}=\frac{{c}^{2}-{d}^{2}-{b}^{2}-{a}^{2}}{2{_\ast}a{_\ast}b}</math>
199
|}
200
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(15)
201
|}
202
203
===2.2. Objective function===
204
205
The error function to be minimized is the sum of the squared distances between the prescribed points and the points where the tracer point of the mechanism actually passes through
206
207
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
208
|-
209
| 
210
{| style="text-align: center;margin:auto;width: 100%;"
211
|-
212
| <math>f\left( x\right) =\sum _{i=1}^{N-1}{\left( {X}_{Ui}-{X}_{Pi}\right) }^{2}+{\left( {Y}_{Ui}-{Y}_{Pi}\right) }^{2}</math>
213
|}
214
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(16)
215
|}
216
217
where <math>{X}_{Ui}</math>, <math>{Y}_{Ui}</math> represent the coordinates of the prescribed point <math>i</math>, and <math>{X}_{Pi}</math>, <math>{Y}_{Pi}</math> represent the coordinates of point <math>P</math> calculated from the angle <math display="inline">{\theta }_{2i}</math> of prescribed point <math>i</math>. These coordinates can be calculated from the following equations:
218
219
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
220
|-
221
| 
222
{| style="text-align: center;margin:auto;width: 100%;"
223
|-
224
| <math>{X}_{Pi}={X}_{A}+a{_\ast}\cos\left( {\alpha }_{1}+{\theta }_{2i}\right) +e{_\ast}\cos\,\left( {\alpha }_{1}+\right. </math><math>\left. {\alpha }_{2}+{\theta }_{3i}\right)</math> 
225
|}
226
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(17)
227
|-
228
| 
229
{| style="text-align: center;margin:auto;width: 100%;"
230
|-
231
| <math>{Y}_{Pi}={Y}_{A}+a{_\ast}\sin\left( {\alpha }_{1}+{\theta }_{2i}\right) +e{_\ast}\sin\,\left( {\alpha }_{1}+\right. </math><math>\left. {\alpha }_{2}+{\theta }_{3i}\right)</math> 
232
|}
233
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(18)
234
|}
235
236
237
Genetic algorithms are defined to maximize a function, not to minimize it. Therefore, the problem is reformulated as a maximization problem using Eq. (19) [7,8]
238
239
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
240
|-
241
| 
242
{| style="text-align: center;margin:auto;width: 100%;"
243
|-
244
| <math>F\left( x\right) =\frac{1}{1+f\left( x\right) }</math>
245
|}
246
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(19)
247
|}
248
249
250
It is observed that the objective function takes values between 0 and 1, and the closer it is to 1, the better the design obtained.
251
252
===2.3. Design constraints===
253
254
According to Nieto [6], a design can be absurd due to having in the vector of design variables some component without physical meaning, for example, a negative length for a bar. That is why certain constraints must be imposed to delimit the design space so that it has physical meaning. Next, the constraints that each design point must satisfy are established:
255
Grashof's condition. This establishes that the sum of the shortest (<math>S</math>) and longest (<math>L</math>) link of a planar four-bar linkage cannot be greater than the sum of the lengths of the remaining two links (<math>Q</math> and <math>R</math>), in order to have a continuous relative rotation between two links, that is, at least one of the links should perform complete revolutions [3]. Grashof's law is expressed by Eq. (20)
256
257
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
258
|-
259
| 
260
{| style="text-align: center;margin:auto;width: 100%;"
261
|-
262
| <math>S+L<Q+R</math>
263
|}
264
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(20)
265
|}
266
267
268
The Impulsor condition. SIDIGETRA should be able to obtain a crank-rocker mechanism or a double crank mechanism as chosen by the user. On one hand, if the user wants to obtain a crank-rocker mechanism ([[#img-1|Figure 1]](a)), the program restricts the crank to be the shortest link of the mechanism. To achieve this form, an adjacent link to the shortest link is fixed, and the output link behaves as an oscillator
269
270
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
271
|-
272
| 
273
{| style="text-align: center;margin:auto;width: 100%;"
274
|-
275
| <math>a<b,a<c,a<d</math>
276
|}
277
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(21)
278
|}
279
280
where <math>a</math> is the length of the crank, <math>b</math> is the length of the coupler, <math>c</math> is the length of the output link, and <math>d</math> is the length of the ground link. On the other hand, if the user wants to obtain a double crank mechanism ([[#img-1|Figure 1]](b)), the program restricts the ground link to be the shortest link in the mechanism. Both pivoted links can perform full revolutions, and the shorter crank will act as a driver.
281
282
{| class="formulaSCP" style="width: 100%;border-collapse: collapse;width: 100%;text-align: center;" 
283
|-
284
| 
285
{| style="text-align: center;margin:auto;width: 100%;"
286
|-
287
| <math>d<b,d<c,d<a</math>
288
|}
289
|  style="text-align: right;width: 5px;text-align: right;white-space: nowrap;"|(22)
290
|}
291
292
<div id='img-2'></div>
293
{| class="wikitable" style="margin: 1em auto 0.1em auto;border-collapse: collapse;width:auto;" 
294
|-style="background:white;"
295
|align="center" | 
296
{|style="margin: 0em auto 0.1em auto;width:auto;" 
297
|+
298
|-
299
|style="text-align: center;padding:10px;"| [[Image:Draft_Hernandez_561122732-picture-shape_0.svg|center|286px]]
300
|style="text-align: center;padding:10px;"| [[Image:Draft_Hernandez_561122732-picture- 1.svg|center|230px]]
301
|-
302
|style="text-align: center;font-size: 75%;padding-bottom:10px;"|(a) 
303
|style="text-align: center;font-size: 75%;padding-bottom:10px;"|(b) 
304
|}
305
|-
306
| style="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 2'''. Inversions of the four-bar linkage mechanism. (a) Crank-Rocker. (b) Double Crank
307
|}
308
309
310
Coupler link angle (<math>\theta_3</math>). Mathematically, it is known that the subradical quantity of square roots must be greater than or equal to zero, in order to avoid the result of the root being an imaginary number. Therefore, it is necessary to restrict the subradical quantity of Eq. (9) with which <math>\theta_3</math> is calculated to be positive. In order to speed up the convergence of the genetic algorithm, only the open configuration of the mechanism is considered, so <math>\theta_3</math> is restricted to be greater than zero.
311
312
===2.4. Flowchart===
313
314
The flowchart of the program is shown in [[#img-3|Figure 3]]. The flow diagram of the SIDIGETRA program starts with the input of data such as the prescribed trajectory points and the design parameters. Then, it proceeds to calculate the linkage lengths, the minimum and maximum values of the angle, and the Grashof condition check. After that, the program initializes the population of the genetic algorithm, which generates the initial designs. The designs undergo evaluation through the fitness function, and the program proceeds to the selection, crossover, and mutation stages of the genetic algorithm.
315
316
<div id='img-3'></div>
317
{| class="wikitable" style="margin: 0em auto 0.1em auto;border-collapse: collapse;width:auto;" 
318
|-style="background:white;"
319
|style="text-align: center;padding:10px;"| [[File:Review_568834497267_1925_flow-chart.png|346px]]
320
|-
321
| style="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 3'''. Flowchart
322
|}
323
324
325
The new population undergoes the same evaluation, selection, crossover, and mutation stages until the termination criteria are met. Once the termination criteria are satisfied, the program outputs the best design along with its performance and a plot of the trajectory.
326
327
===2.5. Input data ===
328
329
To implement the Genetic Algorithms in the SIDIGETRA program, the user must input the following data of the prescribed trajectory and design parameters:
330
331
Coordenadas de los puntos prescritos: These are the coordinates of the points on the desired trajectory to be generated (the points must be coplanar). It is a set of values in <math display="inline">X</math> and <math display="inline">Y</math>, in addition to the corresponding rotation angles (in degrees) of the driving crank.
332
333
Maximum and minimum coordinates (<math display="inline">X_{\max}</math> and <math display="inline">X_{\min}</math>): These are the maximum and minimum values assigned by the user to the design variables (<math display="inline">X_A</math>, <math display="inline">Y_A</math>, <math display="inline">X_B</math>,<math display="inline">X_C</math>, <math display="inline">Y_C</math>, <math display="inline">X_D</math>, and <math display="inline">Y_D</math>) according to the physical space available for implementing the mechanism.
334
335
Four-bar linkage inversion: the user can select between crank-rocker and double-crank inversion.
336
337
Population: refers to the size of the design set, which should not be too small as it makes the execution of genetic operators difficult, and not too large as it significantly increases the program execution time for each iteration. It is recommended to use a value between 100 and 1000.
338
339
Crossover probability (Pc): determines how many times the crossover operator is executed. It should be a value between 0 and 1. A value close to 0 indicates that few crossovers will be executed, while a value close to 1 indicates that many crossovers will be executed.
340
341
Mutation probability (Pm): represents the number of times the mutation operator is executed. It should be a value between 0 and 1. A value close to 0 indicates that few mutations will be executed, while a value close to 1 indicates that many mutations will be executed.
342
343
Acceptable objective function value: this is the minimum value that the objective function needs to have for the algorithm to consider that it has found the solution. The closer the value of the objective function is to 1, the better the solution found, but at the same time, it increases the program execution time. Therefore, it is recommended to take values between 0.8 and 1.
344
345
Itermax refers to the maximum number of iterations that the Genetic Algorithm will perform.
346
347
===2.6. Results===
348
349
In the program interface, the user can find information about the number of iterations performed and the objective function obtained. Additionally, a graphical representation of the selected mechanism inversion is shown, along with nomenclature that allows the identification of the lengths of the links and the coordinates of the pivots and joints.
350
351
Finally, the output of SIDIGETRA is a graph that allows the comparison of the desired trajectory versus the obtained trajectory. With this graph, the user can visualize the precision with which the synthesized mechanism can generate the curve of the specified coupler point, and evaluate if it satisfies their requirements or not.
352
353
==3. Validation==
354
355
It is necessary to verify the functionality of the SIDIGETRA program, as well as the validity of the results obtained. To achieve this goal, the dimensional synthesis of several mechanisms is performed using SIDIGETRA, and the percent relative error between the prescribed point coordinates and the obtained point coordinates is calculated.
356
357
Then, position analyses are carried out for each synthesized mechanism using a commercial computer program, to visually compare the generated trajectories. For validation, in all cases, the exercises solved by Peón et al. [9] in their article on dimensional synthesis are taken as a reference, which are described below.
358
359
===3.1. Benchmark 1===
360
361
It is required to generate a trajectory with 18 prescribed points, as stated in [[#tab-1|Table 1]].
362
363
<div class="center" style="font-size: 75%;">'''Table 1'''. Prescribed points for benchmark 1</div>
364
365
<div id='tab-1'></div>
366
{| class="wikitable" style="margin: 1em auto 0.1em auto;border-collapse: collapse;font-size:85%;width:auto;" 
367
|-style="text-align:center"
368
! '''I''' !! <math display="inline">\Theta_2</math>  !! '''Desired point (X,Y)''' !! '''I''' !! <math display="inline">\Theta_2</math> !! '''Desired point (X,Y)'''
369
|-
370
|  style="text-align: center;"|1
371
|  style="text-align: center;"|30
372
|  style="text-align: center;"|(0.5,1.1)
373
|  style="text-align: center;"|10
374
|  style="text-align: center;"|210
375
|  style="text-align: center;"|(0.03,0.3)
376
|-
377
|  style="text-align: center;"|2
378
|  style="text-align: center;"|50
379
|  style="text-align: center;"|(0.4,1.1)
380
|  style="text-align: center;"|11
381
|  style="text-align: center;"|230
382
|  style="text-align: center;"|(0.1,0.25)
383
|-
384
|  style="text-align: center;"|3
385
|  style="text-align: center;"|70
386
|  style="text-align: center;"|(0.3,1.1)
387
|  style="text-align: center;"|12
388
|  style="text-align: center;"|250
389
|  style="text-align: center;"|(0.15,0.2)
390
|-
391
|  style="text-align: center;"|4
392
|  style="text-align: center;"|90
393
|  style="text-align: center;"|(0.2,1)
394
|  style="text-align: center;"|13
395
|  style="text-align: center;"|270
396
|  style="text-align: center;"|(0.2,0.3)
397
|-
398
|  style="text-align: center;"|5
399
|  style="text-align: center;"|110
400
|  style="text-align: center;"|(0.1,0.9)
401
|  style="text-align: center;"|14
402
|  style="text-align: center;"|290
403
|  style="text-align: center;"|(0.3,0.4)
404
|-
405
|  style="text-align: center;"|6
406
|  style="text-align: center;"|130
407
|  style="text-align: center;"|(0.05,0.75)
408
|  style="text-align: center;"|15
409
|  style="text-align: center;"|310
410
|  style="text-align: center;"|(0.4,0.5)
411
|-
412
|  style="text-align: center;"|7
413
|  style="text-align: center;"|150
414
|  style="text-align: center;"|(0.02,0.6)
415
|  style="text-align: center;"|16
416
|  style="text-align: center;"|330
417
|  style="text-align: center;"|(0.5,0.7)
418
|-
419
|  style="text-align: center;"|8
420
|  style="text-align: center;"|170
421
|  style="text-align: center;"|(0,0.5)
422
|  style="text-align: center;"|17
423
|  style="text-align: center;"|350
424
|  style="text-align: center;"|(0.6,0.9)
425
|-
426
|  style="text-align: center;"|9
427
|  style="text-align: center;"|190
428
|  style="text-align: center;"|(0,0.4)
429
|  style="text-align: center;"|18
430
|  style="text-align: center;"|370
431
|  style="text-align: center;"|(0.6,1)
432
|}
433
434
<div class="center" style="font-size: 75%;">Source: Peón Escalante, R. et al., 2009</div>
435
436
437
The SIDIGETRA program was used to dimension a crank-rocker mechanism with <math display="inline">Itermax=5000</math>, acceptable <math display="inline">FO=0.98</math>, <math display="inline">Population=1000</math>, <math display="inline">Pc=0.5</math>, <math display="inline">Pm=0.05</math>, and maximum and minimum coordinate values set to 4 and -4, respectively. The program performed 5000 iterations and found an <math display="inline">FO</math> value of <math>0.96306</math>. [[#img-4|Figure 4]](a) shows the results obtained by SIDIGETRA, and [[#img-4|Figure 4]](b) shows the visualization of the synthesized mechanism with a simulation performed using a commercial computer tool that allows for graphical comparison of trajectories.
438
439
<div id='img-4'></div>
440
{| class="wikitable" style="margin: 0em auto 0.1em auto;border-collapse: collapse;width:80%;" 
441
|-style="background:white;"
442
|align="center" | 
443
{|style="margin: 0em auto 0.1em auto;width:auto;" 
444
|+
445
|-
446
|style="text-align: center;"| [[Image:Draft_Hernandez_561122732-image3.png|358px]]
447
|style="text-align: center;"| [[Image:Draft_Hernandez_561122732-image4-c.png|340px]]
448
|-
449
|style="text-align: center;font-size: 75%;padding-bottom:10px;"|(a) 
450
|style="text-align: center;font-size: 75%;padding-bottom:10px;"|(b) 
451
|}
452
|-
453
| style="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 4'''. Crank-rocker mechanism for Benchmark 1. (a) SIDIGETRA results. (b) Simulation with dimensions in a computer tool
454
|}
455
456
457
An average percentage relative error of 22.20% is obtained for the X coordinates obtained compared to the prescribed X coordinates. Regarding the Y coordinates, an average percentage relative error of 6.60% is obtained. Next, it is desired to know if it is possible to generate the same trajectory using a double-crank mechanism. The same design parameters as in the previous case are used, and the number of iterations performed by SIDIGETRA is 5000, finding an FO value of 0.74053. [[#img-5|Figure 5]]  shows that the generated trajectory is approximately circular and actually not very close to the desired trajectory. It is also observed that points <math display="inline"> A </math> and <math display="inline"> D </math> are very close to each other, and therefore the length of the coupler (the value of "<math display="inline"> d </math>") is very close to zero, which is technically unfeasible for construction.
458
459
<div id='img-5'></div>
460
{| class="wikitable" style="margin: 0em auto 0.1em auto;border-collapse: collapse;width:70%;" 
461
|-style="background:white;"
462
|align="center" | 
463
{|style="margin: 0em auto 0.1em auto;width:auto;" 
464
|+
465
|-
466
|style="text-align: center;"| [[Image:Draft_Hernandez_561122732-image5.png|352px]]
467
|style="text-align: center;"| [[Image:Draft_Hernandez_561122732-image6.png|262px]] 
468
|-
469
|style="text-align: center;font-size: 75%;padding-bottom:10px;"|(a) 
470
|style="text-align: center;font-size: 75%;padding-bottom:10px;"|(b) 
471
|}
472
|-
473
| style="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 5'''. Double crank mechanism of  Benchmark 1. (a) SIDIGETRA results. (b) Simulation with dimensions in a computer tool
474
|}
475
476
477
The average percent relative errors obtained are: erx%=70.6% and ery%=20.8%, which are much higher than those found with the crank-rocker mechanism, leading to discarding the double crank inversion for this prescribed trajectory.
478
479
===3.2. Benchmark 2===
480
481
We need to generate a straight line trajectory with 9 points, which are listed in [[#tab-2|Table 2]].
482
483
<div class="center" style="font-size: 75%;">'''Table 2'''. Puntos prescritos del Ejercicio 2</div>
484
485
<div id='tab-2'></div>
486
{| class="wikitable" style="margin: 1em auto 0.1em auto;border-collapse: collapse;font-size:85%;width:auto;" 
487
|-style="text-align:center"
488
! '''I''' !! <math display="inline">\Theta_2</math>  !! '''Desired point (X,Y)''' !! '''I''' !! <math display="inline">\Theta_2</math> !! '''Desired point (X,Y)'''
489
|-
490
|  style="text-align: center;"|1
491
|  style="text-align: center;"|90
492
|  style="text-align: center;"|(8,10)
493
|  style="text-align: center;"|6
494
|  style="text-align: center;"|202.5
495
|  style="text-align: center;"|(3,7.5)
496
|-
497
|  style="text-align: center;"|2
498
|  style="text-align: center;"|112.5
499
|  style="text-align: center;"|(7,9.5)
500
|  style="text-align: center;"|7
501
|  style="text-align: center;"|225
502
|  style="text-align: center;"|(2,7)
503
|-
504
|  style="text-align: center;"|3
505
|  style="text-align: center;"|135
506
|  style="text-align: center;"|(6,9)
507
|  style="text-align: center;"|8
508
|  style="text-align: center;"|247.5
509
|  style="text-align: center;"|(1,6.5)
510
|-
511
|  style="text-align: center;"|4
512
|  style="text-align: center;"|157.5
513
|  style="text-align: center;"|(5,8.5)
514
|  style="text-align: center;"|9
515
|  style="text-align: center;"|270
516
|  style="text-align: center;"|(0,6)
517
|-
518
|  style="text-align: center;"|5
519
|  style="text-align: center;"|180
520
|  style="text-align: center;"|(4,8)
521
|  style="text-align: center;"|
522
|  style="text-align: center;"|
523
|  style="text-align: center;"|
524
|}
525
526
<div class="center" style="font-size: 75%;">Source: Peón Escalante, R. et al., 2009</div>
527
528
529
SIDIGETRA was used to find a crank-rocker mechanism. The design parameters used were: <math display="inline">Itermax=2000</math>, acceptable <math display="inline">FO=0.95</math>, <math display="inline">Population=1000</math>, <math display="inline">Pc=0.5</math>, <math display="inline">Pm=0.05</math>, <math display="inline">Maximum coordinate=10</math>, <math display="inline">Minimum coordinate= -10</math>. Results obtained: <math>Iterations performed=2000</math>, <math>FO=0.82757</math>. It is observed that the prescribed points and the obtained points are visibly close to each other [[#img-6|Figure 6]]). The mechanism found by SIDIGETRA generates the desired trajectory with a 4.11% average percentage relative error in the X-coordinates and a 0.70% average percentage relative error in the Y-coordinates.
530
531
<div id='img-6'></div>
532
{| class="wikitable" style="margin: 0em auto 0.1em auto;border-collapse: collapse;width:80%;" 
533
|-style="background:white;"
534
|align="center" | 
535
{|style="margin: 0em auto 0.1em auto;width:auto;" 
536
|+
537
|-
538
|style="text-align: center;"| [[Image:Draft_Hernandez_561122732-image7.png|352px]]
539
|style="text-align: center;"| [[File:Hernandez_Rodriguez_2023a_1353_Draft_Hernandez_561122732-image8-c.png|298px]]
540
|-
541
|style="text-align: center;font-size: 75%;padding-bottom:10px;"|(a) 
542
|style="text-align: center;font-size: 75%;padding-bottom:10px;"|(b) 
543
|}
544
|-
545
| style="background:#efefef;text-align:left;padding:10px;font-size: 85%;"| '''Figure 6'''. Crank-rocker mechanism of Exercise 2. (a) SIDIGETRA results. (b) Simulation with dimensions in a computer tool
546
|}
547
548
549
Now, we want to know if it is possible to generate the same trajectory using a double crank mechanism using the same design parameters. Fig. 7 shows the results obtained by SIDIGETRA and a commercial mechanism analysis program, and it can be observed that the generated trajectory is satisfactorily close to the desired trajectory. Iterations performed=2000, FO=0.48722.
550
551
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;">
552
a)  [[Image:Draft_Hernandez_561122732-image9.png|252px]] b)  [[Image:Draft_Hernandez_561122732-image10-c.png|192px]] </div>
553
554
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;">
555
Figure 7: Double crank mechanism for Exercise 2 a) Results obtained by SIDIGETRA. b) Simulation with dimensions in a computer tool.</div>
556
557
558
The average percentage relative error for the X coordinates is 8.8% and for the Y coordinates is 1.8%, which shows that SIDIGETRA found the desired trajectory. However, by comparing the FO values, the user can have a selection criterion between the inversions according to the precision requirements to solve a need.
559
560
==4. Conclusions==
561
562
A methodology based on the Genetic Algorithm technique was implemented to develop a computer program called SIDIGETRA, which allows for the dimensional synthesis of a four-bar linkage mechanism capable of generating a trajectory with a prescribed timing. To achieve the objective of generating a desired trajectory, the objective function to be minimized was defined as the Euclidean norm between the prescribed points and the obtained points, subject to the four-bar linkage mechanism fulfilling three constraints: 1) the Grashof condition, ensuring that at least one link is capable of completing full revolutions; 2) the coupler condition, which is related to the length of the fixed link, allowing for the evaluation of two behaviors, either the crank-rocker mechanism inversion (fixing an adjacent link to the shortest one) or the double crank mechanism inversion (fixing the shortest link); and furthermore, 3) the program was restricted to only work with the open configuration of the mechanism for both inversions, by determining the angle of the coupler link in each position.
563
564
The Genetic Algorithm method was selected to solve the optimization problem, and because this numerical technique is defined to maximize a function and not to minimize it, the minimization problem was reformulated as a maximization problem by rewriting the objective function.
565
566
The developed program offers a user-friendly interface that allows for entering the coordinates of the points of the desired trajectory to be generated together with the rotation degrees of the driving crank associated; selecting between the crank-rocker inversion or the double crank inversion; indicating design parameters that drive the application of the Genetic Algorithm, such as population size, crossover and mutation operators (Probcruce and Probmut, respectively); furthermore, the user can manipulate the execution time through the definition of an acceptable objective function or the maximum number of iterations.
567
568
As results, SIDIGETRA in each execution shows a representation of the selected mechanism inversion and its corresponding nomenclature; it calculates the dimensions of the links, specifying the coordinates of the pivots and joints. Finally, it offers a graphical comparison between the prescribed points trajectory and the obtained trajectory.
569
570
To verify the functionality of the program, several simple test examples were run consisting of dimensional synthesis of trajectory-generating mechanisms. Furthermore, the process of position analysis of each of the mechanisms was carried out using a commercial program, which allowed for visually validating the results obtained by graphically superimposing the prescribed trajectory with the trajectory generated by the synthesized mechanisms. On the other hand, the relative percentage errors between the obtained points coordinates and the prescribed points coordinates were calculated, and average values as low as 0.70% were found, demonstrating the validity of the results, and others as high as 70.6%, acceptable for numerical reasons, when the prescribed points coordinates are located close to zero.
571
572
==References ==
573
574
[1]. Erdman, A. G. and Sandor, G.N. ''Diseño de Mecanismos. Análisis y síntesis''. Third edition. Prentice Hall Hispanoamericana S.A. Naucalpán, Juarez, México. 1998.
575
576
[2]. Mabie, H. H y Reinholtz, Ch. F. Mechanisms and Dynamics of Machinery. Second edition. Limusa, S.A. D.F., México. 2007.
577
578
[3]. Norton, R. Design of Machinery. Synthesis and Analysis of Machines and Mechanisms. Third Edition. McGraw – Hill. D.F., México. 2005.
579
580
[4]. Rodríguez, J. ''Nociones Fundamentales para la Síntesis Estructural de Mecanismos Planos''. Facultad de Ingeniería. Universidad del Zulia. Maracaibo, Venezuela. 2011.
581
582
[5]. Shigley, J. E. and Uicker, J. J. Theory of Machines and Mechanisms. McGraw – Hill. Naucalpán de Juarez, México. 1988.
583
584
[6]. Nieto N., J. ''Síntesis de Mecanismos''. Editorial AC. Madrid, España. 1978.
585
586
[7]. Rao, S. ''Engineering Optimization. Theory and Practice''. Fourth edition. Wiley. United states. 2009.
587
588
[8]. Gen, M. y Chen, R. ''Genetic Algorithms & Engineering Optimization''.  Wiley. 2000.
589
590
[9]. Peón Escalante, R., Méndez Gamboa, J., Villanueva López, C., Pech Oy, D.  Síntesis Dimensional Óptima de un Mecanismo Planar RRRR usando Algoritmos Genéticos. ''Ingeniería, Revista Académica de la FI-UADY'', 13-3, pp. 5-16, ISSN: 1665-529X. 2009.
591

Return to Hernandez Rodriguez 2023a.

Back to Top