7 #include <sot/core/debug.hh> 8 #include <dynamic-graph/factory.h> 12 namespace torque_control {
13 namespace dg = ::dynamicgraph;
17 bool base_se3_to_sot(dg::sot::ConstRefVector pos, dg::sot::ConstRefMatrix R, dg::sot::RefVector q_sot) {
18 assert(q_sot.size() == 6);
19 assert(pos.size() == 3);
20 assert(R.rows() == 3);
21 assert(R.cols() == 3);
24 m = sqrt(R(2, 1) * R(2, 1) + R(2, 2) * R(2, 2));
25 p = atan2(-R(2, 0), m);
26 if (abs(abs(p) - M_PI / 2) < 0.001) {
28 y = -atan2(R(0, 1), R(1, 1));
30 y = atan2(R(1, 0), R(0, 0));
31 r = atan2(R(2, 1), R(2, 2));
44 assert(q_urdf.size() == 7);
45 assert(q_sot.size() == 6);
47 const double W = q_urdf[6];
48 const double X = q_urdf[3];
49 const double Y = q_urdf[4];
50 const double Z = q_urdf[5];
51 const Eigen::Matrix3d R = Eigen::Quaterniond(W, X, Y, Z).toRotationMatrix();
56 assert(q_urdf.size() == 7);
57 assert(q_sot.size() == 6);
59 const double r = q_sot[3];
60 const double p = q_sot[4];
61 const double y = q_sot[5];
62 const Eigen::AngleAxisd rollAngle(r, Eigen::Vector3d::UnitX());
63 const Eigen::AngleAxisd pitchAngle(p, Eigen::Vector3d::UnitY());
64 const Eigen::AngleAxisd yawAngle(y, Eigen::Vector3d::UnitZ());
65 const Eigen::Quaternion<double> quat = yawAngle * pitchAngle * rollAngle;
79 assert(q_urdf.size() ==
N_JOINTS + 7);
80 assert(q_sot.size() ==
N_JOINTS + 6);
148 assert(q_urdf.size() ==
N_JOINTS + 7);
149 assert(q_sot.size() ==
N_JOINTS + 6);
209 assert(v_urdf.size() ==
N_JOINTS + 6);
210 assert(v_sot.size() ==
N_JOINTS + 6);
211 v_sot.head<6>() = v_urdf.head<6>();
260 assert(v_urdf.size() ==
N_JOINTS + 6);
261 assert(v_sot.size() ==
N_JOINTS + 6);
262 v_urdf.head<6>() = v_sot.head<6>();
314 q_sot[12] = q_urdf[0];
315 q_sot[13] = q_urdf[1];
317 q_sot[14] = q_urdf[2];
318 q_sot[15] = q_urdf[3];
320 q_sot[23] = q_urdf[4];
321 q_sot[24] = q_urdf[5];
322 q_sot[25] = q_urdf[6];
323 q_sot[26] = q_urdf[7];
324 q_sot[27] = q_urdf[8];
325 q_sot[28] = q_urdf[9];
326 q_sot[29] = q_urdf[10];
328 q_sot[16] = q_urdf[11];
329 q_sot[17] = q_urdf[12];
330 q_sot[18] = q_urdf[13];
331 q_sot[19] = q_urdf[14];
332 q_sot[20] = q_urdf[15];
333 q_sot[21] = q_urdf[16];
334 q_sot[22] = q_urdf[17];
336 q_sot[6] = q_urdf[18];
337 q_sot[7] = q_urdf[19];
338 q_sot[8] = q_urdf[20];
339 q_sot[9] = q_urdf[21];
340 q_sot[10] = q_urdf[22];
341 q_sot[11] = q_urdf[23];
343 q_sot[0] = q_urdf[24];
344 q_sot[1] = q_urdf[25];
345 q_sot[2] = q_urdf[26];
346 q_sot[3] = q_urdf[27];
347 q_sot[4] = q_urdf[28];
348 q_sot[5] = q_urdf[29];
356 q_urdf[0] = q_sot[12];
357 q_urdf[1] = q_sot[13];
359 q_urdf[2] = q_sot[24];
360 q_urdf[3] = q_sot[25];
362 q_urdf[4] = q_sot[23];
363 q_urdf[5] = q_sot[24];
364 q_urdf[6] = q_sot[25];
365 q_urdf[7] = q_sot[26];
366 q_urdf[8] = q_sot[27];
367 q_urdf[9] = q_sot[28];
368 q_urdf[10] = q_sot[29];
370 q_urdf[11] = q_sot[16];
371 q_urdf[12] = q_sot[17];
372 q_urdf[13] = q_sot[18];
373 q_urdf[14] = q_sot[19];
374 q_urdf[15] = q_sot[20];
375 q_urdf[16] = q_sot[21];
376 q_urdf[17] = q_sot[22];
378 q_urdf[18] = q_sot[6];
379 q_urdf[19] = q_sot[7];
380 q_urdf[20] = q_sot[8];
381 q_urdf[21] = q_sot[9];
382 q_urdf[22] = q_sot[10];
383 q_urdf[23] = q_sot[11];
385 q_urdf[24] = q_sot[0];
386 q_urdf[25] = q_sot[1];
387 q_urdf[26] = q_sot[2];
388 q_urdf[27] = q_sot[3];
389 q_urdf[28] = q_sot[4];
390 q_urdf[29] = q_sot[5];
bool config_sot_to_urdf(dynamicgraph::sot::ConstRefVector q_sot, dynamicgraph::sot::RefVector q_urdf)
bool base_se3_to_sot(dynamicgraph::sot::ConstRefVector pos, dynamicgraph::sot::ConstRefMatrix R, dynamicgraph::sot::RefVector q_sot)
bool base_urdf_to_sot(dynamicgraph::sot::ConstRefVector q_urdf, dynamicgraph::sot::RefVector q_sot)
bool velocity_sot_to_urdf(dynamicgraph::sot::ConstRefVector v_sot, dynamicgraph::sot::RefVector v_urdf)
bool velocity_urdf_to_sot(dynamicgraph::sot::ConstRefVector v_urdf, dynamicgraph::sot::RefVector v_sot)
bool joints_sot_to_urdf(dynamicgraph::sot::ConstRefVector q_sot, dynamicgraph::sot::RefVector q_urdf)
bool config_urdf_to_sot(dynamicgraph::sot::ConstRefVector q_urdf, dynamicgraph::sot::RefVector q_sot)
bool joints_urdf_to_sot(dynamicgraph::sot::ConstRefVector q_urdf, dynamicgraph::sot::RefVector q_sot)
bool base_sot_to_urdf(dynamicgraph::sot::ConstRefVector q_sot, dynamicgraph::sot::RefVector q_urdf)