반응형
ros에서는 단위계로 SI표준 단위계를 사용한다. 또한, 3차원 좌표 표현 방식으로 양의 x방향은 forward방향 양의 y방향은 left방향 양의 z방향은 up방향을 가리킨다.
ros통신 방식 복습
간단하게 복습하면 토픽은 단방향 통신으로 퍼블리셔 노드가 서브스크라이버 노드에 어떠한 메시지를 보내주는 통신방식이고, 서비스는 양방향 통신으로 서비스 클라이언트 노드가 서비스 노드에 어떠한 요청이 들어가면 그에 대한 응답을 서비스 서버가 보내주는 통신 방식이다.
1.패키지 생성
ros에서 패키지란 특정 기능을 수행하는 코드, 실행 파일, 설정 파일, 메시지 정의를 포함하는 기본적인 구성 단위
$ cd ~/catkin_ws/src
$ catkin_create_pkg ros_tutorials_topic message_generation std_msgs roscpp
$ cd ros_tutorials_topic
$ ls
include → 헤더 파일 폴더
src → 소스 코드 폴더
CMakeLists.txt → 빌드 설정 파일
package.xml → 패키지 설정 파일
ros_tutorials_topic -> 패키지를 생성
message_generation -> 사용자 정의 메시지
std_msgs -> ros 기본 메시지 타입
roscpp -> cpp로 노드 코드를 작성
2. 패키지 설정파일(package.xml) 수정
ros의 필수 설정 파일 중 하나인 package.xml은 패키지 정보를 담은 XML 파일로 패키지 이름, 저작자, 라이선스, 의존성 패키지 등을 기술하고 있다.
$gedit package.xml
<?xml version="1.0"?>
<package>
<name>ros_tutorials_topic</name>
<version>0.1.0</version>
<description>ROS turtorial package to learn the topic</description>
<license>Apache License 2.0</license>
<author email="pyo@robotis.com">Yoonseok Pyo</author>
<maintainer email="pyo@robotis.com">Yoonseok Pyo</maintainer>
<url type="bugtracker">https://github.com/ROBOTIS-GIT/ros_tutorials/issues</url>
<url type="repository">https://github.com/ROBOTIS-GIT/ros_tutorials.git</url>
<url type="website">http://www.robotis.com</url>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>message_generation</build_depend>
<run_depend>roscpp</run_depend>
<run_depend>std_msgs</run_depend>
<run_depend>message_runtime</run_depend>
<export></export>
</package>
3. 빌드 설정파일(CMakLists.txt) 수정
$gedit CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(ros_tutorials_topic)
##캐킨 빌드를 할 때 요구되는 구성요소 패키지
##의존성 패키지로 message_generation, std_msgs,roscpp이며 이 패키지들이 존재하지 않으면 빌드 도중에 에러가 난다.
find_package(catkin REQUIRED COMPONENTS message_generation std_msgs roscpp)
##메시지 선언
add_message_files(FILES MsgTutorial.msg)
##의존하는 메시지를 설정하는 옵션
## std_msgs가 설치되어 있지 않다면 빌드 도중에 에러가 난다.
generate_messages(DEPENDENCIES std_msgs)
##캐킨 패키지 옵션으로 라이브러리, 캐킨 빌드 의존성, 시스템 의존 패키지를 기술한다.
catkin_package(
LIBRARIES ros_tutorials_topic
CATKIN_DEPENDS std_msgs roscpp
)
##인클루드 디렉터리르 설정
include_directories(${catkin_INCLUDE_DIRS})
##topic_publisher 노드에 대한 빌드 옵션
##실행파일, 타킷 링크 라이브러리,추가 의존성 등을 설정
add_executable(topic_publisher src/topic_publisher.cpp)
add_dependencies(topic_publisher ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(topic_publisher ${catkin_LIBRARIES})
##topic_subsciber 노드에 대한 빌드 옵션
add_executable(topic_subscriber src/topic_subscriber.cpp)
add_dependencies(topic_subscriber ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(topic_subscriber ${catkin_LIBRARIES})
4.메시지 파일 작성
빌드설정파일에서 다으모가 같은 옵션 코드를 넣었다.
add_message_files(FILES MsgTutorial.msg) -> 노드에서 사용할 메시지인 MsgTutorial.msg를 빌드할 때 포함하라는 뜻
$ roscd ros_tutorials_topic → 패키지 폴더로 이동
$ mkdir msg → ros_tutorials_topic 패키지에 msg라는 메시지 폴더를 신규 작성
$ cd msg → 작성한 msg 폴더로 이동
$ gedit MsgTutorial.msg → MsgTutorial.msg 파일 신규 작성 및 내용 수정
$ cd .. → ros_tutorials_topic 패키지 폴더로 이동
time(메시지 형식), stamp(메시지 이름)
int32(메시지 형식), data(메시지 이름)
나머지 부분은 오늘까지 작성하겠습니다 ㅜㅜ
반응형
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2025 ROS 스터디] 신채영 #3주차 - ROS 메세지 통신 프로그래밍, roslaunch (0) | 2025.01.31 |
---|---|
[2025 ROS 스터디] 이영상 #3주차- ROS 기본 프로그래밍 (0) | 2025.01.31 |
[2025 ROS 스터디] 이승찬 #3주차 - ROS 기본 프로그래밍 (0) | 2025.01.31 |
[2025 ROS 스터디] 홍동형 #3주차-ROS 기본 프로그래밍 (0) | 2025.01.31 |
[2025 ROS 스터디] 이호휘 #3주차-ROS 기본 프로그래밍 (0) | 2025.01.28 |