A sparse MPC solver for walking motion generation.
oruw_log.cpp
Go to the documentation of this file.
1 /**
2  * @file
3  * @author Alexander Sherikov
4  * @date 03.01.2012 19:17:44 MSK
5  */
6 
7 
8 #include "oruw_log.h"
9 
10 
11 #ifdef ORUW_LOG_ENABLE
13 
14 
16 {
17  FJointsLog = fopen ("./oru_joints.log", "w");
18  FCoMLog = fopen ("./oru_com.log", "w");
19  FFeetLog = fopen ("./oru_feet.log", "w");
20  FMessages = fopen ("./oru_messages.log", "w");
21 }
22 
23 
25 {
26  fclose (FJointsLog);
27  fclose (FCoMLog);
28  fclose (FFeetLog);
29  fclose (FMessages);
30 }
31 
32 
34  const jointState& state_sensor,
35  const jointState& state_expected)
36 {
37  for (int i = 0; i < JOINTS_NUM; i++)
38  {
39  fprintf (FJointsLog, "%f ", state_sensor.q[i]);
40  }
41  fprintf (FJointsLog, " ");
42 
43 
44  for (int i = 0; i < JOINTS_NUM; i++)
45  {
46  fprintf (FJointsLog, "%f ", state_expected.q[i]);
47  }
48  fprintf (FJointsLog, "\n");
49 }
50 
51 
53  smpc_parameters &mpc,
54  nao_igm& nao)
55 {
56  fprintf (FCoMLog, "%f %f %f ", mpc.init_state.x(), mpc.init_state.y(), mpc.hCoM);
57 
58 
59  double CoM[POSITION_VECTOR_SIZE];
60  nao.getCoM(nao.state_sensor, CoM);
61 
62  fprintf (FCoMLog, "%f %f %f\n", CoM[0], CoM[1], CoM[2]);
63 }
64 
65 
66 void oruw_log::logFeet(nao_igm& nao)
67 {
68  double l_expected[POSITION_VECTOR_SIZE];
69  double l_real[POSITION_VECTOR_SIZE];
70  double r_expected[POSITION_VECTOR_SIZE];
71  double r_real[POSITION_VECTOR_SIZE];
72 
73  nao.getFeetPositions (
74  l_expected,
75  r_expected,
76  l_real,
77  r_real);
78 
79  fprintf (FFeetLog, "%f %f %f %f %f %f",
80  l_expected[0], l_expected[1], l_expected[2],
81  l_real[0], l_real[1], l_real[2]);
82  fprintf (FFeetLog, " %f %f %f %f %f %f\n",
83  r_expected[0], r_expected[1], r_expected[2],
84  r_real[0], r_real[1], r_real[2]);
85 }
86 
87 
88 void oruw_log::logSolverInfo (smpc::solver *solver, int mpc_solver_type)
89 {
90  if (solver != NULL)
91  {
92  if (mpc_solver_type == SOLVER_TYPE_AS)
93  {
94  smpc::solver_as * solver_ptr = dynamic_cast<smpc::solver_as *>(solver);
95  if (solver_ptr != NULL)
96  {
97  fprintf(oruw_log_instance->FMessages, "AS size = %i // Added = %i // Removed = %i\n",
98  solver_ptr->active_set_size,
99  solver_ptr->added_constraints_num,
100  solver_ptr->removed_constraints_num);
101  }
102  }
103  else if (mpc_solver_type == SOLVER_TYPE_IP)
104  {
105  smpc::solver_ip * solver_ptr = dynamic_cast<smpc::solver_ip *>(solver);
106  if (solver_ptr != NULL)
107  {
108  fprintf(oruw_log_instance->FMessages, "ext loops = %d // int loops = %d // bs loops = %d\n",
109  solver_ptr->ext_loop_iterations,
110  solver_ptr->int_loop_iterations,
111  solver_ptr->bt_search_iterations);
112  }
113  }
114  }
115 }
116 #endif // ORUW_LOG_ENABLE
FILE * FJointsLog
Definition: oruw_log.h:40
void logJointValues(const jointState &, const jointState &)
Definition: oruw_log.cpp:33
FILE * FCoMLog
Definition: oruw_log.h:41
oruw_log * oruw_log_instance
Definition: oruw_log.cpp:12
FILE * FFeetLog
Definition: oruw_log.h:42
void logCoM(smpc_parameters &, nao_igm &)
Definition: oruw_log.cpp:52
void logSolverInfo(smpc::solver *, int)
Definition: oruw_log.cpp:88
FILE * FMessages
Definition: oruw_log.h:43
void logFeet(nao_igm &nao)
Definition: oruw_log.cpp:66
~oruw_log()
Definition: oruw_log.cpp:24
oruw_log()
Definition: oruw_log.cpp:15