# AGV 버퍼 진출 (Buffer Out) 로직 분석

이 문서는 `_SM_RUN_BUFFER_OUT.cs` 소스 코드를 기반으로 한 `Buffer Out` 동작의 상세 로직 흐름을 설명합니다.

## 개요
**목적**: AGV가 버퍼 스테이션에서 도킹을 해제하고 빠져나오는 작업(Move Out)을 수행합니다.

## 선행 조건
1.  **충전 해제 (Charge OFF)**: 충전 중이 아니어야 합니다.
2.  **라이다 정지 (Lidar Stop)**: 장애물에 의해 차단되지 않아야 합니다.
3.  **위치 확인 (Position Check)**: 현재 위치가 확정되어 있어야 합니다.

## 시퀀스 상세 흐름

| 단계 | 동작 | 상세 설명 | 오류 조건 (Error Condition) |
| :--- | :--- | :--- | :--- |
| **1** | **이동 설정** | - 주행 설정: `직진(Strate)`, `전진(Forward)`, `저속(Low Speed)`.<br>- 빈 상태로 아웃(Empty state out) 준비. | (없음) |
| **2** | **전진 이동** | - `전진 구동(Run Forward)` 명령 실행. | (없음) |
| **3** | **마크 스탑 설정** | - "buffer out"용 마크 스탑(Mark Stop) 모니터링 설정. | (없음) |
| **4** | **이동 시작 확인** | - AGV가 실제 이동을 시작했는지 확인. | (없음) |
| **5** | **정지 확인** | - AGV가 마크 위치에 도달하여 정지했는지 확인. | (없음) |
| **6** | **회전 명령** | - `우회전 180도(Right 180 Turn)` 명령 실행. | (없음) |
| **7** | **회전 시작 확인**| - AGV가 회전 동작을 시작했는지 확인. | (없음) |
| **8** | **회전 정지 확인**| - AGV가 회전 동작을 완료하고 멈췄는지 확인. | (없음) |
| **9** | **완료** | - 로그: "BufferOut Complete"<br>- DB 기록: "bufferout 완료". | (없음) |

## 차이점 요약 (vs Buffer In)
*   **방향**: Buffer In은 **후진(Backward)** 및 **좌회전(Left Turn)**을 사용하는 반면, Buffer Out은 **전진(Forward)** 및 **우회전(Right Turn)**을 사용합니다.
*   **리프트**: Buffer Out 로직에는 명시적인 리프트 제어 단계가 없습니다 (이미 내려간 상태 가정).

## 관련 파일
*   `Project\StateMachine\Step\_SM_RUN_BUFFER_OUT.cs`
