15 #ifndef CONCEALER__CONTINUOUS_TRANSFORM_BROADCASTER_HPP_
16 #define CONCEALER__CONTINUOUS_TRANSFORM_BROADCASTER_HPP_
18 #include <tf2_ros/buffer.h>
19 #include <tf2_ros/transform_broadcaster.h>
20 #include <tf2_ros/transform_listener.h>
23 #include <geometry_msgs/msg/pose.hpp>
24 #include <tf2_geometry_msgs/tf2_geometry_msgs.hpp>
28 template <
typename Node>
33 tf2_ros::Buffer transform_buffer;
35 tf2_ros::TransformBroadcaster transform_broadcaster;
37 geometry_msgs::msg::TransformStamped current_transform;
39 const rclcpp::TimerBase::SharedPtr timer;
41 void updateTransform()
44 not current_transform.header.frame_id.empty() and
45 not current_transform.child_frame_id.empty())
47 current_transform.header.stamp =
static_cast<Node &
>(*this).get_clock()->now();
48 return transform_broadcaster.sendTransform(current_transform);
55 current_transform.header.stamp =
static_cast<Node &
>(*this).get_clock()->now();
56 current_transform.header.frame_id =
"map";
57 current_transform.child_frame_id = child_frame_id;
58 current_transform.transform.translation.x = pose.position.x;
59 current_transform.transform.translation.y = pose.position.y;
60 current_transform.transform.translation.z = pose.position.z;
61 current_transform.transform.rotation = pose.orientation;
63 return current_transform;
67 : child_frame_id(child_frame_id),
68 transform_buffer(static_cast<Node &>(*this).get_clock()),
69 transform_broadcaster(static_cast<Node *>(this)),
70 timer(static_cast<Node &>(*this).create_wall_timer(
71 std::chrono::milliseconds(5), [this]() {
return updateTransform(); }))
Definition: autoware_universe.hpp:40
Definition: lanelet_wrapper.hpp:40
geometry_msgs::msg::Pose Pose
Definition: lanelet_wrapper.hpp:66
std::string string
Definition: junit5.hpp:26