Today I Learned(8/15)

이종욱·2023년 8월 15일

CMake란? 빌드 파일을 생성해주는 프로그램

CMakeLists.txt ---(Cmake)---> 빌드 파일 ---(빌드 시스템)---> 실행 파일

실행하려는 프로젝트(소스 파일)와 CMakeLists.txt는 같은 경로되, 빌드 파일은 작업하는 디렉토리와 다른 디렉토리에 만들기(권장)
CMakeLists.txt 양식 있음, 모든 것들이 양식이 있다...

build 안에서 CMake(ROS 특화 catkin_make)
빌드가 컴파일(소스 코드 바이너리로),링크(소스 연결)를 포함하는 개념

header file(헤더 파일) = include file(인클루드 파일) => 소스 파일
!C언어는 헤더파일(declaration)과 소스파일(definiton)을 구분한답니다..(컴파일 시간적 이점 때문)

구조 하나하나 다 짜주기 => include dir 만들기
CMakeLists.txt에 알려주기 => target_include_directories(<실행 파일 이름> PUBLIC <경로 1> <경로 2> ...)
!파일위치가 바껴도 사용가능 하게끔 절대 경로 쓰지 말 것

IDE 중 CMakeLists.txt 기반으로 하는 거면 연결 가능(ROS 패키지도 CMakeLists.txt 기반)

자세한 CMake 사용법 공부 필요

ROS로 돌아와서

마스터(네임 서버)는 XMLRPC로 노드(슬레이브)와 통신(서로 필요할 때만 통신, 유지 x, 가볍고 다양한 프로그래밍 언어 지원)
포트는 11311

노드는 ROS에서 실행되는 최소 단위의 프로세서
노드 간 통신 시(XMLRPC or TCPROS, tcp/ip 계열) UDPROS? RPC?
노드는 구동과 함께 마스터에
1. 노드 이름
2-1. Publisher, Subscriber에 사용되는 토픽 이름, 메시지 형태, URI 주소, 포트
2-2. Service server, Service client에 사용되는 서비스 이름, 메시지 형태, URI 주소, 포트
정보 등록
!URL은 프로토콜+URI

메시지로 노드 간 데이터를 주고 받는데 integer, floating과 같은 변수 형태(단순 자료형부터 데이터구조 등등 다양함)
메시지 통신 방법
1.토픽(비동기, 단방향, 연속적인 데이터 송수신, 한번 접속되면 계속)센서데이터 적합
2.서비스(동기, 양방향, 요청 처리 순식간, 응답 완료되면 끊김)이벤트 발생, 특정 동작에 적합
3.액션(비동기, 양방향, 서비스에서 피드백 추가한 느낌)복잡한 지시

파라미터 서버도 있음(마스터 기능, 파라미터 등록)
bag 말 그대로 bag
repository: 패키지가 저장된 웹상의 URL 주소

ROS 자료형 비교도 중요(Python 자료형이랑 어떤게 맞는지) std_msgs, geometry_msgs
.msgs 토픽
.srv 서비스
*.action 액션

ROS 응용프로그램은 패키지 단위로 개발되는데 package.xml 안에 패키지 정보 기술되있음
~/catkin_ws/src에 git clone [repository]로 소스파일 복사
그 다음 ~/catkin_ws에서 catkin_make로 빌드
오 이제 이해된당
추가로 /opt/ros/noetic에 ros 설치되는데
/bin: 실행 가능한 바이너리 파일
/etc: ROS 및 catkin 관련 설정 파일
/include: 헤더 파일
/lib: 라이브러리 파일
/share: ROS 패키지
env. : 환경설정 파일
setup.
: 환경설정 파일

catkin_ws 안에는
/build: 빌드 관련 파일
/devel: msg,srv 헤더 파일과 사용자 패키지 라이브러리, 실행파일
/src: 사용자 패키지

src 안 패키지 안에는 일반적으로
/include: 헤더 파일
/launch: roslaunch에 사용되는 launch 파일
/node: rospy용 스크립트
/msg: 메시지 파일
/src: 코드 소스 파일
/srv: 서비스 파일
CMakeLists.txt: 빌드 설정 파일
package.xml: 패키지 설정 파일

패키지 생성 명령어 해보기
패키지 설정 파일 뜯어 보기(package.xml)
CMake 사용법(CMakeLists.txt 작성)
ROS Wiki 따라가기

더 빠르고 하드웨어 제어 목적이라면 C++? 높은 생산성 python

python용으로 소스파일 분석 필요

profile
안녕하세요!

1개의 댓글

comment-user-thumbnail
2023년 8월 15일

이런 유용한 정보를 나눠주셔서 감사합니다.

답글 달기