50 bool update(
const T & data_in, T & data_out)
override;
53 void compute_internal_params()
55 cog_.vector.x = parameters_.tool.CoG[0];
56 cog_.vector.y = parameters_.tool.CoG[1];
57 cog_.vector.z = parameters_.tool.CoG[2];
58 cst_ext_force_.vector.x = parameters_.tool.gravity_field[0] * parameters_.tool.mass;
59 cst_ext_force_.vector.y = parameters_.tool.gravity_field[1] * parameters_.tool.mass;
60 cst_ext_force_.vector.z = parameters_.tool.gravity_field[2] * parameters_.tool.mass;
64 rclcpp::Clock::SharedPtr clock_;
65 std::shared_ptr<rclcpp::Logger> logger_;
66 std::shared_ptr<gravity_compensation_filter::ParamListener> parameter_handler_;
67 gravity_compensation_filter::Params parameters_;
70 std::string world_frame_;
71 std::string sensor_frame_;
73 geometry_msgs::msg::Vector3Stamped cog_;
74 geometry_msgs::msg::Vector3Stamped cst_ext_force_;
77 std::unique_ptr<tf2_ros::Buffer> p_tf_Buffer_;
78 std::unique_ptr<tf2_ros::TransformListener> p_tf_Listener_;
79 geometry_msgs::msg::TransformStamped transform_sensor_datain_, transform_world_dataout_,
80 transform_data_out_sensor_, transform_sensor_world_;
96 clock_ = std::make_shared<rclcpp::Clock>(RCL_ROS_TIME);
97 p_tf_Buffer_.reset(
new tf2_ros::Buffer(clock_));
98 p_tf_Listener_.reset(
new tf2_ros::TransformListener(*p_tf_Buffer_.get(),
true));
101 new rclcpp::Logger(this->logging_interface_->get_logger().get_child(this->filter_name_)));
104 if (!parameter_handler_)
108 parameter_handler_ = std::make_shared<gravity_compensation_filter::ParamListener>(
109 this->params_interface_, this->param_prefix_);
111 catch (std::exception & ex)
113 RCLCPP_ERROR((*logger_),
"GravityCompensation filter cannot be configured: %s", ex.what());
114 parameter_handler_.reset();
118 parameters_ = parameter_handler_->get_params();
119 compute_internal_params();