<Ch 7. ROS 기본 프로그래밍>
1. ROS 기본 단위 및 규칙
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 # 서브스크라이버 노드 코드 작성
-> 퍼블리셔가 보낸 메시지를 수신하여 콘솔 등에 출력하는 역할
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2025 ROS 스터디] 한상민 #3주차 - ROS 기본 프로그래밍 (0) | 2025.05.06 |
---|---|
[2025 ROS 스터디] <문승주> #2주차-<ROS의 중요컨셉, 명령어, 도구> (0) | 2025.05.02 |
[2025 ROS 스터디] 윤윤지 #3주차-ROS 기본 프로그래밍 (0) | 2025.05.01 |
[2025 ROS 스터디] 장우혁 #2주차 - ROS 중요 컨셉, 명령어, 도구 (1) | 2025.05.01 |
[2025 ROS 스터디] 윤윤지 #2주차-중요 컨셉, 명령어, 도구 (0) | 2025.05.01 |