[ROS] C++ publisher ์์ฑํ๊ธฐ
ROS ํ๊ฒฝ์์ C++ ๊ธฐ๋ฐ Publisher๋ฅผ ์์ฑํด๋ณด์
์์ ๊ฒฝ๋ก ์์ฑ
์์
๊ฒฝ๋ก๋ ๋ณธ์ธ์ด ์ํ๋ ๊ณณ์ ๋ง๋ค๋ฉด ๋๋ค
๋๋ ~๊ฒฝ๋ก์ ๋ง๋ค ๊ฒ์ด๋ค
# -p ์ต์
์ ๋ถ์ด๋ฉด ๋ค์ src ํด๋๊น์ง ๋์์ ๋ง๋ค ์ ์์
$ mkdir -p ~/ros_ws/src
$ cd ~/ros_ws/src
ํจํค์ง ์์ฑ
ํจํค์ง๋ฅผ ์์ฑํด์ฃผ์
# catkin_create_pkg {ํจํค์ง๋ช
} {์์กด์ฑํจํค์ง1} {์์กด์ฑํจํค์ง2}
$ catkin_create_pkg ros_simple_tutorial roscpp std_msgs
$ cd ros_simple_tutorial
ํด๋น ๋๋ ํ ๋ฆฌ ์์ ์๋์ ๊ฐ์ด ๊ตฌ์ฑ์ด ๋์ด์๋ค.
๐ ros_simple_tutorial
โฃ ๐ include / ๐ ros_simple_tutorial
โฃ ๐ src
โฃ ๐ CMakeLists.txt
โ ๐ package.xml
Publisher ์ฝ๋ ์์ฑ
src ํด๋ ์์์ pub.cpp ํ์ผ์ ๋ง๋ค์ด์ฃผ์
$ cd src
$ gedit pub.cpp # pub.cpp๋ฅผ gedit ๋ง๊ณ vscode ๋ฑ ๋ณธ์ธ์ด ํธํ ํด๋ก ์์ ํ์
์ ์ฒด ์ฝ๋
#include <ros/ros.h>
#include <std_msgs/String.h>
int main(int argc, char** argv)
{
ros::init(argc, argv, "pub_node");
ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<std_msgs::String>("message", 10);
std_msgs::String msg;
ros::Rate r(1);
while (ros::ok())
{
msg.data = "bigbigpark";
pub.publish(msg);
r.sleep();
}
return 0;
}
์ฝ๋๊ฐ ์ดํด๋์ง ์์ผ๋ฉด ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :)
CMakeLists.txt ์์
์๊น ros_simple_tutorial ํจํค์ง ๊ฒฝ๋ก์ ๊ฐ์ CMakeLists.txt๋ฅผ ์์ ํด์ฃผ์
$ gedit CMakeLists.txt
์๋ ์๋ ๊ฒ์ ์ญ์ ํ๊ณ ์๋๋ฅผ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ค
๊ฐํน ์ ์ผ ์ฒซ ๋ฒ์งธ ์ค์ธ cmake_minimum_required ์ด ์๋ฌ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ด๋ด ๋๋ ํฐ๋ฏธ๋ ์ฐฝ์ $ cmake --version
์ ์
๋ ฅํ์ฌ ์์ ์ cmake ๋ฒ์ ์ ์
๋ ฅํด์ค๋ค
cmake_minimum_required(VERSION 3.0.9)
project(ros_simple_tutorial)
# add_compile_options(-std=c++11)
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES ros_simple_tutorial
# CATKIN_DEPENDS roscpp std_msgs
# DEPENDS system_lib
)
include_directories(
# include
${catkin_INCLUDE_DIRS}
)
add_executable(pub src/pub.cpp)
target_link_libraries(pub
${catkin_LIBRARIES}
)
์คํํ๊ธฐ
$ roscore
$ source ~/ros_ws/devel/setup.bash
$ rosrun ros_simple_tutorial pub
ํ ํฝ ์ถ๋ ฅํ๊ธฐ
ํ ํฝ์ด ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋์ง ํ์ธํ์
$ source ~/ros_ws/devel/setup.bash
$ rostopic echo /message
์ฌ๊ธฐ์ ์ด๋ค ํ ํฝ์ด ์ง๊ธ ROS ํต์ ์์ publish๋๊ณ ์๋ ์ง๋ ์๋ ๋ช ๋ น์ด๋ก ํ์ธ ๊ฐ๋ฅํ๋ค
$ rostopic list
Leave a comment