문자열(std_msg)을 수신(Subscribe)하고 전송(Publish)하는 예제 코드(C++)
12 Oct 2018 | ROS문자열(std_msg)을 수신(Subscribe)하고 전송(Publish)하는 예제 코드(C++)
하나의 프로그램내에서 ROS 2.0 문자열 메시지를 수신하고, 바로 그 내용을 다른 토픽(Topic)으로 전송하는 예제 코드입니다. 메시지 수신부는 람다 함수로 되어 있습니다.
#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
#include <iostream>
using namespace std;
using std::placeholders::_1;
const string NODE_NAME = "snowdeer_msg_echo_example";
int main(int argc, char *argv[]) {
cout << "Hello, ROS2 ECHO Example" << std::endl;
rclcpp::init(argc, argv);
auto node = rclcpp::Node::make_shared(NODE_NAME);
auto publisher = node->create_publisher<std_msgs::msg::String>("snowdeer_output");
auto subscription = node->create_subscription<std_msgs::msg::String>
("snowdeer_input", [publisher](std_msgs::msg::String::SharedPtr inMessage) {
auto outMessage = std::make_shared<std_msgs::msg::String>();
outMessage->data = inMessage->data;
publisher->publish(outMessage);
});
auto message = std::make_shared<std_msgs::msg::String>();
rclcpp::spin(node);
rclcpp::shutdown();
return 0;
}