본문 바로가기

분류 전체보기

(45)
[CMake] CMake 간단한 설명 + 예제 CMake CMake란 여러 환경(window , linux 등)에 맞는 build process를 작성한 것으로, CMakeLists.txt에 기술된 내용을 바탕으로 각 확경에 맞는 Makefile을 생성해 주는 빌드 프로그램이다. CMake를 통해 Makefile을 만들게 되면, 추가적인 파일이 추가되지 않는 한 Makefile을 수정하지 않고, 자동으로 생성해준다는 장점이 있지만, 단순히 Makefile을 생성해 주는 것이기 때문에 Make를 추가로 해야한다. 이 포스트는 linux 기준으로 설명한다. Install linux에 CMake가 없을 경우 다음과 같이 설치할 수 있다. sudo apt install cmake CMakeLists.txt 앞에서 말했듯이 CMake는 CMakeLists.t..
[ UART ] 시리얼 통신 , 패킷 UART통신 UART 통신이란 Serial 통신으로, 데이터 전송 혹은 수신 핀이 하나인 통신이다. 한번에 1byte씩 보내며, 각 bit는 차례(직렬)로 전송된다. MCU (ex. arduino)에서 많이 쓰이는 방식이며, TX (데이터를 보내는 핀)와 RX (데이터를 받는 핀)이 존재한다. 회로적으로 보았을 때, 각 bit의 0과 1은 MCU에선 GND와 VCC로 생각 할수 있으며, 전달받은 신호를 해석하면 다시 bit에서 byte로 전환이 가능하다. 데이터를 주고 받는 것에 있어서 보내는 쪽과 받는 쪽의 데이터 전송 속도가 동일 해야한다. 이러한 통신 속도를 baud rate라고 하며, baud rate에는 115200 , 57600 , 9600 등 다양하게 존재한다. UART는 Start bit ..
[ C / C++ ] make , Makefile make 기존 gcc / g++를 이용해서 프로그램을 빌드할 때, 빌드를 할 때마다 SHELL(터미널 창)에 명령어를 입력하기 힘들어서 Makefile에 이렇게 빌드를 하면 된다.라고 명시해 놓음으로써 빌드하기 간편하게 만들어 준다. Makefile Makefile이란 make가 현재 경로에서 참고하여 실행하는 파일으로, 어떻게 빌드할지 적혀있는 파일이다. 파일 이름은 무조건 Makefile로 통일되어야 한다. make와 Makefile을 사용하기 전 기존 gcc / g++로 했던 방식을 간단하게 살펴보자 일단 파일 구조가 다음과 같고 , 각각의 코드가 다음과 같을 때, 파일 구조 src |- main.cpp |- function1.cpp |- function2.cpp |- my_header.h my_h..
[ Server / Client ] 서버 클라이언트 작성법 + Custom service file 작성법 ROS의 Server / Client 노드를 작성하는 법을 알아보자. 먼저, Server와 Client를 사용하기 위해 Service file을 작성해야 한다. 이를 위해 저번에 만들어 놓았던 message pkg인 study_msgs에 들어가서 CMakeLists.txt (경로 : ~/catkin_ws/src/study_msgs/)를 다음과 같이 수정해 준다. cmake_minimum_required(VERSION 3.0.2) project(study_msgs) find_package(catkin REQUIRED COMPONENTS std_msgs message_generation ) add_message_files( FILES my_msg.msg ) #####서비스 파일 추가 ###### add_se..
[ C / C ++ ] 프로그램하기전 지식 우리가 일반적으로 '코딩한다' 라고 하는 것은 .c , .cpp 등 소스 코드를 작성 하는 것이다. 하지만 이 소스 코드들은 컴퓨터가 바로 실행하지 못한다. *인터프리터 언어, 즉 스크립트(ex. python)의 경우에는 바로 실행이 가능하다. 컴퓨터가 우리가 작성한 소스 코드를 실행하기 위해선 기계가 알아들을 수 있는 기계어로 번역하는 과정이 필요한데 이걸 빌드(build)라고 하고 이 역할을 해주는 프로그램을 빌더(builder)라고 한다. 빌드에는 2가지 단계가 존재한다. 소스코드를 기계가 알아들을 수 있는 수준으로 번역하고 object file( .o 확장자 )을 생성하는 컴파일(compile) , 분리된 object file을 모아서 하나의 실행파일을 만드는 링크(link)가 있다. 여기서 컴파..