cartesian_impedance_controller.h
Go to the documentation of this file.
1 // Refered to https://github.com/frankaemika/franka_ros/tree/develop/franka_example_controllers
2 
3 #pragma once
4 
5 #include <memory>
6 #include <string>
7 #include <vector>
8 #include <fstream>
9 
11 #include <dynamic_reconfigure/server.h>
12 #include <geometry_msgs/PoseStamped.h>
15 #include <ros/node_handle.h>
16 #include <ros/time.h>
17 #include <Eigen/Dense>
18 
19 #include <serl_franka_controllers/compliance_paramConfig.h>
23 #include <serl_franka_controllers/ZeroJacobian.h>
24 
26 
28  franka_hw::FrankaModelInterface,
29  hardware_interface::EffortJointInterface,
30  franka_hw::FrankaStateInterface> {
31  public:
32  bool init(hardware_interface::RobotHW* robot_hw, ros::NodeHandle& node_handle) override;
33  void starting(const ros::Time&) override;
34  void update(const ros::Time&, const ros::Duration& period) override;
35 
36  private:
37  // Saturation
38  Eigen::Matrix<double, 7, 1> saturateTorqueRate(
39  const Eigen::Matrix<double, 7, 1>& tau_d_calculated,
40  const Eigen::Matrix<double, 7, 1>& tau_J_d); // NOLINT (readability-identifier-naming)
41 
42  std::unique_ptr<franka_hw::FrankaStateHandle> state_handle_;
43  std::unique_ptr<franka_hw::FrankaModelHandle> model_handle_;
44  std::vector<hardware_interface::JointHandle> joint_handles_;
45  std::array<double, 42> jacobian_array;
46 
47  double filter_params_{0.005};
48  double nullspace_stiffness_{20.0};
52  const double delta_tau_max_{1.0};
53  Eigen::Matrix<double, 6, 6> cartesian_stiffness_;
54  Eigen::Matrix<double, 6, 6> cartesian_stiffness_target_;
55  Eigen::Matrix<double, 6, 6> cartesian_damping_;
56  Eigen::Matrix<double, 6, 6> cartesian_damping_target_;
57  Eigen::Matrix<double, 6, 6> Ki_;
58  Eigen::Matrix<double, 6, 6> Ki_target_;
59 
60  // Created from the input parameters
61  Eigen::Matrix<double, 3, 1> translational_clip_min_;
62  Eigen::Matrix<double, 3, 1> translational_clip_max_;
63  Eigen::Matrix<double, 3, 1> rotational_clip_min_;
64  Eigen::Matrix<double, 3, 1> rotational_clip_max_;
65  Eigen::Matrix<double, 7, 1> q_d_nullspace_;
66  Eigen::Vector3d position_d_;
67  Eigen::Matrix<double, 6, 1> error_;
68  Eigen::Matrix<double, 6, 1> error_i;
69  Eigen::Quaterniond orientation_d_;
70  Eigen::Vector3d position_d_target_;
71  Eigen::Quaterniond orientation_d_target_;
72 
73  // Dynamic reconfigure
74  std::unique_ptr<dynamic_reconfigure::Server<serl_franka_controllers::compliance_paramConfig>>
77  void complianceParamCallback(serl_franka_controllers::compliance_paramConfig& config,
78  uint32_t level);
79  void publishZeroJacobian(const ros::Time& time);
81  void publishDebug(const ros::Time& time);
82  // Equilibrium pose subscriber
84  void equilibriumPoseCallback(const geometry_msgs::PoseStampedConstPtr& msg);
85 };
86 
87 } // namespace serl_franka_controllers
serl_franka_controllers
Definition: cartesian_impedance_controller.h:25
realtime_publisher.h
serl_franka_controllers::CartesianImpedanceController::publishZeroJacobian
void publishZeroJacobian(const ros::Time &time)
Definition: cartesian_impedance_controller.cpp:223
serl_franka_controllers::CartesianImpedanceController::cartesian_stiffness_target_
Eigen::Matrix< double, 6, 6 > cartesian_stiffness_target_
Definition: cartesian_impedance_controller.h:54
node_handle.h
serl_franka_controllers::CartesianImpedanceController::joint_handles_
std::vector< hardware_interface::JointHandle > joint_handles_
Definition: cartesian_impedance_controller.h:44
serl_franka_controllers::CartesianImpedanceController::publisher_franka_jacobian_
realtime_tools::RealtimePublisher< serl_franka_controllers::ZeroJacobian > publisher_franka_jacobian_
Definition: cartesian_impedance_controller.h:80
serl_franka_controllers::CartesianImpedanceController::rotational_clip_min_
Eigen::Matrix< double, 3, 1 > rotational_clip_min_
Definition: cartesian_impedance_controller.h:63
serl_franka_controllers::CartesianImpedanceController::publishDebug
void publishDebug(const ros::Time &time)
serl_franka_controllers::CartesianImpedanceController::jacobian_array
std::array< double, 42 > jacobian_array
Definition: cartesian_impedance_controller.h:45
serl_franka_controllers::CartesianImpedanceController::sub_equilibrium_pose_
ros::Subscriber sub_equilibrium_pose_
Definition: cartesian_impedance_controller.h:83
time.h
serl_franka_controllers::CartesianImpedanceController::complianceParamCallback
void complianceParamCallback(serl_franka_controllers::compliance_paramConfig &config, uint32_t level)
Definition: cartesian_impedance_controller.cpp:245
serl_franka_controllers::CartesianImpedanceController::error_
Eigen::Matrix< double, 6, 1 > error_
Definition: cartesian_impedance_controller.h:67
serl_franka_controllers::CartesianImpedanceController::equilibriumPoseCallback
void equilibriumPoseCallback(const geometry_msgs::PoseStampedConstPtr &msg)
Definition: cartesian_impedance_controller.cpp:275
serl_franka_controllers::CartesianImpedanceController::rotational_clip_max_
Eigen::Matrix< double, 3, 1 > rotational_clip_max_
Definition: cartesian_impedance_controller.h:64
serl_franka_controllers::CartesianImpedanceController::joint1_nullspace_stiffness_target_
double joint1_nullspace_stiffness_target_
Definition: cartesian_impedance_controller.h:51
serl_franka_controllers::CartesianImpedanceController::cartesian_damping_target_
Eigen::Matrix< double, 6, 6 > cartesian_damping_target_
Definition: cartesian_impedance_controller.h:56
serl_franka_controllers::CartesianImpedanceController::joint1_nullspace_stiffness_
double joint1_nullspace_stiffness_
Definition: cartesian_impedance_controller.h:50
serl_franka_controllers::CartesianImpedanceController::Ki_
Eigen::Matrix< double, 6, 6 > Ki_
Definition: cartesian_impedance_controller.h:57
realtime_tools::RealtimePublisher< serl_franka_controllers::ZeroJacobian >
serl_franka_controllers::CartesianImpedanceController::Ki_target_
Eigen::Matrix< double, 6, 6 > Ki_target_
Definition: cartesian_impedance_controller.h:58
serl_franka_controllers::CartesianImpedanceController::q_d_nullspace_
Eigen::Matrix< double, 7, 1 > q_d_nullspace_
Definition: cartesian_impedance_controller.h:65
joint_command_interface.h
hardware_interface::RobotHW
serl_franka_controllers::CartesianImpedanceController::delta_tau_max_
const double delta_tau_max_
Definition: cartesian_impedance_controller.h:52
serl_franka_controllers::CartesianImpedanceController::position_d_target_
Eigen::Vector3d position_d_target_
Definition: cartesian_impedance_controller.h:70
controller_interface::MultiInterfaceController
serl_franka_controllers::CartesianImpedanceController::translational_clip_max_
Eigen::Matrix< double, 3, 1 > translational_clip_max_
Definition: cartesian_impedance_controller.h:62
serl_franka_controllers::CartesianImpedanceController
Definition: cartesian_impedance_controller.h:27
serl_franka_controllers::CartesianImpedanceController::nullspace_stiffness_
double nullspace_stiffness_
Definition: cartesian_impedance_controller.h:48
serl_franka_controllers::CartesianImpedanceController::orientation_d_
Eigen::Quaterniond orientation_d_
Definition: cartesian_impedance_controller.h:69
serl_franka_controllers::CartesianImpedanceController::dynamic_reconfigure_compliance_param_node_
ros::NodeHandle dynamic_reconfigure_compliance_param_node_
Definition: cartesian_impedance_controller.h:76
serl_franka_controllers::CartesianImpedanceController::starting
void starting(const ros::Time &) override
Definition: cartesian_impedance_controller.cpp:113
serl_franka_controllers::CartesianImpedanceController::error_i
Eigen::Matrix< double, 6, 1 > error_i
Definition: cartesian_impedance_controller.h:68
franka_state_interface.h
serl_franka_controllers::CartesianImpedanceController::dynamic_server_compliance_param_
std::unique_ptr< dynamic_reconfigure::Server< serl_franka_controllers::compliance_paramConfig > > dynamic_server_compliance_param_
Definition: cartesian_impedance_controller.h:75
serl_franka_controllers::CartesianImpedanceController::cartesian_stiffness_
Eigen::Matrix< double, 6, 6 > cartesian_stiffness_
Definition: cartesian_impedance_controller.h:53
serl_franka_controllers::CartesianImpedanceController::init
bool init(hardware_interface::RobotHW *robot_hw, ros::NodeHandle &node_handle) override
Definition: cartesian_impedance_controller.cpp:21
ros::Time
franka_model_interface.h
serl_franka_controllers::CartesianImpedanceController::saturateTorqueRate
Eigen::Matrix< double, 7, 1 > saturateTorqueRate(const Eigen::Matrix< double, 7, 1 > &tau_d_calculated, const Eigen::Matrix< double, 7, 1 > &tau_J_d)
Definition: cartesian_impedance_controller.cpp:233
serl_franka_controllers::CartesianImpedanceController::orientation_d_target_
Eigen::Quaterniond orientation_d_target_
Definition: cartesian_impedance_controller.h:71
robot_hw.h
serl_franka_controllers::CartesianImpedanceController::update
void update(const ros::Time &, const ros::Duration &period) override
Definition: cartesian_impedance_controller.cpp:134
serl_franka_controllers::CartesianImpedanceController::translational_clip_min_
Eigen::Matrix< double, 3, 1 > translational_clip_min_
Definition: cartesian_impedance_controller.h:61
serl_franka_controllers::CartesianImpedanceController::state_handle_
std::unique_ptr< franka_hw::FrankaStateHandle > state_handle_
Definition: cartesian_impedance_controller.h:42
ros::Duration
serl_franka_controllers::CartesianImpedanceController::cartesian_damping_
Eigen::Matrix< double, 6, 6 > cartesian_damping_
Definition: cartesian_impedance_controller.h:55
serl_franka_controllers::CartesianImpedanceController::position_d_
Eigen::Vector3d position_d_
Definition: cartesian_impedance_controller.h:66
ros::NodeHandle
ros::Subscriber
serl_franka_controllers::CartesianImpedanceController::filter_params_
double filter_params_
Definition: cartesian_impedance_controller.h:47
serl_franka_controllers::CartesianImpedanceController::model_handle_
std::unique_ptr< franka_hw::FrankaModelHandle > model_handle_
Definition: cartesian_impedance_controller.h:43
serl_franka_controllers::CartesianImpedanceController::nullspace_stiffness_target_
double nullspace_stiffness_target_
Definition: cartesian_impedance_controller.h:49
multi_interface_controller.h


serl_franka_controllers
Author(s): Jianlan Luo, Charles Xu
autogenerated on Fri Feb 9 2024 03:09:57