00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 int IKOR_driver (int *IKCriterion, int *IKMethod, int Optimization,
00014 int N_use, int M_use);
00015 MATRIX *CALC_PSEUDO (MATRIX *Jacob, MATRIX *dx);
00016 MATRIX *FSP (Solutions *FSP_data, History *Old_DQs, MATRIX *Jacob, MATRIX *dx,
00017 int *IKCriterion, int *IKMethod, int Optimization, int ns,
00018 double spheredata[4][4], MATRIX *x_of_link, FILE *datafp);
00019 void Euler_to_Velocities (MATRIX *x_of_link, MATRIX *dx);
00020 float correct_euler ( float angle, float curr, float dest );
00021 int OPEN_FILES (double XTraj[MAX_PTS][6], char PoorMansFile[40],
00022 MATRIX *Qarray);
00023 int Init_Globals();
00024 void Update_History(History *Old_DQs, MATRIX *dq);
00025
00026
00027
00028 void GET_JACOBIAN_ALTERED(MATRIX* Jacob, MATRIX *Qarray);
00029 void GET_JACOBIAN (MATRIX* Jacob, MATRIX *Qarray);
00030 void ExtractRPY2 (MATRIX *T, MATRIX *x_of_link);
00031 MATRIX *getT2 (double ZA,double YB,double XG,
00032 double tx,double ty,double tz);
00033
00034
00035
00036 extern void GET_JACOB (MATRIX *Jacob, MATRIX *Qarray);
00037 extern void GET_ACTUAL_X (MATRIX *Qarray, MATRIX *x_of_link);
00038
00039
00040
00041 int Solution_generator (Solutions *FSP_data, MATRIX *Jacob,
00042 MATRIX *dx, FILE *datafp);
00043 void RestofSoln (int Mred, int Nred, int NextToFind, MATRIX *block,
00044 MATRIX *g, MATRIX *bred, MATRIX *Ared, int *Tackon,
00045 int *FirstOK, FILE *check);
00046 int BLOCK_COL_FIND_X(int *Tackon, float *g, float *block,
00047 MATRIX *b, MATRIX *A,
00048 int Mred, int Nred, FILE *check);
00049 int ReduceA (Solutions *FSP_data, MATRIX *Aorig, MATRIX *Ared,
00050 MATRIX *borig, MATRIX *bred,
00051 int *ColElim, int *RowElim,
00052 int *NumSpg, MATRIX *Specialg);
00053 int CheckB (MATRIX *b, int m);
00054 int CheckRange (MATRIX * b, MATRIX * Aorig, MATRIX * g,
00055 int *RowElim, int Mred);
00056 void Rebuild_gs (Solutions *FSP_data, int *ColElim,
00057 MATRIX *Specialg, int NumSpg);
00058
00059
00060
00061 void IKerror (int vector, int fatal, char *mesg);
00062 Solutions *Solutions_init(int M, int N);
00063 void Solutions_free(Solutions *Temp );
00064 int GetData (MATRIX *A, MATRIX *b);
00065 int spheres (double spheredata[4][4], FILE *datafp);
00066 void fmat_pr (FILE *checkfile, char *string, MATRIX *a);
00067 void fmat_prf (FILE *checkfile, char *string, MATRIX *a);
00068 void fprint_norm (FILE *checkfile, MATRIX *dq, FILE *datafp);
00069
00070
00071 int avoid_limits (Solutions *FSP_data, MATRIX *Jacob, MATRIX *dx,
00072 int *got_gs, FILE *datafp);
00073 int avoid_obstacles (Solutions *FSP_data, MATRIX *Jacob, MATRIX *dx,
00074 MATRIX *x_of_link, int ns, double spheredata[4][4],
00075 int *got_gs, FILE *datafp);
00076 int find_intersection_sphere(double pt1[3], double pt2[3], int ws,
00077 int ns, double spheredata[4][4], int *elbow_check,
00078 double *newl, double *delta, double normal[3],
00079 FILE *datafp);
00080
00081
00082
00083 int Least_Norm (MATRIX *B, MATRIX *H, FILE *datafp);
00084 int Least_Flow (MATRIX *B, MATRIX *H, MATRIX *Qarray, FILE *datafp);
00085 float calc_flow (int index, float Q, float dq, float distance, MATRIX *old);
00086
00087
00088 MATRIX *Build_Grammian2 (Solutions *FSP_data, MATRIX *alphas, FILE *datafp);
00089 void rank_lost_betas (Solutions *FSP_data, MATRIX *Jacob, MATRIX *dx,
00090 int *RowElim, FILE *datafp);
00091 void find_jl_beta (Solutions *FSP_data, int chk,
00092 double limit, FILE *datafp);
00093 void find_obs_beta (Solutions *FSP_data, int chk, double *newl,
00094 double delta, double normal[3], FILE *datafp);
00095 MATRIX *findt_with_Betas_Holonomic (Solutions *FSP_data, MATRIX *B,
00096 MATRIX *H, FILE *datafp);
00097 MATRIX *findt_without_Betas_Holonomic (Solutions *FSP_data, MATRIX *B,
00098 MATRIX *H, FILE *datafp);
00099 MATRIX *findt_with_Betas_Nonholonomic (Solutions *FSP_data, MATRIX *B,
00100 MATRIX *H, FILE *datafp);
00101 MATRIX *findt_without_Betas_Nonholonomic (Solutions *FSP_data, MATRIX *B,
00102 MATRIX *H, FILE *datafp);
00103 MATRIX *findt_without_Betas_BANGBANG (Solutions *FSP_data, MATRIX *B,
00104 MATRIX *H, MATRIX *old, FILE *datafp);
00105 MATRIX *findt_without_Betas_SIMPLX (Solutions *FSP_data, MATRIX *B,
00106 MATRIX *H, FILE *datafp);
00107
00108
00109
00110
00111 void init_ARM();