Skip to content

Repository files navigation

Autonomous Driving 2D — 강화학습 기반 자율주행 에이전트

2D 환경에서 자율주행 에이전트를 학습시키는 연구·교육용 프로젝트. Plan은 고전 알고리즘(A*)에 외주를 주고, AI는 "주어진 경로 위에서의 안전·효율적 주행""단위 스킬(주차, 차선변경 등) 수행" 에 집중합니다.


프로젝트 목표

  1. 2D 시뮬레이션 환경에서 자율주행 에이전트를 학습시킨다 (3D 미사용).
  2. 차량은 실제 운전과 동일한 연속 제어를 받는다:
    • 조향 각가속도: [-1, +1]
    • 엑셀: [0, 1]
    • 브레이크: [0, 1]
  3. 차량은 1인칭 시점(raycast 센서) 으로 주변을 인지한다.
  4. 학습된 에이전트는 World Model을 내장하여 자신의 위치와 미래 상황을 시뮬레이션할 수 있다.
  5. 출발지 → 목적지 도달에 대해 보상을 극대화한다.

시스템 계층 구조

┌────────────────────────────────────────────────────┐
│  Mission Layer    : 사람이 (start, goal) 지정      │
├────────────────────────────────────────────────────┤
│  Plan Layer       : A* / RRT (외주, 학습 제외)     │
├────────────────────────────────────────────────────┤
│  Skill Layer      : 차선변경/주차/추월 (학습)      │
├────────────────────────────────────────────────────┤
│  Control Layer    : 핸들/엑셀/브레이크 (학습 메인) │
└────────────────────────────────────────────────────┘

자세한 내용은 ARCHITECTURE.md 참조.


설치

환경 요구사항

  • Python 3.10+
  • Windows 10/11 (PowerShell) 또는 Linux/macOS
  • GPU 권장 (CUDA 11.8+) — World Model 학습 시 필수

설치 절차

# 가상환경 생성
python -m venv .venv
.\.venv\Scripts\Activate.ps1   # Windows PowerShell
# source .venv/bin/activate    # Linux/macOS

# 의존성 설치
pip install -r requirements.txt

# (선택) 개발 의존성
pip install -r requirements-dev.txt

빠른 시작

1. 키보드로 직접 운전해보기 (BC 데이터 수집용)

python scripts/play_human.py --scenario lane_follow

방향키 또는 WASD로 조작. 운전 데이터는 data/trajectories/ 에 자동 저장됩니다.

2. PPO 베이스라인 학습 (Phase 1)

python scripts/train.py --config configs/training/ppo_lane_follow.yaml

3. 학습된 에이전트 평가

python scripts/evaluate.py --checkpoint runs/lane_follow_ppo/best.pt

프로젝트 구조

autonomous-driving-2d/
├── README.md            ← 본 파일
├── PLAN.md              ← 단계별 마일스톤
├── ARCHITECTURE.md      ← 시스템 구조 상세
├── CLAUDE.md            ← Claude Code 작업 컨텍스트
├── src/
│   ├── env/             ← 시뮬레이션 환경
│   ├── planner/         ← Plan Layer (외주 알고리즘)
│   ├── agent/           ← Skill + Control + World Model
│   ├── training/        ← 학습 루프
│   └── visualization/   ← 렌더링, 디버깅 시각화
├── configs/             ← YAML 설정 파일
├── data/                ← 사람 운전 데이터 (BC용)
├── notebooks/           ← 실험·분석
├── tests/               ← 단위/통합 테스트
└── scripts/             ← CLI 진입점

학습 단위 — 8가지 스킬

스킬 난도 World Model 활용도
차선 유지 (Lane Following) 낮음
속도 제어 (Cruise Control) 중간
차선 변경 (Lane Change) ★★ 높음
추월 (Overtaking) ★★★ 높음
합류 (Merging) ★★★ 높음
교차로 통과 (Intersection) ★★★ 중간
평행 주차 (Parallel Parking) ★★★★ 매우 높음
직각 주차 (Perpendicular Parking) ★★★ 높음

각 스킬은 독립적으로 학습 가능하며, 추후 메타 컨트롤러가 어떤 스킬을 언제 호출할지 결정합니다.


라이선스

내부 학습/연구용 프로젝트.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages