00001
00002 [CONSTANTS]
00003
00004 % Anchor points of the fingers at the palm
00005 % (we assume that the universal joint connecting the hand and the finger has
00006 % the rotation axis aligned with the palm axis)
00007 q_1_1_x:= 9.5
00008 q_1_1_y:=-67
00009 q_1_1_z:=197.55
00010
00011 q_2_1_x:=9.5
00012 q_2_1_y:=0
00013 q_2_1_z:=197.55
00014
00015 q_3_1_x:=9.5
00016 q_3_1_y:=67
00017 q_3_1_z:=197.55
00018
00019 q_4_1_x:=40.1650
00020 q_4_1_y:=30.012
00021 q_4_1_z:=66.8142
00022
00023 % Length of the phalanges. first index is the leg, second
00024 % index is the phalanx.
00025 % Phalanges are numbered from 2 since the attachment point
00026 % of the finger on the palm is seen as the first phalanx
00027 p_1_2:=76.66
00028 p_1_3:=56
00029 p_1_4:=33.805151243
00030
00031 p_2_2:=76.66
00032 p_2_3:=56
00033 p_2_4:=33.805151243
00034
00035 p_3_2:=76.66
00036 p_3_3:=56
00037 p_3_4:=33.805151243
00038
00039 p_4_2:=76.66
00040 p_4_3:=66
00041 p_4_4:=39.862238567
00042
00043 % Contact point on the object
00044
00045 x_1_x:=130.7083476865000
00046 x_1_y:=-46.178247482100005
00047 x_1_z:=147.2257378875000
00048
00049 x_2_x:=133.9008015280000
00050 x_2_y:= 0
00051 x_2_z:=244.8593381360000
00052
00053 x_3_x:=133.9008015280000
00054 x_3_y:= 67
00055 x_3_z:=244.8593381360000
00056
00057 x_4_x:=173.0839388800000
00058 x_4_y:= 30.012
00059 x_4_z:=131.6535631870000
00060
00061 % Normals of the object surface at the contact points
00062 % Pointing into the object
00063 nhat_1_x:=-0.925508818115500
00064 nhat_1_y:= 0.144595776785000
00065 nhat_1_z:=-0.405390387471765
00066
00067 nhat_2_x:=-0.381407578434000
00068 nhat_2_y:= 0
00069 nhat_2_z:=-0.924406976992878
00070
00071 nhat_3_x:=-0.381407578434000
00072 nhat_3_y:= 0
00073 nhat_3_z:=-0.924406976992878
00074
00075 nhat_4_x:=-0.924406976992878
00076 nhat_4_y:= 0
00077 nhat_4_z:= 0.381407578434000
00078
00079 % Contact point on the fingertip
00080 q_1_4_x:=27.856821097374684
00081 q_1_4_y:=0
00082 q_1_4_z:=19.151400000000000
00083
00084 q_2_4_x:=27.856821097374684
00085 q_2_4_y:=0
00086 q_2_4_z:=19.151651859208762
00087
00088 q_3_4_x:=27.856821097374684
00089 q_3_4_y:=0
00090 q_3_4_z:=19.151651859208762
00091
00092 q_4_4_x:=34.762406989603285
00093 q_4_4_y:=0
00094 q_4_4_z:=19.508283467663215
00095
00096 % Normals of the fingertip at the contact point
00097 % Pointing outward the finger
00098 mhat_1_x:=0
00099 mhat_1_y:=0
00100 mhat_1_z:=1
00101
00102 mhat_2_x:=0
00103 mhat_2_y:=0
00104 mhat_2_z:=1
00105
00106 mhat_3_x:=0
00107 mhat_3_y:=0
00108 mhat_3_z:=1
00109
00110 mhat_4_x:=0
00111 mhat_4_y:=0
00112 mhat_4_z:=1
00113
00114 % Joint ranges
00115
00116 % Two ranges for the universal joint connecting the palm and finger 1
00117 phi_1_1_min:=-15*pi/180
00118 phi_1_1_max:= 15*pi/180
00119
00120 phi_1_2_min:=0
00121 phi_1_2_max:=pi/2
00122
00123 % Range for the first rotation in finger 1
00124 phi_1_3_min:=0
00125 phi_1_3_max:=pi/2
00126
00127 % Range for the second rotation in finger 1
00128 phi_1_4_min:=0
00129 phi_1_4_max:=pi/2
00130
00131 % Two ranges for the universal joint connecting the palm and finger 2
00132 phi_2_1_min:=-15*pi/180
00133 phi_2_1_max:= 15*pi/180
00134
00135 phi_2_2_min:=0
00136 phi_2_2_max:=pi/2
00137
00138 % Range for the first rotation in finger 2
00139 phi_2_3_min:=0
00140 phi_2_3_max:=pi/2
00141
00142 % Range for the second rotation in finger 2
00143 phi_2_4_min:=0
00144 phi_2_4_max:=pi/2
00145
00146 % Two ranges for the universal joint connecting the palm and finger 3
00147 phi_3_1_min:=-15*pi/180
00148 phi_3_1_max:= 15*pi/180
00149
00150 phi_3_2_min:=0
00151 phi_3_2_max:=pi/2
00152
00153 % Range for the first rotation in finger 2
00154 phi_3_3_min:=0
00155 phi_3_3_max:=pi/2
00156
00157 % Range for the second rotation in finger 2
00158 phi_3_4_min:=0
00159 phi_3_4_max:=pi/2
00160
00161 % Two ranges for the universal joint connecting the palm and finger 4
00162 phi_4_1_min:=-15*pi/180
00163 phi_4_1_max:= 15*pi/180
00164
00165 phi_4_2_min:= pi/4
00166 phi_4_2_max:= 3*pi/4
00167
00168 % Range for the first rotation in finger 2
00169 phi_4_3_min:=0
00170 phi_4_3_max:=pi/2
00171
00172 % Range for the second rotation in finger 2
00173 phi_4_4_min:=0
00174 phi_4_4_max:=pi/2
00175
00176 % Radius of the cylinders representing the fingers
00177 rf:=20
00178
00179 % Radius of the spheres representing rotulas
00180 rr:=25
00181
00182 % Radius of the spheres representing contact points on the object
00183 rc:=5
00184
00185 [LINKS]
00186
00187 % palm
00188 palm: body "bodies/palm.off" color (0.75,0.75,0)
00189
00190 % finger 1
00191 p12: sphere rr (0,0,0) color (0.30,0.9,0.1)
00192 cylinder rf (0,0,0)
00193 (p_1_2,0,0) color (0.25,0.6,0.6)
00194
00195 p13: sphere rr (0,0,0) color (0.30,0.9,0.1)
00196 cylinder rf (0,0,0)
00197 (p_1_3,0,0) color (0.25,0.6,0.6)
00198
00199 p14: sphere rr (0,0,0) color (0.3,0.9,0.10)
00200 cylinder rf (0,0,0)
00201 (p_1_4,0,0) color (0.3,0.5,0.98)
00202 sphere rf (p_1_4,0,0) color (0.3,0.5,0.98)
00203
00204 % finger 2
00205 p22: sphere rr (0,0,0) color (0.30,0.9,0.1)
00206 cylinder rf (0,0,0)
00207 (p_2_2,0,0) color (0.25,0.6,0.6)
00208
00209 p23: sphere rr (0,0,0) color (0.30,0.9,0.1)
00210 cylinder rf (0,0,0)
00211 (p_2_3,0,0) color (0.25,0.6,0.6)
00212
00213 p24: sphere rr (0,0,0) color (0.3,0.9,0.10)
00214 cylinder rf (0,0,0)
00215 (p_2_4,0,0) color (0.3,0.5,0.98)
00216 sphere rf (p_2_4,0,0) color (0.3,0.5,0.98)
00217
00218 % finger 3
00219 p32: sphere rr (0,0,0) color (0.30,0.9,0.1)
00220 cylinder rf (0,0,0)
00221 (p_3_2,0,0) color (0.25,0.6,0.6)
00222
00223 p33: sphere rr (0,0,0) color (0.30,0.9,0.1)
00224 cylinder rf (0,0,0)
00225 (p_3_3,0,0) color (0.25,0.6,0.6)
00226
00227 p34: sphere rr (0,0,0) color (0.3,0.9,0.10)
00228 cylinder rf (0,0,0)
00229 (p_3_4,0,0) color (0.3,0.5,0.98)
00230 sphere rf (p_3_4,0,0) color (0.3,0.5,0.98)
00231
00232 % finger 4
00233 p42: sphere rr (0,0,0) color (0.3,0.9,0.10)
00234 cylinder rf (0,0,0)
00235 (p_4_2,0,0) color (0.25,0.6,0.6)
00236
00237 p43: sphere rr (0,0,0) color (0.3,0.9,0.10)
00238 cylinder rf (0,0,0)
00239 (p_4_3,0,0) color (0.25,0.6,0.6)
00240
00241 p44: sphere rr (0,0,0) color (0.3,0.9,0.10)
00242 cylinder rf (0,0,0)
00243 (p_4_4,0,0) color (0.3,0.5,0.98)
00244 sphere rf (p_4_4,0,0) color (0.3,0.5,0.98)
00245
00246 % object: one small circle at the contact points plus cylinders
00247 % connecting the contact points (representing the object body).
00248 object: 0.75*red
00249 sphere rc (x_1_x,x_1_y,x_1_z)
00250 sphere rc (x_2_x,x_2_y,x_2_z)
00251 sphere rc (x_3_x,x_3_y,x_3_z)
00252 sphere rc (x_4_x,x_4_y,x_4_z)
00253 cylinder rc*0.5 (x_1_x,x_1_y,x_1_z) (x_2_x,x_2_y,x_2_z)
00254 cylinder rc*0.5 (x_1_x,x_1_y,x_1_z) (x_3_x,x_3_y,x_3_z)
00255 cylinder rc*0.5 (x_1_x,x_1_y,x_1_z) (x_4_x,x_4_y,x_4_z)
00256 cylinder rc*0.5 (x_2_x,x_2_y,x_2_z) (x_3_x,x_3_y,x_3_z)
00257 cylinder rc*0.5 (x_2_x,x_2_y,x_2_z) (x_4_x,x_4_y,x_4_z)
00258 cylinder rc*0.5 (x_3_x,x_3_y,x_3_z) (x_4_x,x_4_y,x_4_z)
00259
00260 [JOINTS]
00261
00262 % finger 1
00263 universal: palm (q_1_1_x,q_1_1_y,q_1_1_z)+(1,0,0)
00264 p12 (0,0,0)+(0,1,0)
00265 range [phi_1_1_min,phi_1_1_max] +(0,-1,0)
00266 [phi_1_2_min,phi_1_2_max] +(0,0,1)
00267
00268 revolute: p12 (p_1_2,0,0)+(0,-1,0)
00269 p13 (0,0,0)+(0,-1,0)
00270 range [phi_1_3_min,phi_1_3_max] +(1,0,0) +(1,0,0)
00271
00272 revolute: p13 (p_1_3,0,0)+(0,-1,0)
00273 p14 (0,0,0)+(0,-1,0)
00274 range [phi_1_4_min,phi_1_4_max] +(1,0,0) +(1,0,0)
00275
00276 % finger 2
00277 universal: palm (q_2_1_x,q_2_1_y,q_2_1_z)+(1,0,0)
00278 p22 (0,0,0)+(0,1,0)
00279 range [phi_2_1_min,phi_2_1_max] +(0,-1,0)
00280 [phi_2_2_min,phi_2_2_max] +(0,0,1)
00281
00282 revolute: p22 (p_2_2,0,0)+(0,-1,0)
00283 p23 (0,0,0)+(0,-1,0)
00284 range [phi_2_3_min,phi_2_3_max] +(1,0,0) +(1,0,0)
00285
00286 revolute: p23 (p_2_3,0,0)+(0,-1,0)
00287 p24 (0,0,0)+(0,-1,0)
00288 range [phi_2_4_min,phi_2_4_max] +(1,0,0) +(1,0,0)
00289
00290 % finger 3
00291 universal: palm (q_3_1_x,q_3_1_y,q_3_1_z)+(1,0,0)
00292 p32 (0,0,0)+(0,1,0)
00293 range [phi_3_1_min,phi_3_1_max] +(0,-1,0)
00294 [phi_3_2_min,phi_3_2_max] +(0,0,1)
00295
00296 revolute: p32 (p_3_2,0,0)+(0,-1,0)
00297 p33 (0,0,0)+(0,-1,0)
00298 range [phi_3_3_min,phi_3_3_max] +(1,0,0) +(1,0,0)
00299
00300 revolute: p33 (p_3_3,0,0)+(0,-1,0)
00301 p34 (0,0,0)+(0,-1,0)
00302 range [phi_3_4_min,phi_3_4_max] +(1,0,0) +(1,0,0)
00303
00304 % finger 4
00305 universal: palm (q_4_1_x,q_4_1_y,q_4_1_z)+(-1,0,0)
00306 p42 (0,0,0)+(0,-1,0)
00307 range [phi_4_1_min,phi_4_1_max] +(0,-1,0)
00308 [phi_4_2_min,phi_4_2_max] +(0, 0,1)
00309
00310 revolute: p42 (p_4_2,0,0)+(0,-1,0)
00311 p43 (0,0,0)+(0,-1,0)
00312 range [phi_4_3_min,phi_4_3_max] +(1,0,0) +(1,0,0)
00313
00314 revolute: p43 (p_4_3,0,0)+(0,-1,0)
00315 p44 (0,0,0)+(0,-1,0)
00316 range [phi_4_4_min,phi_4_4_max] +(1,0,0) +(1,0,0)
00317
00318
00319 % contacts finger-object
00320 revolute: p14 (q_1_4_x,q_1_4_y,q_1_4_z)+(mhat_1_x,mhat_1_y,mhat_1_z)
00321 object (x_1_x,x_1_y,x_1_z)+(nhat_1_x,nhat_1_y,nhat_1_z)
00322
00323 revolute: p24 (q_2_4_x,q_2_4_y,q_2_4_z)+(mhat_2_x,mhat_2_y,mhat_2_z)
00324 object (x_2_x,x_2_y,x_2_z)+(nhat_2_x,nhat_2_y,nhat_2_z)
00325
00326 revolute: p34 (q_3_4_x,q_3_4_y,q_3_4_z)+(mhat_3_x,mhat_3_y,mhat_3_z)
00327 object (x_3_x,x_3_y,x_3_z)+(nhat_3_x,nhat_3_y,nhat_3_z)
00328
00329 revolute: p44 (q_4_4_x,q_4_4_y,q_4_4_z)+(mhat_4_x,mhat_4_y,mhat_4_z)
00330 object (x_4_x,x_4_y,x_4_z)+(nhat_4_x,nhat_4_y,nhat_4_z)
00331