3장 ROS 구조 및 빌드 시스템
Last updated
Last updated
패키지 : ROS 소프트웨어의 기본 단위. 패키지는 노드, 라이브러리, 환경설정 파일들을 통합하는 최소의 빌드 단위이며, 배포 단위이다.
패키지 매니페스트 : 패키지의 작성자, 라이선스, 의존성, 컨피그레이션 플레그 등을 포함하는 패키지 정보
메타 패키지 : 이전에는 스택으로 불리웠지만, 특수한 목적을 위한 패키지 그룹을 지칭한다. 대표적인 예로 네비게이션 스택을 예로 들 수 있다.
메시지 : 한 ROS 프로세서에서 다른 ROS 프로세서로 정보를 전달하는 한 형태
서비스 : 프로세스간의 요청/응답 상호작용
Service, Service Server, Service Client
Node : 최소 단위의 실행 가능한 프로세서를 가리키는 용어로써 하나의 실행 가능한 프로그램으로 생각하면 된다. ROS에서는 최소한의 실행 단위로 프로그램을 나누어 작업하게 된다. 각 노드는 메시지 통신으로 데이터를 주고 받는다.
Package : 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은것. 또한, 패키지의 묶음을 메타패키지라 하여 따로 분리 한다.
Message : 메시지를 통해 노드 간의 데이터를 주고 받게 된다. 메시지는 integer, floating point, boolean와 같은 변수 형태이다. 또한, 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 및 메시지들의 배열과 같은 구조도 사용할 수 있다.
Publisher, Subscriber, Topic
Action, Action Server, Action Client
각조인트(joint)들의 상대좌표 변환
트리(tree) 형태로 조인트들 간의 관계도를 표시함
SI(Systeme Internationale) 단위 사용
1) 패키지 생성
2) 패키지 설정 파일(package.xml) 수정
3) 빌드 설정 파일(CMakeLists.txt) 수정
4) 메시지 파일 작성
5) 퍼블리셔 노드 작성
6) 서브 스크라이버 노드 작성
7) ROS 노드 빌드
•ros_tutorials_topic 패키지의 소스 코드 파일: ~/catkin_ws/src/ros_tutorials_topic/src
•ros_tutorials_topic패키지의 메시지 파일: ~/catkin_ws/src/ros_tutorials_topic/msg
•빌드된 결과물은 /catkin_ws의 /build와/devel폴더에 각각 생성
•/build 폴더에는 캐킨 빌드에서 사용된 설정 내용이 저장
•/devel/lib/ros_tutorials_topic폴더에는 실행 파일이 저장
•/devel/include/ros_tutorials_topic폴더에는 메시지 파일로 부터 자동 생성된 메시지 헤더 파일이 저장
•roslaunch는 하나 이상의 정해진 노드를 실행 시킬수 있다.
•roslaunch는‘*.launch’라는 파일을 사용하여 실행노드를 설정하는데 이는XML 기반이며, 태그별 옵션을 제공한다.
•실행 명령어는"roslaunch [패키지명] [roslaunch파일]”이다.
명령어
중요도
명령어풀이
세부설명
roscd
★★★
ros+cd(changes directory)
지정한 ROS 패키지의 디렉터리로 이동
rosls
★☆☆
ros+ls(lists files)
ROS 패키지의 파일목록 확인
rosed
★☆☆
ros+ed(editor)
ROS 패키지의 파일편집
roscp
★☆☆
ros+cp(copies files)
ROS 패키지의 파일복사
rospd
☆☆☆
ros+pushd
ROS 디렉터리 인덱스에 디렉터리 추가
rosd
☆☆☆
ros+directory
ROS 디렉터리 인덱스 확인
명령어
중요도
명령어풀이
세부설명
roscore
★★★
ros+core
-master(ROS 네임서비스) -rosout(로그기록) -parameter server(파라미터관리)
rosrun
★★★
ros+run
노드실행
roslaunch
★★★
ros+launch
노드를 여러개 실행 및 실행 옵션 설정
rosclean
★★☆
ros+clean
ROS 로그 파일을 검사하거나 삭제
명령어
중요도
명령어풀이
세부설명
rostopic
★★★
ros+topic
ROS 토픽 정보 확인
rosservice
★★★
ros+service
ROS 서비스 정보 확인
rosnode
★★★
ros+node
ROS 노드 정보 확인
rosparam
★★★
ros+param(parameter)
ROS 파라미터 정보 확인, 수정
rosbag
★★★
ros+bag
ROS 메시지 기록, 재생
rosmsg
★★☆
ros+msg
ROS 메시지 정보 확인
rossrv
★★☆
ros+srv
ROS 서비스 정보 확인
rosversion
★☆☆
ros+version
ROS 패키지 및 배포 릴리즈 버전 정보 확인
roswtf
☆☆☆
ros+wtf
ROS 시스템 검사
명령어
중요도
세부설명
catkin_create_pkg
★★★
패키지 자동 생성
catkin_make
★★★
캐킨 빌드시스템에 기반을 둔 빌드
catkin_eclipse
★★☆
캐킨 빌드 시스템으로 생성한 패키지를 이클립스에서 사용 할 수 있게 변경
catkin_prepare_release
★★☆
릴리즈 할때 사용되는 로그정리 및 버전 태깅
catkin_generate_changelog
★★☆
릴리즈 할때 CHANGELOG.rst 파일 생성 또는 업데이트
catkin_init_workspace
★★☆
캐킨 빌드 시스템의 작업폴더 초기화
catkin_find
★☆☆
캐킨 검색
명령어
중요도
명령어풀이
세부설명
rospack
★★★
ros+pack(age)
ROS 패키지와 관련된 정보 보기
rosinstall
★★☆
ros+install
ROS 추가 패키지 설치
rosdep
★★☆
ros+dep(endencies)
해당패키지의 의존성 파일 설치
roslocate
☆☆☆
ros+locate
ROS 패키지 정보 관련 명령어
roscreate-pkg
☆☆☆
ros+create-pkg
ROS 패키지 자동생성(구rosbuild 시스템에서사용)
rosmake
☆☆☆
ros+make
ROS 패키지를 빌드(구rosbuild 시스템에서사용)
Column 1
Column 2
Quantity
Unit
angle
radian
frequency
hertz
force
newton
power
watt
voltage
volt
length
meter
mess
kilogram
time
second
current
ampere
temperature
celsius
대상
명명규칙
예제
패키지
under_scored
Ex) first_ros_package
토픽, 서비스
under_scored
Ex) raw_image
파일
under_scored
Ex) turtlebot3_fake.cpp
네임스페이스
under_scored
Ex) ros_awesome_package
변수
under_scored
Ex) string table_name;
타입
CamelCased
Ex) typedefint32_t propertiesNumber;
클래스
CamelCased
Ex) classUrlTable
구조체
CamelCased
Ex) structUrlTableProperties
열거형
CamelCased
Ex) enumChoiceNumber
함수
camelCased
Ex) addTableEntry();
메소드
camelCased
Ex) void setNumEntries(int32_t num_entries)
상수
ALL_CAPITALS
Ex) const uint8_t DAYS_IN_A_WEEK = 7;