-
Notifications
You must be signed in to change notification settings - Fork 0
OPERATIONS
일상 운영자가 전시 운영 중 매일 따라야 할 절차. 기술 배경 없이 따라할 수 있도록 구체 명령·확인 항목 위주로.
| 순서 | 작업 | 검증 |
|---|---|---|
| 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 | 운영 일지에 점검 결과 기록 | (체크리스트 양식 참조) |
| 주기 | 작업 |
|---|---|
| 매 세션 시작 | 페어링 카메라 앞 안내 ("QR 인식 중입니다") |
| 매 세션 종료 | 태블릿 회수 → 도크 충전 + 시각·음성 안내로 다음 체험자 호출 |
| 매 30분 | 로봇 배터리 확인 — 25% 미만 시 자동 도크 복귀 (또는 수동 교대) |
| 매 1시간 | 운영 일지 업데이트 (체험자 수, 이상 이벤트 유무) |
| 순서 | 작업 |
|---|---|
| 1 | 모든 활성 세션 종료 (HA에서 "force end" 버튼) |
| 2 | 로봇을 도크로 복귀 (robot_command capability=goto + dock_position) |
| 3 | 태블릿 모두 도크 충전기에 거치 |
| 4 | 컨테이너 정상 종료: docker compose stop (필요 시) — restart: always라 부팅 시 자동 재시작 |
| 5 | 운영 일지 마감 + 다음 날 인수인계 메모 |
물리 e-stop(emergency stop, 긴급 정지) 버튼 누르기 (운영자 콘솔 + 전시장 입구 비치).
이후 자동으로 일어나는 일:
-
safety/estop active=trueMQTT(Message Queuing Telemetry Transport, 메시지 큐 텔레메트리 전송 프로토콜) publish (retain). - 모든 로봇 즉시 정지 (mcp-robot-adapter Watchdog 인터록).
- 모든 활성 태블릿에 "잠시 시연을 멈추었습니다" 표시 (HA 자동화).
해제 절차:
- 위험 요인 제거 후 운영자가 e-stop 버튼 release.
- HA 대시보드에서 "E-Stop Reset" 버튼 클릭 —
safety/estop active=falsepublish. - 로봇이 자동 stand → 운영자가 정상 동작 1회 확인.
| 증상 | 운영자 액션 |
|---|---|
HA에서 binary_sensor.spot_01_online = off
|
로봇 전원·Wi-Fi 확인 → 안 되면 다른 로봇으로 시나리오 대체 |
sensor.spot_01_battery < 20% |
도크로 복귀 명령 → 충전 30분 → 재투입 |
robot.fault 알림 (severity: critical) |
로봇 즉시 정지 (수동 e-stop) → 제조사 지원 콜 |
- HA 자동화의 폴백 시나리오 자동 발동 (SERVICES.md §3 폴백 카탈로그 참조).
- 운영자 액션:
- 운영 일지에 시작 시각 기록.
- HA 대시보드 상단 노란 배너 ("폴백 모드 운영 중") 확인.
- 30분 이상 지속 시: 운영자가 체험자에게 사전 양해 + 시연 페이스 조정.
- 복구되면 자동 정상 모드 — 추가 액션 불필요.
- 즉시 페어링 토큰 무효화: HA 대시보드 → "Active Sessions" → 해당 세션 "Force End".
- 예비 태블릿 1대를 페어링 카메라 앞에서 신규 페어링.
- HA에서
binary_sensor.<camera>_available=off. - 인접 카메라가 cross-camera ReID로 일부 보완 — zone 추적 신뢰도 저하 알림 발동.
- 30분 이상 단절 시 시연 일시 중단 → 카메라 재기동 또는 케이블 교체.
- UPS가 5분 백업 → 운영자가 수동으로 모든 컨테이너 종료 후 시스템 셧다운.
- 전원 복구 후 §1.1 부팅 절차로 재시작.
매일 운영 시작·종료 시 다음을 기록 (스프레드시트 또는 운영 일지 책자):
일자: 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]
□ 모든 세션 종료
□ 로봇 도크 복귀
□ 태블릿 충전 도크 거치
□ 운영 일지 마감
오늘 체험자 수: ___
이상 이벤트: ___
다음 운영자에게 인수인계: ___
- 운영 시간: 1회 충전 약 90분 운용 (시연 강도에 따라 60~120분).
- 충전 시간: 0% → 100% 약 90분, 50% → 100% 약 45분 (제조사 사양 기준).
-
권장 운영 사이클: 60분 시연 → 30
45분 충전 (battery 3080% 윈도 활용).
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
}2대 로봇 보유 시 한 대 충전 중 다른 대가 시연 — orchestrator의 시스템 프롬프트에 가용 로봇 풀이 자동 반영(§7.3 동시성 정책).
운영자 액션:
- HA 대시보드에서 "Battery" 카드 확인 — 어느 로봇이 충전 중인지 시각.
- 시연 도중 교대 필요 시 "Manual Dock" 버튼 → 다른 로봇이 인계.
- orchestrator의
attached_session이 자동으로 갱신되어 신규 사용자는 가용 로봇으로 라우팅.
- 도크는 zone polygon 외부 또는 별도 zone(
dock_zone)으로 정의 — guardrail이dock_zone을 일반 zone으로 오인하지 않도록. - 도크 좌표는
config/calibration/robots.yaml의dock_position에 명시 (캘리브레이션과 함께 갱신).
- 시연 중 모든 로봇이 동시 저배터리 → 일부 zone 시나리오를 "태블릿 단독" 모드로 전환 (§폴백 카탈로그 vehicle zone과 동일 패턴).
- 운영자에게 알림: HA 자동화로 "All robots low battery" 카드 빨간색 표시.
| 주기 | 작업 |
|---|---|
| 매일 | 운영 시작·종료 점검 (위 §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 업데이트 검토 |
| 상황 | 담당 |
|---|---|
| 시스템 SW 이상 (컨테이너·LLM(Large Language Model, 대규모 언어 모델)·MQTT) | 개발팀 — Slack #zerone-dev
|
| 로봇 HW 이상 | Boston Dynamics 지원 또는 해당 로봇 벤더 |
| 카메라·네트워크 | 시설팀 |
| 전시 운영 의사결정 (시연 중단·연장) | 전시 책임자 |
(실제 운영 시 담당자 이름·전화번호로 채울 것)
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 로그에서 추출).