home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Between Heaven & Hell 2
/
BetweenHeavenHell.cdr
/
500
/
471
/
rccl152
< prev
next >
Wrap
Text File
|
1987-03-02
|
6KB
|
166 lines
/*
* RTC Version 2.0 Author : Vincent Hayward
* MAC 2.0 School of Electrical Engineering
* Purdue University
* Dir : h
* File : pumac.c
* Remarks : generates the include file pumaload.h containing all the
* precalculated friction constants of the puma 600.
* Usage : cc pumal.c -lm ; a.out
*/
/*
* friction and gravity loadings for PUMA 600 robot
* installed in Potter Building, room B20.
* After Zhang Hong (TR..., spring, summer 1983)
*
* Joints 1, 3 have a positive velocity when encoder values decrease.
* .......2 4 5 6.produce positive torque for negative current
*
*
* torque to dac mapping:
* dac = t * TDPA + TDPB (+)
* dac = t * TDNA + TDNB (-)
*
* Those coeff are first determined by inverting the relations above.
*
* adc to torque mapping:
* t = adc * ATPA + ATPB (+)
* t = adc * ATNA + ATNB (-)
*
* dac to adc mapping:
* dac = ALP adc + BET
*
* All values in dac, adc, N-mm (from measurements in oz-in)
*/
#include <stdio.h>
#define PA1 (9.0623652 )
#define NA1 (8.6431404 )
#define PA2 (13.4400000)
#define NA2 (14.1120000)
#define PA3 (7.2788060 )
#define NA3 (7.0163582 )
#define PA4 (1.7217002 )
#define NA4 (1.7705593 )
#define PA5 (1.4585102 )
#define NA5 (1.4546531 )
#define PA6 (1.8182966 )
#define NA6 (1.7624517 )
#define PB1 (-2016.536 )
#define NB1 (1800.536 )
#define PB2 (-1500.0 ) /*(-1088.000 )*/
#define NB2 (1500.0 ) /*(1088.00 )*/
#define PB3 (-632.846 )
#define NB3 (631.385 )
#define PB4 (-116.0 )
#define NB4 (115.0 )
#define PB5 (-100.648 )
#define NB5 (146.648 )
#define PB6 (-90.0 )
#define NB6 (88.0 )
#define ALP1 (-5.8)
#define BET1 (-80.)
#define ALP2 (-5.8)
#define BET2 (-80.)
#define ALP3 (-5.8)
#define BET3 (-80.)
#define ALP4 (-5.8)
#define BET4 (-80.)
#define ALP5 (-5.8)
#define BET5 (-80.)
#define ALP6 (-5.8)
#define BET6 (-80.)
#define CV 7.05 /* oz in -> N mm */
#define ONE 1.
#define TWO 2.
main()
{
FILE *fp = fdopen(creat("pumaload.h", 0644),"w");
double pa1, pb1, na1, nb1;
double pa2, pb2, na2, nb2;
double pa3, pb3, na3, nb3;
double pa4, pb4, na4, nb4;
double pa5, pb5, na5, nb5;
double pa6, pb6, na6, nb6;
fprintf(fp, "#define TDPA1\t%f\n", pa1 = ONE / (PA1 * CV));
fprintf(fp, "#define TDPB1\t%f\n", pb1 = -(PB1) / (PA1));
fprintf(fp, "#define TDPA2\t%f\n", pa2 = -ONE / (PA2 * CV));
fprintf(fp, "#define TDPB2\t%f\n", pb2 = (PB2) / (PA2));
fprintf(fp, "#define TDPA3\t%f\n", pa3 = ONE / (PA3 * CV));
fprintf(fp, "#define TDPB3\t%f\n", pb3 = -(PB3) / (PA3));
fprintf(fp, "#define TDPA4\t%f\n", pa4 = -ONE / (PA4 * CV));
fprintf(fp, "#define TDPB4\t%f\n", pb4 = (PB4) / (PA4));
fprintf(fp, "#define TDPA5\t%f\n", pa5 = -ONE / (PA5 * CV));
fprintf(fp, "#define TDPB5\t%f\n", pb5 = (PB5) / (PA5));
fprintf(fp, "#define TDPA6\t%f\n", pa6 = -ONE / (PA6 * CV));
fprintf(fp, "#define TDPB6\t%f\n", pb6 = (PB6) / (PA6));
fprintf(fp, "#define TDNA1\t%f\n", na1 = ONE / (NA1 * CV));
fprintf(fp, "#define TDNB1\t%f\n", nb1 = -(NB1) / (NA1));
fprintf(fp, "#define TDNA2\t%f\n", na2 = -ONE / (NA2 * CV));
fprintf(fp, "#define TDNB2\t%f\n", nb2 = (NB2) / (NA2));
fprintf(fp, "#define TDNA3\t%f\n", na3 = ONE / (NA3 * CV));
fprintf(fp, "#define TDNB3\t%f\n", nb3 = -(NB3) / (NA3));
fprintf(fp, "#define TDNA4\t%f\n", na4 = -ONE / (NA4 * CV));
fprintf(fp, "#define TDNB4\t%f\n", nb4 = (NB4) / (NA4));
fprintf(fp, "#define TDNA5\t%f\n", na5 = -ONE / (NA5 * CV));
fprintf(fp, "#define TDNB5\t%f\n", nb5 = (NB5) / (NA5));
fprintf(fp, "#define TDNA6\t%f\n", na6 = -ONE / (NA6 * CV));
fprintf(fp, "#define TDNB6\t%f\n", nb6 = (NB6) / (NA6));
fprintf(fp, "#define TDA1\t%f\n", TWO / ((PA1 + NA1) * CV));
fprintf(fp, "#define TDA2\t%f\n", -TWO / ((PA2 + NA2) * CV));
fprintf(fp, "#define TDA3\t%f\n", TWO / ((PA3 + NA3) * CV));
fprintf(fp, "#define TDA4\t%f\n", -TWO / ((PA4 + NA4) * CV));
fprintf(fp, "#define TDA5\t%f\n", -TWO / ((PA5 + NA5) * CV));
fprintf(fp, "#define TDA6\t%f\n", -TWO / ((PA6 + NA6) * CV));
fprintf(fp, "#define ATPA1\t%f\n", ALP1 / pa1);
fprintf(fp, "#define ATPA2\t%f\n", ALP2 / pa2);
fprintf(fp, "#define ATPA3\t%f\n", ALP3 / pa3);
fprintf(fp, "#define ATPA4\t%f\n", ALP4 / pa4);
fprintf(fp, "#define ATPA5\t%f\n", ALP5 / pa5);
fprintf(fp, "#define ATPA6\t%f\n", ALP6 / pa6);
fprintf(fp, "#define ATNA1\t%f\n", ALP1 / na1);
fprintf(fp, "#define ATNA2\t%f\n", ALP2 / na2);
fprintf(fp, "#define ATNA3\t%f\n", ALP3 / na3);
fprintf(fp, "#define ATNA4\t%f\n", ALP4 / na4);
fprintf(fp, "#define ATNA5\t%f\n", ALP5 / na5);
fprintf(fp, "#define ATNA6\t%f\n", ALP6 / na6);
fprintf(fp, "#define ATPB1\t%f\n", (BET1 - pb1) / pa1);
fprintf(fp, "#define ATPB2\t%f\n", (BET2 - pb2) / pa2);
fprintf(fp, "#define ATPB3\t%f\n", (BET3 - pb3) / pa3);
fprintf(fp, "#define ATPB4\t%f\n", (BET4 - pb4) / pa4);
fprintf(fp, "#define ATPB5\t%f\n", (BET5 - pb5) / pa5);
fprintf(fp, "#define ATPB6\t%f\n", (BET6 - pb6) / pa6);
fprintf(fp, "#define ATNB1\t%f\n", (BET1 - nb1) / na1);
fprintf(fp, "#define ATNB2\t%f\n", (BET2 - nb2) / na2);
fprintf(fp, "#define ATNB3\t%f\n", (BET3 - nb3) / na3);
fprintf(fp, "#define ATNB4\t%f\n", (BET4 - nb4) / na4);
fprintf(fp, "#define ATNB5\t%f\n", (BET5 - nb5) / na5);
fprintf(fp, "#define ATNB6\t%f\n", (BET6 - nb6) / na6);
}