1+ <<<<<<< HEAD
12#include < variant>
3+ =======
4+ #include < sensor_msgs/msg/imu.hpp>
5+ >>>>>>> dc9022e340e1d7a4463d4c98418414acf5cd63b6
26#include < vortex/utils/math.hpp>
37#include " geometry_msgs/msg/pose_stamped.hpp"
48#include " geometry_msgs/msg/pose_with_covariance_stamped.hpp"
@@ -18,6 +22,7 @@ class MessagePublisherNode : public rclcpp::Node {
1822 this ->declare_parameter <std::string>(" topics.pose_stamped" );
1923 this ->declare_parameter <std::string>(
2024 " topics.pose_with_covariance_stamped" );
25+ this ->declare_parameter <std::string>(" topics.imu" );
2126 this ->declare_parameter <std::string>(" topics.output" );
2227
2328 auto input_type = this ->get_parameter (" input_type" ).as_string ();
@@ -81,6 +86,16 @@ class MessagePublisherNode : public rclcpp::Node {
8186 this ->get_logger (),
8287 " Pose publisher [pose_with_covariance_stamped]: %s -> %s" ,
8388 topic.c_str (), output_topic.c_str ());
89+
90+ } else if (input_type == " imu" ) {
91+ auto topic = this ->get_parameter (" topics.imu" ).as_string ();
92+ sub_ = this ->create_subscription <sensor_msgs::msg::Imu>(
93+ topic, qos_profile,
94+ std::bind (&MessagePublisherNode::imu_callback, this ,
95+ std::placeholders::_1));
96+ RCLCPP_INFO (this ->get_logger (), " Euler publisher [imu]: %s -> %s" ,
97+ topic.c_str (), output_topic.c_str ());
98+
8499 } else {
85100 RCLCPP_FATAL (
86101 this ->get_logger (),
@@ -154,13 +169,20 @@ class MessagePublisherNode : public rclcpp::Node {
154169 publish_pose (msg->header , pos.x , pos.y , pos.z , euler);
155170 }
156171
172+ void imu_callback (const sensor_msgs::msg::Imu::SharedPtr msg) {
173+ const auto & q = msg->orientation ;
174+ auto euler = convert_quat (q.w , q.x , q.y , q.z );
175+ publish_rpy (msg->header , euler);
176+ }
177+
157178 using SubVariant = std::variant<
158179 rclcpp::Subscription<nav_msgs::msg::Odometry>::SharedPtr,
159180 rclcpp::Subscription<vortex_msgs::msg::Waypoint>::SharedPtr,
160181 rclcpp::Subscription<vortex_msgs::msg::ReferenceFilterQuat>::SharedPtr,
161182 rclcpp::Subscription<geometry_msgs::msg::PoseStamped>::SharedPtr,
162183 rclcpp::Subscription<
163- geometry_msgs::msg::PoseWithCovarianceStamped>::SharedPtr>;
184+ geometry_msgs::msg::PoseWithCovarianceStamped>::SharedPtr,
185+ rclcpp::Subscription<sensor_msgs::msg::Imu>::SharedPtr>;
164186
165187 SubVariant sub_;
166188 rclcpp::Publisher<vortex_msgs::msg::PoseEulerStamped>::SharedPtr pose_pub_;
0 commit comments