728x90
반응형
#include "ros/ros.h"
#include "std_msgs/String.h"
int main(int argc, char** argv) {
ros::init(argc, argv, "my_publisher");// 노드 이름 초기화
ros::NodeHandle nh; // ROS 시스템과 통신을 위한 노드 핸들 선언
//퍼블리셔 선언
//패키지(std_msgs)의 메시지파일(String)을 이용한 퍼블리셔(pub)을 만든다.
//토픽은 (my_topic)이며, 퍼블리셔큐(queue) 사이즈는 (100)이다.
ros::Publisher pub = nh.advertise<std_msgs::String>("my_topic", 100);
ros::Rate loop_rate(10); // 루프 주기를 10Hz로 설정한다.
std_msgs::String msg;
msg.data = "Hello"; // msg의 data에 Hello를 넣는다.
while (ros::ok()) {
pub.publish(msg)); //pub 이 msg를 퍼블리시한다.
loop.late.sleep(); // 위에서 정한 주기에 따라 sleep 한다.
}
return 0;
}
#include "ros/ros.h"
#include "std_msgs/String.h"
// 어떤 이벤트가 발생했을 때 호출되는 함수를 콜백함수
void msgCallback(const std_msgs::String::ConstPtr& msg) {
ROS_INFO("msg: %s", msg->data.c_str());
}
int main(int argc, char** argv) {
ros::init(argc, argv, "my_subscriber"); // 노드 이름 초기화
ros::NodeHandle nh; //노드 핸들선언
ros::Subscriber sub = nh.subscribe("my_topic", 100, msgCallback)
// 콜백 함수 호출을 위한 함수, 메시지가 수신되기를 대기
// 수신되었을 경우 콜백함수를 호출한다.
ros::spin();
return 0;
}
#!/usr/bin/python
#-*- coding: utf-8 -*-
import rospy
from std_msgs.msg import String
def talker():
pub = rospy.Publisher("my_topic", String, queue_size=100)
rospy.init_node("py_publisher")
loop_rate = rospy.Rate(10)
msg = String()
msg.data = "Hello World"
while not rospy.is_shutdown():
pub.publish(msg)
loop_rate.sleep()
if __name__ == "__main__":
try:
talker()
except rospy.ROSinterruptException:
pass
## py_publisher.py
#!/usr/bin/python
import rospy
from std_msgs.msg import String
def msgCallback(msg):
rospy.loginfo("msg : %s", msg.data)
def listener():
rospy.init_node("py_subscriber")
rospy.Subscriber("my_topic", String, msgCallback, queue_size = 100)
rospy.spin()
if __name__ == "__main__":
listener()
## py_subscriber.py
728x90
반응형
'ROS_1' 카테고리의 다른 글
Error: Package not found (0) | 2022.10.03 |
---|---|
msgs (0) | 2022.09.30 |
ros::init() (0) | 2022.09.30 |
Message (0) | 2022.09.29 |
ros exam (0) | 2022.09.28 |