| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | |||||||||||||||||||||||
2 | |||||||||||||||||||||||
3 | |||||||||||||||||||||||
4 | 기능 요구사항 - VAPS (차량 무인 이동 방지 자동 제어 시스템) | 제외된 요구사항 | 기능 요구사항 정의서 - MON | ||||||||||||||||||||
5 | 기능 ID | 분류 | 요구사항 명 | 상세 기능 ID | 상세 설명 | ECU (INPUT) | ECU (OUTPUT) | 중요도 | 추적 (UR) | 비고 | 기능명 | 상세 설명 | 제외 이유 | 주 요구사항 | |||||||||
6 | 1. 감지 | 장애물 거리 감지 | 시스템은 차량 전방 및 후방 각각 3m 범위 내의 장애물을 감지하며, 측정 오차는 ±3cm 이내여야 한다. 측정 주기는 100ms 이하로 한다. | 장애물 감지 기능은 차량 주변 환경 인식 및 충돌 방지를 위한 기능으로, ADAS 영역에 해당하며 본 프로젝트의 핵심 목표인 ‘운전자 부재 시 차량 이동 방지’ 범위를 초과하므로 제외하였다. | 기능 ID | 분류 | 요구사항 명 | 상세 설명 | 입력 | 출력 | 비고 | ||||||||||||
7 | FR-DET | 감지 | 운전자 존재 감지 | FR-DET-01 | 시스템은 운전석 좌석에 25kg 이상의 하중이 감지되고, 좌석 상부 60cm 이내에서 인체가 감지되면 운전자가 탑승 중인 것으로 판정한다. | MAIN (압력 센서, TOF, 초음파) | - | 상 | SAFE01, SAFE02, SAFE03 | 25kg: 어린이 오감지 방지 기준 | 브레이크 입력 감지 | 시스템은 운전자의 브레이크 페달 입력을 감지하며, 페달 작동 후 50ms 이내에 입력 상태를 반영해야 한다. | 본 시스템은 운전자 부재 상황을 전제로 한 자동 제어 시스템으로, 운전자 입력 기반 제어 기능은 주요 요구사항에 해당하지 않으며 핵심 기능 범위를 벗어나므로 제외하였다. | FR-LOG-01 | 통신 | 직렬 이벤트 수신 | 시스템은 Raspberry Pi 직렬 포트로 입력되는 JSON 1행, key=value 형식, WARN|... 형식, BRAKE|... 형식, 0/1 binary bitstream 데이터를 지속 수신하고 연결 실패 시 재시도 상태와 수신/파싱/드롭 카운터를 유지해야 한다. | CLU 직렬 데이터, 포트 상태 | raw event, serial 상태 정보 | 기본 115200bps, timeout 1s, retry 3s | |||
8 | 감지 | 기어 상태 감지 | FR-DET-02 | 시스템은 차량의 현재 기어 위치(P, R, N, D)를 감지하며, 기어 전환 시 200ms 이내에 변경된 상태를 반영해야 한다. | MAIN (기어 스위치) | - | 중 | SAFE01, SAFE02 | FR-LOG-02 | 해석 | 16bit 상태워드 해석 | 시스템은 16bit 상태워드 [15:14][13:12][11:10][9][8][7:0]를 warning, brake, gear, door, driver, speed 값으로 해석하고 risk code(W1/W2/W3/W4/R1/R2/OK)를 생성해야 한다. | 0/1 binary 상태워드 | 정규화 이벤트 정보 | binary_bits, status_word, binary_bytes_hex 보관 | ||||||||
9 | 감지 | 차량 문 열림 감지 | FR-DET-03 | 시스템은 운전석 문의 열림/닫힘 상태를 감지하며, 스위치 버튼이 눌려 있는 상태를 '닫힘'으로 판정한다. 상태 변화 시 100ms 이내에 반영해야 한다. | MAIN (도어 스위치) | - | 하 | SAFE01, SAFE03 | FR-LOG-03 | 검증 | 이벤트 정규화 및 유효성 검증 | 시스템은 event_category, event_type, gear_state, door_state, driver_present, vehicle_speed, event_time을 정규화하고 허용되지 않는 값은 저장하지 않아야 한다. | parsed payload | validated payload | 허용 category=warning/brake/system | ||||||||
10 | 감지 | 차량 이동 감지 | FR-DET-04 | 시스템은 자동차가 2km/h 이상의 속도로 이동 시 '이동 중' 상태로 전환한다. | ACT (가속도 센서, 엔코더) | - | 상 | SAFE02_BRK03 | FR-LOG-04 | 저장 | 이벤트 로그 DB 저장 | 시스템은 검증된 이벤트를 SQLite events 테이블에 event_time, event_category, event_type, gear_state, door_state, driver_present, vehicle_speed, source, raw_payload, received_at 형태로 저장해야 한다. | validated payload | DB row, event id | id auto increment | ||||||||
11 | 2. 판단 | 중요도 기준 | FR-LOG-05 | 저장 | 원시 payload 및 raw frame 보관 | 시스템은 원본 입력 payload 전체를 raw_payload로 보관하고, binary_bits 또는 status_word가 존재하면 raw_frame 텍스트를 생성해야 한다. 기동 시 DB가 비어 있으면 sample 이벤트를 삽입하고 기존 행은 최신 규칙으로 정규화해야 한다. | original payload, 기존 DB 상태 | raw_payload, raw_frame, initialized DB | 사후 분석용 | ||||||||||||||
12 | FR-JDG | 판단 | 1차 위험 판단 (경고) | FR-JDG-01 | 아래 조건을 모두 만족하면 1차 위험으로 판단한다. · 기어가 D단 또는 R단 · 차량 문이 열린 상태 판단 후 500ms 이내에 경고 명령을 출력해야 한다. | MAIN (기어 스위치, 도어 스위치) | - | 중 | SAFE01_WARN01 | 상 | 안전과 직결, 시스템 핵심 기능, 사고 발생 가능 | FR-LOG-06 | 조회 | 웹 대시보드 제공 | 시스템은 웹 메인 화면에서 총 이벤트 수, 경고 건수, 제동 건수, 최신 이벤트 요약과 최근 이벤트 목록을 표시해야 한다. | DB records | HTML dashboard | route=/ | |||||
13 | 판단 | D단 위험 판단 (제동) | FR-JDG-02 | 아래 조건을 모두 만족하면 D단 제동 위험으로 판단한다. · 기어가 D단 · 운전자 부재 운전자 부재 후 즉시 판단 | MAIN (기어 스위치, 압력 센서, TOF 초음파) | - | 상 | SAFE02_BRK01 | 중 | 사용자 편의, 가시성 향상, 없어도 동작은 가능 | FR-LOG-07 | 조회 | 로그 조건 검색 | 시스템은 category, keyword, limit 조건으로 최근 로그를 조회할 수 있어야 하며, keyword는 event_type, gear_state, door_state, raw_payload를 대상으로 검색해야 한다. | category, keyword, limit | filtered event list | limit 1~500 | ||||||
14 | 판단 | R단 위험 판단 (제동) | FR-JDG-03 | 아래 조건을 모두 만족하면 R단 제동 위험으로 판단한다. · 기어가 R단 · 운전자 부재 운전자 부재 후 즉시 판단 | MAIN (기어 스위치, 압력 센서, TOF 초음파) | - | 상 | SAFE02_BRK02 | 하 | 유지보수, 부가 기능, 운영 편의성 | FR-LOG-08 | API | 로그 조회 API 제공 | 시스템은 /api/events GET 요청 시 최근 로그 목록과 통계를 JSON 형식으로 제공해야 한다. | HTTP GET request | JSON log list, stats | route=/api/events | ||||||
15 | 판단 | Rollaway 위험 판단 (경고) | FR-JDG-04 | 아래 조건을 모두 만족하면 Rollaway 위험으로 판단한다. · 기어가 N단 · 차량 문이 열린 상태 판단 후 200ms 이내에 경고 명령을 출력해야 한다. | MAIN (기어 스위치, 도어 스위치) | - | 중 | SAFE02_BRK03 | N단은 가속 가능하므로 빠른 대응 | 중요도 선정 이유 | FR-LOG-09 | API | 외부 이벤트 등록 | 시스템은 /api/events POST 요청으로 전달된 JSON 이벤트를 검증 후 DB에 저장해야 한다. | POST JSON event | insert result JSON | route=/api/events | ||||||
16 | 판단 | Rollaway 발생 판단 (제동) | FR-JDG-05 | 아래 조건을 모두 만족하면 Rollaway 발생으로 판단한다. · 기어가 N단 · 차량 속도 2km/h 이상 이동 감지 * 운전자 부재 판단 후 200ms 이내에 제동을 실행해야 한다. | MAIN (기어 스위치) ACT (가속도 센서) | - | 상 | SAFE02_BRK04, NOINT01_NOR02 | 50cm: 성인 보행자 1보폭 미만 | 기능 ID | 중요도 | 이유 | FR-LOG-10 | API | 샘플 이벤트 주입 | 시스템은 /api/test/sample 또는 /sample 요청 시 테스트용 샘플 이벤트를 생성하여 저장할 수 있어야 한다. | sample insert request | sample insert result | 테스트용 | ||||
17 | 판단 | 경고 에스컬레이션 판단 | FR-JDG-06 | 1차 위험(JDG-001) 상태에서 도어 열림이 2초 이상 지속되면 경고 강도를 상향 판단한다. | MAIN (도어 스위치) | - | 중 | SAFE01_WARN03 | 2초: 하차 동작 소요 시간 고려 | FR-DET-01 | 상 | 운전자 부재 여부는 자동 제동 판단의 핵심 입력으로, 오판 시 사고로 직결됨 | FR-LOG-11 | 상태 | 직렬/시스템 상태 진단 조회 | 시스템은 /health 및 /api/serial/status를 통해 직렬 연결 여부, 포트 open 상태, retry 여부, 최근 오류, 최근 raw 수신값, 수신/파싱/드롭 카운터, DB 경로를 JSON으로 제공해야 한다. | HTTP GET request | status JSON | routes=/health,/api/serial/status | ||||
18 | 3. 제어 | FR-DET-02 | 중 | 위험 판단에 필요한 주요 조건이지만 단독으로 사고를 유발하지 않음 | FR-LOG-12 | 전송 | SSE 실시간 이벤트 통지 | 시스템은 /api/stream에 연결된 웹 클라이언트에 hello 이벤트와 주기적 ping을 전송하고, 신규 이벤트 저장 시 new_event를 즉시 push해야 한다. | event insert, SSE client connection | SSE hello/ping/new_event | client queue max 64 | ||||||||||||
19 | FR-CTL | 제어 | 1차 경고 출력 | FR-CTL-01 | 1차 위험(JDG-001) 판단 시 부저 단속음(1초 간격, 85dB 이상)과 LCD에 경고 메시지('P단으로 변경하세요')를 출력한다. | MAIN | CLU (부저, LCD) | 중 | SAFE01_WARN01, SAFE01_WARN02 | 85dB: 차량 실내에서 인지 가능 수준 | FR-DET-03 | 하 | 위험 판단 보조 정보로 활용되며, 없어도 핵심 기능 수행 가능 | FR-LOG-13 | 표시 | 웹 알림 및 상태 갱신 | 시스템은 브라우저에서 신규 이벤트 수신 시 토스트와 팝업으로 알리고, 직렬 상태 API를 주기적으로 조회하여 연결 상태를 갱신해야 한다. SSE 사용이 불가능하거나 실패할 경우 자동 새로고침으로 화면을 보조 갱신해야 한다. | SSE payload, status API response | toast, popup, refreshed status/UI | status poll 2초, auto refresh 기본 5초 | |||
20 | 제어 | 경고 강화 출력 | FR-CTL-02 | 경고 에스컬레이션(JDG-006) 판단 시 부저를 연속음(0.3초 간격, 95dB 이상)으로 전환하고 LCD 메시지를 '위험: 운전자 부재 감지'로 변경한다. | MAIN | CLU (부저, LCD) | 중 | SAFE01_WARN03 | 95dB: 차량 외부에서도 인지 가능 | FR-DET-04 | 상 | 실제 차량 이동 여부를 판단하는 요소로, 사고 직전 상황 제어에 필수 | FR-LOG-14 | 경고 | 경고 이벤트 LED 표시 | 시스템은 경고 이벤트 저장 시 Raspberry Pi의 RGB LED를 orange 계열로 점등 또는 점멸하여 경고 발생 상태를 표시해야 한다. | saved warning event | Orange LED | BCM 22/27/17 | ||||
21 | 제어 | 경고 해제 | FR-CTL-03 | 운전자 착석(25kg 이상) + 도어 닫힘이 감지되면 500ms 이내에 경고를 해제한다. | MAIN (압력 센서, TOF, 초음파, 도어 스위치) | CLU (부저) | 중 | SAFE01_WARN04 | FR-JDG-01 | 중 | 사전 경고를 위한 예방적 기능으로, 직접적인 제어 기능은 아님 | FR-LOG-15 | 경고 | 제동 이벤트 LED 표시 | 시스템은 제동 이벤트 저장 시 Raspberry Pi의 RGB LED를 red 계열로 점등 또는 점멸하여 제동 발생 상태를 표시해야 한다. | saved brake event | Red LED | BCM 22/27/17 | |||||
22 | 제어 | D단 자동 제동 | FR-CTL-04 | D단 위험(JDG-002) 판단 시 제동을 수행하여 차량을 2초 이내에 완전 정지시킨다. | MAIN | ACT (서보, DC 모터) | 상 | SAFE02_BRK01 | 크리프 속도 약 5~8km/h | FR-JDG-02 | 상 | 자동 제동 수행 여부를 결정하는 핵심 로직으로 사고 방지에 직결 | FR-LOG-16 | 경고 | 시스템 해제 이벤트 LED 표시 | 시스템은 제동 해제 등 system 이벤트 저장 시 Raspberry Pi의 RGB LED를 green 계열로 점등 또는 점멸하여 정상 복귀 상태를 표시해야 한다. | saved system release event | Green LED | BCM 22/27/17 | ||||
23 | 제어 | R단 자동 제동 | FR-CTL-05 | R단 위험(JDG-003) 판단 시 제동을 수행하여 차량을 2초 이내에 완전 정지시킨다. | MAIN | ACT (서보, DC 모터) | 상 | SAFE02_BRK02 | 크리프 속도 약 5~8km/h | FR-JDG-03 | 상 | 후진 상황에서의 위험 제어 핵심 기능으로 미구현 시 사고 가능 | FR-LOG-17 | 경고 | status/OK 이벤트 LED 소등 | 시스템은 status 또는 OK system 이벤트 저장 시 LED를 off 처리하여 정상 상태를 표시해야 한다. | saved status/OK event | LED off | 정상 상태 표시 | ||||
24 | 제어 | Rollaway 경고 출력 | FR-CTL-06 | Rollaway 위험(JDG-004) 판단 시 경고(1초 간격, 85dB 이상)를 출력한다. | MAIN | CLU (부저) | 중 | SAFE02_BRK03 | N단 경사로 가속 고려 | FR-JDG-04 | 중 | N단 위험 상황을 사전에 인지하는 기능으로 보조적 역할 수행 | FR-LOG-18 | 경고 | MP3 음성 경고 출력 | 시스템은 경고 이벤트와 제동 이벤트 저장 시 MP3 모듈로 지정된 warning/brake 음원을 재생해야 하며, 샘플 데이터는 실제 경고음을 발생시키지 않아야 한다. | saved warning/brake event | MP3 playback | warning/brake 구분 재생 | ||||
25 | 제어 | Rollaway 자동 제동 | FR-CTL-07 | Rollaway 판단 시 제동을 수행하여 차량을 2초 이내에 완전 정지시킨다. 차량 속도 10km/h 이하에서의 제동을 전제로 한다. | MAIN | ACT (서보, DC 모터) | 상 | SAFE02_BRK04 | 충돌 방지 여유거리 20cm | FR-JDG-05 | 상 | 차량이 실제 이동 중인 상황을 제어하는 핵심 안전 기능 | FR-LOG-19 | 전송 | 부팅 후 접속 URL 외부 전송 | 시스템은 웹 서버가 실제로 응답 가능한 상태가 된 뒤 MON 접속 URL을 생성하고 send_url 모듈 또는 외부 명령을 통해 외부 알림 채널로 전송해야 한다. | web server ready | MON access URL notification | 기본 ntfy.sh/VAPS | ||||
26 | 제어 | 제동 상태 유지 | FR-CTL-08 | 자동 제동 후 제동 해제 조건(CTL-009)이 충족될 때까지 제동 상태를 유지한다. | - | - | 상 | SAFE02_BRK04 | FR-JDG-06 | 중 | 경고 강도를 조절하는 보조 기능으로 안전성 향상에 기여 | FR-LOG-20 | 운영 | systemd 자동 실행 및 재시작 | 시스템은 Raspberry Pi 부팅 후 systemd 서비스로 network-online 이후 자동 실행되어야 하며, 비정상 종료 시 3초 후 자동 재시작되어야 한다. | RPi boot, process failure | auto start, auto restart | Restart=always, RestartSec=3 | |||||
27 | 제어 | 제동 해제 | FR-CTL-09 | 제동 상태에서 아래 조건을 모두 만족하면 제동을 해제한다. · 운전자 착석 감지(25kg 이상) · 도어 닫힘 감지 미충족 조건은 LCD에 안내 메시지('운전석에 착석하세요', '문을 닫아주세요' 등)를 표시한다. | MAIN (압력 센서, TOF, 초음파, 도어 스위치) | ACT (서보, DC 모터) CLU (LCD) | 중 | SAFE03_REL01~REL04 | FR-CTL-01 | 중 | 운전자에게 위험을 알리는 기능으로 직접 제어 기능은 아님 | FR-LOG-21 | 운영 | 직렬 포트 실패 시 재시도 및 오류 표시 | 시스템은 직렬 포트 연결 실패 시 연결 재시도를 계속 수행하고, 연결 및 복구 이력과 오류 정보를 상태 API와 웹 화면에서 확인 가능해야 한다. | serial port failure/recovery | retrying state, error history | serial_worker_reliable 기준 | |||||
28 | 제어 | 비상등 점멸 | FR-CTL-10 | 자동 제동(CTL-004~007) 작동 시 LED를 1초 간격으로 점멸하여 외부에 이상 상태를 알린다. 50m 거리에서 육안 식별이 가능해야 한다. | MAIN | CLU (LED) | 중 | EXT01_EXT01 | FR-CTL-02 | 중 | 경고 효과를 강화하는 보조 기능으로 필수 기능은 아님 | ||||||||||||
29 | 제어 | 브레이크등 점등 | FR-CTL-11 | 자동 제동 작동 시 브레이크등 LED를 점등한다. 후방 30m 거리에서 육안 식별이 가능해야 한다. | MAIN | CLU (LED) | 중 | EXT01_EXT02 | FR-CTL-03 | 중 | 사용자 혼란 방지 및 시스템 신뢰성 확보를 위한 기능 | ||||||||||||
30 | 4. 표시 | FR-CTL-04 | 상 | 차량 이동 방지를 직접 수행하는 핵심 안전 기능 | 기능 요구사항 정의서 - LCD | ||||||||||||||||||
31 | FR-DSP | 표시 | 기어 상태 표시 | FR-DSP-01 | 현재 기어 상태(P/R/N/D)를 LCD에 실시간 표시한다. 기어 전환 시 200ms 이내에 화면에 반영되어야 한다. | MAIN | CLU (LCD) | 중 | DISP01_VIEW01 | FR-CTL-05 | 상 | 후진 상황에서 사고 방지를 위한 필수 제어 기능 | 개요 | ||||||||||
32 | 표시 | 도어 상태 표시 | FR-DSP-02 | 도어 열림/닫힘 상태를 LCD에 실시간 표시한다. 상태 변경 시 200ms 이내에 화면에 반영되어야 한다. | MAIN | CLU (LCD) | 중 | DISP01_VIEW02 | FR-CTL-06 | 중 | 위험 상황 인지를 위한 보조 경고 기능 | 본 시스템의 LCD 표시 인터페이스는 운전자 및 관리자에게 현재 차량 상태, 위험 판단 상태, 제어 명령 상태를 직관적으로 제공하기 위한 인터페이스이다. LCD는 총 2개를 사용하며, 각 LCD의 역할은 다음과 같이 구분한다. · LCD-1(운전자 안내용): 운전자에게 현재 위험 상태와 즉시 취해야 할 조치를 안내한다. · LCD-2(상태 모니터링용): 센서 입력 상태와 시스템 제어 출력 상태를 상세히 표시한다. | |||||||||||
33 | 표시 | 경고 상태 표시 | FR-DSP-03 | 현재 경고 단계(정상/1차 경고/경고 강화/Rollaway/긴급)를 LCD에 표시한다. 경고 단계 변경 시 200ms 이내에 화면에 반영되어야 한다. | MAIN | CLU (LCD) | 중 | DISP01_VIEW03 | FR-CTL-07 | 상 | 차량 밀림 상황에서 사고를 방지하는 핵심 기능 | 요구사항 ID | 요구사항 명 | 상세 설명 | |||||||||
34 | 표시 | 제동 상태 표시 | FR-DSP-04 | 현재 제동 상태(해제/제동중)를 LCD에 표시한다. 제동 상태 변경 시 200ms 이내에 화면에 반영되어야 한다. | MAIN | CLU (LCD) | 중 | DISP01_VIEW04 | FR-CTL-08 | 상 | 재이동 방지를 위해 반드시 필요한 안전 유지 기능 | DISP-LCD-01 | 운전자 안내 화면 제공 | 시스템은 LCD-1을 통해 현재 차량 상태 및 위험 상태에 따라 운전자에게 필요한 안내 메시지를 표시해야 한다. | |||||||||
35 | 표시 | 운전자 인식 상태 표시 | FR-DSP-05 | 운전자 존재/부재상태를 LCD에 실시간 표시한다. 판정 변경 시 200ms 이내에 화면에 반영되어야 한다. | MAIN | CLU (LCD) | 중 | DISP01_VIEW05 | FR-CTL-09 | 중 | 정상 운전 복귀를 위한 기능으로 편의성 중심 | DISP-LCD-02 | 시스템 상태 화면 제공 | 시스템은 LCD-2를 통해 센서 입력값과 시스템 제어 명령값을 표시해야 한다. | |||||||||
36 | 5. 사고 기록 | FR-CTL-10 | 중 | 외부에 위험 상황을 알리는 보조 안전 기능 | DISP-LCD-03 | 상태 변경 반영 시간 | 시스템은 g_sensor 또는 g_command 값 변경 후 100ms 이내에 LCD 표시 내용을 갱신해야 한다. | ||||||||||||||||
37 | FR-LOG | 기록 | 경고 이벤트 기록 | FR-LOG-01 | 경고 발생 시 발생 시각(년월일 시분초)과 경고 종류(1차/강화/Rollaway)를 자동 기록한다. 기록은 이벤트 발생 후 3초 이내에 저장되어야 한다. | CLU | RPI | 하 | LOG01_REC01 | FR-CTL-11 | 중 | 후방 차량 인지를 돕는 보조 안전 기능 | DISP-LCD-04 | 위험 우선 표시 | 시스템은 다수의 상태 정보가 존재할 경우 위험도(RiskLevel)가 높은 상태를 우선 표시해야 한다. | ||||||||
38 | 기록 | 제동 이벤트 기록 | FR-LOG-02 | 자동 제동 작동 시 발생 시각(년월일 시분초)과 제동 종류(D단/R단/Rollaway/긴급)를 자동 기록한다. 기록은 이벤트 발생 후 3초 이내에 저장되어야 한다. | CLU | RPI | 하 | LOG01_REC02 | FR-DSP-01 | 중 | 기어 상태는 위험 판단의 핵심 정보이지만, 표시 기능 자체는 사용자 인지 보조 역할이므로 직접 제어 기능은 아님 | DISP-LCD-05 | 경고 상태 표시 | 시스템은 RISK_WARN_LV1, RISK_WARN_LV2, RISK_ROLLAWAY_WARN 상태에서 LCD-1에 경고 메시지와 조치 안내를 표시해야 한다. | |||||||||
39 | 기록 | 제동 당시 기어 상태 기록 | FR-LOG-03 | 자동 제동 시점의 기어 상태를 기록한다. | CLU | RPI | 하 | LOG01_REC03 | FR-DSP-02 | 중 | 문 상태는 위험 상황 판단에 참고되는 정보이나, 표시 기능은 단순 정보 제공 역할이므로 보조 기능에 해당 | DISP-LCD-06 | 자동 제동 상태 표시 | 시스템은 RISK_D_BRAKE, RISK_R_BRAKE, RISK_ROLLAWAY_BRAKE, RISK_BRAKE_HOLD 상태에서 LCD-1에 자동 제동 상태 및 유지 상태를 표시해야 한다. | |||||||||
40 | 기록 | 제동 당시 도어 상태 기록 | FR-LOG-04 | 자동 제동 시점의 도어 상태를 기록한다. | CLU | RPI | 하 | LOG01_REC04 | FR-DSP-03 | 중 | 현재 경고 단계를 시각적으로 제공하여 사용자 이해를 돕지만, 경고 자체는 별도 제어 기능에서 수행 | DISP-LCD-07 | 해제 대기 상태 표시 | 시스템은 RISK_RELEASE_WAIT 상태에서 운전자가 수행해야 할 해제 조건을 LCD-1에 표시해야 한다. | |||||||||
41 | 기록 | 제동 당시 운전자 유무 기록 | FR-LOG-05 | 자동 제동 시점의 운전자 유무를 기록한다. | CLU | RPI | 하 | LOG01_REC05 | FR-DSP-04 | 중 | 차량 제동 상태를 사용자에게 전달하여 상황 인지를 돕는 기능으로, 직접적인 제어 기능은 아님 | DISP-LCD-08 | 센서 상태 표시 | 시스템은 LCD-2에 운전자 상태, 기어 상태, 도어 상태, 차량 속도, 차량 이동 상태를 표시해야 한다. | |||||||||
42 | 기록 | 제동 당시 차량 속도 기록 | FR-LOG-06 | 자동 제동 시점의 차량 속도(km/h)를기록한다. | CLU | RPI | 하 | LOG01_REC06 | FR-DSP-05 | 중 | 스템의 운전자 판단 결과를 사용자에게 제공하는 기능으로, 판단 결과 확인용 보조 기능에 해당 | DISP-LCD-09 | 제어 명령 상태 표시 | 시스템은 LCD-2에 위험 판단 상태, 브레이크 명령, 모터 모드, 부저 모드, 비상등 상태, 브레이크등 상태를 표시해야 한다. | |||||||||
43 | 기록 | 제동 해제 기록 | FR-LOG-07 | 제동 해제 시점의 시각(년월일 시분초)과 해제 사유(운전자 복귀, P단 전환 등)를 기록한다. | CLU | RPI | 하 | LOG01_REC07 | FR-LOG-01 | 하 | 경고 발생 이력을 저장하여 사후 분석에 활용되며, 실시간 제어에는 영향을 주지 않음 | DISP-LCD-10 | 이상 상태 표시 | 시스템은 DRIVER_UNCERTAIN, GEAR_ERROR, 데이터 미갱신 등 이상 상황 발생 시 정상 상태와 구분되는 오류 또는 불확실 상태를 표시해야 한다. | |||||||||
44 | 기록 | 최근 기록 화면 조회 | FR-LOG-08 | 모니터링 화면을 통해 최근 50건의 이상의 이벤트 목록을 시간순으로 조회할 수 있어야 한다. | - | - | 하 | LOG01_REC09 | P단에서만 진입 가능 | FR-LOG-02 | 하 | 자동 제동 발생 이력을 기록하여 시스템 동작 추적에 사용되며, 사고 예방과 직접적인 관련은 없음 | DISP-LCD-11 | 속도 단위 표시 | 시스템은 차량 속도를 km/h 단위로 표시해야 하며, 소수점 첫째 자리까지 표현할 수 있어야 한다. | ||||||||
45 | 기록 | 기록 상세 조회 | FR-LOG-09 | 이벤트 목록에서 특정 항목 선택 시 상세 정보(시각, 종류, 당시 기어/도어/운전자 상태, 차량 속도, 지속 시간)를 표시한다. | - | - | 하 | LOG01_REC10 | FR-LOG-03 | 하 | 제동 시점의 차량 상태를 저장하여 원인 분석에 도움을 주는 기능으로, 제어 기능과는 무관 | DISP-LCD-12 | 메시지 코드 연계 | 시스템은 lcd_msg_code 값을 기준으로 정의된 메시지 테이블에서 LCD-1 표시 문구를 선택할 수 있어야 한다. | |||||||||
46 | 기록 | 외부 장치 기록 전송 | FR-LOG-10 | 외부 장치(PC 등) 연결 시 전체 이벤트 로그를 115200bps 이상의 속도로 전송할 수 있어야 한다. | - | - | 하 | LOG01_REC11 | FR-LOG-04 | 하 | 제동 시점의 차량 상태를 저장하여 원인 분석에 도움을 주는 기능으로, 제어 기능과는 무관 | DISP-LCD-13 | 초기 부팅 표시 | 시스템 전원 인가 후 LCD는 초기화 상태 및 시스템 준비 상태를 표시해야 하며, 초기화 완료 후 정상 화면으로 전환해야 한다. | |||||||||
47 | 기록 | 기록 순환 저장 | FR-LOG-11 | 최소 50건 이상의 이벤트를 저장할 수 있어야 한다. 저장 공간이 가득 차면 가장 오래된 기록부터 자동 삭제하여 최근 기록이 항상 유지되어야 한다. | - | - | 하 | LOG01_REC12 | 200건: 약 6개월 분량 추정 | FR-LOG-05 | 하 | 제동 시점의 차량 상태를 저장하여 원인 분석에 도움을 주는 기능으로, 제어 기능과는 무관 | DISP-LCD-14 | 표시 우선순위 유지 | 시스템은 위험 상태가 해제되기 전까지 일반 상태 표시로 전환해서는 안 된다. | ||||||||
48 | 기록 | 경고 기록 시 LED 표시 | FR-LOG-12 | 경고 이벤트 기록(FR-LOG-01) 발생 시 RPi의 주황색(Orange) LED를 점등하여 경고 기록 발생 상태를 시각적으로 표시한다. | CLU | RPI | 하 | - | 로그 저장 후 즉시 표시 | FR-LOG-06 | 하 | 제동 시점의 차량 상태를 저장하여 원인 분석에 도움을 주는 기능으로, 제어 기능과는 무관 | DISP-LCD-15 | 정상 상태 표시 | 시스템은 정상 상태에서 현재 기어 상태와 안전 여부를 LCD-1에 간단히 표시해야 한다. | ||||||||
49 | 기록 | 제동 기록 시 LED 표시 | FR-LOG-13 | 제동 이벤트 기록(FR-LOG-02) 발생 시 RPi의 적색(Red) LED를 점멸하여 제동 기록 발생 상태를 시각적으로 표시한다. | CLU | RPI | 하 | - | 점멸 주기는 구현 정의 | FR-LOG-07 | 하 | 제동 해제 시점 및 사유를 기록하여 시스템 동작 이력 관리에 활용되는 기능 | DISP-LCD-16 | 페이지 전환 지원 | 시스템은 LCD-2에 표시 항목이 많은 경우 센서 상태 페이지와 제어 상태 페이지를 주기적으로 전환 표시할 수 있어야 한다. | ||||||||
50 | 기록 | 시스템 해제 기록 시 LED 표시 | FR-LOG-14 | 제동 해제 기록(FR-LOG-07) 발생 시 RPi의 녹색(Green) LED를 점등하여 시스템 해제 기록 발생 상태를 시각적으로 표시한다. | CLU | RPI | 하 | - | system 전체가 아니라 해제 기록 기준 | FR-LOG-08 | 하 | 제동 성능 분석을 위한 데이터 수집 기능으로, 실시간 안전 제어에는 영향 없음 | DISP-LCD-17 | 제동 상태 고정 표시 | 시스템은 자동 제동 또는 제동 유지 상태 발생 시 LCD-2를 제어 상태 페이지에 우선 고정 표시해야 한다. | ||||||||
51 | 기록 | 부팅 시 모니터링 URL 알림 전송 | FR-LOG-15 | Raspberry Pi가 부팅되고 MON 웹 서버가 정상 기동되면, 자기 자신의 IP 주소와 포트를 포함한 모니터링 URL(http://<IP>:5000)을 https://ntfy.sh/VAPS 로 1회 전송한다. | RPI | 외부 알림 서비스 | 하 | - | 웹 서버 준비 완료 후 전송 | FR-LOG-09 | 하 | 사용자 또는 관리자가 최근 이벤트를 확인할 수 있도록 하는 조회 기능으로 운영 편의성 목적 | DISP-LCD-18 | 데이터 무결성 보호 | LCD 표시 태스크는 공유 데이터 접근 시 Mutex를 사용하여 센서 데이터 및 제어 명령 데이터를 일관성 있게 읽어야 한다. | ||||||||
52 | 6. 정상 운전 보호 | FR-LOG-10 | 하 | 특정 이벤트의 상세 정보를 제공하는 기능으로, 유지보수 및 분석을 위한 부가 기능 | LCD 인터페이스 역할 정의 표 | ||||||||||||||||||
53 | 보호 | P단 시 시스템 비활성 | FR-SAF-01 | P단인 경우 경고 및 제동이 작동을 시작하지 않는다. | MAIN(기어 스위치) | ACT (서보모터, DC모터, 엔코더) CLU (LED, LCD, 부저) | 상 | NOINT01_NOR01 | FR-LOG-11 | 하 | 외부 시스템과의 연동을 위한 기능으로, 차량 제어와 직접적인 연관 없음 | 구분 | 명칭 | 역할 | 표시 목적 | 주요 사용자 | |||||||
54 | FR-SAF | 보호 | 정상 주행 시 시스템 비활성 | FR-SAF-02 | 운전자 착석(25kg 이상) + 도어 닫힘 상태에서는 경고, 제동, 긴급 정지 등 시스템의 모든 개입을 수행하지 않는다. | MAIN ( 압력센서, TOF, 초음파, 도어스위치) | - | 상 | NOINT01_NOR02 | FR-LOG-12 | 하 | 저장 공간 관리를 위한 기능으로, 시스템 운영 편의성을 위한 부가 기능 | LCD-1 | 운전자 안내용 LCD | 위험 상태 및 운전자 조치 안내 표시 | 행동 유도 | 운전자 | ||||||
55 | 7. 비기능 요구사항 | FR-SAF-01 | 상 | 불필요한 시스템 개입 방지로 오작동 사고 예방 | LCD-2 | 시스템 상태 LCD | 센서 상태, 판단 상태, 제어 상태 상세 표시 | 모니터링 및 디버깅 | 개발자, 관리자, 시연 관찰자 | ||||||||||||||
56 | FR-NFR | 성능 | 경고 응답 시간 | FR-NFR-01 | 위험 판단 후 1차 경고는 2초 이내에 출력되어야 한다. 센서 샘플링부터 부저 출력까지의 전체 지연 시간을 포함한다. | - | CLU (LED, LCD, 부저) | 중 | RESP01_SPD01 | FR-SAF-02 | 상 | 정상 운전 중 시스템 개입 방지로 안전성 확보 | |||||||||||
57 | 성능 | 제동 응답 시간 | FR-NFR-02 | 위험 판단 후 제동 명령은 500ms 이내에 수행되어야 한다. Rollaway 제동의 경우 100ms 이내에 수행되어야 한다. | - | ACT (DC모터, 엔코더, 서보모터) | 상 | RESP01_SPD02 | FR-NFR-01 | 중 | 사용자 인지 속도에 영향을 주는 성능 요구사항 | ||||||||||||
58 | 신뢰성 | 다중 조건 판단 | FR-NFR-03 | 단일 센서 오작동만으로 제동이 수행되지 않도록 최소 2개 이상의 센서 조건 충족 시에만 제동을 실행해야 한다. | - | - | 상 | TRUST01_ERR01 | FR-NFR-02 | 상 | 제동 지연 시 사고로 직결되므로 핵심 성능 요구사항 | ||||||||||||
59 | 신뢰성 | 정상 운행 방해 방지 | FR-NFR-04 | 정상 운행을 위하여 기어가 P단인 경우 경고 및 제동을 수행하지 않는다. | MAIN (기어스위치) | - | 상 | FR-NFR-03 | 상 | 오작동 방지를 위한 필수 신뢰성 요구사항 | |||||||||||||
60 | 안전성 | 정상 운전 간섭 방지 | FR-NFR-05 | P단 또는 운전자 착석(25kg 이상)+도어 닫힘 상태에서 경고 및 제동을 수행하지 않아야 한다. | MAIN ( 압력센서, TOF, 초음파, 도어센서) | - | 상 | NOINT01_NOR01, NOR02 | FR-NFR-04 | 상 | 정상 운행 방지를 위한 핵심 요구사항 | ||||||||||||
61 | 유지보수 | 모듈 분리 설계 | FR-NFR-06 | 센서별 모듈을 분리 설계하여 개별 센서 교체 시 다른 모듈에 영향 없이 교체 가능해야 한다. | - | - | 하 | - | FR-NFR-05 | 상 | 시스템 오작동으로 인한 위험 방지를 위한 핵심 요구사항 | ||||||||||||
62 | FR-NFR-06 | 하 | 유지보수 편의성을 위한 부가적 요구사항 | ||||||||||||||||||||
63 | |||||||||||||||||||||||
64 | 유저 요구사항->기능 요구사항 | ||||||||||||||||||||||
65 | 유저 RC (추적 UR) | 기능 RC (상세 기능 ID) | |||||||||||||||||||||
66 | SAFE01 | FR-DET-01, FR-DET-02, FR-DET-03 | |||||||||||||||||||||
67 | SAFE02 | FR-DET-01, FR-DET-02 | |||||||||||||||||||||
68 | SAFE03 | FR-DET-01, FR-DET-03 | |||||||||||||||||||||
69 | SAFE01_WARN01 | FR-JDG-01, FR-CTL-01 | |||||||||||||||||||||
70 | SAFE01_WARN02 | FR-CTL-01 | |||||||||||||||||||||
71 | SAFE01_WARN03 | FR-JDG-06, FR-CTL-02 | |||||||||||||||||||||
72 | SAFE01_WARN04 | FR-CTL-03 | |||||||||||||||||||||
73 | SAFE02_BRK01 | FR-JDG-02, FR-CTL-04 | |||||||||||||||||||||
74 | SAFE02_BRK02 | FR-JDG-03, FR-CTL-05 | |||||||||||||||||||||
75 | SAFE02_BRK03 | FR-DET-04, FR-JDG-04, FR-CTL-06 | |||||||||||||||||||||
76 | SAFE02_BRK04 | FR-JDG-05, FR-CTL-07, FR-CTL-08 | |||||||||||||||||||||
77 | SAFE03_REL01~REL04 | FR-CTL-09 | |||||||||||||||||||||
78 | EXT01_EXT01 | FR-CTL-10 | |||||||||||||||||||||
79 | EXT01_EXT02 | FR-CTL-11 | |||||||||||||||||||||
80 | DISP01_VIEW01 | FR-DSP-01 | |||||||||||||||||||||
81 | DISP01_VIEW02 | FR-DSP-02 | |||||||||||||||||||||
82 | DISP01_VIEW03 | FR-DSP-03 | |||||||||||||||||||||
83 | DISP01_VIEW04 | FR-DSP-04 | |||||||||||||||||||||
84 | DISP01_VIEW05 | FR-DSP-05 | |||||||||||||||||||||
85 | LOG01_REC01 | FR-LOG-01 | |||||||||||||||||||||
86 | LOG01_REC02 | FR-LOG-02 | |||||||||||||||||||||
87 | LOG01_REC03 | FR-LOG-03 | |||||||||||||||||||||
88 | LOG01_REC04 | FR-LOG-04 | |||||||||||||||||||||
89 | LOG01_REC05 | FR-LOG-05 | |||||||||||||||||||||
90 | LOG01_REC06 | FR-LOG-06 | |||||||||||||||||||||
91 | LOG01_REC07 | FR-LOG-07 | |||||||||||||||||||||
92 | LOG01_REC08 | FR-LOG-08 | |||||||||||||||||||||
93 | LOG01_REC09 | FR-LOG-09 | |||||||||||||||||||||
94 | NOINT01_NOR01 | FR-SAF-01, FR-NFR-05 | |||||||||||||||||||||
95 | NOINT01_NOR02 | FR-JDG-05, FR-SAF-02, FR-NFR-05 | |||||||||||||||||||||
96 | NOINT01_NOR03 | FR-SAF-03 | |||||||||||||||||||||
97 | RESP01_SPD01 | FR-NFR-01 | |||||||||||||||||||||
98 | RESP01_SPD02 | FR-NFR-02 | |||||||||||||||||||||
99 | TRUST01_ERR01 | FR-NFR-03 | |||||||||||||||||||||