본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2025 ROS 스터디] 김예찬 #3주차 - ROS 메세지 통신 프로그래밍, roslaunch

반응형

 

ROS에서 메시지는 토픽, 서비스, 액션을 통해 전달된다. 토픽은 퍼블리셔-서브스크라이버 방식으로 지속적인 데이터 송수신에 사용되며, 센서 데이터처럼 실시간 정보 공유에 적합하다.서비스는 요청과 응답으로 이루어진 단일 통신 방식으로, 특정 작업을 수행하고 결과를 반환하는 데 활용된다. 액션은 서비스와 유사하지만 실행 중에도 진행 상태를 주고받을 수 있어, 장시간 수행되는 작업에 적합하다. 각 방식은 노드 간 통신 목적에 따라 선택하여 사용된다.

catkin_make는 패키지를 빌드하는 명령어이고 워크스페이스를 만들때 보통 사용한다. catkin_make를 실행하면 CMakeLists.txt와 package.xml을 참고하여 소스 코드를 컴파일하고 실행 가능한 바이너리와 라이브러리를 생성해 종속성을 해결한다. devel과 build 디렉터리가 생성되고 devel 폴더는 빌드된 실행 파일과 환경 설정 파일이 있다. 

src 폴더 안에서 퍼블리쉬하는 코드 혹은 서브스크라이브 하는 코드를 짜게 될 것이다. nano, gedit, vim과 같은 편집기를 사용해서 코드를 작성하고 파이썬이나 cpp로 작성한다. 만일 퍼블리쉬하는 코드를 실행하고 rqt를 키면 퍼블리쉬하는 노드만 존재할 것이다. 그리고 서브스크라이브하는 코드를 실행하면 rqt에 퍼블리시 노드와 서브스크라이브 노드 두개가 표시될것이고 서로 어떤 토픽을 주고받는지 나올것이다. 서비스도 단일성이지만 rqt를 통해 확인하면 서로 어떤 메시지를  주고받았는지 나오게 될 것이다. 토픽 발행주기를 조절할 수 있다. 이는 파라미터에서 조절하거나  내가 작성한 코드에서 Hz단위로 조절하면 된다. 

 

반응형