Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

genhexkins.h

Go to the documentation of this file.
00001 /*
00002   genhex.h
00003   Written by: R. Brian Register
00004   1999
00005 
00006   This is the header file to accompany genhexkins.c.  This header file is used
00007   to configure genhexkins.c to solve the kinematics for a particular Stewart
00008   Platform configuration.
00009 
00010   Defined are the parameters necessary to configure the functions to solve
00011   several different Stewart Platform configurations.  To choose a particular
00012   configuration #define the configuration you are interested in and
00013   comment out any others.
00014 
00015   Modification history:
00016 
00017   23-Aug-2001  FMP added genhexSet,GetParams()
00018   25-Apr-2000  FMP took out STRUT_OFFSET values, which weren't used; added
00019   OCTA_TETRA values based on MINI_TETRA but using the cool octahedral frame.
00020   */
00021 
00022 /* genhexSetParams lets you set the Cartesian coords of the base and platform,
00023    overriding the defaults set in the subsequent #defines */
00024 extern int genhexSetParams(PmCartesian const base[], const PmCartesian platform[]);
00025 extern int genhexGetParams(PmCartesian base[], PmCartesian platform[]);
00026 
00027 #define MINI_TETRA
00028 
00029 #define NUM_STRUTS 6
00030 
00031 #ifdef INGERSOLL_HEXAPOD
00032 
00033 /* Define position of base strut ends in base (world) coordinates for */
00034 /* Ingersoll Hexapod */
00035 #define BASE_0_X  1.7580
00036 #define BASE_1_X  1.6021
00037 #define BASE_2_X -1.7580
00038 #define BASE_3_X -1.6021
00039 #define BASE_4_X  0.0
00040 #define BASE_5_X  0.0
00041 
00042 #define BASE_0_Y  2.8
00043 #define BASE_1_Y  3.07
00044 #define BASE_2_Y  2.8
00045 #define BASE_3_Y  3.07
00046 #define BASE_4_Y  2.8
00047 #define BASE_5_Y  3.07
00048 
00049 #define BASE_0_Z -1.015
00050 #define BASE_1_Z -0.925
00051 #define BASE_2_Z -1.015
00052 #define BASE_3_Z -0.925
00053 #define BASE_4_Z  2.03
00054 #define BASE_5_Z  1.85
00055 
00056 /* Define position of platform strut end in platform coordinate system */
00057 /* for Ingersoll Hexapod  */
00058 #define PLATFORM_0_X  0.225
00059 #define PLATFORM_1_X  0.1125
00060 #define PLATFORM_2_X -0.1125
00061 #define PLATFORM_3_X -0.225
00062 #define PLATFORM_4_X -0.1125
00063 #define PLATFORM_5_X  0.1125
00064 
00065 #define PLATFORM_0_Y  0.0
00066 #define PLATFORM_1_Y  0.1949
00067 #define PLATFORM_2_Y  0.1949
00068 #define PLATFORM_3_Y  0.0
00069 #define PLATFORM_4_Y -0.1949
00070 #define PLATFORM_5_Y -0.1949
00071 
00072 #define PLATFORM_0_Z -0.228
00073 #define PLATFORM_1_Z -0.228
00074 #define PLATFORM_2_Z -0.228
00075 #define PLATFORM_3_Z -0.228
00076 #define PLATFORM_4_Z -0.228
00077 #define PLATFORM_5_Z -0.228
00078 
00079 #endif
00080 
00081 #ifdef UF_HEXAPOD
00082 
00083 /* Define position of base strut ends in base (world) coordinates for */
00084 /* UF Hexapod */
00085 #define BASE_0_X -16.00
00086 #define BASE_1_X -10.00
00087 #define BASE_2_X  16.00
00088 #define BASE_3_X  13.00
00089 #define BASE_4_X   0.00
00090 #define BASE_5_X  -3.00
00091 
00092 #define BASE_0_Y  -9.24
00093 #define BASE_1_Y  -9.24
00094 #define BASE_2_Y  -9.24
00095 #define BASE_3_Y  -4.04
00096 #define BASE_4_Y  18.48
00097 #define BASE_5_Y  13.28
00098 
00099 #define BASE_0_Z  18.00
00100 #define BASE_1_Z  18.00
00101 #define BASE_2_Z  18.00
00102 #define BASE_3_Z  18.00
00103 #define BASE_4_Z  18.00
00104 #define BASE_5_Z  18.00
00105 
00106 /* Define position of platform strut end in platform coordinate system */
00107 /* for UF Hexapod  */
00108 #define PLATFORM_0_X  -9.00
00109 #define PLATFORM_1_X   0.00
00110 #define PLATFORM_2_X   3.00
00111 #define PLATFORM_3_X  12.00
00112 #define PLATFORM_4_X   6.00
00113 #define PLATFORM_5_X -12.00
00114 
00115 #define PLATFORM_0_Y   1.73
00116 #define PLATFORM_1_Y -13.86
00117 #define PLATFORM_2_Y  -8.66
00118 #define PLATFORM_3_Y   6.93
00119 #define PLATFORM_4_Y   6.93
00120 #define PLATFORM_5_Y   6.93
00121 
00122 #define PLATFORM_0_Z   0.00
00123 #define PLATFORM_1_Z   0.00
00124 #define PLATFORM_2_Z   0.00
00125 #define PLATFORM_3_Z   0.00
00126 #define PLATFORM_4_Z   0.00
00127 #define PLATFORM_5_Z   0.00
00128 
00129 #endif
00130 
00131 #ifdef MINI_TETRA
00132 
00133 /* Define position of base strut ends in base (world) coordinates for */
00134 /* mini tetra */
00135 #define BASE_0_X -22.950
00136 #define BASE_0_Y 13.250
00137 
00138 #define BASE_1_X 22.950
00139 #define BASE_1_Y 13.250
00140 
00141 #define BASE_2_X 22.950
00142 #define BASE_2_Y 13.250
00143 
00144 #define BASE_3_X 0
00145 #define BASE_3_Y -26.5
00146 
00147 #define BASE_4_X 0
00148 #define BASE_4_Y -26.5
00149 
00150 #define BASE_5_X -22.950
00151 #define BASE_5_Y 13.250
00152 
00153 #define BASE_0_Z  0
00154 #define BASE_1_Z  0
00155 #define BASE_2_Z  0
00156 #define BASE_3_Z  0
00157 #define BASE_4_Z  0
00158 #define BASE_5_Z  0
00159 
00160 /* Define position of platform strut end in platform coordinate system */
00161 /* for mini tetra */
00162 #define PLATFORM_0_X -1
00163 #define PLATFORM_0_Y 11.5
00164 
00165 #define PLATFORM_1_X 1
00166 #define PLATFORM_1_Y 11.5
00167 
00168 #define PLATFORM_2_X 10.459
00169 #define PLATFORM_2_Y -4.884
00170 
00171 #define PLATFORM_3_X 9.459
00172 #define PLATFORM_3_Y -6.616
00173 
00174 #define PLATFORM_4_X -9.459
00175 #define PLATFORM_4_Y -6.616
00176 
00177 #define PLATFORM_5_X -10.459
00178 #define PLATFORM_5_Y -4.884
00179 
00180 #define PLATFORM_0_Z  0
00181 #define PLATFORM_1_Z  0
00182 #define PLATFORM_2_Z  0
00183 #define PLATFORM_3_Z  0
00184 #define PLATFORM_4_Z  0
00185 #define PLATFORM_5_Z  0
00186 
00187 #endif
00188 
00189 #ifdef OCTA_TETRA
00190 
00191 /* Define position of base strut ends in base (world) coordinates for
00192    minitetra with octahedral outside frame. Let A be side length of
00193    base triangle. Here A = 39 inches. */
00194 #define BASE_0_X -19.5          /* -A/2 */
00195 #define BASE_0_Y 11.258         /* A cos 30 * 1/3 */
00196 
00197 #define BASE_1_X 19.5           /* A/2 */
00198 #define BASE_1_Y 11.258         /* A cos 30 * 1/3 */
00199 
00200 #define BASE_2_X 19.5           /* same as BASE_1_X */
00201 #define BASE_2_Y 11.258         /* same as BASE_1_Y */
00202 
00203 #define BASE_3_X 0              /* 0 */
00204 #define BASE_3_Y -22.517        /* -A cos 30 * 2/3 */
00205 
00206 #define BASE_4_X 0              /* same as BASE_3_X */
00207 #define BASE_4_Y -22.517        /* same as BASE_3_Y */
00208 
00209 #define BASE_5_X -19.5          /* same as BASE_0_X */
00210 #define BASE_5_Y 11.258         /* same as BASE_0_Y */
00211 
00212 #define BASE_0_Z  0             /* all 0 */
00213 #define BASE_1_Z  0
00214 #define BASE_2_Z  0
00215 #define BASE_3_Z  0
00216 #define BASE_4_Z  0
00217 #define BASE_5_Z  0
00218 
00219 /* Define position of platform strut end in platform coordinate system
00220    for minitetra with octahedral outside frame */
00221 #define PLATFORM_0_X -1
00222 #define PLATFORM_0_Y 11.5
00223 
00224 #define PLATFORM_1_X 1
00225 #define PLATFORM_1_Y 11.5
00226 
00227 #define PLATFORM_2_X 10.459
00228 #define PLATFORM_2_Y -4.884
00229 
00230 #define PLATFORM_3_X 9.459
00231 #define PLATFORM_3_Y -6.616
00232 
00233 #define PLATFORM_4_X -9.459
00234 #define PLATFORM_4_Y -6.616
00235 
00236 #define PLATFORM_5_X -10.459
00237 #define PLATFORM_5_Y -4.884
00238 
00239 #define PLATFORM_0_Z  0
00240 #define PLATFORM_1_Z  0
00241 #define PLATFORM_2_Z  0
00242 #define PLATFORM_3_Z  0
00243 #define PLATFORM_4_Z  0
00244 #define PLATFORM_5_Z  0
00245 
00246 #endif
00247 
00248 #ifdef GEN_TETRA
00249 
00250 /*
00251   GEN_TETRA uses 4 parameters for the side and corner lengths of the
00252   base and platform. Set these and recompile, and you don't have to
00253   figure out all the vertex coordinates yourself.
00254 */
00255 
00256 #define BASE_LENGTH 40.0
00257 #define BASE_CORNER 1.75
00258 #define PLATFORM_LENGTH 18.9
00259 #define PLATFORM_CORNER 0.5
00260 #define Q 0.2886751346          /* 1/3 cos 30 */
00261 
00262 #define BASE_0_X (0.5 * BASE_CORNER)
00263 #define BASE_0_Y (Q * (2.0 * BASE_LENGTH + BASE_CORNER))
00264 
00265 #define BASE_1_X (0.5 * (BASE_LENGTH + BASE_CORNER))
00266 #define BASE_1_Y (Q * (BASE_CORNER - BASE_LENGTH))
00267 
00268 #define BASE_2_X (0.5 * BASE_LENGTH)
00269 #define BASE_2_Y (-Q * (BASE_LENGTH + 2.0 * BASE_CORNER))
00270 
00271 #define BASE_3_X -BASE_2_X
00272 #define BASE_3_Y BASE_2_Y
00273 
00274 #define BASE_4_X -BASE_1_X
00275 #define BASE_4_Y BASE_1_Y
00276 
00277 #define BASE_5_X -BASE_0_X
00278 #define BASE_5_Y BASE_0_Y
00279 
00280 #define BASE_0_Z 0              /* all 0 */
00281 #define BASE_1_Z 0
00282 #define BASE_2_Z 0
00283 #define BASE_3_Z 0
00284 #define BASE_4_Z 0
00285 #define BASE_5_Z 0
00286 
00287 /* Define position of platform strut end in platform coordinate system
00288    for minitetra with octahedral outside frame */
00289 #define PLATFORM_0_X (0.5 * PLATFORM_LENGTH)
00290 #define PLATFORM_0_Y (Q * (PLATFORM_LENGTH + 2.0 * PLATFORM_CORNER))
00291 
00292 #define PLATFORM_1_X (0.5 * (PLATFORM_LENGTH + PLATFORM_CORNER))
00293 #define PLATFORM_1_Y (Q * (PLATFORM_LENGTH - PLATFORM_CORNER))
00294 
00295 #define PLATFORM_2_X (0.5 * PLATFORM_CORNER)
00296 #define PLATFORM_2_Y (-Q * (2.0 * PLATFORM_LENGTH + PLATFORM_CORNER))
00297 
00298 #define PLATFORM_3_X -PLATFORM_2_X
00299 #define PLATFORM_3_Y PLATFORM_2_Y
00300 
00301 #define PLATFORM_4_X -PLATFORM_1_X
00302 #define PLATFORM_4_Y PLATFORM_1_Y
00303 
00304 #define PLATFORM_5_X -PLATFORM_0_X
00305 #define PLATFORM_5_Y PLATFORM_0_Y
00306 
00307 #define PLATFORM_0_Z 0
00308 #define PLATFORM_1_Z 0
00309 #define PLATFORM_2_Z 0
00310 #define PLATFORM_3_Z 0
00311 #define PLATFORM_4_Z 0
00312 #define PLATFORM_5_Z 0
00313 
00314 #endif

Generated on Sun Dec 2 15:27:40 2001 for EMC by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001