GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: tests/main.cc Lines: 74 77 96.1 %
Date: 2023-06-05 08:59:09 Branches: 89 192 46.4 %

Line Branch Exec Source
1
/*
2
 *  Copyright
3
 */
4
#include <sot/pattern-generator/pg.h>
5
6
#include <algorithm>
7
#include <boost/algorithm/string.hpp>
8
#include <boost/filesystem.hpp>
9
#include <boost/property_tree/ptree.hpp>
10
#include <iostream>
11
#include <iterator>
12
#include <pinocchio/fwd.hpp>
13
#include <sot/core/debug.hh>
14
#include <sot/core/robot-utils.hh>
15
#include <sstream>
16
#include <string>
17
18
using namespace std;
19
20
1
void setEndEffectorParameters(dynamicgraph::sot::RobotUtilShrPtr aRobotUtil) {
21
2
  std::string lparameter_name = "/pg/remap/r_ankle";
22
2
  std::string lparameter_value = "leg_right_6_link";
23
1
  aRobotUtil->set_parameter<string>(lparameter_name, lparameter_value);
24
25
1
  lparameter_name = "/pg/remap/l_ankle";
26
1
  lparameter_value = "leg_left_6_link";
27
1
  aRobotUtil->set_parameter<string>(lparameter_name, lparameter_value);
28
29
1
  lparameter_name = "/pg/remap/r_wrist";
30
1
  lparameter_value = "arm_right_7_link";
31
1
  aRobotUtil->set_parameter<string>(lparameter_name, lparameter_value);
32
33
1
  lparameter_name = "/pg/remap/l_wrist";
34
1
  lparameter_value = "arm_left_7_link";
35
1
  aRobotUtil->set_parameter<string>(lparameter_name, lparameter_value);
36
37
1
  lparameter_name = "/pg/remap/body";
38
1
  lparameter_value = "base_link";
39
1
  aRobotUtil->set_parameter<string>(lparameter_name, lparameter_value);
40
41
1
  lparameter_name = "/pg/remap/torso";
42
1
  lparameter_value = "torso_2_link";
43
1
  aRobotUtil->set_parameter<string>(lparameter_name, lparameter_value);
44
1
}
45
46
1
void setFeetParameters(dynamicgraph::sot::RobotUtilShrPtr aRobotUtil) {
47
  std::vector<std::string> lparameter_names_suffix = {
48
      "size/height",     "size/width",      "size/depth",
49



10
      "anklePosition/x", "anklePosition/y", "anklePosition/z"};
50
  std::vector<double> lparameter_values = {0.122, 0.205, 0.107,
51
2
                                           0.0,   0.0,   0.107};
52
53
2
  std::string lparameter_names_prefix = "/robot/specificities/feet/";
54
7
  for (unsigned int i = 0; i < 6; i++) {
55
    std::string full_parameter_name =
56

12
        lparameter_names_prefix + "right/" + lparameter_names_suffix[i];
57
58
12
    aRobotUtil->set_parameter<double>(full_parameter_name,
59
6
                                      lparameter_values[i]);
60
    full_parameter_name =
61

6
        lparameter_names_prefix + "left/" + lparameter_names_suffix[i];
62
12
    aRobotUtil->set_parameter<double>(full_parameter_name,
63
6
                                      lparameter_values[i]);
64
  }
65
1
}
66
67
1
void setParameters(const std::string &lrobot_description) {
68
1
  dynamicgraph::sot::RobotUtilShrPtr aRobotUtil;
69
70
  // Reading the parameter.
71
2
  string model_name("robot");
72
73
  // Search for the robot util related to robot_name.
74

1
  if (!dynamicgraph::sot::isNameInRobotUtil(model_name))
75
1
    aRobotUtil = dynamicgraph::sot::createRobotUtil(model_name);
76
77
1
  std::string lparameter_name("/robot_description");
78
79
  // Then set the complete robot model in the parameter set.
80
1
  aRobotUtil->set_parameter<string>(lparameter_name, lrobot_description);
81
82
  /// Specify the end effectors in the parameter server object.
83
1
  setEndEffectorParameters(aRobotUtil);
84
85
  /// Specify the size of the feet.
86
1
  setFeetParameters(aRobotUtil);
87
1
}
88
89
1
int main(int, char **) {
90
  using namespace std;
91

3
  dynamicgraph::sot::PatternGenerator aPG;
92
93
  // Search talos_reduced_wpg.urdf
94
  string filename(EXAMPLE_ROBOT_DATA_MODEL_DIR
95
2
                  "/talos_data/robots/talos_full_v2.urdf");
96

1
  if (!boost::filesystem::exists(filename)) {
97
    cerr << "Unable to find talos_reduced_wpg.urdf" << endl;
98
    exit(-1);
99
  }
100
101
  // Otherwise read the file
102
2
  ifstream talos_reduced_wpg_file(filename);
103
2
  ostringstream oss;
104

1
  oss << talos_reduced_wpg_file.rdbuf();
105
106
  // Name of the parameter
107
2
  const string lparameter_name("/robot_description");
108
109
  // Model of the robot inside a string.
110
2
  const string lrobot_description = oss.str();
111
112
  std::shared_ptr<std::vector<std::string>> alist_of_robots =
113
2
      dynamicgraph::sot::getListOfRobots();
114
115
1
  unsigned int idx = 0;
116

1
  for (auto an_it_of_robot : *alist_of_robots) {
117
    std::cout << __FILE__ << " " << idx++ << " " << an_it_of_robot << std::endl;
118
  }
119
120
1
  setParameters(lrobot_description);
121
122
  // Build the pattern generator
123
1
  aPG.buildPGI();
124
125
  //  aPG.InitState();
126

1
  aPG.pgCommandLine(":samplingperiod 0.005");
127

1
  aPG.pgCommandLine(":previewcontroltime 1.6");
128

1
  aPG.pgCommandLine(":walkmode 0");
129

1
  aPG.pgCommandLine(":omega 0.0");
130

1
  aPG.pgCommandLine(":stepheight 0.05");
131

1
  aPG.pgCommandLine(":singlesupporttime 0.78");
132

1
  aPG.pgCommandLine(":doublesupporttime 0.02");
133

1
  aPG.pgCommandLine(":armparameters 0.5");
134

1
  aPG.pgCommandLine(":LimitsFeasibility 0.0");
135

1
  aPG.pgCommandLine(":ZMPShiftParameters 0.015 0.015 0.015 0.015");
136

1
  aPG.pgCommandLine(":TimeDistributeParameters 2.0 3.5 1.0 3.0");
137

1
  aPG.pgCommandLine(":UpperBodyMotionParameters -0.1 -1.0 0.0");
138
139
2
  dynamicgraph::Vector val_jointPosition(38);
140
1
  double val_jointPositiond[38] = {
141
      0.0,       0.0,       1.018213,  0.0,       0.0,       0.0,      0.0,
142
      0.0,       -0.411354, 0.859395,  -0.448041, -0.001708, 0.0,      0.0,
143
      -0.411354, 0.859395,  -0.448041, -0.001708, 0.0,       0.006761, 0.25847,
144
      0.173046,  -0.0002,   -0.525366, 0.0,       -0.0,      0.1,      -0.005,
145
      -0.25847,  -0.173046, 0.0002,    -0.525366, 0.0,       0.0,      0.1,
146
      -0.005,    0.,        0.};
147
148

39
  for (unsigned int i = 0; i < val_jointPosition.size(); i++)
149
38
    val_jointPosition[i] = val_jointPositiond[i];
150
1
  aPG.jointPositionSIN.setConstant(val_jointPosition);
151
1
}