로봇 소프트웨어 아키텍처 오류분석
📌 개요
- 검증에서 문제가 발견되면 "왜 생겼고 어떤 파장이 있는가"를 체계적으로 분석해야 재발을 막음
- 특히 로봇은 SW 오류가 물리적 사고로 이어지므로 안전공학의 분석 기법을 빌려 씀
- 시험 핵심 출제 포인트:
- 오류·결함·고장의 용어 구분
- FTA(하향·연역) vs FMEA(상향·귀납)의 구분
- RPN 계산
- fail-safe·이중화·워치독 같은 안전 설계 원칙
📖 핵심 개념
용어 구분 — 오류, 결함, 고장 (시험 단골)
원인과 결과의 사슬로 이해한다.
- 오류(Error): 사람의 실수 — 설계자가 인터페이스 사양을 잘못 이해함
- 결함(Defect/Fault, 버그): 실수가 산출물에 남긴 흠 — 잘못된 메시지 형식이 설계서·코드에 존재
- 고장(Failure): 결함이 실행 중 발현되어 요구된 기능을 못 하게 된 사건 — 주행 중 통신 해석 실패로 정지
사슬: 오류(사람) → 결함(산출물) → 고장(실행 중 발현). 결함이 있어도 그 경로가 실행되지 않으면 고장은 안 난다 — "잠복한 결함".
아키텍처 수준의 대표 오류 유형
- 인터페이스 불일치: 모듈 간 메시지 형식·단위(도(°) vs 라디안!)·좌표계 가정이 어긋남 — 통합 실패의 최다 원인 (→ ICD)
- 단일 실패점(SPOF): 한 요소가 죽으면 전체가 죽는 구조 (→ 로봇 미들웨어 구조 설계)
- 순환 의존: 모듈 A→B→C→A — 빌드·시작 순서·변경 파급의 악몽 (→ 모듈화 프로그래밍)
- 자원 경합·교착: 공유 자원 설계 미비 (→ 미들웨어 프로세스 관리)
- 타이밍 위반: 처리 시간 합계가 제어 주기 예산 초과, 우선순위 설계 오류
- 확장성 병목: 로봇·센서 추가 시 한 지점에 부하 집중
FTA — 결함수 분석 (하향식·연역적)
FTA(Fault Tree Analysis): 최상위 사건(Top Event — 예: "로봇이 사람과 충돌")에서 출발해, 그것을 일으킬 수 있는 원인들을 AND/OR 게이트의 트리로 내려가며 분해하는 기법.
- OR 게이트: 하나만 일어나도 상위 사건 발생 / AND 게이트: 모두 일어나야 발생
- 산출물: 최소 절단 집합(minimal cut set — 사고를 일으키는 최소 원인 조합) → 어느 조합을 끊어야 안전한지 보인다
- 방향: 결과 → 원인 (연역적, top-down)
FMEA — 고장모드 영향 분석 (상향식·귀납적)
FMEA(Failure Mode and Effects Analysis): 구성요소 각각의 고장모드에서 출발해 "이것이 고장 나면 시스템에 어떤 영향이 가나"를 올라가며 분석하는 기법.
- 각 고장모드를 RPN(Risk Priority Number) = 심각도(S) × 발생도(O) × 검출도(D) 로 점수화해 대책 우선순위를 정한다 (각 1~10점; 검출도는 검출이 어려울수록 높은 점수)
- 방향: 원인 → 결과 (귀납적, bottom-up)
FTA vs FMEA 구분이 최다 빈출: FTA = 사고에서 출발, 하향, 연역 / FMEA = 부품 고장에서 출발, 상향, 귀납. 둘은 상호 보완 — FMEA로 넓게 훑고, 치명적 사건은 FTA로 깊게 판다. (공정 이탈을 가이드워드로 검토하는 HAZOP도 참고로 알아 두자.)
근본 원인 분석 (RCA)
같은 오류의 재발을 막으려면 표면 원인이 아니라 근본 원인까지 파야 한다.
- 5 Whys: "왜?"를 반복해 사슬을 거슬러 올라감 — 정지 실패 → 왜? 메시지 누락 → 왜? QoS 설정 오류 → 왜? 설정 검토 절차 없음(근본 원인: 프로세스)
- 특성요인도(fishbone) 등으로 원인을 범주화(사람·프로세스·도구·환경)
- 산출된 교훈은 체크리스트·설계 가이드에 반영 — 인스펙션의 체크리스트가 이렇게 자란다
오류를 견디는 아키텍처 — 안전 설계 원칙
분석의 최종 목적은 오류가 있어도 사고로 이어지지 않는 구조다.
- 페일 세이프(Fail-safe): 고장 시 안전한 상태로 수렴 — 통신 두절이면 정지, 전원 상실이면 브레이크 체결
- 이중화(Redundancy): 중요 요소를 복수로 — 비상정지 회선 이중화, 센서 중복(서로 다른 원리면 더 강함 → 센서 융합)
- 워치독(Watchdog): 주기적 생존 신호가 끊기면 자동 리셋·정지 — 무한루프·행(hang) 감지 (→ 로봇 액추에이터 펌웨어 설계)
- 격리(Isolation): 오류의 전파를 차단 — 프로세스 분리로 한 노드의 죽음이 전체로 번지지 않게, 안전 기능은 별도 채널로
- 축퇴 운전(Graceful Degradation): 일부 고장 시 기능을 줄여서라도 안전하게 계속 — 카메라 고장 시 저속 모드
결함 관리 프로세스
- 발견된 결함은 등록 → 분류(심각도·우선순위) → 원인 분석 → 수정 → 재시험(회귀 포함) → 종료의 생명주기로 추적(결함 추적 시스템)
- 심각도(영향 크기)와 우선순위(수정 순서)는 별개 축 — 심각하지만 우회 가능한 결함보다, 경미해도 데모를 막는 결함이 먼저일 수 있음
📊 다이어그램 · 수식
FTA와 FMEA의 방향
flowchart TD
subgraph FTA["FTA: 하향·연역 (결과→원인)"]
TOP["최상위 사건: 충돌"] --> G1["OR"]
G1 --> C1["회피 SW 미동작"] & C2["센서 미검출"]
C1 --> G2["AND"]
G2 --> C3["주 채널 고장"] & C4["백업 채널 고장"]
end
subgraph FMEA["FMEA: 상향·귀납 (원인→결과)"]
P1["부품 고장모드:
엔코더 신호 단선"] --> E1["관절각 오인식"] --> E2["시스템 영향: 폭주 위험
RPN = S×O×D"]
end오류 → 결함 → 고장 사슬과 방어선
flowchart LR
ER["오류
(사람의 실수)"] --> DF["결함
(산출물의 흠)"] --> FL["고장
(실행 중 발현)"] --> AC["사고"]
RV["검토·검증"] -. 차단 .-> DF
TS["시험"] -. 차단 .-> FL
FS["Fail-safe·이중화·워치독"] -. 차단 .-> AC🎯 핵심 요약 · 암기 포인트
✏️ 예상문제
1. 용어의 사슬 "사람의 실수 → 산출물에 남은 흠 → 실행 중 기능 상실"에 순서대로 대응하는 것은?
① 고장 → 결함 → 오류 ② 오류 → 결함 → 고장 ③ 결함 → 오류 → 고장 ④ 오류 → 고장 → 결함
정답 및 해설
정답: ② 오류(Error, 사람) → 결함(Defect/Fault, 산출물) → 고장(Failure, 실행 중 발현)이다. 결함이 있어도 해당 경로가 실행되지 않으면 고장은 나지 않는다(잠복 결함).
2. "로봇이 사람과 충돌한다"라는 최상위 사건에서 출발해 AND/OR 게이트로 원인을 하향 분해하는 분석 기법은?
① FMEA ② FTA ③ RCA ④ HAZOP
정답 및 해설
정답: ② 결과(사고)에서 원인으로 내려가는 연역적·하향식 기법이 FTA다. 부품 고장모드에서 영향으로 올라가는 귀납적·상향식 기법이 FMEA — 두 방향의 구분이 최다 빈출이다.
3. FMEA에서 RPN(Risk Priority Number)의 구성 요소로 옳은 것은?
① 심각도 × 발생도 × 검출도 ② 비용 × 일정 × 품질 ③ 응집도 × 결합도 × 복잡도 ④ 온도 × 습도 × 진동
정답 및 해설
정답: ① RPN = 심각도(Severity) × 발생도(Occurrence) × 검출도(Detection)이며, 검출이 어려울수록 검출도 점수가 높다. RPN이 큰 고장모드부터 대책을 세운다.
4. 통신이 두절되면 로봇이 즉시 정지하고, 전원이 상실되면 브레이크가 체결되도록 하는 설계 원칙은?
① 페일 세이프(Fail-safe) ② 조기 최적화 ③ 빅뱅 통합 ④ 순환 의존
정답 및 해설
정답: ① 고장이 나더라도 시스템이 안전한 상태로 수렴하게 만드는 것이 fail-safe다. 이중화·워치독·격리·축퇴 운전과 함께 "오류가 있어도 사고로 이어지지 않는 구조"의 핵심 수단이다.
5. 아키텍처 수준의 오류 유형에 대한 설명으로 옳지 않은 것은?
① 모듈 간 각도 단위(도/라디안) 가정이 어긋나는 것은 인터페이스 불일치다 ② 한 요소의 고장이 전체 정지로 이어지는 구조를 단일 실패점이라 한다 ③ 모듈 A→B→C→A의 의존은 순환 의존으로 변경 파급·빌드 문제를 일으킨다 ④ 처리 시간 합계가 제어 주기를 초과해도 아키텍처와는 무관한 문제다
정답 및 해설
정답: ④ 시간 예산 초과(타이밍 위반)는 모듈 배치·주기 설계라는 아키텍처 결정의 문제이며, 설계 단계의 예산 분석으로 예방해야 한다. 코드를 고치기 전에 구조(분산·주기·우선순위)를 다시 봐야 하는 사안이다.
🔗 관련 노트
- 로봇 소프트웨어 아키텍처 검증 — 오류를 발견하는 검증 활동
- 로봇 시스템 통합 설계 — 인터페이스 불일치와 ICD
- 미들웨어 프로세스 관리 — 자원 경합·교착상태
- 로봇 시스템 시험평가 — 위험성 평가와 안전 표준
- 로봇 액추에이터 펌웨어 설계 — 워치독 등 펌웨어 수준 안전장치
- _MOC 로봇소프트웨어구조설계