17 #ifndef NAV2_UTIL__ROBOT_UTILS_HPP_
18 #define NAV2_UTIL__ROBOT_UTILS_HPP_
23 #include "geometry_msgs/msg/pose_stamped.hpp"
24 #include "geometry_msgs/msg/twist.hpp"
25 #include "geometry_msgs/msg/twist_stamped.hpp"
26 #include "geometry_msgs/msg/transform_stamped.hpp"
27 #include "tf2/time.hpp"
28 #include "tf2/transform_datatypes.hpp"
29 #include "nav2_ros_common/tf2_factories.hpp"
30 #include "tf2_geometry_msgs/tf2_geometry_msgs.hpp"
31 #include "rclcpp/rclcpp.hpp"
48 bool lookupTransformWithStalenessCheck(
49 nav2::TransformBuffer & tf_buffer,
50 const std::string & target_frame,
51 const std::string & source_frame,
52 const rclcpp::Time & current_time,
53 double staleness_threshold,
54 geometry_msgs::msg::TransformStamped & transform);
61 geometry_msgs::msg::PoseStamped transformToPoseStamped(
62 const geometry_msgs::msg::TransformStamped & transform);
70 geometry_msgs::msg::TransformStamped poseToTransformStamped(
71 const geometry_msgs::msg::PoseStamped & pose,
const std::string & child_frame);
85 nav2::TransformBuffer & tf_buffer,
86 const std::string & target_frame,
87 const std::string & source_frame,
88 const rclcpp::Time & current_time,
89 double staleness_threshold,
90 geometry_msgs::msg::PoseStamped & pose);
102 geometry_msgs::msg::PoseStamped & global_pose,
103 nav2::TransformBuffer & tf_buffer,
const std::string global_frame =
"map",
104 const std::string robot_frame =
"base_link",
const double transform_timeout = 0.1,
105 const rclcpp::Time stamp = rclcpp::Time());
116 bool transformPoseInTargetFrame(
117 const geometry_msgs::msg::PoseStamped & input_pose,
118 geometry_msgs::msg::PoseStamped & transformed_pose,
119 nav2::TransformBuffer & tf_buffer,
const std::string target_frame,
120 const double transform_timeout = 0.1);
132 const std::string & source_frame_id,
133 const std::string & target_frame_id,
134 const tf2::Duration & transform_tolerance,
135 const nav2::TransformBuffer::SharedPtr tf_buffer,
136 tf2::Transform & tf2_transform);
152 const std::string & source_frame_id,
153 const rclcpp::Time & source_time,
154 const std::string & target_frame_id,
155 const rclcpp::Time & target_time,
156 const std::string & fixed_frame_id,
157 const tf2::Duration & transform_tolerance,
158 const nav2::TransformBuffer::SharedPtr tf_buffer,
159 tf2::Transform & tf2_transform);
171 const std::string & source_frame_id,
172 const std::string & target_frame_id,
173 const tf2::Duration & transform_tolerance,
174 const nav2::TransformBuffer::SharedPtr tf_buffer,
175 geometry_msgs::msg::TransformStamped & transform_msg);
191 const std::string & source_frame_id,
192 const rclcpp::Time & source_time,
193 const std::string & target_frame_id,
194 const rclcpp::Time & target_time,
195 const std::string & fixed_frame_id,
196 const tf2::Duration & transform_tolerance,
197 const nav2::TransformBuffer::SharedPtr tf_buffer,
198 geometry_msgs::msg::TransformStamped & transform_msg);
205 [[nodiscard]]
bool validateTwist(
const geometry_msgs::msg::Twist & msg);