The following is an annotated portion of the full model used for the recognitions. Because the full model base is somewhat tedious, only the portion related to the robot is reproduced here. Chapter 7 describes the geometric model and other descriptions in more detail, and Chapter 8 describes the model invocation definitions. The full model contains about 900 lines for 25 specific surface models, 22 generic surface types, and 16 solid object models.
The model file starts with a declaration of the model names and types. The specific surfaces come first:
TITLE = "combined model file"; SRFTYPE uside; SRFTYPE uedges; SRFTYPE uedgeb; SRFTYPE uends; SRFTYPE uendb; SRFTYPE lsidea; SRFTYPE lsideb; SRFTYPE ledgea; SRFTYPE ledgeb; SRFTYPE lendb; SRFTYPE handend; SRFTYPE handsidel; SRFTYPE handsides; SRFTYPE robbodyside; SRFTYPE robshould1; SRFTYPE robshould2; SRFTYPE robshldend; SRFTYPE robshoulds;
The declaration of the generic surfaces:
GSRFTYPE quad; GSRFTYPE trapezium; GSRFTYPE llgram; GSRFTYPE rectangle; GSRFTYPE circle; GSRFTYPE plane; GSRFTYPE cylpatch; GSRFTYPE torus; GSRFTYPE cylinder; GSRFTYPE lside; GSRFTYPE ledge; GSRFTYPE robshouldg; GSRFTYPE sapiby2a; GSRFTYPE sapiby2b; GSRFTYPE sapiby2c; GSRFTYPE sapia; GSRFTYPE sapib; GSRFTYPE sa3piby2; GSRFTYPE sapiby2andpi;
The declaration of the solid assemblies:
OBJTYPE hand; OBJTYPE lowerarm; OBJTYPE upperarm; OBJTYPE armasm; OBJTYPE robshldbd; OBJTYPE robshldsobj; OBJTYPE robshould; OBJTYPE link; OBJTYPE robbody; OBJTYPE robot;
The variables used for joints:
VARTYPE jnt1 DEFAULT 0.0; VARTYPE jnt2 DEFAULT 0.0; VARTYPE jnt3 DEFAULT 0.0; ENDDEC
After the declarations comes a listing of the interobject relationships, as needed for model invocation. The first listed are the description relationships:
DESCRIPTION OF uedges IS rectangle 1.0; DESCRIPTION OF uedgeb IS rectangle 1.0; DESCRIPTION OF uside IS plane 2.0; DESCRIPTION OF quad IS plane 1.0; DESCRIPTION OF trapezium IS quad 2.0; DESCRIPTION OF llgram IS trapezium 2.0; DESCRIPTION OF rectangle IS llgram 2.5; DESCRIPTION OF lside IS plane 3.0; DESCRIPTION OF robshouldg IS cylinder 2.0; DESCRIPTION OF lendb IS cylinder 2.0; DESCRIPTION OF ledgea IS ledge 5.0; DESCRIPTION OF ledgeb IS ledge 5.0; DESCRIPTION OF ledge IS rectangle 1.0; DESCRIPTION OF robshldend IS circle 3.0; DESCRIPTION OF circle IS plane 1.0; DESCRIPTION OF handsidel IS plane 1.0; DESCRIPTION OF handsides IS rectangle 1.0; DESCRIPTION OF robbodyside IS cylinder 2.0; DESCRIPTION OF lsidea IS lside 5.5; DESCRIPTION OF lsideb IS lside 5.5; DESCRIPTION OF robshould1 IS robshouldg 7.0; DESCRIPTION OF robshould2 IS robshouldg 7.0; DESCRIPTION OF uside IS sapiby2b 2.0; DESCRIPTION OF uends IS sapiby2c 1.0; DESCRIPTION OF uendb IS sapiby2a 1.0; DESCRIPTION OF lside IS sapiby2b 1.0; DESCRIPTION OF lendb IS sapiby2c 1.0; DESCRIPTION OF ledge IS sapiby2c 1.0; DESCRIPTION OF handsides IS sapiby2andpi 1.0; DESCRIPTION OF handsidel IS sapiby2andpi 1.0; DESCRIPTION OF handend IS sapiby2andpi 1.0; DESCRIPTION OF robshldend IS sapiby2b 1.0; DESCRIPTION OF robshouldg IS sapiby2a 0.5; DESCRIPTION OF robshoulds IS sapib 0.5; DESCRIPTION OF cylinder IS cylpatch 2.0; DESCRIPTION OF uendb IS cylinder 2.0; DESCRIPTION OF uends IS cylinder 2.0;
The subcomponent relationships:
SUBCOMPONENT OF hand IS handend 0.90; SUBCOMPONENT OF hand IS handsidel 0.90; SUBCOMPONENT OF hand IS handsides 0.90; SUBCOMPONENT OF link IS robshould 1.00; SUBCOMPONENT OF link IS armasm 1.00; SUBCOMPONENT OF lowerarm IS hand 0.90; SUBCOMPONENT OF lowerarm IS ledgea 0.90; SUBCOMPONENT OF lowerarm IS ledgeb 0.90; SUBCOMPONENT OF lowerarm IS lendb 0.90; SUBCOMPONENT OF lowerarm IS lsidea 0.90; SUBCOMPONENT OF lowerarm IS lsideb 0.90; SUBCOMPONENT OF robbody IS robbodyside 0.90; SUBCOMPONENT OF robot IS link 1.00; SUBCOMPONENT OF robot IS robbody 1.00; SUBCOMPONENT OF robshldbd IS robshldend 0.90; SUBCOMPONENT OF robshldbd IS robshould1 0.90; SUBCOMPONENT OF robshldbd IS robshould2 0.90; SUBCOMPONENT OF robshldsobj IS robshoulds 0.90; SUBCOMPONENT OF robshould IS robshldbd 0.90; SUBCOMPONENT OF robshould IS robshldsobj 0.90; SUBCOMPONENT OF upperarm IS uedgeb 0.90; SUBCOMPONENT OF upperarm IS uedges 0.90; SUBCOMPONENT OF upperarm IS uendb 0.90; SUBCOMPONENT OF upperarm IS uends 0.90; SUBCOMPONENT OF upperarm IS uside 0.90; SUBCOMPONENT OF armasm IS lowerarm 0.80; SUBCOMPONENT OF armasm IS upperarm 0.80;
The supercomponent relationships:
SUPERCOMPONENT OF hand IS lowerarm 0.10; SUPERCOMPONENT OF handend IS hand 0.10; SUPERCOMPONENT OF handsidel IS hand 0.10; SUPERCOMPONENT OF handsides IS hand 0.10; SUPERCOMPONENT OF ledgea IS lowerarm 0.10; SUPERCOMPONENT OF ledgeb IS lowerarm 0.10; SUPERCOMPONENT OF lendb IS lowerarm 0.10; SUPERCOMPONENT OF link IS robot 0.10; SUPERCOMPONENT OF lowerarm IS armasm 0.10; SUPERCOMPONENT OF lsidea IS lowerarm 0.10; SUPERCOMPONENT OF lsideb IS lowerarm 0.10; SUPERCOMPONENT OF robbody IS robot 0.10; SUPERCOMPONENT OF robbodyside IS robbody 0.10; SUPERCOMPONENT OF robshldbd IS robshould 0.10; SUPERCOMPONENT OF robshldend IS robshldbd 0.10; SUPERCOMPONENT OF robshldsobj IS robshould 0.10; SUPERCOMPONENT OF robshould IS link 0.10; SUPERCOMPONENT OF robshould1 IS robshldbd 0.10; SUPERCOMPONENT OF robshould2 IS robshldbd 0.10; SUPERCOMPONENT OF robshoulds IS robshldsobj 0.10; SUPERCOMPONENT OF uedgeb IS upperarm 0.10; SUPERCOMPONENT OF uedges IS upperarm 0.10; SUPERCOMPONENT OF uendb IS upperarm 0.10; SUPERCOMPONENT OF uends IS upperarm 0.10; SUPERCOMPONENT OF upperarm IS armasm 0.10; SUPERCOMPONENT OF armasm IS link 0.10; SUPERCOMPONENT OF uside IS upperarm 0.10;
The general association relationships:
ASSOCIATION OF upperarm IS lowerarm 1.0; ASSOCIATION OF lowerarm IS upperarm 1.0;
The competitor relationships amongst generic types:
COMPETITOR OF plane IS cylpatch 1.0; COMPETITOR OF cylpatch IS plane 1.0; COMPETITOR OF torus IS plane 1.0; COMPETITOR OF plane IS torus 1.0; COMPETITOR OF cylpatch IS torus 1.0; COMPETITOR OF torus IS cylpatch 1.0; COMPETITOR OF lside IS ledge 1.0; COMPETITOR OF lside IS robshouldg 1.0; COMPETITOR OF ledge IS lside 1.0; COMPETITOR OF ledge IS robshouldg 1.0; COMPETITOR OF robshouldg IS lside 1.0; COMPETITOR OF robshouldg IS ledge 1.0; ENDNET
After the relationships comes the listing of the visibility groups and what features are seen in each. This information is used to help create the invocation network.
SUBCGRP OF robot = robbody link; SUBCGRP OF link = robshould armasm; SUBCGRP OF armasm = upperarm lowerarm; SUBCGRP OF upperarm = uside uends uedgeb uedges; SUBCGRP OF upperarm = uside uendb uedgeb uedges; SUBCGRP OF lowerarm = lendb lsidea ledgea; SUBCGRP OF lowerarm = lendb lsideb ledgea; SUBCGRP OF lowerarm = lendb lsideb ledgeb; SUBCGRP OF lowerarm = lendb lsidea ledgeb; SUBCGRP OF hand = handend handsides handsidel; SUBCGRP OF robbody = robbodyside; SUBCGRP OF robshould = robshldbd robshldsobj; SUBCGRP OF robshldbd = robshould1 robshldend; SUBCGRP OF robshldbd = robshould2 robshldend; SUBCGRP OF robshldsobj = robshoulds; ENDGRP
The next section lists the unary property evidence constraints, which are used for property evaluations during model invocation. Binary evidence constraints were not explicit in IMAGINE I. There may not always be many properties listed for an object, because (1) it may be a generic object, (2) the other properties are represented in a description or (3) the property is irrelevant.
UNARYEVID 2 < NUMLINB(quad) < 5 PEAK 4 WEIGHT 0.5; UNARYEVID NUMARCB(quad) < 1 PEAK 0 WEIGHT 0.5; UNARYEVID 1 < NUMARCB(circle) < 3 WEIGHT 0.5; UNARYEVID NUMLINB(circle) < 1 PEAK 0 WEIGHT 0.5; UNARYEVID 0 < DBPARO(trapezium) PEAK 1 WEIGHT 0.5; UNARYEVID 1 < DBPARO(llgram) PEAK 2 WEIGHT 0.5; UNARYEVID 2 < NUM90B(rectangle) < 5 PEAK 4 WEIGHT 0.5; UNARYEVID -0.001 < MINSCURV(plane) < 0.001 WEIGHT 0.5; UNARYEVID -0.001 < MAXSCURV(plane) < 0.001 WEIGHT 0.5; UNARYEVID -0.001 < MINSCURV(cylpatch) < 0.001 WEIGHT 0.5; UNARYEVID -0.001 < MAXSCURV(cylpatch) < 0.001 ABSENT WEIGHT 0.5; UNARYEVID -0.001 < MINSCURV(torus) < 0.001 ABSENT WEIGHT 0.5; UNARYEVID -0.001 < MAXSCURV(torus) < 0.001 ABSENT WEIGHT 0.5; UNARYEVID 1 < NUMARCB(cylinder) < 4 PEAK 2 WEIGHT 0.5; UNARYEVID 0 < NUMLINB(cylinder) < 4 PEAK 2 WEIGHT 0.5; UNARYEVID 1.5 < NUM90B(cylinder) < 4.5 PEAK 4 WEIGHT 0.5; UNARYEVID 0 < NUMEQLB(cylinder) < 3 PEAK 2 WEIGHT 0.5; UNARYEVID 1.4 < SURSDA(sapiby2b) < 1.8 PEAK 1.57 WEIGHT 1.0; UNARYEVID 1.5 < SURSDA(sapiby2a) < 1.65 PEAK 1.57 WEIGHT 1.0; UNARYEVID 1.35 < SURSDA(sapiby2c) < 2.3 PEAK 1.57 WEIGHT 1.0; UNARYEVID 3.04 < SURSDA(sapia) < 3.24 WEIGHT 1.0; UNARYEVID 2.5 < SURSDA(sapib) < 3.7 PEAK 3.14 WEIGHT 1.0; UNARYEVID 4.64 < SURSDA(sa3piby2) < 4.78 WEIGHT 1.0; UNARYEVID 3.04 < SURSDA(sapiby2andpi) < 3.24 WEIGHT 1.0; UNARYEVID 1.5 < SURSDA(sapiby2andpi) < 1.64 WEIGHT 1.0; UNARYEVID 0.4 < RELSIZE(uside) < 0.72 WEIGHT 0.5; UNARYEVID 1000 < ABSSIZE(uside) < 2200 WEIGHT 0.5; UNARYEVID 2 < SURECC(uside) < 3.2 WEIGHT 0.5; UNARYEVID 0.025 < DCURV(uside) < 0.065 WEIGHT 0.5; UNARYEVID 0.11 < DCURV(uside) < 0.15 WEIGHT 0.5; UNARYEVID 10 < DCRVL(uside) < 25 WEIGHT 0.5; UNARYEVID 27 < DCRVL(uside) < 47 WEIGHT 0.5; UNARYEVID 0.07 < DBRORT(uside) < 0.27 WEIGHT 0.5; UNARYEVID 1.29 < DBRORT(uside) < 1.67 WEIGHT 0.5; UNARYEVID 0.09 < DCURV(uends) < 0.17 WEIGHT 0.5; UNARYEVID -0.003 < DCURV(uends) < 0.003 WEIGHT 0.5; UNARYEVID 5 < DCRVL(uends) < 25 WEIGHT 0.5; UNARYEVID 1.4 < DBRORT(uends) < 1.8 WEIGHT 0.5; UNARYEVID 1.8 < SURECC(uends) < 2.6 WEIGHT 0.5; UNARYEVID 130 < ABSSIZE(uends) < 250 WEIGHT 0.5; UNARYEVID 0.04 < RELSIZE(uends) < 0.11 WEIGHT 0.5; UNARYEVID 0.11 < MAXSCURV(uends) < 0.15 WEIGHT 0.5; UNARYEVID 0.08 < RELSIZE(uendb) < 0.16 WEIGHT 0.5; UNARYEVID 210 < ABSSIZE(uendb) < 430 WEIGHT 0.5; UNARYEVID 2.8 < SURECC(uendb) < 4 WEIGHT 0.5; UNARYEVID 1.47 < DBRORT(uendb) < 1.67 WEIGHT 0.5; UNARYEVID 5 < DCRVL(uendb) < 15 WEIGHT 0.5; UNARYEVID 27 < DCRVL(uendb) < 37 WEIGHT 0.5; UNARYEVID 0.025 < DCURV(uendb) < 0.065 WEIGHT 0.5; UNARYEVID 2.8 < SURSDA(uedges) < 3.4 WEIGHT 1.0; UNARYEVID 1.4 < SURSDA(uedges) < 1.8 WEIGHT 0.5; UNARYEVID 5 < DCRVL(uedges) < 25 WEIGHT 0.5; UNARYEVID 1.47 < DBRORT(uedges) < 1.67 WEIGHT 0.5; UNARYEVID 0.04 < RELSIZE(uedges) < 0.15 WEIGHT 0.5; UNARYEVID 140 < ABSSIZE(uedges) < 260 WEIGHT 0.5; UNARYEVID 1.8 < SURECC(uedges) < 2.6 WEIGHT 0.5; UNARYEVID 2.9 < SURSDA(uedgeb) < 3.1 WEIGHT 1.0; UNARYEVID 1.45 < SURSDA(uedgeb) < 1.85 WEIGHT 1.0; UNARYEVID 0.11 < RELSIZE(uedgeb) < 0.22 WEIGHT 0.5; UNARYEVID 290 < ABSSIZE(uedgeb) < 570 WEIGHT 0.5; UNARYEVID 3.6 < SURECC(uedgeb) < 5.2 WEIGHT 0.5; UNARYEVID 1.47 < DBRORT(uedgeb) < 1.67 WEIGHT 0.5; UNARYEVID 5 < DCRVL(uedgeb) < 15 WEIGHT 0.5; UNARYEVID 38 < DCRVL(uedgeb) < 48 WEIGHT 0.5; UNARYEVID 0.51 < RELSIZE(lside) < 0.65 WEIGHT 0.5; UNARYEVID 460 < ABSSIZE(lside) < 910 WEIGHT 0.5; UNARYEVID 2.3 < SURECC(lside) < 3.3 WEIGHT 0.5; UNARYEVID 1.07 < DBRORT(lside) < 1.47 WEIGHT 0.5; UNARYEVID 1.37 < DBRORT(lside) < 1.77 WEIGHT 0.5; UNARYEVID 3.6 < DCRVL(lside) < 24 WEIGHT 0.5; UNARYEVID 32.8 < DCRVL(lside) < 54 WEIGHT 0.5; UNARYEVID 0.06 < DCURV(lside) < 0.12 WEIGHT 0.5; UNARYEVID 1.8 < SURECC(lendb) < 2.9 WEIGHT 0.5; UNARYEVID 70 < ABSSIZE(lendb) < 200 WEIGHT 0.5; UNARYEVID 0.07 < RELSIZE(lendb) < 0.18 WEIGHT 0.5; UNARYEVID 0.97 < DBRORT(lendb) < 2.17 WEIGHT 0.5; UNARYEVID 4 < DCRVL(lendb) < 13 WEIGHT 0.5; UNARYEVID 13 < DCRVL(lendb) < 27 WEIGHT 0.5; UNARYEVID 0.07 < DCURV(lendb) < 0.14 WEIGHT 0.5; UNARYEVID 33 < DCRVL(ledgea) < 55 WEIGHT 0.5; UNARYEVID 3.6 < DCRVL(ledgea) < 13.6 WEIGHT 0.5; UNARYEVID 3.6 < DCRVL(ledgeb) < 13.6 WEIGHT 0.5; UNARYEVID 32 < DCRVL(ledgeb) < 54 WEIGHT 0.5; UNARYEVID 0.26 < RELSIZE(ledge) < 0.38 WEIGHT 0.5; UNARYEVID 230 < ABSSIZE(ledge) < 470 WEIGHT 0.5; UNARYEVID 4.6 < SURECC(ledge) < 6.6 WEIGHT 0.5; UNARYEVID 1.4 < DBRORT(ledge) < 1.8 WEIGHT 0.5; UNARYEVID 0.20 < RELSIZE(handsides) < 0.28 WEIGHT 0.5; UNARYEVID 56 < ABSSIZE(handsides) < 76 WEIGHT 0.5; UNARYEVID 1 < SURECC(handsides) < 1.3 WEIGHT 0.5; UNARYEVID 1.47 < DBRORT(handsides) < 1.67 WEIGHT 0.5; UNARYEVID 2.7 < DCRVL(handsides) < 13.6 WEIGHT 0.5; UNARYEVID 0.30 < RELSIZE(handsidel) < 0.38 WEIGHT 0.5; UNARYEVID 80 < ABSSIZE(handsidel) < 110 WEIGHT 0.5; UNARYEVID 1.2 < SURECC(handsidel) < 1.6 WEIGHT 0.5; UNARYEVID 1.47 < DBRORT(handsidel) < 1.67 WEIGHT 0.5; UNARYEVID 1 < DBPARO(handsidel) < 3 WEIGHT 0.3; UNARYEVID 2.7 < DCRVL(handsidel) < 18.5 WEIGHT 0.5; UNARYEVID 0.21 < DCURV(handsidel) < 0.25 WEIGHT 0.5; UNARYEVID 0.21 < MAXSCURV(handend) < 0.25 WEIGHT 0.5; UNARYEVID 0.32 < RELSIZE(handend) < 0.52 WEIGHT 0.5; UNARYEVID 96 < ABSSIZE(handend) < 136 WEIGHT 0.5; UNARYEVID 1 < SURECC(handend) < 1.2 WEIGHT 0.5; UNARYEVID 1.47 < DBRORT(handend) < 1.67 WEIGHT 0.5; UNARYEVID 3.6 < DCRVL(handend) < 18.5 WEIGHT 0.5; UNARYEVID 0.21 < DCURV(handend) < 0.25 WEIGHT 0.5; UNARYEVID 4.5 < SURSDA(robbodyside) < 4.9 WEIGHT 0.5; UNARYEVID 2.5 < SURSDA(robbodyside) < 3.7 WEIGHT 0.5; UNARYEVID 0.09 < MAXSCURV(robbodyside) < 0.14 WEIGHT 0.5; UNARYEVID 0.9 < RELSIZE(robbodyside) < 1.1 WEIGHT 0.5; UNARYEVID 1200 < ABSSIZE(robbodyside) < 1600 WEIGHT 0.5; UNARYEVID 1.57 < SURECC(robbodyside) < 3.5 WEIGHT 0.5; UNARYEVID 1.17 < DBRORT(robbodyside) < 1.97 WEIGHT 0.5; UNARYEVID 1 < DBPARO(robbodyside) < 3 WEIGHT 0.3; UNARYEVID 20 < DCRVL(robbodyside) < 36 WEIGHT 0.5; UNARYEVID 40 < DCRVL(robbodyside) < 60 WEIGHT 0.5; UNARYEVID -0.003 < DCURV(robbodyside) < 0.015 WEIGHT 0.5; UNARYEVID 0.05 < DCURV(robbodyside) < 0.16 WEIGHT 0.5; UNARYEVID 0.11 < RELSIZE(robshldend) < 0.40 WEIGHT 0.5; UNARYEVID 156 < ABSSIZE(robshldend) < 248 WEIGHT 0.5; UNARYEVID 0.9 < SURECC(robshldend) < 1.5 WEIGHT 0.5; UNARYEVID 3.04 < DBRORT(robshldend) < 3.24 WEIGHT 0.5; UNARYEVID 0 < DBPARO(robshldend) < 2 WEIGHT 0.3; UNARYEVID 20.1 < DCRVL(robshldend) < 40 WEIGHT 0.5; UNARYEVID 0.08 < DCURV(robshldend) < 0.15 WEIGHT 0.5; UNARYEVID 0.105 < MAXSCURV(robshouldg) < 0.145 WEIGHT 0.5; UNARYEVID -0.003 < MINSCURV(robshouldg) < 0.01 WEIGHT 0.5; UNARYEVID 0.55 < RELSIZE(robshouldg) < 0.79 WEIGHT 0.5; UNARYEVID 428 < ABSSIZE(robshouldg) < 828 WEIGHT 0.5; UNARYEVID 1.5 < SURECC(robshouldg) < 3.5 WEIGHT 0.5; UNARYEVID 1.4 < DBRORT(robshouldg) < 1.8 WEIGHT 0.5; UNARYEVID 0.8 < DBRORT(robshouldg) < 1.1 WEIGHT 0.5; UNARYEVID 0.9 < DBRORT(robshouldg) < 1.5 WEIGHT 0.5; UNARYEVID 1 < DBPARO(robshouldg) < 3 WEIGHT 0.3; UNARYEVID 5 < DCRVL(robshouldg) < 16 WEIGHT 0.5; UNARYEVID 11 < DCRVL(robshouldg) < 21 WEIGHT 0.5; UNARYEVID 18 < DCRVL(robshouldg) < 37 WEIGHT 0.5; UNARYEVID 0.071 < DCURV(robshouldg) < 0.15 WEIGHT 0.5; UNARYEVID -0.003 < DCURV(robshouldg) < 0.035 WEIGHT 0.5; UNARYEVID 0.105 < MAXSCURV(robshoulds) < 0.145 WEIGHT 0.5; UNARYEVID -0.003 < MINSCURV(robshoulds) < 0.01 WEIGHT 0.5; UNARYEVID 0.9 < RELSIZE(robshoulds) < 1.1 WEIGHT 0.5; UNARYEVID 60 < ABSSIZE(robshoulds) < 140 WEIGHT 0.5; UNARYEVID 2 < SURECC(robshoulds) < 4 WEIGHT 0.5; UNARYEVID 1.8 < DBRORT(robshoulds) < 2.6 WEIGHT 0.5; UNARYEVID 1.5 < DBRORT(robshoulds) < 2.3 WEIGHT 0.5; UNARYEVID -1 < DBPARO(robshoulds) < 1 WEIGHT 0.3; UNARYEVID 6 < DCRVL(robshoulds) < 18 WEIGHT 0.5; UNARYEVID 18 < DCRVL(robshoulds) < 30 WEIGHT 0.5; UNARYEVID 0.03 < DCURV(robshoulds) < 0.131 WEIGHT 0.5; ENDINV
The next section gives the geometric model for the specific surfaces. The syntax of the models is described in Chapter 7. The DEFAULT values are a position that can be used for drawing the models.
SURFACE uside DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/LINE PO/(19.6,0,0) BO/LINE PC/(61.8,7.4,0) BO/CURVE[7.65,0,0] PC/(61.8,22.4,0) BO/LINE PO/(19.6,29.8,0) BO/LINE PO/(0,29.8,0) BO/CURVE[-22.42,0,0] PLANE NORMAL AT (10,15,0) = (0,0,-1); SURFACE uedges DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/LINE PO/(19.6,0,0) BO/LINE PO/(19.6,10,0) BO/LINE PO/(0,10,0) BO/LINE PLANE NORMAL AT (10,5,0) = (0,0,-1); SURFACE uedgeb DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/LINE PO/(42.85,0,0) BO/LINE PO/(42.85,10,0) BCW/LINE PO/(0,10,0) BO/LINE PLANE NORMAL AT (21,5,0) = (0,0,-1); SURFACE uends DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BCW/LINE PO/(10,0,0) BO/CURVE[0,0,-7.65] PO/(10,15,0) BCW/LINE PO/(0,15,0) BO/CURVE[0,0,-7.65] CYLINDER[(0,7.5,1.51),(10,7.5,1.51),7.65,7.65] NORMAL AT (5,7.5,-6.14) = (0,0,-1); SURFACE uendb DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/LINE PO/(10,0,0) BO/CURVE[0,0,-22.42] PO/(10,29.8,0) BO/LINE PO/(0,29.8,0) BO/CURVE[0,0,-22.42] CYLINDER [(0,14.9,16.75),(10,14.9,16.75),22.42,22.42] NORMAL AT (5,15,-5.67) = (0,0,-1); SURFACE lsidea DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/LINE PO/(44,0,0) BN/LINE PO/ (44,8.6,0) BN/LINE PO/(2,17,0) BN/CURVE[-10.96,1.29,0] PLANE NORMAL AT (22,6,0) = (0,0,-1); SURFACE lsideb DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/LINE PO/(-44,0,0) BN/LINE PO/(-44,8.6,0) BO/LINE PO/(-2,17,0) BO/CURVE[10.96,1.29,0] PLANE NORMAL AT (-22,6,0) = (0,0,-1); SURFACE ledgea DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/LINE PO/(44,0,0) BN/LINE PO/(44,8.6,0) BO/LINE PO/(0,8.6,0) BO/LINE PLANE NORMAL AT (22,4.3,0) = (0,0,-1); SURFACE ledgeb DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/LINE PO/(42.8,0,0) BN/LINE PO/ (42.8,8.6,0) BO/LINE PO/ (0,8.6,0) BO/LINE PLANE NORMAL AT (22,4.3,0) = (0,0,-1); SURFACE lendb DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/CURVE[0,0,-11.04] PO/(17,0,0) BO/LINE PO/(17,8.6,0) BO/CURVE[0,0,-11.04] PO/(0,8.6,0) BO/LINE CYLINDER [(8.5,0,7.04),(8.5,8.6,7.04),11.04,11.04] NORMAL AT (8.5,4.3,-4) = (0,0,-1); SURFACE handsides DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/LINE PO/(7.7,0,0) BCW/LINE PO/(7.7,8.6,0) BO/LINE PO/(0,8.6,0) BO/LINE PLANE NORMAL AT (3.8,4.3,0) = (0,0,-1); SURFACE handsidel DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/LINE PO/(0,8.6,0) BO/LINE PO/(7.7,8.6,0) BO/CURVE[3.04,3.04,0] PN/(12,4.3,0) BO/CURVE[3.04,-3.04,0] PO/(7.7,0,0) BO/LINE PLANE NORMAL AT (6,4.3,0) = (0,0,-1); SURFACE handend DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,0,0) BO/CURVE[0,-3.04,-3.04] PN/(0,4.3,-4.3) BO/CURVE[0,3.04,-3.04] PO/(0,8.6,0) BCW/LINE PO/(8.6,8.6,0) BO/CURVE[0,3.04,-3.04] PN/(8.6,4.3,-4.3) BO/CURVE[0,-3.04,-3.04] PO/(8.6,0,0) BCW/LINE CYLINDER [(0,4.3,0),(8.6,4.3,0),4.3,4.3] NORMAL AT (4.3,4.3,-4.3) = (0,0,-1); SURFACE robbodyside DEFAULT ((0,0,1000),(0,0,0)) = PO/(-9,0,0) BO/CURVE[-6.364,0,-6.364] PN/(0,0,-9) BO/CURVE[6.364,0,-6.364] PO/(9,0,0) BN/LINE PO/(9,50,0) BO/CURVE[6.364,0,-6.364] PN/(0,50,-9) BO/CURVE[-6.364,0,-6.364] PO/(-9,50,0) BN/LINE CYLINDER [(0,0,0),(0,50,0),9,9] NORMAL AT (0,25,-9) = (0,0,-1); SURFACE robshldend DEFAULT ((0,0,1000),(0,0,0)) = PN/(-8,0,0) BO/CURVE[-5.66,5.66,0] PN/(0,8,0) BO/CURVE[5.66,5.66,0] PN/(8,0,0) BO/CURVE[5.66,-5.66,0] PN/(0,-8,0) BO/CURVE[-5.66,-5.66,0] PLANE NORMAL AT (0,0,0) = (0,0,-1); SURFACE robshoulds DEFAULT ((0,0,1000),(0,0,0)) = PO/(-8,0,0) BO/CURVE[-5.66,0,-5.66] PN/(0,0,-8) BO/CURVE[5.66,0,-5.66] PO/(8,0,0) BO/CURVE[0,-6.32,-6.32] PO/(0,8,-8) BO/CURVE[0,-6.32,-6.32] CYLINDER [(0,0,0),(0,1,0),8,8] NORMAL AT (0,4,-8) = (0,0,-1); SURFACE robshould1 DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,-8,0) BO/CURVE[0,-5.66,-5.66] PN/(0,0,-8) BO/CURVE[0,5.66,-5.66] PO/(0,8,0) BN/LINE PO/(29,8,0) BO/CURVE[0,5.66,-5.66] PN/(29,0,-8) BO/CURVE[0,-5.66,-5.66] PO/(29,-8,0) BN/LINE PO/(27,-8,0) BO/CURVE[0,-6.32,-6.32] PO/(19,0,-8) BO/CURVE[0,-6.32,-6.32] PO/(11,-8,0) BN/LINE CYLINDER [(0,0,0),(1,0,0),8,8] NORMAL AT (10,0,-8) = (0,0,-1); SURFACE robshould2 DEFAULT ((0,0,1000),(0,0,0)) = PO/(0,-8,0) BO/CURVE[0,-5.66,-5.66] PN/(0,0,-8) BO/CURVE[0,5.66,-5.66] PO/(0,8,0) BN/LINE PO/(-29,8,0) BO/CURVE[0,5.66,-5.66] PN/(-29,0,-8) BO/CURVE[0,-5.66,-5.66] PO/(-29,-8,0) BN/LINE PO/(-27,-8,0) BO/CURVE[0,-6.32,-6.32] PO/(-19,0,-8) BO/CURVE[0,-6.32,-6.32] PO/(-11,-8,0) BN/LINE CYLINDER [(0,0,0),(-1,0,0),8,8] NORMAL AT (-10,0,-8) = (0,0,-1);
Then come the geometric models for the ASSEMBLYs:
ASSEMBLY robot DEFAULT ((0,0,1000),(0,0.7,4)) = robbody AT ((0,0,0),(0,0,0)) link AT ((0,50,0),(0,0,0)) FLEX ((0,0,0),(0,jnt1,3.14159)); ASSEMBLY link DEFAULT ((0,0,1000),(0,0.7,4)) = robshould AT ((0,0,0),(0,0,0)) armasm AT ((0,8,-19),(0,0,0)) FLEX ((0,0,0),(jnt2,0,0)); ASSEMBLY armasm DEFAULT ((0,0,1000),(0,0.7,4)) = upperarm AT ((0,0,0),(0,0,0)) lowerarm AT ((43.5,0,0),(0,0,0)) FLEX ((0,0,0),(jnt3,0,0)); ASSEMBLY upperarm DEFAULT ((0,0,1000),(0,0.7,4)) = uside AT ((-17,-14.9,-10),(0,0,0)) uside AT ((-17,14.9,0),(0,3.14,1.5707)) uendb AT ((-17,-14.9,0),(0,1.5707,3.14159)) uends AT ((44.8,-7.5,-10),(0,1.5707,0)) uedges AT ((-17,-14.9,0),(0,1.5707,4.7123)) uedges AT ((-17,14.9,-10),(0,1.5707,1.5707)) uedgeb AT ((2.6,-14.9,0),(0.173,1.5707,4.7123)) uedgeb AT ((2.6,14.9,-10),(6.11,1.5707,1.5707)); ASSEMBLY lowerarm DEFAULT ((0,0,1000),(0,0.7,4)) = lsidea AT ((-9.4,-7.7,0),(0,0,0)) lsideb AT ((-9.4,-7.7,8.6),(0,3.14,0)) lendb AT ((-9.4,-7.7,0),(1.4536,1.5707,1.5707)) ledgea AT ((-9.4,-7.7,8.6),(0,1.5707,4.7123)) ledgeb AT ((-7.4,9.3,0),(6.083,1.5707,1.5707)) hand AT ((34.6,-3.8,4.3),(0,0,0)); ASSEMBLY hand DEFAULT ((0,0,1000),(0,0.7,4)) = handsidel AT ((0,-4.3,-4.3),(0,0,0)) handsidel AT ((0,4.3,4.3),(0,3.14,1.5707)) handsides AT ((0,-4.3,4.3),(0,1.5707,4.71)) handsides AT ((0,4.3,-4.3),(0,1.5707,1.5707)) handend AT ((7.7,-4.3,-4.3),(0,1.57,0)); ASSEMBLY robbody DEFAULT ((0,0,1000),(0,0.7,4)) = robbodyside AT ((0,0,0),(0,0,0)) robbodyside AT ((0,0,0),(0,3.14,0)); ASSEMBLY robshould DEFAULT ((0,0,1000),(0,0.7,4)) = robshldbd AT ((0,0,0),(0,0,0)) robshldsobj AT ((0,0,0),(0,0,0)); ASSEMBLY robshldbd DEFAULT ((0,0,1000),(0,0.7,4)) = robshould1 AT ((0,8,-19),(0,1.5707,0)) robshould2 AT ((0,8,-19),(0,1.5707,3.14159)) robshldend AT ((0,8,10),(0,3.14,0)); ASSEMBLY robshldsobj DEFAULT ((0,0,1000),(0,0.7,4)) = robshoulds AT ((0,0,0),(0,1.5707,0)) robshoulds AT ((0,0,0),(0,1.5707,3.14159)); ENDSTR
Lastly, there are the additional property constraints used by verification:
CONSTRAINT uside MAXSCURV(uside) < 0.05 CONSTRAINT uside ABSSIZE(uside) < 1900.0 CONSTRAINT uside ABSSIZE(uside) > 1050.0 CONSTRAINT uends ABSSIZE(uends) < 250.0 CONSTRAINT uendb ABSSIZE(uendb) < 430.0 CONSTRAINT uedges ABSSIZE(uedges) < 260.0 CONSTRAINT uedges SURECC(uedges) < 3.0 CONSTRAINT uedgeb ABSSIZE(uedgeb) < 570.0 CONSTRAINT lsidea ABSSIZE(lsidea) < 910.0 CONSTRAINT lsidea ABSSIZE(lsidea) > 300.0 CONSTRAINT lsideb ABSSIZE(lsideb) < 910.0 CONSTRAINT lsideb ABSSIZE(lsideb) > 300.0 CONSTRAINT lendb ABSSIZE(lendb) < 200.0 CONSTRAINT ledgea ABSSIZE(ledgea) < 470.0 CONSTRAINT ledgea ABSSIZE(ledgea) > 200.0 CONSTRAINT ledgeb ABSSIZE(ledgeb) < 470.0 CONSTRAINT ledgeb ABSSIZE(ledgeb) > 200.0 CONSTRAINT handsides ABSSIZE(handsides) < 76.0 CONSTRAINT handsidel ABSSIZE(handsidel) < 110.0 CONSTRAINT handend ABSSIZE(handend) < 136.0 CONSTRAINT robbodyside ABSSIZE(robbodyside) < 1600.0 CONSTRAINT robshldend ABSSIZE(robshldend) < 248.0 CONSTRAINT robshldend SURECC(robshldend) < 1.5 CONSTRAINT robshould1 ABSSIZE(robshould1) < 828.0 CONSTRAINT robshould2 ABSSIZE(robshould2) < 828.0 CONSTRAINT robshoulds ABSSIZE(robshoulds) < 130.0 CONSTRAINT robbodyside SURECC(robbodyside) > 2.0 CONSTRAINT robbodyside MAXSCURV(robbodyside) > 0.095 ENDCON STOP