Skip to content

hackisha/MotionPlanningControl

Repository files navigation

Motion Planning & Control

차량 모션 플래닝과 제어 알고리즘을 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

Python 프로젝트

각 과제 폴더는 알고리즘 구현 파일, test_*.py, 문제 설명과 시각화 또는 기록 생성 스크립트로 구성됩니다.

Filters

과제 내용
Average Filter 누적 평균 기반 신호 평활화
Moving Average Filter 고정 window 이동 평균
Low-Pass Filter 1차 저역통과 필터
Kalman Filter 1차원 상태 추정
Kalman Filter 2D 2차원 상태와 공분산 추정

PID

  • P Controller
  • PD Controller
  • PID Controller
  • PID Tuning
  • PID with Low-Pass Filter
  • PID with Kalman Filter

각 예제는 controller, plant model, 테스트와 기록 생성 코드로 구성됩니다.

Vehicle Control

  • 속도 PID 제어
  • Constant-space 차간거리 제어
  • Time-gap 차간거리 제어
  • Kinematic lateral model
  • 차량·전역 좌표계 변환
  • 횡방향 PID와 feed-forward
  • Pure Pursuit
  • Stanley
  • 종·횡방향 통합 제어

Path Planning

  • 양쪽 차선과 virtual lane 기반 경로 생성
  • 이동 표적 추종
  • Dijkstra와 A*
  • Hybrid A*
  • RRT, RRT*, Informed RRT*
  • RRT-Dubins

Trajectory Planning

  • Cartesian/Frenet 좌표 변환
  • 이동 표적 예측
  • 차선 유지·차선 변경 후보 궤적 생성
  • Frenet 후보 경로 평가

Python 실행 환경

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가 남아 있어 모든 테스트의 기본 통과를 보장하지 않습니다.

CarMaker for Simulink 프로젝트

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 시뮬레이션 성능을 재현하거나 보장할 수 없습니다.
  • 별도 라이선스 파일이 포함되어 있지 않습니다.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors