Skip to content

Commit b321c1d

Browse files
committed
fixed merge
2 parents 6ac3e62 + dc9022e commit b321c1d

5 files changed

Lines changed: 31 additions & 15 deletions

File tree

vortex_utility_nodes/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ find_package(nav_msgs REQUIRED)
1010
find_package(vortex_msgs REQUIRED)
1111
find_package(vortex_utils REQUIRED)
1212
find_package(Eigen3 REQUIRED)
13+
find_package(sensor_msgs REQUIRED)
1314

1415
add_executable(message_publisher_node
1516
src/message_publisher.cpp
@@ -22,6 +23,8 @@ ament_target_dependencies(message_publisher_node PUBLIC
2223
Eigen3
2324
vortex_utils
2425
vortex_msgs
26+
sensor_msgs
27+
2528
)
2629

2730
install(TARGETS message_publisher_node
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
/**:
22
ros__parameters:
3-
input_type: "reference_filter"
3+
input_type: "odometry"
44
output_namespace: ""
55
topics:
66
odometry: "/nautilus/odom"
77
waypoint: "/nautilus/waypoint"
88
reference_filter: "/nautilus/guidance/dp_quat"
99
pose_stamped: "/nautilus/pose_stamped"
1010
pose_with_covariance_stamped: "/nautilus/pose"
11-
output: "utils/message_publisher"
11+
imu: "mru/imu"
12+
output: "utils/message_publisher/odom_tf_rpy"

vortex_utility_nodes/launch/message_publisher.launch.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,6 @@ def generate_launch_description():
1414
'message_publisher.yaml',
1515
)
1616

17-
input_type_arg = DeclareLaunchArgument(
18-
'input_type',
19-
default_value='odometry',
20-
description='Input message type: odometry, waypoint, reference_filter, '
21-
'pose_stamped, or pose_with_covariance_stamped',
22-
)
23-
2417
namespace_arg = DeclareLaunchArgument(
2518
'namespace',
2619
default_value='',
@@ -29,17 +22,13 @@ def generate_launch_description():
2922

3023
return LaunchDescription(
3124
[
32-
input_type_arg,
3325
namespace_arg,
3426
Node(
3527
package='vortex_utility_nodes',
3628
executable='message_publisher_node',
3729
name='message_publisher_node',
3830
namespace=LaunchConfiguration('namespace'),
39-
parameters=[
40-
config,
41-
{'input_type': LaunchConfiguration('input_type')},
42-
],
31+
parameters=[config],
4332
output='screen',
4433
),
4534
]

vortex_utility_nodes/package.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<depend>nav_msgs</depend>
1717
<depend>vortex_msgs</depend>
1818
<depend>vortex_utils</depend>
19+
<depend>sensor_msgs</depend>
1920

2021
<export>
2122
<build_type>ament_cmake</build_type>

vortex_utility_nodes/src/message_publisher.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
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

Comments
 (0)