[ROS] c++ node

MURRAIYA·2024년 2월 28일
0

ROS에서 돌아가는 C++ 코드를 짜고싶다.

step 1.

정상적으로 ros 폴더 구조와 src안에 패키지를 만든 후 해당 패키지의 package.xml을 수정하고 CMakeLists.txt를 수정한다.

add_executable(nodeName src/sourceCode.cpp)
target_link_libraries(nodeName ${catkin_LIBRARIES}) //catkin_LIBRARIES는 기본 느낌
add_dependencies(nodeName ??)//실행파일에서 메세지를 이용하는 경우에 메세지 타겟에 대해 의존성 기술. ㄴㅇㅔ?

예시

add_executable(foo src/foo.cpp)
add_library(moo src/moo.cpp)
target_link_libraries(foo moo) //foo라는 실행파일 타겟과 링크될 라이브러리를 지정.

step 2.

패키지 안에 msg를 만들고, src파일 안에 소스코드 작성.


ros::init(argc, argv, "node_name");

앞의 두 변수는 remapping에 이용된다. 보통 main함수에서 받아온 그대로 넣어준다.
매개변수로는 int& argc, char** argv, const std::string& name 구조. name을 통해 node_name설정


ros::Publisher ros_tutorial_pub =
   nh.advertise<oroca_ros_tutorials::msgTutorial>("ros_tutorial_msg", 100);

토픽이름은 ros_tutorial_msg이고 큐사이즈 100으로 ros_tutorial_pub이라는 이름의 퍼블리셔를 생성한다. 메세지 형식은 oroca_ros_tutorials 패키지의 msgTutorial 메세지 형식을 이용한다.


ROS_INFO("send msg = %d", count);

ROS_INFO 는 ROS 에서 터미널창으로의 cout printf의 역할을 한다.

실행시 이렇게 뜨게 만드는 코드!

⚠️C++ 소스코드 수정→catkin make C++인 경우에는 rosrun 실행시 소스코드를 직접 돌리는 파이썬과 달리 실행파일로 돌리는거라서 코드 수정시 바로 반영이 안된다. 수정 후 catkin_make를 해야 실행파일이 업데이트된다.

⚠️catkin_make가 잘 안되면 오류 수정하고 다시 catkin_make할 때 build를 지우고 한다. build는 말그대로 build고, devel은 헤더가 만들어지거나 등등의 환경에 관련한것들이니 build는 이전에 잘못 빌드했던 기록을 꼭 지워야하고 devel은 뭐 꼭 지워야하는 것은 아니다.

profile
🙃SUJI KIM🙃 🚩 Inha University Undergraduate 🚗 Autonomous Driving Robots 📷 Computer Vision 💫 SLAM

0개의 댓글