# FOV 이탈 구간 집중 데이터 수집 가이드 (Phase 2)

## 목적
현재 `v3_exp08_center_goal` 모델의 핵심 약점인 **중간 프레임 FOV 이탈 구간 조향 중단 문제** 해결을 위한 데이터 추가 수집 절차입니다.

기존 `basket_dataset_v2`: 장애물이 멀리서 정면에 보이는 접근 위주  
신규 `basket_dataset_v3` (목표): **장애물 근접/이탈 구간** 집중 수록

---

## 신규 시나리오 3종

| 시나리오           | 설명                                                                            | 키        | 에피소드 목표 |
| :----------------- | :------------------------------------------------------------------------------ | :-------- | :-----------: |
| **Close-Approach** | 장애물에 아주 가까이 붙기 시작해서 지나치는 구간 (장애물이 frame 하단 1/3 이하) | 새로 추가 |     200개     |
| **Pass-Through**   | 장애물 완전 통과 (회피를 마친 완성 에피소드)                                    | 새로 추가 |     200개     |
| **FOV-Edge**       | 장애물이 frame 모서리에 절반 이상 잘린 채로 시작                                | 새로 추가 |     100개     |

---

## 데이터 수집 절차 (기존 데이터 컬렉터 활용)

현재 `vla-collect` (mobile_vla_data_collector) 스크립트를 활용하되, 아래 절차를 따릅니다.

### Close-Approach 시나리오
1. 장애물(가능하면 30cm 이상 박스)을 로봇 전방 **20-30cm 이내**에 배치
2. `N` → 기존 시나리오 중 방향이 일치하는 것 선택 (1: 왼쪽 경로, 2: 오른쪽 경로)
3. 에피소드 진행 시 **장애물이 프레임에서 사라지더라도 계속 회피 조향 유지**하며 18프레임 채우기
4. 패턴: Core (C) 선택, 거리: Close (J) 선택

### Pass-Through 시나리오
1. 장애물을 중거리(1m 내외)에 배치
2. 에피소드 시작 → **장애물 옆을 완전히 통과**할 때까지 조향 유지
3. 통과 완료 후에도 1~2 스텝 더 직진 후 STOP (M 키)
4. 패턴: Variant (V) 선택, 거리: Medium (K) 선택

### FOV-Edge 시나리오
1. 로봇을 장애물 바로 옆에 비스듬하게 세워서 **장애물이 화면 측면 모서리에 절반**만 보이게 배치
2. 에피소드 시작 → 정상적으로 장애물을 인식하고 피하는 행동 수행

---

## 환경 변수 설정 (basket_dataset_v3 저장 경로)

```bash
# basket_dataset_v3 새 경로에 저장
export VLA_DATASET_DIR="/home/soda/vla/ROS_action/basket_dataset_v3"
vla-collect
```

> ⚠️ 기존 `basket_dataset_v2` 경로를 **절대 덮어쓰지 않도록** 반드시 환경 변수를 설정하고 실행합니다.

---

## 유효성 기준 (에피소드 채택 조건)

| 기준           | 세부 내용                                       |
| :------------- | :---------------------------------------------- |
| 최소 프레임 수 | 12 이상 (18이 이상적)                           |
| 조향 다양성    | Angular Action이 최소 4회 이상 비0.0            |
| 완성도         | STOP으로 올바르게 종료되어야 함                 |
| 금지           | Forward만 18프레임 연속 (= 회피 안 한 에피소드) |
