4 % qji_k is a vector expreseing the anchor point of reference
5 % frame i with respect to reference frame k of finger j.
6 %
if k is not given, it means it is respect to the palm,
7 % which in our
case, it is the absoulute one.
34 % These anchor points can be seen as the length of the phalanges,
35 % but that is because the phalanges are aligned with
this vectors.
72 % Hand-
object contact points (plus normals)
73 % The points are numbered as 1,2,3 and
74 % those in the
object must contact the corresponding
76 % The contact points in the hand are at the end of
78 % All contact points are given in local coordinates of
79 % the corresponding bodies.
106 hp1_x:=26.745362130452246
107 hp1_y:=-0.320775916066435
108 hp1_z:=13.600172216189954
111 hp2_x:=27.186824561219627
112 hp2_y:= 0.988403453869847
113 hp2_z:=14.015803798995954
116 hp3_x:=38.177015391947400
117 hp3_y:= 1.899999999999999
118 hp3_z:= 6.216744353301863
120 hn1_x:=-0.269074918627895
121 hn1_y:= 0.137944652813314
122 hn1_z:=-0.953189362574723
124 hn2_x:=-0.237373330082984
125 hn2_y:= 0.113242205988468
126 hn2_z:=-0.964795369468667
128 hn3_x:=-0.975994458224612
130 hn3_z:=-0.217795356963474
134 % We can symmetrically enlarge the ranges for the joints so that
135 % the hand can better manipulate objects without regrasping.
136 % Set to zero to use the original ranges
137 enlarge_range := 20*pi/180
139 % Two ranges for the universal joint connecting the palm and finger 1
146 % Range for the first rotation in finger 1
150 % Range for the second rotation in finger 1
154 % Two ranges for the universal joint connecting the palm and finger 2
156 phi_2_1_min:= -pi/8 -enlarge_range
157 phi_2_1_max:= pi/8 +enlarge_range
160 phi_2_2_min:= 0 -enlarge_range
161 phi_2_2_max:= pi/2 +enlarge_range
163 % Range for the first rotation in finger 2
165 phi_2_3_min:= 0 -enlarge_range
166 phi_2_3_max:= pi/2 +enlarge_range
168 % Range for the second rotation in finger 2
170 phi_2_4_min:= 0 -enlarge_range
171 phi_2_4_max:= pi/2 +enlarge_range
173 % Two ranges for the universal joint connecting the palm and finger 3
175 phi_3_1_min:= -pi/8 -enlarge_range
176 phi_3_1_max:= pi/8 +enlarge_range
179 phi_3_2_min:= 0 -enlarge_range
180 phi_3_2_max:= pi/2 +enlarge_range
182 % Range for the first rotation in finger 3
184 phi_3_3_min:= 0 -enlarge_range
185 phi_3_3_max:= pi/2 +enlarge_range
187 % Range for the second rotation in finger 3
189 phi_3_4_min:= 0 -enlarge_range
190 phi_3_4_max:= pi/2 +enlarge_range
192 % Two ranges for the universal joint connecting the palm and finger 4
194 phi_4_0_min:= 0 -enlarge_range
195 phi_4_0_max:= pi/2 +enlarge_range
198 phi_4_1_min:= -pi/8 -enlarge_range
199 phi_4_1_max:= pi/8 +enlarge_range
202 phi_4_2_min:= 0 -enlarge_range
203 phi_4_2_max:= pi/2 +enlarge_range
205 % Range for the first rotation in finger 4
207 phi_4_3_min:= 0 -enlarge_range
208 phi_4_3_max:= pi/2 +enlarge_range
210 % Range for the second rotation in finger 4
212 phi_4_4_min:= 0 -enlarge_range
213 phi_4_4_max:= pi/2 +enlarge_range
216 %-------------------------------------------------------------------
217 %--------------------------------------------------------------------
222 palm:body "bodies/palmSAH.off" white
223 body "bodies/acs1palm.off" blue
224 body "bodies/acs2palm.off" blue
225 body "bodies/acs3palm.off"
228 body "bodies/p1_fix.off" white
229 body "bodies/p2_fix.off" white
230 body "bodies/b2_fix.off" blue
231 body "bodies/p3_fix.off" white
232 body "bodies/p4_fix.off" white
233 body "bodies/b4_fix.off" blue
247 p22: body "bodies/p1.off" white
248 body "bodies/p2.off" white
249 body "bodies/b2.off" blue
251 p23: body "bodies/p3.off" white
253 p24: body "bodies/p4.off" white
254 body "bodies/b4.off" blue
257 p32: body "bodies/p1.off" white
258 body "bodies/p2.off" white
259 body "bodies/b2.off" blue
261 p33: body "bodies/p3.off" white
263 p34: body "bodies/p4.off" white
264 body "bodies/b4.off" blue
267 p40: body "bodies/p0thumb.off" white
269 p42: body "bodies/p1.off" white
270 body "bodies/p2.off" white
271 body "bodies/b2.off" blue
273 p43: body "bodies/p3.off" white
275 p44: body "bodies/p4.off" white
276 body "bodies/b4.off" blue
279 object: body "bodies/needle.off" green
304 universal: palm (q21x,q21y,q21z)+(1,0,0)
306 range [phi_2_1_min,phi_2_1_max] +(0,-1,0)
307 [phi_2_2_min,phi_2_2_max] +(1, 0,0)
309 revolute: p22 (q23x_2,q23y_2,q23z_2)+(0,-1,0)
311 range [phi_2_3_min,phi_2_3_max] +(1,0,0) +(1,0,0)
313 crevolute: p23 (q24x_3,q24y_3,q24z_3)+(0,-1,0)
315 range [phi_2_4_min,phi_2_4_max] +(1,0,0) +(1,0,0)
319 universal: palm (q31x,q31y,q31z)+(1,0,0)
321 range [phi_3_1_min,phi_3_1_max] +(0,-0.99937,-0.035485)
322 [phi_3_2_min,phi_3_2_max] +(1,0,0)
324 revolute: p32 (q33x_2,q33y_2,q33z_2)+(0,-1,0)
326 range [phi_3_3_min,phi_3_3_max] +(1,0,0) +(1,0,0)
328 crevolute: p33 (q34x_3,q34y_3,q34z_3)+(0,-1,0)
330 range [phi_3_4_min,phi_3_4_max] +(1,0,0) +(1,0,0)
334 revolute: palm (q40x,q40y,q40z)+(0,0,-1)
336 range [phi_4_0_min,phi_4_0_max] +(0,-1,0) +(0,0,1)
338 universal: p40 (q41x_0,q41y_0,q41z_0)+(0.573580,0,0.81915)
340 range [phi_4_1_min,phi_4_1_max] +(0,1,0)
341 [phi_4_2_min,phi_4_2_max] +(1,0,0)
343 revolute: p42 (q43x_2,q43y_2,q43z_2)+(0,-1,0)
345 range [phi_4_3_min,phi_4_3_max] +(1,0,0) +(1,0,0)
347 revolute: p43 (q44x_3,q44y_3,q44z_3)+(0,-1,0)
349 range [phi_4_4_min,phi_4_4_max] +(1,0,0) +(1,0,0)
352 % Now we define the hand-
object connection via revolute joints
353 revolute: p24 (hp1_x,hp1_y,hp1_z)+(hn1_x,hn1_y,hn1_z)
354 object (op1_x,op1_y,op1_z)+(on1_x,on1_y,on1_z)
356 revolute: p34 (hp2_x,hp2_y,hp2_z)+(hn2_x,hn2_y,hn2_z)
357 object (op2_x,op2_y,op2_z)+(on2_x,on2_y,on2_z)
359 revolute: p44 (hp3_x,hp3_y,hp3_z)+(hn3_x,hn3_y,hn3_z)
360 object (op3_x,op3_y,op3_z)+(on3_x,on3_y,on3_z)
363 % This the fix transformation to the
object used to defined the grasping
364 % fix: palm
object Tx(25) * Ry(-pi/4) *Tz(120)* Tx(180) * Ty(35)
368 obs1: body "bodies/obstacle1" color (0.9,0.9,0.1)
369 obs2: body "bodies/obstacle2" color (0.9,0.9,0.1)
370 obs3: body "bodies/obstacle3" color (0.9,0.9,0.1)
371 % obs4: body "bodies/obstacle4" color (0.9,0.9,0.1)
372 obs4: body "bodies/obstacle4" color (0.9,0.9,0.1)
Follow us!