Readable Programming SEED
ROS2 없이 만드는 양산 타겟 Robotics Production Framework 구축하기
데모는 도는데 제품으로 넘기려면 성능도 빌드도 팀의 코드 기준도 전부 다시 잡아야 합니다. 제가 자율주행 자동차와 배달 로봇을 제품에 올리며 ROS2를 걷어내고 직접 세워 온 방법을 그대로 전합니다. 설정과 로깅, 메모리, 동시성, 주기가 다른 센서를 한 박자로 묶는 파이프라인까지 강의에서 짠 코드째로 받습니다. Linux에서도 macOS에서도 Jetson에서도 같은 명령으로 빌드되고, 기준을 어기면 빌드가 막습니다.
OUTCOME
끝나면 이렇게 일하게 됩니다
- ROS2가 해 주던 일을 하나씩 직접 만듭니다. 만든 순서가 그대로 제품의 구조가 됩니다.로보틱스 개발자 · 데모는 이미 돌려 봤다
- 주기가 다른 센서를 같은 박자로 묶습니다. 제품에서 쓰던 구조 그대로입니다.자율주행 · 센서 융합 · 카메라와 LiDAR를 같이 쓴다
- 속도가 어디서 나오고 어디서 새는지 메모리부터 짚습니다. 다음에 무엇을 고칠지가 보입니다.C++로 성능을 책임지는 사람 · 문법은 아는데 구조가 막힌다
- 기준을 문서와 설정으로 못 박습니다. 어기면 빌드가 실패합니다.팀에 기준을 세워야 하는 사람 · 팀이 커지는 중이다
PROBLEM
데모는 동작합니다.
제품으로 못 낼 뿐입니다.
- 카메라 하나 더 붙였더니 프레임이 떨어집니다어디가 느린지 Profiler를 봐도 다음에 무엇을 고칠지가 안 나옵니다.
- 켜 뒀는데 zero-copy가 안 걸립니다설정은 맞는데 실제로는 복사가 일어납니다. 확인할 방법도 없습니다.
- Jetson에 올리자 빌드가 깨집니다내 컴퓨터에서 되던 것이 장비에서 안 됩니다. 원인은 매번 다릅니다.
- 팀원 컴퓨터에서만 셋업이 안 됩니다사람마다 환경이 달라서 되는 사람이 옆에 붙어 있어야 합니다.
- 반년 만에 코드 스타일이 갈라집니다말로도 리뷰로도 안 막힙니다. 사람이 늘수록 빨라집니다.
- 고쳤더니 다른 데가 터집니다어디까지 영향이 가는지 모르니 손대는 것 자체가 무서워집니다.
PROOF
사기 전에 열어 보실 수 있습니다
제목을 누르시면 여기서 바로 열립니다.
INSIDE
ROS2가 해 주던 일을
하나씩 만들어 갑니다
강마다 그때 짠 코드 저장소를 통째로 드립니다.
끝나면 이게 손에 있습니다
- 4강
Build System
Linux에서도 macOS에서도 Jetson에서도 같은 명령으로 빌드됩니다. 쓰는 라이브러리를 프로젝트 안에 넣어 뒀고, 빌드할 때마다 형식 검사와 테스트가 같이 실행됩니다.
- 3강
Setup Script
명령 한 줄로 갖춰지는 개발 환경. 팀에 그대로 옮겨 쓰실 수 있습니다.
- 2강
Coding Standards
빌드가 검사할 때 기준으로 삼는 설정과 문서 — clang-format · clang-tidy 설정, 스타일 가이드, 템플릿 6종.
- 4강
Quality Automation
Format → Lint → Compile → Test → Coverage 가 한 줄로 돌고, 올릴 때마다 GitHub Actions 가 네 조합으로 빌드하고 테스트합니다.
- 5강
ConfigurationReader · Logger · Path · Factory
ROS2가 해 주던 기본 기능. 값을 파일에서 읽어 오니 하나 바꾸는 데 다시 빌드하지 않고, 문제가 나면 로그가 파일로 남습니다.
- 6강
Memory Pool
메모리를 미리 잡아 두는 것. 초기화 뒤에는 동적 할당이 없습니다.
- 7강 · 8강
Thread Pool · Scheduler · Pipeline
일감을 여러 스레드에 나눠 주는 것, 주기가 다른 센서를 맞추는 것, 단계를 이어 붙이는 것.
- 전 강
Repositories
코드 저장소 넷 전부. 환경 셋업부터 빌드 설정, 기준 문서, 실제 동작하는 코드까지 강의에서 짠 그대로. 비상업 사용·수정 허용. 공유·재배포 금지. 상업 사용은 별도 서면 계약.
손에 잡고 쓰는 것들
LANGUAGE
- Modern C++20
BUILD
- Modern CMake
- Ninja
COMPILER
- Clang
- GCC
- MSVC
FORMAT
- clang-format
LINT
- clang-tidy
TEST
- Catch2
- CTest
COVERAGE
- gcovr
LIBRARY
- spdlog
- fkYAML
SETUP
- Shell Script
- VS Code
VCS
- Git
- GitHub CLI
CI
- GitHub Actions
어디서 돌아가나
- Linux기준 환경강의 영상이 이 환경에서 찍혔습니다.
- macOS기준 환경같은 코드가 그대로 빌드됩니다.
- Windows빌드에서만빌드는 됩니다. 영상은 Linux와 macOS 기준으로 진행합니다.
CULTIVATOR
로보틱스 C++ 개발자
- 59
- GROWERS
- 13년
- 로봇 소프트웨어
- 4개
- 코드 저장소
로봇 위에서 도는 C++을 씁니다. 프레임워크가 해 주던 것을 걷어내고 직접 세우는 쪽을 오래 해 왔습니다. 그렇게 만든 것들이 실제 장비 위에서 돌고 있습니다.
- 2019.01 – 2021.12
- ROBOTIS — Perception Part Tech Lead
- 배송 로봇 인지 소프트웨어 개발 총괄
- 핵심 프레임워크를 멀티스레딩 기반으로 바닥부터 전부 구현
- NVIDIA Jetson에서 CUDA 병렬처리 최적화
- 2021.12 – 2023.05
- STRADVISION — Visual SLAM Software Architect
- 자동주차용 Visual SLAM을 아무것도 없는 상태에서 설계
- 읽기 좋은 코드 원칙 적용, 현업 소프트웨어 규격 준수
- 기능 하나 만드는 기간 두 달 → 1주
- 2021 – 지금
- 멘토 · 특강
- 프로그래머스 자율주행 데브코스 1 · 2 · 3 · 5 · 6기 — C++ 개발 환경 · 빌드 시스템 · 코드 품질 멘토링
- SSAFY 포트폴리오 특강
- 서울ICT이노베이션 특성화고 Python 교육
- 2023.06 – 지금
- HolyGround — 대표
- 교육 기획 · 제작 · 개발 · 마케팅 · 사이트 제작까지 직접
- 인프런에 C++ 강의 등록
FAQ