@@ -137,9 +137,10 @@ CartesianImpedanceController::on_activate(
137137 m_q_starting_pose = Base::m_joint_positions.data ;
138138
139139 m_target_wrench = ctrl::Vector6D::Zero ();
140-
141- m_logger = XBot::MatLogger2::MakeLogger (" /tmp/my_log " );
140+ # if LOGGING
141+ m_logger = XBot::MatLogger2::MakeLogger (" /tmp/cart_impedance_log " );
142142 m_logger->set_buffer_mode (XBot::VariableBuffer::Mode::circular_buffer);
143+ #endif
143144 return rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::
144145 CallbackReturn::SUCCESS;
145146}
@@ -237,46 +238,6 @@ ctrl::VectorND CartesianImpedanceController::computeTorque() {
237238 m_dyn_solver->JntToMass (Base::m_joint_positions, M);
238239 Eigen::MatrixXd Lambda = (jac * M.data .inverse () * jac.transpose ()).inverse ();
239240
240- // RCLCPP_INFO_STREAM(get_node()->get_logger(), "M: " << M.data);
241-
242- // lambda that computes condition number
243- auto compute_condition_number = [](const Eigen::MatrixXd &matrix) {
244- Eigen::JacobiSVD<Eigen::MatrixXd> svd (matrix);
245- Eigen::VectorXd singular_values = svd.singularValues ();
246- return singular_values (0 ) / singular_values (singular_values.size () - 1 );
247- };
248- // RCLCPP_INFO_STREAM(
249- // get_node()->get_logger(),
250- // "Condition number of Jacobian: " << compute_condition_number(jac));
251- // RCLCPP_INFO_STREAM(
252- // get_node()->get_logger(),
253- // "Condition number of M: " << compute_condition_number(M.data));
254- // RCLCPP_INFO_STREAM(
255- // get_node()->get_logger(),
256- // "Condition number of Lambda: " << compute_condition_number(Lambda));
257-
258- // // compue eigenvalues of M
259- // Eigen::EigenSolver<Eigen::MatrixXd> es(M.data);
260- // Eigen::VectorXd eigenvalues = es.eigenvalues().real();
261- // RCLCPP_INFO_STREAM(get_node()->get_logger(),
262- // "Eigenvalues of M: " << eigenvalues.transpose());
263- // RCLCPP_INFO_STREAM(get_node()->get_logger(),
264- // "Condition number of M: " << eigenvalues.maxCoeff() /
265- // eigenvalues.minCoeff());
266- // Eigen::EigenSolver<Eigen::MatrixXd> es3(jac);
267- // RCLCPP_INFO_STREAM(
268- // get_node()->get_logger(),
269- // "Eigenvalues of Lambda: " << es3.eigenvalues().real().transpose());
270- // RCLCPP_INFO_STREAM(
271- // get_node()->get_logger(),
272- // "Condition number of Lambda: " << es3.eigenvalues().real().maxCoeff() /
273- // es3.eigenvalues().real().minCoeff());
274- // Eigen::JacobiSVD<Eigen::MatrixXd> svd(jac);
275- // RCLCPP_INFO_STREAM(
276- // get_node()->get_logger(),
277- // "Eigenvalues of Jacobian: " << svd.singularValues().transpose());
278- // RCLCPP_INFO_STREAM(get_node()->get_logger(), "----");
279-
280241 // Compute the motion error
281242 ctrl::Vector6D motion_error = computeMotionError ();
282243
@@ -366,7 +327,14 @@ ctrl::VectorND CartesianImpedanceController::computeTorque() {
366327#endif
367328#if LOGGING
368329 Eigen::VectorXd Force = K_d * motion_error - D_d * (jac * q_dot);
369-
330+ // lambda that computes condition number
331+ auto compute_condition_number = [](const Eigen::MatrixXd &matrix) {
332+ Eigen::JacobiSVD<Eigen::MatrixXd> svd (matrix);
333+ Eigen::VectorXd singular_values = svd.singularValues ();
334+ return singular_values (0 ) / singular_values (singular_values.size () - 1 );
335+ };
336+ m_logger->add (" condition_number mass" , compute_condition_number (M.data ));
337+ m_logger->add (" condition_number jac" , compute_condition_number (jac));
370338 for (int i = 0 ; i < 7 ; i++) {
371339 m_logger->add (" stiffness_" + std::to_string (i), stiffness_torque (i));
372340 m_logger->add (" damping_" + std::to_string (i), damping_torque (i));
0 commit comments