# 01_basics: CartPole PPO 기본 실습

Stable-Baselines3(SB3)와 Gymnasium의 기본 사용 흐름을 CartPole 환경으로 확인하는 실습

## 목적

- Gymnasium 환경 생성 방식 확인
- SB3 `PPO` 모델 생성/학습/저장 흐름 확인
- 저장된 모델을 불러와 평가하고 mp4 영상으로 기록

## 폴더 구조

- `01_train.py`: CartPole-v1 환경에서 PPO 모델 학습
- `02_evaluation.py`: 저장된 PPO 모델 평가 + 영상 저장
- `trained_models/`: 학습된 모델 저장 위치
- `videos/`: 평가 영상 저장 위치

## 실행 전 준비

루트 프로젝트에서 공통 의존성을 먼저 설치

```bash
cd /home/kafa46/studies/reinforce_learning/play_with_sb3
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
```

## 실행 순서

작업 디렉터리: `01_basics`

### 1) PPO 모델 학습

```bash
cd /home/kafa46/studies/reinforce_learning/play_with_sb3/01_basics
python 01_train.py
```

예상 결과

- `CartPole-v1` 환경에서 `10,000` timestep 학습
- `trained_models/ppo-cartpole-10_000.model` 생성

### 2) 학습 모델 평가 및 영상 저장

```bash
python 02_evaluation.py
```

예상 결과

- 저장된 PPO 모델 로드
- deterministic policy로 `2,000` step 실행
- `videos/ppo_cartpole_eval-episode-*.mp4` 생성

## 핵심 흐름

```mermaid
flowchart LR
    A["Gymnasium<br/>CartPole-v1"] --> B["SB3 PPO<br/>MlpPolicy"]
    B --> C["learn<br/>10000 timesteps"]
    C --> D["saved model<br/>trained_models"]
    D --> E["evaluation<br/>RecordVideo"]
    E --> F["mp4 videos"]
```

## 참고

- `01_train.py`를 다시 실행하면 같은 경로의 모델 파일을 덮어쓸 수 있습니다.
- `02_evaluation.py`는 먼저 `trained_models/ppo-cartpole-10_000.model`이 있어야 실행됩니다.
