35 #include "nav_2d_utils/conversions.hpp"
40 #include "geometry_msgs/msg/pose.hpp"
41 #include "geometry_msgs/msg/pose_stamped.hpp"
42 #include "geometry_msgs/msg/twist.hpp"
43 #include "nav_msgs/msg/path.hpp"
44 #include "nav_2d_msgs/msg/twist2_d.hpp"
45 #include "tf2_geometry_msgs/tf2_geometry_msgs.hpp"
46 #include "tf2/utils.hpp"
48 #include "nav2_util/geometry_utils.hpp"
50 namespace nav_2d_utils
52 using nav2_util::geometry_utils::orientationAroundZAxis;
54 geometry_msgs::msg::Twist twist2Dto3D(
const nav_2d_msgs::msg::Twist2D & cmd_vel_2d)
56 geometry_msgs::msg::Twist cmd_vel;
57 cmd_vel.linear.x = cmd_vel_2d.x;
58 cmd_vel.linear.y = cmd_vel_2d.y;
59 cmd_vel.angular.z = cmd_vel_2d.theta;
63 nav_2d_msgs::msg::Twist2D twist3Dto2D(
const geometry_msgs::msg::Twist & cmd_vel)
65 nav_2d_msgs::msg::Twist2D cmd_vel_2d;
66 cmd_vel_2d.x = cmd_vel.linear.x;
67 cmd_vel_2d.y = cmd_vel.linear.y;
68 cmd_vel_2d.theta = cmd_vel.angular.z;
72 nav_msgs::msg::Path posesToPath(
73 const std::vector<geometry_msgs::msg::Pose> & poses,
74 const std::string & frame,
const rclcpp::Time & stamp)
76 nav_msgs::msg::Path path;
77 path.poses.resize(poses.size());
78 path.header.frame_id = frame;
79 path.header.stamp = stamp;
80 for (
unsigned int i = 0; i < poses.size(); i++) {
81 path.poses[i].header.frame_id = frame;
82 path.poses[i].header.stamp = stamp;
83 path.poses[i].pose = poses[i];