데브코스
-
Build_System_CMake1Tools/CMake 2024. 1. 9. 16:09
이전에 미리 작성된 CMake를 사용하여 빌드를 하였지만, CMake를 어떻게 작성하는지 정리하려고 한다. https://mokchanic.tistory.com/100 Basic_CMake 이번에는 간단한 예제를 가지고 CMake를 구성하여 C++ 빌드를 해보려고한다. 만약 이 페이지를 처음 본다면, 아래의 기본적인 Compiler 설치와 Extentions중 Clangd를 적용하고 오는 것을 추천한다. Compiler mokchanic.tistory.com Build System 1. 개요 소스 코드를 실행 가능한 프로그램 또는 라이브러리로 변환하는 과정을 자동화하는 도구와 방법들의 집합. 프로젝트의 규모가 커질수록 잘 관리하는것이 매우 중요하다. 2. 목적 프로젝트의 일관성: 빌드 시스템을 통해 동일..
-
CMake Build SystemTools/CMake 2023. 10. 9. 02:13
C++의 Build System은 다음의 역할을 한다. - 코드 컴파일 및 빌드 소스 코드 파일을 컴파일러와 링커를 사용하여 실행이 가능한 프로그램으로 변환한다. 소스 코드의 구문 검사, 의미 분석, 최적화 및 목적 코드 생성등을 한다. - 의존성 관리 프로젝트 내의 파일 및 모듈 간의 의존성을 추적하고 관리한다. 특정 파일이 변경되었을 때 어떤 파일을 다시 컴파일해야 하는지 결정하는데 도움을 준다. - 자동화 빌드 프로세스를 자동화하여 반복 및 복잡한 작업을 간소화 하며 Human error를 줄인다. 개발자가 더 많은 시간을 코드 작성 및 디버깅에 집중하도록 돕는다. - 환경관리 다양한 플랫폼 또는 환경에서 소프트웨어를 빌드하고 실행할 수 있도록 돕는다. 다른 운영 체제 또는 아키텍처에서 동일한 코드..
-
코딩 가이드 라인Clean Code 2023. 10. 5. 14:25
해당 내용은 개발환경 setup과 소프트웨어 퀄리티를 올리는 방법에 대해 작성하였다. 협업시 발생하는 문제점 협업을 할 때 각자 개발한 코드에 문제가 많이 있었으나 읽기 쉽지 않아서 어디가 문제인지 찾기 힘들었다. 다른 소프트웨어와 연동, 각자 개발한 코드를 합치려 했지만, 인터페이스가 좋지 않았다. 위와 같이 협업시 다양한 문제가 발생할 수 있다. 코드 베이스와 개발 가이드라인, 문법들이 잘 정리되어 코드를 작성한다면, 개발 시간을 단축 할 수 있다. 또한, 윈도우, 리눅스, 개발 보드등 개발 환경을 일관화 하면 개발할 때 좋다. C++, Python등 개발에 필요한 IDE 확장 기능을 구성하면 좋다. 또한 개발 환경을 설정할 때, OS를 밀고 다시 설치하는 경우에는 오래 걸린다. Shell scrip..
-
_ROS1_custom_msgROS/ROS1 2023. 10. 4. 18:39
기존의 메시지를 사용할 수 있지만, 내가 직접 메시지를 만들 수 있다. 참고사이트 http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv ROS/Tutorials/CreatingMsgAndSrv - ROS Wiki Note: This tutorial assumes that you have completed the previous tutorials: using rosed. Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of you ..
-
_ROS1_node_communicationROS/ROS1 2023. 10. 4. 16:58
ROS는 노드들이 통신을하며 데이터를 주고 받는다. 이번에는 teacher.py와 student.py를 만들어서 데이터를 주고 받는 예제를 한번 해보도록하자. 1. 패키지 만들기 $ cd catkin_ws/src # 작업 디렉토리로 이동 $ catkin_create_pkg msg_send std_msgs rospy # 패키지 이름 설정 및 종속 패키지 추가 $ cd msg_send # msg_send 폴더로 이동 & mkdir launch # launch 폴더 생성 launc 폴더까지 생성을 했으면 catkin_ws로 이동하여 catkin_make를 진행한다. 이후 teacher.py와 student.py를 생성한다. # msg_send로 이동 $ roscd msg_send $ cd src teacher..
-
_ROS1_roslaunchROS/ROS1 2023. 10. 3. 23:55
roslaunch는 파일의 내용에 따라 여러 노드들을 한꺼번에 실행할 수 있다. 실행시킬 노드들의 정보는 XML형식으로 기록되어 있다. launch파일은 다음 위치에 존재하며 .launch 확장자를 갖는다. launch에서 사용하는 Tag는 대표적으로 node, include가 있으며 다음과 같이 사용한다. 1. node node는 실행할 노드 정보를 입력할 때 사용되는 태그이다. pkg: 실행시킬 노드의 패키지를 입력하는 속성. type: 노드의 소스코드가 담긴 파일의 이름을 입력하는 속성. name: 노드의 이름을 입력하는 속성.(소스코드에서 지정한 노드의 이름을 무시하고 launch파일에 기록된 노드의 이름으로 노드기 실행.) 2. include include는 다른 launch파일을 불러오고 싶을..
-
_ROS1_기본 내용ROS/ROS1 2023. 10. 1. 22:35
ROS(Robot Operating System)는 여러개의 Node와 Master로 이루어져 있으며 Node들이 Master의 중재를 받아서 메시지를 주고 받는 형태이다. 이와 같은 구조를 가진 이유는 로봇과 센서가 개발되는 회사가 다르기 때문에 각 하드웨어 및 소프트웨어를 쉽게 연결할 수 있기 때문이다. ROS에서의 통신은 topic의 publish & subscribe 기반의 메시지 교환이다. 이와 같은 구조를 가졌기 때문에 OS가 다르더라도 메시지를 교환할 수 있다는 장점을 가진다. 각 하드웨어 및 소프트웨어 모듈에 Node가 하나씩 할당되고 각 Node들은 OS의 도움을 받아서 하드웨어 장치를 제어할 수 있다. 그럼 지금까지 나온 기본 용어들을 정리해보자. 1. Master 서로 다른 노드들 사..