cuikTWS.c
Go to the documentation of this file.
1 #include "parameters.h"
2 #include "defines.h"
3 #include "world.h"
4 #include "error.h"
5 #include "filename.h"
6 
7 #include <stdlib.h>
8 #include <string.h>
9 #include <unistd.h>
10 
79 int main(int argc, char **arg)
80 {
81  Tparameters parameters; /* Parameters */
82  Tworld world; /* Environemtn and mechanisms */
83  TCuikSystem cs; /* The cuiksystem to generate*/
84 
85  Tfilename fworld;
86  Tfilename fparam;
87  Tfilename fcuik;
88 
89  FILE *f;
90 
91  if (argc>2)
92  {
93  /*Init parameters*/
94  CreateFileName(NULL,arg[1],NULL,PARAM_EXT,&fparam);
95  #if (_DEBUG>0)
96  printf("Reading parameter file : %s\n",GetFileFullName(&fparam));
97  #endif
98  InitParametersFromFile(GetFileFullName(&fparam),&parameters);
99 
100  /*keep equations in the original form*/
101  ChangeParameter(CT_DUMMIFY,0,&parameters);
102 
103  /*Init world*/
104  CreateFileName(NULL,arg[1],NULL,WORLD_EXT,&fworld);
105  #if (_DEBUG>0)
106  printf("Reading world file : %s\n",GetFileFullName(&fworld));
107  #endif
108  /*Read the world file*/
109  InitWorldFromFile(&parameters,&fworld,&world);
110 
111  /*Add TWS equations*/
112  GenerateWorldTWSEquations(&parameters,arg[2],&cs,&world);
113 
114  /*Print resulting extended cuiksystem*/
115  CreateFileName(NULL,arg[1],"_TWS",CUIK_EXT,&fcuik);
116 
117  f=fopen(GetFileFullName(&fcuik),"w");
118  if (!f)
119  Error("Could not open output file in cuiksingequations");
120  #if (_DEBUG>0)
121  printf("Generating the _TWS.cuik file : %s\n",GetFileFullName(&fcuik));
122  #endif
123  PrintCuikSystemWithSimplification(&parameters,f,&cs);
124  fclose(f);
125 
126  /* link the parameter/joints/links files */
127  LinkFileNmeWithExtension(&fworld,PARAM_EXT ,&fcuik);
128  LinkFileNmeWithExtension(&fworld,JOINTS_EXT,&fcuik);
129  LinkFileNmeWithExtension(&fworld,LINKS_EXT ,&fcuik);
130 
131  /* Delete the data structures */
132  DeleteCuikSystem(&cs);
133  DeleteWorld(&world);
134  DeleteParameters(&parameters);
135 
136  /* Delete the file names */
137  DeleteFileName(&fparam);
138  DeleteFileName(&fworld);
139  DeleteFileName(&fcuik);
140  }
141  else
142  {
143  fprintf(stderr," Wrong number of parameters.\n");
144  fprintf(stderr," Use:\n");
145  fprintf(stderr," cuikTWS <Sing> <problem name>\n");
146  fprintf(stderr," where \n");
147  fprintf(stderr," <problem name> is the world file from which to generate the equations\n");
148  fprintf(stderr," <Sing> It must be the name of the link to focus\n");
149  }
150 
151  return(EXIT_SUCCESS);
152 }
153 
int main(int argc, char **arg)
Main body of the cuikTWS application.
Definition: cuikTWS.c:79
void PrintCuikSystemWithSimplification(Tparameters *p, FILE *f, TCuikSystem *cs)
Prints the simplified cuiksystem.
Definition: cuiksystem.c:5047
Data structure to hold the information about the name of a file.
Definition: filename.h:248
void InitWorldFromFile(Tparameters *p, Tfilename *f, Tworld *w)
Constructor.
void DeleteCuikSystem(TCuikSystem *cs)
Destructor.
Definition: cuiksystem.c:5113
Definition of the Tfilename type and the associated functions.
void Error(const char *s)
General error function.
Definition: error.c:80
#define PARAM_EXT
File extension for parameter files.
Definition: filename.h:131
All the necessary information to generate equations for mechanisms.
Definition: world.h:124
#define CUIK_EXT
File extension for equation files.
Definition: filename.h:70
Definition of the Tworld type and the associated functions.
void DeleteWorld(Tworld *w)
Destructor.
Definition: world.c:2792
Error and warning functions.
void DeleteFileName(Tfilename *fn)
Destructor.
Definition: filename.c:205
Definitions of constants and macros used in several parts of the cuik library.
A table of parameters.
void CreateFileName(char *path, char *name, char *suffix, char *ext, Tfilename *fn)
Constructor.
Definition: filename.c:22
void InitParametersFromFile(char *file, Tparameters *p)
Constructor from a file.
Definition: parameters.c:51
char * GetFileFullName(Tfilename *fn)
Gets the file full name (paht+name+extension).
Definition: filename.c:151
#define CT_DUMMIFY
Dummification level.
Definition: parameters.h:339
#define WORLD_EXT
File extension for problem files.
Definition: filename.h:161
void GenerateWorldTWSEquations(Tparameters *p, char *ln, TCuikSystem *cs, Tworld *w)
Adds variables/equations to detect translational workspace boundaries.
Definition: world.c:1994
#define JOINTS_EXT
File extension for files with samples represented by the joint values.
Definition: filename.h:187
A cuiksystem, i.e., a set of variables and equations defining a position analysis problem...
Definition: cuiksystem.h:181
void DeleteParameters(Tparameters *p)
Destructor.
Definition: parameters.c:295
void LinkFileNmeWithExtension(Tfilename *fn1, char *ext, Tfilename *fn2)
Creates a link to a given filename.
Definition: filename.c:177
Definition of the Tparameters type and the associated functions.
void ChangeParameter(unsigned int n, double v, Tparameters *p)
Sets the value for a particular parameter.
Definition: parameters.c:164
#define LINKS_EXT
File extension for files with samples represented by the link poses.
Definition: filename.h:180