32 (std::vector<int16_t>& _strokes,
const std::vector<double>& _angles)
34 static const float rad2Deg = 180.0 / M_PI;
35 static const float scale = 100.0;
50 _strokes[0] =
static_cast<int16_t
>(scale * rad2Deg * _angles[0]);
51 _strokes[1] =
static_cast<int16_t
>(scale * waist.
one);
52 _strokes[2] =
static_cast<int16_t
>(scale * waist.
two);
58 _strokes[5] =
static_cast<int16_t
>(-scale * rad2Deg * _angles[5]);
61 _strokes[7] =
static_cast<int16_t
>(-scale * rad2Deg * _angles[7]);
62 _strokes[8] =
static_cast<int16_t
>(scale * l_wrist.
one);
63 _strokes[9] =
static_cast<int16_t
>(scale * l_wrist.
two);
64 _strokes[10] =
static_cast<int16_t
>(scale * (rad2Deg * _angles[10] + 50.0) * 0.18);
66 _strokes[11] =
static_cast<int16_t
>(scale * rad2Deg * _angles[11]);
67 _strokes[12] =
static_cast<int16_t
>(scale * neck.
two);
68 _strokes[13] =
static_cast<int16_t
>(scale * neck.
one);
74 _strokes[16] =
static_cast<int16_t
>(-scale * rad2Deg * _angles[16]);
77 _strokes[18] =
static_cast<int16_t
>(-scale * rad2Deg * _angles[18]);
78 _strokes[19] =
static_cast<int16_t
>(scale * r_wrist.
two);
79 _strokes[20] =
static_cast<int16_t
>(scale * r_wrist.
one);
80 _strokes[21] =
static_cast<int16_t
>(-scale * (rad2Deg * _angles[21] - 50.0) * 0.18);
89 (std::vector<double>& _angles,
const std::vector<int16_t>& _strokes)
91 static const float deg2Rad = M_PI / 180.0;
92 static const float scale_inv = 0.01;
94 _angles[0] = deg2Rad * scale_inv * _strokes[0];
101 _angles[5] = -deg2Rad * scale_inv * _strokes[5];
103 _angles[7] = -deg2Rad * scale_inv * _strokes[7];
108 _angles[10] = deg2Rad * (scale_inv * _strokes[10] * 5.556 - 50.0);
110 _angles[11] = deg2Rad * scale_inv * _strokes[11];
118 _angles[16] = -deg2Rad * scale_inv * _strokes[16];
120 _angles[18] = -deg2Rad * scale_inv * _strokes[18];
125 _angles[21] = -deg2Rad * (scale_inv * _strokes[21] * 5.556 - 50.0);
std::vector< StrokeMap > table
bool makeTable(std::vector< StrokeMap > &_table, const std::string _file_name)
float setStrokeToAngle(const float _stroke, const std::vector< StrokeMap > &_inv_table)
std::vector< StrokeMap > inv_table
const std::string lifter_csv_dir
void Stroke2Angle(std::vector< double > &_angles, const std::vector< int16_t > &_strokes)
const std::string upper_csv_dir
float setAngleToStroke(const float _angle, const std::vector< StrokeMap > &_table)
DiffJoint setDualAngleToStroke(const float _r_angle, const float _p_angle, const std::vector< StrokeMap > &_r_table, const std::vector< StrokeMap > &_p_table, const bool _is_pitch=false)
PLUGINLIB_EXPORT_CLASS(transmission_interface::BiDirectionalEffortJointInterfaceProvider, transmission_interface::RequisiteProvider)
void Angle2Stroke(std::vector< int16_t > &_strokes, const std::vector< double > &_angles)
void makeInvTable(std::vector< StrokeMap > &_inv_table, const std::vector< StrokeMap > &_table)