ROS ν™˜κ²½μ—μ„œ C++ 기반 Publisherλ₯Ό μž‘μ„±ν•΄λ³΄μž

μž‘μ—… 경둜 생성Permalink

μž‘μ—… κ²½λ‘œλŠ” 본인이 μ›ν•˜λŠ” 곳에 λ§Œλ“€λ©΄ λœλ‹€
λ‚˜λŠ” ~κ²½λ‘œμ— λ§Œλ“€ 것이닀

# -p μ˜΅μ…˜μ„ 뢙이면 뒀에 src ν΄λ”κΉŒμ§€ λ™μ‹œμ— λ§Œλ“€ 수 있음
$ mkdir -p ~/ros_ws/src
$ cd ~/ros_ws/src


νŒ¨ν‚€μ§€ 생성Permalink

νŒ¨ν‚€μ§€λ₯Ό μƒμ„±ν•΄μ£Όμž

# 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 μ½”λ“œ μž‘μ„±Permalink

src 폴더 μ•ˆμ—μ„œ pub.cpp νŒŒμΌμ„ λ§Œλ“€μ–΄μ£Όμž

$ cd src
$ gedit pub.cpp # pub.cppλ₯Ό gedit 말고 vscode λ“± 본인이 νŽΈν•œ 툴둜 μˆ˜μ •ν•˜μž

전체 μ½”λ“œPermalink

#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 μˆ˜μ •Permalink

μ•„κΉŒ 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}
)

μ‹€ν–‰ν•˜κΈ°Permalink

$ roscore
$ source ~/ros_ws/devel/setup.bash
$ rosrun ros_simple_tutorial pub 

ν† ν”½ 좜λ ₯ν•˜κΈ°Permalink

토픽이 μ •μƒμ μœΌλ‘œ 좜λ ₯λ˜λŠ”μ§€ ν™•μΈν•˜μž

$ source ~/ros_ws/devel/setup.bash
$ rostopic echo /message

μ—¬κΈ°μ„œ μ–΄λ–€ 토픽이 μ§€κΈˆ ROS 톡신 상에 publish되고 μžˆλŠ” μ§€λŠ” μ•„λž˜ λͺ…λ Ήμ–΄λ‘œ 확인 κ°€λŠ₯ν•˜λ‹€

$ rostopic list

Leave a comment