[ROS] C++ publisher μμ±νκΈ°
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