본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2025 ROS 스터디] 장우혁 #3주차-ROS 기본 프로그래밍

반응형

<Ch 7. ROS 기본 프로그래밍>

1. ROS 기본 단위 및 규칙

ROS 프로그래밍에선 SI 단위를 사용 (ex. inch 사용하면 안됨.)

 

2. 퍼블리셔와 서브스크라이버 만들기

① 패키지 생성

$cd ~/catkin_ws/src  # 작업공간의 src 폴더로 이동
catkin_create_pkg ros_tutorials_topic message_generation std_msgs roscpp  
# 새 패키지 생성 (필요한 의존성: message_generation, std_msgs, roscpp 포함)

 

② 패키지 설정 파일 수정

$gedit package.xml  # 패키지 설정 파일 열기

# 아래 항목을 직접 수정 또는 추가해야 함:
# <build_depend>message_generation</build_depend>
# <build_depend>std_msgs</build_depend>
# <build_depend>roscpp</build_depend>
# <run_depend>message_runtime</run_depend>
# <run_depend>std_msgs</run_depend>
# <run_depend>roscpp</run_depend>

 

* <build_depend>, <run_depend> 항목에 message_generation, std_msgs, roscpp 추가

* build_depend: 빌드 시 필요한 의존성
* run_depend: 실행 시 필요한 의존성

 

③ 빌드 설정 파일 수정 (CMakeLists.txt)

$gedit CMakeLists.txt  # 빌드 설정 파일 열기

# 아래 항목들을 추가 또는 수정해야 함:

## 필수 패키지 찾기
find_package(catkin REQUIRED COMPONENTS message_generation std_msgs roscpp)

## 메시지 파일 추가
add_message_files(FILES MsgTutorials.msg)

## 메시지 생성 명령
generate_messages(DEPENDENCIES std_msgs)

## catkin 패키지 설정
catkin_package(
  CATKIN_DEPENDS message_runtime std_msgs roscpp
)

* find_package, add_message_files, generate_messages 등 설정

 

④ 메시지 파일 생성

roscd ros_tutorials_topic  # 해당 패키지 디렉토리로 이동
mkdir msg                  # 메시지 파일을 저장할 디렉토리 생성
cd msg
gedit MsgTutorials.msg     # 메시지 정의 파일 작성

 

*예시 메시지 내용

time stamp    # 시간 정보
int32 data    # 정수 데이터

 

⑤ 퍼블리셔 노드 작성

roscd ros_tutorials_topic/src  # 소스 코드 디렉토리로 이동
gedit topic_publisher.cpp      # 퍼블리셔 노드 코드 작성

-> 메시지를 일정 주기로 발행하는 역할

 

⑥ 서브스크라이버 노드 작성

roscd ros_tutorials_topic/src
gedit topic_subscriber.cpp     # 서브스크라이버 노드 코드 작성

-> 퍼블리셔가 보낸 메시지를 수신하여 콘솔 등에 출력하는 역할

반응형