차량 모션 플래닝과 제어 알고리즘을 Python 과제와 CarMaker for Simulink 환경에서 단계별로 다루는 교육용 저장소입니다.
- 평균·저역통과·Kalman filter 기반 신호 처리
- P, PD, PID와 필터 결합 폐루프 제어
- 차량 종·횡방향 제어와 좌표계 변환
- Pure Pursuit, Stanley 기반 경로 추종
- Dijkstra, A*, Hybrid A*, RRT 계열 경로 계획
- Frenet 좌표계 기반 궤적 계획
- IPG CarMaker와 MATLAB/Simulink 연동 실습
MotionPlanningControl/
├── 01_Python_project/
│ └── release/
│ ├── 01_filters/
│ ├── 02_pid/
│ ├── 03_vehicle_control/
│ ├── 04_path_planning/
│ └── 05_trajectory_planning/
├── 02_Carmaker_project/
│ └── Practice_sample/
├── pyproject.toml
├── uv.lock
└── .python-version
각 과제 폴더는 알고리즘 구현 파일, test_*.py, 문제 설명과 시각화 또는 기록 생성 스크립트로 구성됩니다.
| 과제 | 내용 |
|---|---|
| Average Filter | 누적 평균 기반 신호 평활화 |
| Moving Average Filter | 고정 window 이동 평균 |
| Low-Pass Filter | 1차 저역통과 필터 |
| Kalman Filter | 1차원 상태 추정 |
| Kalman Filter 2D | 2차원 상태와 공분산 추정 |
- P Controller
- PD Controller
- PID Controller
- PID Tuning
- PID with Low-Pass Filter
- PID with Kalman Filter
각 예제는 controller, plant model, 테스트와 기록 생성 코드로 구성됩니다.
- 속도 PID 제어
- Constant-space 차간거리 제어
- Time-gap 차간거리 제어
- Kinematic lateral model
- 차량·전역 좌표계 변환
- 횡방향 PID와 feed-forward
- Pure Pursuit
- Stanley
- 종·횡방향 통합 제어
- 양쪽 차선과 virtual lane 기반 경로 생성
- 이동 표적 추종
- Dijkstra와 A*
- Hybrid A*
- RRT, RRT*, Informed RRT*
- RRT-Dubins
- Cartesian/Frenet 좌표 변환
- 이동 표적 예측
- 차선 유지·차선 변경 후보 궤적 생성
- Frenet 후보 경로 평가
pyproject.toml과 .python-version은 Python 3.14와 uv 사용을 기준으로 합니다.
주요 의존성:
- NumPy
- Plotly
- pytest
- Rerun SDK
환경 구성:
uv sync과제별 테스트:
uv run pytest 01_Python_project/release/<영역>/<과제>/ -v예:
uv run pytest \
01_Python_project/release/01_filters/01_average_filter/ \
-v데모 실행:
uv run python \
01_Python_project/release/<영역>/<과제>/demo.py전체 트리에는 같은 이름의 테스트 모듈이 존재할 수 있으므로 현재 작업하는 과제 경로를 지정해 실행하는 방식을 권장합니다. 배포 코드에는 학습자가 구현해야 하는 TODO가 남아 있어 모든 테스트의 기본 통과를 보장하지 않습니다.
02_Carmaker_project/Practice_sample/은 IPG CarMaker와 MATLAB/Simulink를 연동하는 실습 워크스페이스입니다.
- CarMaker project configuration
- 차량, 도로, 교통 객체와 TestRun
- CarMaker C source와 build file
- CarMaker for Simulink interface source
- Day별 Simulink 모델
- 시뮬레이션 MAT와 HTML 산출물
Simulink 모델은 다음 단계로 구성됩니다.
src_cm4sl/Models/
├── Day1/
├── Day2/
├── Day3/
├── Day4_5/
├── Day6/
└── FinalProject/
Road와 TestRun에는 day1부터 day7_final까지의 시나리오가 포함되어 있습니다. 각 모델의 구체적인 평가 기준과 성능 결과는 별도 루트 문서가 없어 파일 이름과 산출물만으로 단정하지 않습니다.
- IPG CarMaker
- CarMaker for Simulink
- MATLAB/Simulink
- 설치 버전에 맞는 C compiler 또는 Visual Studio toolchain
정확한 실행 절차와 호환 버전은 설치된 CarMaker와 MATLAB 환경에 따라 달라집니다.
- Python 과제에는 미구현
TODO가 남아 있습니다. pyproject.toml의 일부 pytest·Ruff 경로는 현재 디렉터리 구조와 일치하지 않습니다.- CarMaker 프로젝트에는 생성 파일, 결과 파일과 IDE 설정이 함께 포함되어 있습니다.
- CarMaker와 Simulink 실행에는 별도 상용 도구와 라이선스가 필요합니다.
- 저장소만으로 CarMaker 시뮬레이션 성능을 재현하거나 보장할 수 없습니다.
- 별도 라이선스 파일이 포함되어 있지 않습니다.