Skip to content

OPERATIONS

lazybrain80 edited this page May 23, 2026 · 1 revision

전시 운영 매뉴얼

일상 운영자가 전시 운영 중 매일 따라야 할 절차. 기술 배경 없이 따라할 수 있도록 구체 명령·확인 항목 위주로.


1. 일일 운영 흐름

1.1 전시 오픈 (개시 30분 전)

순서 작업 검증
1 UPS(Uninterruptible Power Supply, 무정전 전원공급장치)·전원 확인 전면 LED 정상
2 메인 워크스테이션 부팅 OS 로그인까지 정상
3 docker 자동 시작 확인 docker compose ps — 모든 컨테이너 healthy
4 HA 대시보드 열기 (http://localhost:8123) 모든 로봇 entity online, 모든 카메라 entity available
5 Frigate UI 열기 (http://localhost:5000) 모든 카메라 라이브 영상 표시
6 로봇 전원 켜기 + 도크에서 stand 확인 SPOT: 정상 자세, 배터리 > 80%
7 태블릿 3대 충전 도크에서 분리 + 페어링 카메라 앞 테스트 각 태블릿이 QR → 환영 메시지까지 OK
8 시작 시나리오 dry-run 1회 카페 → 공원 → 차량 → 실내 1인 종단
9 운영 일지에 점검 결과 기록 (체크리스트 양식 참조)

1.2 운영 중 (시연 진행)

주기 작업
매 세션 시작 페어링 카메라 앞 안내 ("QR 인식 중입니다")
매 세션 종료 태블릿 회수 → 도크 충전 + 시각·음성 안내로 다음 체험자 호출
매 30분 로봇 배터리 확인 — 25% 미만 시 자동 도크 복귀 (또는 수동 교대)
매 1시간 운영 일지 업데이트 (체험자 수, 이상 이벤트 유무)

1.3 전시 종료

순서 작업
1 모든 활성 세션 종료 (HA에서 "force end" 버튼)
2 로봇을 도크로 복귀 (robot_command capability=goto + dock_position)
3 태블릿 모두 도크 충전기에 거치
4 컨테이너 정상 종료: docker compose stop (필요 시) — restart: always라 부팅 시 자동 재시작
5 운영 일지 마감 + 다음 날 인수인계 메모

2. 비상 대응

2.1 e-stop 발동 (사용자 위험 감지)

물리 e-stop(emergency stop, 긴급 정지) 버튼 누르기 (운영자 콘솔 + 전시장 입구 비치).

이후 자동으로 일어나는 일:

  • safety/estop active=true MQTT(Message Queuing Telemetry Transport, 메시지 큐 텔레메트리 전송 프로토콜) publish (retain).
  • 모든 로봇 즉시 정지 (mcp-robot-adapter Watchdog 인터록).
  • 모든 활성 태블릿에 "잠시 시연을 멈추었습니다" 표시 (HA 자동화).

해제 절차:

  1. 위험 요인 제거 후 운영자가 e-stop 버튼 release.
  2. HA 대시보드에서 "E-Stop Reset" 버튼 클릭 — safety/estop active=false publish.
  3. 로봇이 자동 stand → 운영자가 정상 동작 1회 확인.

2.2 로봇 fault

증상 운영자 액션
HA에서 binary_sensor.spot_01_online = off 로봇 전원·Wi-Fi 확인 → 안 되면 다른 로봇으로 시나리오 대체
sensor.spot_01_battery < 20% 도크로 복귀 명령 → 충전 30분 → 재투입
robot.fault 알림 (severity: critical) 로봇 즉시 정지 (수동 e-stop) → 제조사 지원 콜

2.3 LLM 단절 (Anthropic API 장애)

  • HA 자동화의 폴백 시나리오 자동 발동 (SERVICES.md §3 폴백 카탈로그 참조).
  • 운영자 액션:
    • 운영 일지에 시작 시각 기록.
    • HA 대시보드 상단 노란 배너 ("폴백 모드 운영 중") 확인.
    • 30분 이상 지속 시: 운영자가 체험자에게 사전 양해 + 시연 페이스 조정.
    • 복구되면 자동 정상 모드 — 추가 액션 불필요.

2.4 태블릿 분실·고장

  • 즉시 페어링 토큰 무효화: HA 대시보드 → "Active Sessions" → 해당 세션 "Force End".
  • 예비 태블릿 1대를 페어링 카메라 앞에서 신규 페어링.

2.5 카메라 단절

  • HA에서 binary_sensor.<camera>_available = off.
  • 인접 카메라가 cross-camera ReID로 일부 보완 — zone 추적 신뢰도 저하 알림 발동.
  • 30분 이상 단절 시 시연 일시 중단 → 카메라 재기동 또는 케이블 교체.

2.6 정전

  • UPS가 5분 백업 → 운영자가 수동으로 모든 컨테이너 종료 후 시스템 셧다운.
  • 전원 복구 후 §1.1 부팅 절차로 재시작.

3. 운영 일지 양식

매일 운영 시작·종료 시 다음을 기록 (스프레드시트 또는 운영 일지 책자):

일자: 2026-XX-XX
운영자: <이름>

[시작 점검 — 09:30]
□ UPS 정상
□ docker compose ps: 모든 컨테이너 healthy
□ HA 모든 entity online
□ Frigate 모든 카메라 라이브
□ 로봇 배터리 SPOT 01: ___%, SPOT 02: ___%
□ 태블릿 3대 정상
□ Dry-run 시나리오 통과

[운영 중 이벤트]
시각 / 이벤트 / 조치
- 10:15 / SPOT-01 fault: low_battery / 도크 복귀, 30분 충전 후 재투입
- 11:30 / 태블릿 t02 페어링 실패 / 재시작 후 정상

[종료 — 18:30]
□ 모든 세션 종료
□ 로봇 도크 복귀
□ 태블릿 충전 도크 거치
□ 운영 일지 마감

오늘 체험자 수: ___
이상 이벤트: ___
다음 운영자에게 인수인계: ___

3.5 로봇 배터리·충전 운영

3.5.1 SPOT 운영 사이클

  • 운영 시간: 1회 충전 약 90분 운용 (시연 강도에 따라 60~120분).
  • 충전 시간: 0% → 100% 약 90분, 50% → 100% 약 45분 (제조사 사양 기준).
  • 권장 운영 사이클: 60분 시연 → 3045분 충전 (battery 3080% 윈도 활용).

3.5.2 자동 도크 복귀

HA 자동화로 임계값 도달 시 자동:

automation:
  - alias: "SPOT-01 low battery → dock"
    trigger:
      - platform: numeric_state
        entity_id: sensor.spot_01_battery
        below: 25
    condition:
      - condition: state
        entity_id: binary_sensor.orchestrator_alive
        state: 'on'
    action:
      - service: mqtt.publish
        data:
          topic: "robot/spot-01/command"
          payload_template: >
            {
              "command_id": "auto-dock-{{ now().timestamp() | int }}",
              "robot_id": "spot-01",
              "capability": "goto",
              "params": {"x": <DOCK_X>, "y": <DOCK_Y>, "yaw": <DOCK_YAW>},
              "priority": "operator",
              "source": {"service": "home-assistant", "trace_id": "auto-dock"},
              "expires_at": null
            }

3.5.3 운영자 수동 교대

2대 로봇 보유 시 한 대 충전 중 다른 대가 시연 — orchestrator의 시스템 프롬프트에 가용 로봇 풀이 자동 반영(§7.3 동시성 정책).

운영자 액션:

  1. HA 대시보드에서 "Battery" 카드 확인 — 어느 로봇이 충전 중인지 시각.
  2. 시연 도중 교대 필요 시 "Manual Dock" 버튼 → 다른 로봇이 인계.
  3. orchestrator의 attached_session이 자동으로 갱신되어 신규 사용자는 가용 로봇으로 라우팅.

3.5.4 충전 도크 위치

  • 도크는 zone polygon 외부 또는 별도 zone(dock_zone)으로 정의 — guardrail이 dock_zone을 일반 zone으로 오인하지 않도록.
  • 도크 좌표는 config/calibration/robots.yamldock_position에 명시 (캘리브레이션과 함께 갱신).

3.5.5 비상 충전

  • 시연 중 모든 로봇이 동시 저배터리 → 일부 zone 시나리오를 "태블릿 단독" 모드로 전환 (§폴백 카탈로그 vehicle zone과 동일 패턴).
  • 운영자에게 알림: HA 자동화로 "All robots low battery" 카드 빨간색 표시.

4. 정기 유지보수

주기 작업
매일 운영 시작·종료 점검 (위 §1)
매주 컨테이너 로그 size 확인 (docker compose logs --tail=100 <svc>)
매주 Frigate 카메라 화각·초점 점검, zone polygon 시각 확인
매월 docker image 보안 패치 검토 (Trivy 스캔 결과)
매월 UPS 배터리 자가진단
분기 비밀번호·토큰 회전 (DEPLOYMENT.md §9.2)
분기 백업 → 복구 dry-run (DEPLOYMENT.md §12.5)
분기 캘리브레이션 검증 — 카메라가 의도한 좌표를 정확히 인식하나
6개월 SPOT 충전 케이블·도크 점검, 로봇 OS 업데이트 검토

5. 연락처 / 에스컬레이션

상황 담당
시스템 SW 이상 (컨테이너·LLM(Large Language Model, 대규모 언어 모델)·MQTT) 개발팀 — Slack #zerone-dev
로봇 HW 이상 Boston Dynamics 지원 또는 해당 로봇 벤더
카메라·네트워크 시설팀
전시 운영 의사결정 (시연 중단·연장) 전시 책임자

(실제 운영 시 담당자 이름·전화번호로 채울 것)


6. 자주 묻는 질문

Q: 컨테이너 1개가 unhealthy로 떴어요. A: docker compose restart <name> — 자체 복구 안 되면 docker compose logs --tail=200 <name>로 원인 확인 후 개발팀 호출.

Q: 체험자가 "로봇이 반응 안 해요"라고 합니다. A: ① HA 대시보드에서 해당 로봇 fault 확인 ② 정상이면 e-stop 활성 여부 확인 ③ 그래도 안 되면 운영자가 수동 명령(HA "Manual Command" 카드).

Q: 태블릿이 페어링 화면에서 멈춰요. A: 60초 후 자동 재시작 — 그래도 안 되면 태블릿 재부팅. 그래도 안 되면 토큰 만료 의심 → mcp-tablet-gateway 컨테이너 재시작.

Q: LLM이 이상한 시나리오를 발동시켰어요. A: e-stop으로 즉시 중단 → 운영 일지에 시각·메시지 기록 → 개발팀에 trace_id 공유 (Loki 로그에서 추출).

Clone this wiki locally