cartesian_impedance_example_controller.h
Go to the documentation of this file.
1 // Copyright (c) 2017 Franka Emika GmbH
2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
3 #pragma once
4 
5 #include <memory>
6 #include <mutex>
7 #include <string>
8 #include <vector>
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 <franka_example_controllers/compliance_paramConfig.h>
22 
24 
26  franka_hw::FrankaModelInterface,
27  hardware_interface::EffortJointInterface,
28  franka_hw::FrankaStateInterface> {
29  public:
30  bool init(hardware_interface::RobotHW* robot_hw, ros::NodeHandle& node_handle) override;
31  void starting(const ros::Time&) override;
32  void update(const ros::Time&, const ros::Duration& period) override;
33 
34  private:
35  // Saturation
36  Eigen::Matrix<double, 7, 1> saturateTorqueRate(
37  const Eigen::Matrix<double, 7, 1>& tau_d_calculated,
38  const Eigen::Matrix<double, 7, 1>& tau_J_d); // NOLINT (readability-identifier-naming)
39 
40  std::unique_ptr<franka_hw::FrankaStateHandle> state_handle_;
41  std::unique_ptr<franka_hw::FrankaModelHandle> model_handle_;
42  std::vector<hardware_interface::JointHandle> joint_handles_;
43 
44  double filter_params_{0.005};
45  double nullspace_stiffness_{20.0};
47  const double delta_tau_max_{1.0};
48  Eigen::Matrix<double, 6, 6> cartesian_stiffness_;
49  Eigen::Matrix<double, 6, 6> cartesian_stiffness_target_;
50  Eigen::Matrix<double, 6, 6> cartesian_damping_;
51  Eigen::Matrix<double, 6, 6> cartesian_damping_target_;
52  Eigen::Matrix<double, 7, 1> q_d_nullspace_;
53  Eigen::Vector3d position_d_;
54  Eigen::Quaterniond orientation_d_;
56  Eigen::Vector3d position_d_target_;
57  Eigen::Quaterniond orientation_d_target_;
58 
59  // Dynamic reconfigure
60  std::unique_ptr<dynamic_reconfigure::Server<franka_example_controllers::compliance_paramConfig>>
63  void complianceParamCallback(franka_example_controllers::compliance_paramConfig& config,
64  uint32_t level);
65 
66  // Equilibrium pose subscriber
68  void equilibriumPoseCallback(const geometry_msgs::PoseStampedConstPtr& msg);
69 };
70 
71 } // namespace franka_example_controllers
std::unique_ptr< dynamic_reconfigure::Server< franka_example_controllers::compliance_paramConfig > > dynamic_server_compliance_param_
void update(const ros::Time &, const ros::Duration &period) override
bool init(hardware_interface::RobotHW *robot_hw, ros::NodeHandle &node_handle) override
Eigen::Matrix< double, 7, 1 > saturateTorqueRate(const Eigen::Matrix< double, 7, 1 > &tau_d_calculated, const Eigen::Matrix< double, 7, 1 > &tau_J_d)
void complianceParamCallback(franka_example_controllers::compliance_paramConfig &config, uint32_t level)


franka_example_controllers
Author(s): Franka Emika GmbH
autogenerated on Mon Sep 19 2022 03:06:01