4 #include <Eigen/StdVector>
8 #define M_PI 3.1415926535897932384626433832795
12 int main(
int argc,
char *argv[])
22 for(
auto i = 0; i < 12; i++)
28 Mat4d Tkuka_global = Mat4d::Identity(4,4);
29 Tkuka_global << -1, 0, 0, 420,
33 std::cout <<
"T kuka global:\n" << Tkuka_global << std::endl << std::endl;
35 Mat4d Tkuka_local = Mat4d::Identity(4,4);
36 std::cout <<
"T kuka local:\n" << Tkuka_local << std::endl << std::endl;
38 Mat4d Tbowl_local = Mat4d::Identity(4,4);
39 Tbowl_local.block<3,3>(0,0) =
rot_y(30*
M_PI/180);
40 Tbowl_local.block<3,1>(0,3) << 25.10, 0, 100.73;
41 std::cout <<
"Tbowl local:\n" << Tbowl_local << std::endl << std::endl;
43 Mat4d Tsnake_local = Mat4d::Identity(4,4);
44 Tsnake_local.block<3,1>(0,3) << 0, 0, 0;
45 Tsnake_local.block<3,3>(0,0) =
rot_z(1*
M_PI/180);
46 std::cout <<
"Tsnake:\n" << Tsnake_local << std::endl << std::endl;
49 Mat4d Tbowl_global = Tkuka_global * Tbowl_local ;
50 std::cout <<
"bowl global:\n" << Tbowl_global << std::endl << std::endl;
53 std::cout <<
"back to kuka:\n" << goback << std::endl << std::endl;
55 Mat4d bowl_motion = Mat4d::Identity(4,4);
56 bowl_motion.block<3,1>(0,3) << 0, 0, 0;
57 bowl_motion.block<3,3>(0,0) =
rot_z(1*
M_PI/180);
60 std::cout <<
"kuka motion:\n" << goback << std::endl << std::endl;
61 std::cout <<
"kuka motion:\n" << goback << std::endl << std::endl;
88 Mat4d tmpp = Mat4d::Identity(4,4);
89 tmpp.block<3,1>(0,3) << 12,23,56;
92 Mat4d start = Mat4d::Identity(4,4), goal = Mat4d::Identity(4,4), tmp = Mat4d::Identity(4,4);
93 start.block<3,1>(0,3) << -13,9,23;
100 std::cout << start << std::endl << std::endl;
101 std::cout << tmp << std::endl << std::endl;
102 std::cout << goal << std::endl << std::endl;
104 std::cout << tmpp << std::endl << std::endl;
107 std::cout << std::endl;
353 Eigen::Matrix4d target = inverse_kinematics.
get_tip_pose();
354 std::cout <<
"Wanted result qvec:" << std::endl << std::endl << inverse_kinematics.
get_q_vec() << std::endl << std::endl;
355 std::cout <<
"q:" << std::endl << std::endl << q << std::endl << std::endl;
363 std::cout <<
"Target:" << std::endl << std::endl << target << std::endl << std::endl;
364 std::cout <<
"Tt:" << std::endl << std::endl << Tt << std::endl << std::endl;
365 std::cout <<
"Result:" << std::endl << std::endl << inverse_kinematics.
get_tip_pose() << std::endl << std::endl;
366 std::cout <<
"qvec:" << std::endl << std::endl << inverse_kinematics.
get_q_vec() << std::endl << std::endl;
367 std::cout <<
"Error:" << std::endl << std::endl << inverse_kinematics.
get_error_norm() << std::endl << std::endl;
369 std::cout <<
"Continue with ENTER" << std::endl;
388 std::this_thread::sleep_for(std::chrono::seconds(10));