10 ROS_INFO(
"[rokubimini][ForceTorqueCalibration][constructor]");
18 Eigen::Vector3d angVel, Eigen::Vector3d angAcc,
19 const Eigen::VectorXd& ftRaw)
49 Eigen::Vector3d angVel, Eigen::Vector3d angAcc)
51 Eigen::MatrixXd h = Eigen::Matrix<double, 6, 10>::Zero();
54 Eigen::Matrix3d ang_vel_skew =
skewMatrix(std::move(angVel));
55 Eigen::Matrix3d ang_acc_skew =
skewMatrix(std::move(angAcc));
56 Eigen::Matrix3d acc_skew =
skewMatrix(gravity - acc);
57 Eigen::Matrix3d ang_pow2 = ang_vel_skew * ang_vel_skew;
60 for (
int i = 0; i < 6; i++)
64 h.col(0).head(3) << (acc - gravity);
66 for (
int i = 0; i < 3; i++)
68 for (
int j = 0; j < 3; j++)
70 h(i, j + 1) = ang_pow2(i, j) + ang_acc_skew(i, j);
71 h(i + 3, j + 1) = acc_skew(i, j);
80 Eigen::Matrix3d skew_mat = Eigen::Matrix<double, 3, 3>::Zero();
82 skew_mat(0, 1) = -inVec[2];
83 skew_mat(0, 2) = inVec[1];
84 skew_mat(1, 2) = -inVec[0];
86 skew_mat(1, 0) = inVec[2];
87 skew_mat(2, 0) = -inVec[1];
88 skew_mat(2, 1) = inVec[0];
95 ROS_INFO(
"[rokubimini::ForceTorqueCalibration][getCalibParams] solve LS problem");
96 Eigen::VectorXd calib_params = Eigen::VectorXd::Zero(6);
105 ROS_INFO(
"[rokubimini::ForceTorqueCalibration][resetCalibration]");
Eigen::VectorXd ftReadings_
~ForceTorqueCalibration()
Eigen::Matrix3d skewMatrix(Eigen::Vector3d inVec)
Eigen::VectorXd getCalibParams()
void addMeasurement(const Eigen::Vector3d &acc, const Eigen::Vector3d &gravity, Eigen::Vector3d angVel, Eigen::Vector3d angAcc, const Eigen::VectorXd &ftRaw)
Eigen::MatrixXd measurementMat_
Eigen::MatrixXd createMeasurementMat(const Eigen::Vector3d &acc, const Eigen::Vector3d &gravity, Eigen::Vector3d angVel, Eigen::Vector3d angAcc)