home *** CD-ROM | disk | FTP | other *** search
- /*
- * RCCL Version 1.0 Author : Vincent Hayward
- * School of Electrical Engineering
- * Purdue University
- * Dir : h
- * File : rccl.h
- * Remarks : RCCL structure definitions, macros, and external entries
- * Usage : made available to the user
- */
-
- #include <stdio.h> /* included here for safety */
- #include <math.h> /* .................................... */
-
- #define YES 1
- #define NO 0
- #define UNDEF 2
-
- #define OK -1 /* normal path segment termination code */
- #define LIMIT -2 /* ran into a limit, arm stopped */
- #define ONF -3 /* terminated on force */
- #define OND -4 /* terminated on differential motion */
-
- #define PIB2 1.57079632679489660 /* pi / 2 */
- #define PI 3.14159265358979320 /* pi */
- #define PIT2 6.28318530717958650 /* pi * 2 */
- #define RADTODEG 57.29577951308232100 /* 180 / pi */
- #define DEGTORAD 0.01745329251994330 /* pi / 180 */
- #define SMALL (1.e-5) /* considered as small */
- #define EQ 1 /* lhs = rhs */
- #define TL 2 /* tool = */
-
- #define malloc malloc_l /* .................................... */
- #define free free_l
- #define realloc realloc_l /* replace dynamic allocation entries */
- #define calloc calloc_l
- #define cfree cfree_l /* .................................... */
-
- /*
- * RCCL typedefs
- */
-
- typedef int bool;
-
- typedef float real;
-
- typedef int event;
-
-
- typedef struct vector {
- real x, y, z;
- } VECT, *VECT_PTR;
-
- typedef int(* TRFN)();
-
- typedef struct transform {
- char *name;
- TRFN fn;
- VECT n, o, a, p;
- int timeval;
- } TRSF, *TRSF_PTR;
-
- typedef struct jns {
- char *conf;
- real th1, th2, th3, th4, th5, th6;
- } JNTS, *JNTS_PTR;
-
- typedef struct posit {
- char *name;
- int code;
- real scal;
- event end;
- } POS, *POS_PTR;
-
- typedef struct force {
- VECT f, m;
- } FORCE, *FORCE_PTR;
-
- typedef struct diff {
- VECT t, r;
- } DIFF, *DIFF_PTR;
-
-
- /*
- * RCCL functions
- */
-
- extern POS_PTR makeposition();
-
- extern TRSF_PTR newtrans(),
- gentr_rot(),
- gentr_eul(),
- gentr_rpy(),
- gentr_pao(),
- gentr_trsl(),
- assigntr(),
- taketrsl(),
- takerot(),
- trmult(),
- trmultinp(),
- trmultinv(),
- invert(),
- invertinp(),
- trsl(),
- vao(),
- rot(),
- eul(),
- rpy(),
- trslm(),
- vaom(),
- rotm(),
- eulm(),
- rpym(),
- df_to_tr();
-
- extern DIFF_PTR assigndiff(),
- tr_to_df(),
- difftr();
-
- extern FORCE_PTR assignforce(),
- forcetr();
-
- extern VECT_PTR assignvect(),
- cross(),
- unit();
-
- extern real dot();
-
- extern int const(),
- hold(),
- varb(),
- optimize(),
- printd(),
- printm(),
- freepos(),
- startup(),
- suspendfg(),
- giveup(),
- release(),
- setmod(),
- setime(),
- setvel(),
- evalfn(),
- setconf(),
- update(),
- sample(),
- massis(),
- limit(),
- comply(),
- lock(),
- distance(),
- move(),
- stop(),
- noatoeul(),
- noatorpy(),
- printr(),
- printrn(),
- printe(),
- printy(),
- teach();
-
- /*
- * variables
- */
-
- extern JNTS_PTR j6, /* current joint range values */
- jd; /* current joint increments */
-
- extern TRSF_PTR t6, /* current T6 */
- here, /* equals T6 each end of segment*/
- rest, /* T6 park position */
- unitr; /* unit transform */
-
- extern VECT_PTR xunit, /* X unit vector */
- yunit, /* Y unit vector */
- zunit; /* Z unit vector */
-
- extern POS_PTR lastpos, /* last evaluated position */
- goalpos, /* current evaluated position */
- there, /* such as t6 = here */
- park; /* such as t6 = rest */
-
- extern event completed; /* queue empty */
-
- extern FILE *fpi; /* info file pointer */
-
- extern bool prints_out, /* info prints switch */
- force_ctl; /* force control switch */
-
- extern int fddb; /* data base file descriptor */
-
- extern int rtime, /* current time since reset */
- timeincrement, /* current sample period */
- requestnb, /* number of requests in queue */
- nextmove, /* motion interruption flag */
- terminate; /* in rtc */
-
- extern real pi_m, /* math constants */
- pib2_m,
- pit2_m,
- dgtord_m,
- rdtodg_m;
-
- extern short hdpos;
-
- #define waitas(predicate) {while(!(predicate)) suspendfg();}
-
- #define waitfor(event) {++(event);\
- while(event > 0) suspendfg();}
-
-
- #define Assigntr (void)assigntr
- #define Taketrsl (void)taketrsl
- #define Takerot (void)takerot
- #define Trmult (void)trmult
- #define Trmultinp (void)trmultinp
- #define Trmultinv (void)trmultinv
- #define Invert (void)invert
- #define Invertinp (void)invertinp
- #define Trsl (void)trsl
- #define Vao (void)vao
- #define Rot (void)rot
- #define Eul (void)eul
- #define Rpy (void)rpy
- #define Trslm (void)trslm
- #define Vaom (void)vaom
- #define Rotm (void)rotm
- #define Eulm (void)eulm
- #define Rpym (void)rpym
-
- #define Assigndiff (void)assigndiff
- #define Df_to_tr (void)df_to_tr
- #define Tr_to_df (void)tr_to_df
- #define Assignforce (void)assignforce
- #define Forcetr (void)forcetr
- #define Difftr (void)difftr
-
- #define Assignvect (void)assignvect
- #define Cross (void)cross
- #define Unit (void)unit
-
- #define movecart(p, ta, ts) {setmod('c'); setime(ta, ts); move(p);}
- #define movejnts(p, ta, ts) {setmod('j'); setime(ta, ts); move(p);}
- #define moveconf(p, ta, ts, cf) {setconf(cf); setmod('j'); setime(ta, ts); move
-
- #define freetrans(t) {free((char *)t); t = NULL;}
- #define freeposition(p) {freepos(p); p = NULL;}
-