1. Publisher Node 작성

$ roscd beginner_tutorials
$ cd src
$ vi talker.cpp

#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>

int main(int argc, char **argv)
{
    ros::init(argc, argv, "talker");
    ros::NodeHandle n;
    ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
    ros::Rate loop_rate(10);

    int count = 0;

    while (ros::ok())
    {
        std_msgs::String msg;

        std::stringstream ss;
        ss << "hello world " << count;
        msg.data = ss.str();

        ROS_INFO("%s", msg.data.c_str());

        chatter_pub.publish(msg);

        ros::spinOnce();

        loop_rate.sleep();
        ++count;
    }
    return 0;
}

요약 : ROS system 초기화, publish할 메시지를 chatter topic에 advertise, 1초에 10번씩 loop돌면서 message를 보낸다


2. Subscriber Node 작성

$ roscd beginner_tutorials
$ cd src
$ vi listener.cpp

#include "ros/ros.h"
#include "std_msgs/String.h"

void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
    ROS_INFO("I heard: [%s]", msg->data.c_str());
}

int main(int argc, char **argv)
{
    ros::init(argc, argv, "listener");
    ros::NodeHandle n;
    ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
    ros::spin();

    return 0;
}

요약 : ROS System 초기화, chatter topic으로부터 subscribe, message들어올때마다 spin하면서 chatterCallback함수 수행


3. CMakeList.txt 수정

rosbuild_add_executable(talker src/talker.cpp)
rosbuild_add_executable(listener src/listener.cpp)

위 내용을 CMakeList.txt에 추가해주자

'ROS electric' 카테고리의 다른 글

Simple Service와 Client 작성(c++)  (0) 2014.01.08
Simple publisher와 subscriber 실행  (0) 2014.01.08
ROS msg와 srv생성  (0) 2014.01.08
ROS editor (rosed)  (0) 2014.01.08
roslaunch 사용하기  (0) 2014.01.08
Posted by 신영식
,