1 #include "header/jacobianHelper.h" 11 int computeWholeJacobianEE(
struct Infos *robInfo){
15 Eigen::Matrix <double, 3, ARM_DOF> w_J_man_pos;
16 Eigen::Matrix <double, 3, ARM_DOF> w_J_man_or;
17 Eigen::Matrix3d wR0 = robInfo->robotState.
wTv_eigen.topLeftCorner<3,3>() *
18 robInfo->robotStruct.vTlink0.topLeftCorner<3,3>();
21 w_J_man_pos = wR0 * robInfo->robotState.
link0_Jee_man.topRows<3>();
22 w_J_man_or = wR0 * robInfo->robotState.
link0_Jee_man.bottomRows<3>();
25 Eigen::Matrix<double, 3, TOT_DOF> w_J_pos;
28 w_J_pos.leftCols<ARM_DOF>() = w_J_man_pos;
31 Eigen::Matrix3d wRv = robInfo->robotState.
wTv_eigen.topLeftCorner<3,3>();
32 w_J_pos.block<3,3>(0,ARM_DOF) = wRv;
35 Eigen::Matrix3d vRlink0 = robInfo->robotStruct.vTlink0.topLeftCorner<3,3>();
37 Eigen::Vector3d v_Distv0 = robInfo->robotStruct.vTlink0.topRightCorner<3,1>();
39 Eigen::Vector3d link0_link0DistEe = robInfo->robotState.link0Tee_eigen.topRightCorner<3,1>();
40 Eigen::Matrix3d wRlink0 = wRv*vRlink0;
42 Eigen::Matrix3d skew__w_Dist_v0 = FRM::skewMat(wRv * v_Distv0);
43 Eigen::Matrix3d skew__w_Dist_0ee = FRM::skewMat(wRlink0 * link0_link0DistEe);
44 w_J_pos.rightCols<3>() = -(skew__w_Dist_v0 + skew__w_Dist_0ee) * wRv;
48 Eigen::Matrix<double, 3, TOT_DOF> w_J_or;
49 w_J_or.leftCols<ARM_DOF>() = w_J_man_or;
50 w_J_or.block<3,3>(0,ARM_DOF) = Eigen::Matrix3d::Zero();
51 w_J_or.rightCols<3>() = wRv;
54 robInfo->robotState.w_Jee_robot.topRows<3>() = w_J_pos;
55 robInfo->robotState.w_Jee_robot.bottomRows<3>() = w_J_or;
65 int computeWholeJacobianTool(
struct Infos *robInfo){
69 Eigen::Matrix <double, 3, ARM_DOF> w_J_man_pos;
70 Eigen::Matrix <double, 3, ARM_DOF> w_J_man_or;
71 Eigen::Matrix3d wRv = robInfo->robotState.
wTv_eigen.topLeftCorner<3,3>();
74 w_J_man_pos = wRv * robInfo->robotState.v_Jtool_man.topRows<3>();
75 w_J_man_or = wRv * robInfo->robotState.v_Jtool_man.bottomRows<3>();
78 Eigen::Matrix<double, 3, TOT_DOF> w_J_pos;
81 w_J_pos.leftCols<ARM_DOF>() = w_J_man_pos;
84 w_J_pos.block<3,3>(0,ARM_DOF) = wRv;
88 Eigen::Vector3d w_DistVTool =
89 robInfo->transforms.wTt_eigen.topRightCorner<3,1>() -
90 robInfo->robotState.
wTv_eigen.topRightCorner<3,1>();
94 Eigen::Matrix3d skew__w_Dist_vtool = FRM::skewMat(w_DistVTool);
95 w_J_pos.rightCols<3>() = -(skew__w_Dist_vtool) * wRv;
99 Eigen::Matrix<double, 3, TOT_DOF> w_J_or;
100 w_J_or.leftCols<ARM_DOF>() = w_J_man_or;
101 w_J_or.block<3,3>(0,ARM_DOF) = Eigen::Matrix3d::Zero();
102 w_J_or.rightCols<3>() = wRv;
106 robInfo->robotState.w_Jtool_robot.topRows<3>() = w_J_pos;
107 robInfo->robotState.w_Jtool_robot.bottomRows<3>() = w_J_or;
Eigen::Matrix< double, 6, ARM_DOF > link0_Jee_man
Jacobians.
Eigen::Matrix4d wTv_eigen
Transforms.