Skip to content

Commit

Permalink
transformed selection matrix test
Browse files Browse the repository at this point in the history
  • Loading branch information
KokiYamane committed Dec 18, 2024
1 parent bfd5415 commit 7d1a089
Show file tree
Hide file tree
Showing 90 changed files with 82 additions and 7 deletions.
Empty file modified .github/ISSUE_TEMPLATE/feature_request.md
100644 → 100755
Empty file.
Empty file modified .github/ISSUE_TEMPLATE/general-issue.md
100644 → 100755
Empty file.
Empty file modified .github/workflows/industrial_ci_melodic_action.yml
100644 → 100755
Empty file.
Empty file modified .github/workflows/industrial_ci_noetic_action.yml
100644 → 100755
Empty file.
Empty file modified .gitlab-ci.yml
100644 → 100755
Empty file.
Empty file modified LICENSE
100644 → 100755
Empty file.
Empty file modified LICENSES/license.cpp
100644 → 100755
Empty file.
Empty file modified README.md
100644 → 100755
Empty file.
Empty file modified cartesian_compliance_controller/CMakeLists.txt
100644 → 100755
Empty file.
Empty file modified cartesian_compliance_controller/README.md
100644 → 100755
Empty file.
Empty file.
Empty file.
79 changes: 77 additions & 2 deletions ...ce_controller/include/cartesian_compliance_controller/cartesian_compliance_controller.hpp
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,10 @@ template <class HardwareInterface>
ctrl::Vector6D CartesianComplianceController<HardwareInterface>::
computeComplianceError()
{
std::cout << "m_selection_matrix: " << std::endl << m_selection_matrix << std::endl;
bool powder_grounding = true;
// bool powder_grounding = false;

ctrl::Vector6D net_force;
if (!m_use_parallel_force_position_control)
net_force =
Expand All @@ -159,7 +163,77 @@ computeComplianceError()

// Sensor and target force in base orientation
+ ForceBase::computeForceError();
else // Add a selection matrix to allow finer control of which control to use for each
else if (powder_grounding) {
auto pose = Base::m_ik_solver->getEndEffectorPose();
std::cout << "xyz: " << pose.p.x() << ", " << pose.p.y() << ", " << pose.p.z() << std::endl;
ctrl::Vector3D ee_pos;
ee_pos << pose.p.x(), pose.p.y(), pose.p.z();
std::cout<<"ee_pos:"<<std::endl<<ee_pos<<std::endl;
ctrl::Vector3D center;
center << 0.0, 0.5, 0.04;
std::cout<<"center:"<<std::endl<<center<<std::endl;
ctrl::Vector3D normal_vec;
normal_vec = (ee_pos - center).normalized();
std::cout<<"normal_vec:"<<std::endl<<normal_vec<<std::endl;
ctrl::Vector3D x_basis;
x_basis << 1.0, 0.0, 0.0;
ctrl::Vector3D u_x = x_basis - x_basis.dot(normal_vec) * normal_vec;
std::cout<<"u_x:"<<std::endl<<u_x<<std::endl;
u_x.normalize();
ctrl::Vector3D y_basis;
y_basis << 0.0, 1.0, 0.0;
ctrl::Vector3D u_y = y_basis - y_basis.dot(normal_vec) * normal_vec - y_basis.dot(u_x) * u_x;
u_y.normalize();
std::cout << "u_y:" << std::endl << u_y << std::endl;
ctrl::Matrix3D R_base2surface;
R_base2surface << u_x(0), u_y(0), normal_vec(0),
u_x(1), u_y(1), normal_vec(1),
u_x(2), u_y(2), normal_vec(2);
std::cout << "R_base2surface:" << std::endl << R_base2surface << std::endl;
ctrl::Matrix3D R_check = R_base2surface * R_base2surface.transpose();
std::cout << "R_check:" << std::endl << R_check << std::endl;
ctrl::Matrix3D px;
px << 0, -pose.p.z(), pose.p.y(),
pose.p.z(), 0, -pose.p.x(),
-pose.p.y(), pose.p.x(), 0;
std::cout << "px:" << std::endl << px << std::endl;
ctrl::Matrix3D pxR;
pxR = px * R_base2surface;
std::cout << "pxR:" << std::endl << pxR << std::endl;
ctrl::Matrix6D Adjoint_T;
Adjoint_T << R_base2surface, ctrl::Matrix3D::Zero(3, 3),
pxR, R_base2surface;
std::cout << "Adjoint_T:" << std::endl << Adjoint_T << std::endl;
ctrl::Matrix6D Adjoint_T_inv;
ctrl::Matrix3D R_base2surface_T = R_base2surface.transpose();
Adjoint_T_inv << R_base2surface_T, ctrl::Matrix3D::Zero(3, 3),
pxR.transpose(), R_base2surface;
std::cout << "Adjoint_T_inv:" << std::endl << Adjoint_T_inv << std::endl;
ctrl::Matrix6D Adjoint_T_inv_check;
Adjoint_T_inv_check = Adjoint_T * Adjoint_T_inv;
std::cout << "Adjoint_T_inv_check:" << std::endl << Adjoint_T_inv_check << std::endl;

ctrl::Matrix6D m_selection_matrix_pd = Adjoint_T_inv * m_selection_matrix * Adjoint_T;
std::cout << "m_selection_matrix_pd: " << std::endl << m_selection_matrix_pd << std::endl;

// ctrl::Matrix6D m_selection_matrix_pd_check;
// m_selection_matrix_pd_check =
// m_selection_matrix_pd +
// (ctrl::Matrix6D::Identity() - m_selection_matrix_pd);
// std::cout << "m_selection_matrix_pd_check: " << std::endl << m_selection_matrix_pd_check << std::endl;

net_force =

// Position controller: PID gains scale by m_stiffness
m_selection_matrix_pd *
Base::displayInBaseLink(m_stiffness, m_compliance_ref_link) *
MotionBase::computeMotionError()

// Sensor and target force in base orientation
+ ((ctrl::Matrix6D::Identity() - m_selection_matrix_pd) *
ForceBase::computeForceError());
}
else // Add a selection matrix to allow finer control of which control to use for each
{
net_force =

Expand All @@ -169,7 +243,8 @@ computeComplianceError()
// Sensor and target force in base orientation
+ ((ctrl::Matrix6D::Identity() - m_selection_matrix) * ForceBase::computeForceError());
}



return net_force;
}

Expand Down
Empty file modified cartesian_compliance_controller/package.xml
100644 → 100755
Empty file.
Empty file.
Empty file modified cartesian_controller_base/CMakeLists.txt
100644 → 100755
Empty file.
Empty file modified cartesian_controller_base/README.md
100644 → 100755
Empty file.
Empty file modified cartesian_controller_base/ik_solver_plugin.xml
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
10 changes: 5 additions & 5 deletions cartesian_controller_base/include/cartesian_controller_base/cartesian_controller_base.hpp
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ CartesianControllerBase()
template <class HardwareInterface>
bool CartesianControllerBase<HardwareInterface>::
init(HardwareInterface* hw, ros::NodeHandle& nh)
{
{

if (m_already_initialized)
{
Expand Down Expand Up @@ -203,16 +203,16 @@ init(HardwareInterface* hw, ros::NodeHandle& nh)
// Connect dynamic reconfigure and overwrite the default values with values
// on the parameter server. This is done automatically if parameters with
// the according names exist.

m_callback_type = std::bind(
&CartesianControllerBase<HardwareInterface>::dynamicReconfigureCallback, this, std::placeholders::_1, std::placeholders::_2);

m_dyn_conf_server.reset(
new dynamic_reconfigure::Server<ControllerConfig>(
ros::NodeHandle(nh.getNamespace())));
m_dyn_conf_server->setCallback(m_callback_type);


m_error_scale = 1.0;
m_iterations = 1;
m_solver_callback_type = std::bind(
Expand All @@ -222,7 +222,7 @@ init(HardwareInterface* hw, ros::NodeHandle& nh)
new dynamic_reconfigure::Server<SolverConfig>(
ros::NodeHandle(nh.getNamespace() + "/solver")));
m_solver_dyn_conf_server->setCallback(m_solver_callback_type);


m_already_initialized = true;

Expand Down
Empty file modified cartesian_controller_base/package.xml
100644 → 100755
Empty file.
Empty file modified cartesian_controller_base/src/DampedLeastSquaresSolver.cpp
100644 → 100755
Empty file.
Empty file modified cartesian_controller_base/src/ForwardDynamicsSolver.cpp
100644 → 100755
Empty file.
Empty file modified cartesian_controller_base/src/IKSolver.cpp
100644 → 100755
Empty file.
Empty file modified cartesian_controller_base/src/JacobianTransposeSolver.cpp
100644 → 100755
Empty file.
Empty file modified cartesian_controller_base/src/PDController.cpp
100644 → 100755
Empty file.
Empty file.
Empty file modified cartesian_controller_base/src/SpatialPDController.cpp
100644 → 100755
Empty file.
Empty file modified cartesian_controller_examples/CMakeLists.txt
100644 → 100755
Empty file.
Empty file modified cartesian_controller_examples/config/example_controllers.yaml
100644 → 100755
Empty file.
Empty file modified cartesian_controller_examples/config/example_hw_config.yaml
100644 → 100755
Empty file.
Empty file modified cartesian_controller_examples/etc/examples.rviz
100644 → 100755
Empty file.
Empty file modified cartesian_controller_examples/launch/examples.launch
100644 → 100755
Empty file.
Empty file modified cartesian_controller_examples/package.xml
100644 → 100755
Empty file.
Empty file modified cartesian_controller_examples/urdf/robot.urdf.xacro
100644 → 100755
Empty file.
Empty file modified cartesian_controller_handles/CMakeLists.txt
100644 → 100755
Empty file.
Empty file modified cartesian_controller_handles/README.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified cartesian_controller_handles/launch/moving_target.launch
100644 → 100755
Empty file.
Empty file modified cartesian_controller_handles/package.xml
100644 → 100755
Empty file.
Empty file.
Empty file modified cartesian_controller_tests/CMakeLists.txt
100644 → 100755
Empty file.
Empty file modified cartesian_controller_tests/README.md
100644 → 100755
Empty file.
Empty file modified cartesian_controller_tests/cartesian_controllers.test
100644 → 100755
Empty file.
Empty file modified cartesian_controller_tests/config/invalid_controllers.yaml
100644 → 100755
Empty file.
Empty file modified cartesian_controller_tests/package.xml
100644 → 100755
Empty file.
Empty file modified cartesian_controller_utilities/CMakeLists.txt
100644 → 100755
Empty file.
Empty file modified cartesian_controller_utilities/README.md
100644 → 100755
Empty file.
Empty file modified cartesian_controller_utilities/etc/button_cmds.yaml
100644 → 100755
Empty file.
Empty file modified cartesian_controller_utilities/launch/buttons_events.launch
100644 → 100755
Empty file.
Empty file modified cartesian_controller_utilities/launch/spacenav.launch
100644 → 100755
Empty file.
Empty file modified cartesian_controller_utilities/launch/spacenav_to_pose.launch
100644 → 100755
Empty file.
Empty file modified cartesian_controller_utilities/launch/spacenav_to_wrench.launch
100644 → 100755
Empty file.
Empty file modified cartesian_controller_utilities/package.xml
100644 → 100755
Empty file.
Empty file modified cartesian_controllers/CMakeLists.txt
100644 → 100755
Empty file.
Empty file modified cartesian_controllers/package.xml
100644 → 100755
Empty file.
Empty file modified cartesian_force_controller/CMakeLists.txt
100644 → 100755
Empty file.
Empty file modified cartesian_force_controller/README.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified cartesian_force_controller/package.xml
100644 → 100755
Empty file.
Empty file modified cartesian_force_controller/src/cartesian_force_controller.cpp
100644 → 100755
Empty file.
Empty file modified cartesian_motion_controller/CMakeLists.txt
100644 → 100755
Empty file.
Empty file modified cartesian_motion_controller/README.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified cartesian_motion_controller/package.xml
100644 → 100755
Empty file.
Empty file modified cartesian_motion_controller/src/cartesian_motion_controller.cpp
100644 → 100755
Empty file.
Empty file modified joint_to_cartesian_controller/CMakeLists.txt
100644 → 100755
Empty file.
Empty file modified joint_to_cartesian_controller/README.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified joint_to_cartesian_controller/package.xml
100644 → 100755
Empty file.
Empty file modified joint_to_cartesian_controller/src/JointControllerAdapter.cpp
100644 → 100755
Empty file.
Empty file.
Empty file modified resources/doc/Solver_details.md
100644 → 100755
Empty file.
Empty file modified resources/images/Control_Loop.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 7d1a089

Please sign in to comment.