본문 바로가기
반응형

전체 글404

LiDAR 센서 LiDAR 센서 이론 정리❓ LiDAR란?LiDAR (Light Detection and Ranging)는 레이저(Light)를 이용해 대상의 거리와 형상을 측정하는 센서발사된 레이저가 물체에 반사되어 돌아오는 시간(Time of Flight)을 측정하여 거리를 계산📐 기본 원리거리 = (왕복 시간 × 빛의 속도) ÷ 2레이저 빔을 물체에 쏘고, 반사되어 돌아오는 시간 차(Time-of-Flight)를 측정하여 정확한 거리(Depth)를 얻음🔧 LiDAR 구성 요소구성 요소설명레이저 송신기특정 주파수의 빛을 발사수신기(Detector)반사된 신호를 감지회전 모터 / 미러여러 방향으로 스캔 (360도 등)타이밍 회로레이저 왕복 시간 계산📊 출력 형태2D LiDAR: 단일 수평면의 거리 정보 (예: R.. 2025. 7. 18.
SLAM SLAM(Simultaneous Localization and Mapping) 이론 정리❓ SLAM이란?SLAM은 Simultaneous Localization and Mapping의 약자로,로봇이 알 수 없는 환경에서 스스로 지도를 생성(Map) 하면서자신의 위치(Localization)를 동시에 추정하는 기술한마디로지도가 없는데, 내가 어디 있는지도 모르겠지만,동시에 지도도 만들고 위치도 파악해야 하는 문제🧩 SLAM의 핵심 문제SLAM은 두 가지 문제를 동시에 해결해야 함Localization: 내가 지금 어디에 있는가? (자기 위치 추정)Mapping: 주변 환경은 어떤 구조인가? (지도 작성)이 둘은 서로 영향을 주기 때문에, 위치를 알아야 지도를 만들 수 있고,지도를 알아야 위치를 더 정확히.. 2025. 7. 17.
[PlatformIO] C++17 코드 빌드시 발생하는 GCC 이슈 정리 PlatformIO에서 STM32 + C++17 코드 빌드시 발생하는 GCC 이슈 정리❓ 문제 상황STM32CubeIDE로는 잘 빌드되는 프로젝트를PlatformIO에서 빌드할 때다음과 같은 에러가 반복적으로 발생함sorry, unimplemented: non-trivial designated initializers not supported또는no match for 'operator=' (operand types are 'SomeStruct' and '')🧩 원인1. PlatformIO 기본 툴체인(GCC) 버전 문제PlatformIO의 STM32 toolchain (toolchain-gccarmnoneeabi)은 GCC 7.x (2017년) 버전을 사용GCC 8.x 이상에서 공식적으로 C++14/17.. 2025. 7. 16.
STM32 CMake 프로젝트 템플릿화 STM32 CMake 프로젝트 템플릿화1. 현업에서 바로 적용 가능한 **STM32 + CMake + Ninja + VSCode** 기반 템플릿을 소개2. CubeMX로 생성한 코드에 이 템플릿을 입히면, 즉시 빌드/업로드/디버깅 가능한 환경을 만들 수 있음1. 디렉토리 구조 (템플릿 예시)stm32-cmake-template/├── CMakeLists.txt├── toolchain-arm-none-eabi.cmake├── .vscode/│ ├── c_cpp_properties.json # 인텔리센스/컴파일러 경로 자동 완성│ └── tasks.json # 빌드&업로드 통합 태스크├── Core/│ ├── Inc/│ └── Src/├── Drivers/├── Mi.. 2025. 7. 15.
CMake + Ninja로 STM32 프로젝트 빌드 성능 비교 CMake + Ninja로 STM32 프로젝트 빌드 성능 비교1. CMake로 STM32(arm-none-eabi) 프로젝트를 관리할 때2. 빌드 툴로 Make와 Ninja 중 무엇을 쓸지 고민되는 경우가 많음3. 두 방식의 실제 속도와 사용성을 실전 로그와 함께 비교🛠️ 테스트 환경 및 세팅프로젝트: STM32F746 + FreeRTOS + C++ (core, drivers, middlewares 포함)Toolchain: arm-gnu-toolchain-14.3 (Darwin/arm64)CMake: toolchain 파일 사용Build 시스템:Unix Makefiles (cmake .. && cmake --build .)Ninja (cmake -G Ninja .. && ninja)테스트 명령어:vsr.. 2025. 7. 14.
임베디드 빌드 시스템 (Makefile, CMake, Ninja) 임베디드 빌드 시스템: Makefile, CMake, Ninja의 현업 트렌드임베디드 소프트웨어 개발에서는 Makefile, CMake, Ninja 세 가지 빌드 시스템이 가장 널리 쓰임각 빌드 시스템은 개발 환경, 프로젝트 규모, 협업 방식 등에 따라 선택이 달라지지만, 최근 트렌드의 큰 흐름이 있음이 문서에서는 임베디드에서의 각 도구의 역할, 장단점, 그리고 현업에서의 주력 사용 양상을 정리함📝 Makefile: 임베디드의 오리지널 표준Makefile은 임베디드, 리눅스, C/C++ 기반 개발에서 가장 오래된 빌드 자동화 표준GNU Make 등으로 실행간단하고 직접적원하는 빌드 과정, 타깃, 의존성을 수동으로 명확하게 정의강점소규모, 레거시, 커스터마이즈가 필요한 임베디드 프로젝트에서 활용도가 높음.. 2025. 7. 13.
CMake vs Makefile CMake와 Makefile의 차이점과 선택 기준CMake와 Makefile은 모두 소프트웨어 개발에서 반복적인 빌드 작업을 자동화하는 데 사용됨CMake는 빌드 스크립트를 자동으로 생성해주는 “메타 빌드 시스템”, Makefile은 빌드 과정을 직접 정의하는 “전통적인 빌드 스크립트”프로젝트 규모, 협업 환경, 지원하는 플랫폼/IDE 등에 따라 두 도구의 선택이 달라질 수 있음아래에서는 CMake와 Makefile의 개념, 특징, 주요 사용 사례, 그리고 장단점을 비교📝 CMake vs Makefile의 기본 개념CMakeCMake는 크로스 플랫폼 빌드 자동화 도구 생성기사용자가 작성한 CMakeLists.txt를 바탕으로, 각 운영체제와 IDE에 맞는 빌드 파일(예: Makefile, Visual .. 2025. 7. 12.
CMake 정리 CMake란 무엇이며, 왜 사용하는가?CMake는 다양한 플랫폼에서 사용할 수 있는 빌드 자동화 도구 생성기(Build System Generator)직접 소스를 빌드하지 않고, 각 환경에 맞는 빌드 스크립트(Makefile, Visual Studio Project 등)를 자동으로 만들어줌C/C++ 프로젝트를 비롯한 여러 언어에서 널리 쓰이며, 크로스 플랫폼(Windows, Linux, macOS) 개발 환경에 매우 유리아래에서는 CMake가 무엇인지, 그리고 왜 개발에서 자주 사용되는지 살펴봄📝 CMake의 기본 개념1. CMake는 소스코드 빌드를 자동화하기 위한 도구2. 프로그래머가 직접 Makefile이나 프로젝트 파일을 일일이 작성하는 대신, CMake 설정 파일(CMakeLists.txt)만.. 2025. 7. 11.
Makefile 정리 Makefile이란 무엇이며, 왜 사용하는가?Makefile은 소프트웨어 프로젝트의 빌드 자동화를 위해 사용하는 파일주로 make라는 빌드 도구와 함께 사용되며, 컴파일, 링크, 테스트, 배포 등 반복 작업을 자동으로 처리C, C++ 등 컴파일 언어에서 가장 오래되고 널리 쓰이는 빌드 시스템아래에서는 Makefile의 개념과 주요 사용 이유에 대해 살펴봄📝 Makefile의 기본 개념1. Makefile은 반복적인 개발 작업(빌드, 테스트, 설치 등)을 자동화하는 데 사용2. 프로젝트 내의 파일 의존성과 빌드 명령어를 명시적으로 지정해 줌3. 대형 프로젝트에서 소스 파일이 많아질 때 관리가 훨씬 용이해짐Make: 유닉스 계열 시스템에서 널리 사용되는 빌드 자동화 도구Makefile: make가 읽어서 .. 2025. 7. 10.
Build System 정리 언어별 빌드 시스템, 요즘 주류 트렌드빌드 시스템은 소프트웨어 개발에서 코드 컴파일·테스트·배포 등의 작업을 자동화하는 핵심 도구Makefile, CMake 외에도 언어와 환경에 따라 다양한 빌드 도구가 존재최근 현업에서는 협업·대형 프로젝트·크로스플랫폼 지원 등으로 인해 새로운 도구들이 많이 사용됨아래에서는 대표적인 빌드 시스템의 종류와 최근 현업 트렌드를 정리함📝 대표적인 빌드 시스템 종류C/C++ 계열CMake크로스플랫폼 빌드 자동화의 표준.다양한 OS/IDE 지원, 대형 오픈소스 및 기업 프로젝트에서 많이 사용Makefile(GNU Make)전통적 빌드 자동화, 리눅스/임베디드/소규모 프로젝트에서 여전히 널리 사용Ninja빌드 속도가 매우 빠름.보통 CMake의 백엔드 빌드 도구로 많이 쓰임(c.. 2025. 7. 9.
반응형