해커톤 시리즈 3/3 — Cal Hacks 13.0
10월의 세 번째 해커톤은 Cal Hacks 13.0이었습니다. 2026년 10월 23–25일, 샌프란시스코 Palace of Fine Arts에서 진행한 행사로, 공식 안내 기준 2,000명 이상의 참가자가 36시간 동안 프로젝트를 만드는 자리였습니다.
이번에 만든 Drigil은 지적·발달장애가 있는 근로자가 새로운 업무를 익히도록 돕는 스마트 글래스 기반 잡 코치입니다. 저는 실시간 영상 스트림을 이미지 분석으로 연결하는 하드웨어 파이프라인과 긴급 호출 시스템을 개발했습니다.
| 항목 | 내용 |
|---|---|
| 행사 | Cal Hacks 13.0 · 2026년 10월 23–25일 |
| 장소 | Palace of Fine Arts · San Francisco |
| 프로젝트 | Drigil · 스마트 글래스 기반 현장 잡 코치 |
| 팀 | Minjae Kim, Sarath Sundar H, Shraddha Khanapur |
| 내 역할 | 실시간 영상·이미지 분석 하드웨어, 긴급 호출 시스템 개발 |
| 수상 | Anthropic ‘Claude for Public Benefit’ 트랙 2위 |
Devpost 프로젝트 소개 · GitHub 저장소 · 프로젝트 웹사이트 · Cal Hacks 공식 안내
프로젝트 시연 영상
Devpost에 제출한 Drigil 시연 영상입니다.
1. 문제 정의 — 옆에서 알려주는 사람이 필요할 때
새로운 업무를 배울 때는 설명을 한 번 듣는 것만으로 충분하지 않은 경우가 많습니다. 작업을 작은 단계로 나누어 알려주고, 실수를 확인하고, 필요한 순간에 질문할 수 있어야 합니다. 하지만 현장의 잡 코치나 관리자가 언제나 곁에 있을 수는 없습니다.
Drigil은 관리자가 한 번 가르친 작업을 현장에서 반복해서 안내하고, 숙련될수록 안내를 줄이는 것을 목표로 했습니다. 계속 지시하는 도구가 아니라, 근로자가 스스로 일할 수 있도록 도움의 양을 조절하는 도구입니다.
시연에서는 카페에서 컵에 슬리브를 끼우는 작업을 사용했습니다. 컵을 찾고, 슬리브를 집고, 끼우고, 결과를 확인하는 과정을 단계별로 안내합니다.
2. 서비스 흐름 — 한 번 가르치고, 현장에서 돕기
관리자가 설명을 곁들인 작업 영상을 올리면 Claude가 이를 4–8개의 작업 단계로 정리합니다. 각 단계에는 수행할 행동, 올바른 결과, 예상되는 실수와 교정 문구가 포함됩니다. 동의를 받은 관리자의 목소리는 Cartesia 음성 복제에 사용해, 근로자가 익숙한 목소리로 안내를 들을 수 있도록 했습니다.
현장에서는 카메라 프레임과 현재 작업 단계를 함께 분석합니다. 작업이 완료되었는지, 진행 중인지, 수정이 필요한지를 판단하고 다음 안내나 짧은 교정 문구로 연결합니다. 사용자는 말로 질문하거나 사람에게 도움을 요청할 수도 있습니다.
반복해서 성공한 단계는 전체 안내 → 짧은 힌트 → 알림만 제공 → 안내 없음으로 지원 수준을 낮춥니다. 반대로 최근 실수가 늘면 도움을 다시 늘립니다. 이 진행 상태는 SpacetimeDB를 통해 관리 화면과 공유됩니다.
3. 내가 맡은 부분 — 영상 스트림을 AI가 볼 수 있는 입력으로
AI가 작업을 이해하려면, 먼저 현장의 영상이 안정적으로 전달되어야 합니다. 제가 담당한 하드웨어는 카메라의 실시간 영상 스트림을 분석 가능한 프레임으로 연결하는 입력 계층입니다.
카메라와 영상 전달 경로
프로토타입은 Raspberry Pi 5와 Logitech Brio 100 카메라를 사용했습니다. 카메라가 만드는 MJPEG 스트림을 Pi에서 제공하고, 수신 측에서 프레임을 가져와 앱의 시각 분석 흐름으로 연결하는 구조입니다. Pi와 호스트의 연결에는 USB-C를 활용했습니다.
이 과정에서 중요한 것은 단순히 ‘영상이 보이는가’만이 아닙니다. 프레임이 얼마나 꾸준히 들어오는지, 끊겼을 때 상태를 알아낼 수 있는지, 지금 분석하는 이미지가 현재 작업을 반영하는지를 함께 다뤄야 합니다.
저장소에는 영상 수신의 프레임 속도·프레임 간격·디코딩 시간을 확인하는 도구, 스트림 상태 점검과 녹화·동기화 점검 코드가 포함되어 있습니다. 카메라 입력과 이미지 분석 사이의 연결을 확인하는 데 필요한 구성입니다.
영상 입력과 모델 판단의 역할 구분
카메라 스트림을 제공하는 하드웨어와, 이미지의 작업 상태를 판단하는 모델은 역할이 다릅니다. 브라우저에서는 프레임을 전달하기 전에 얼굴을 흐리게 처리하고, 엣지 애플리케이션이 현재 작업 정보를 포함해 Claude에 분석을 요청합니다.
카메라가 Pi에 연결되어 있다는 것이 전체 AI 추론도 Pi 안에서 실행된다는 뜻은 아닙니다. 이번 프로젝트의 실시간 시각 판단은 클라우드 모델을 사용하는 구조이며, 온디바이스 추론은 이후 개선 과제로 남겼습니다.
4. 내가 맡은 부분 — 손목밴드 긴급 호출 시스템
음성 안내가 있어도 사용자가 막히는 순간은 생깁니다. 말로 상황을 설명하거나 화면에서 버튼을 찾기 어려울 때를 위해, 손목밴드의 터치 입력으로 관리자에게 도움을 요청하는 경로를 만들었습니다.
하드웨어는 Arduino Uno Q와 터치 센서, 피드백에는 보드의 13×8 LED 매트릭스를 사용합니다. 터치 입력은 USB 시리얼로 전달되고, 앱의 /wrist/press API를 통해 호출이나 알림으로 연결됩니다.
| 입력 | 동작 | 장치 피드백 |
|---|---|---|
| 터치 시작 | 입력이 감지되었음을 확인 | LED 매트릭스 ACK 표시 |
| 1.5초 미만의 짧은 터치 | 관리자에게 조용한 메모 전달 | 전달 후 체크 표시 |
| 1.5초 이상의 긴 터치 | 관리자에게 직접 도움 요청 | 전달 후 CALL 표시 |
이 호출은 앱 안의 관리자 지원 요청이며, 외부 응급기관에 연결하는 기능은 아닙니다. 일반 도움 버튼은 동료에게 먼저 요청하고 일정 시간 후 관리자에게 넘기는 흐름을 사용하지만, 손목밴드의 긴 터치는 관리자에게 직접 연결합니다.
중복 입력이 여러 요청으로 번지지 않도록 같은 종류의 연속 입력을 제한하고, 활성 작업 세션과 연결해 누가 도움을 요청했는지 식별합니다. 입력 감지와 실제 요청 전달을 별도 상태로 다루어, 장치의 표시가 사용자의 행동을 확인해주도록 구성했습니다.
연결 복구와 실물 검증
USB 시리얼은 포트를 열었다고 끝나는 연결이 아닙니다. 케이블 분리, 재연결, 다른 프로세스의 포트 점유까지 고려해야 합니다. 장치를 자동으로 찾고 상태를 보고하는 흐름을 두었으며, 저장소에는 실제 보드에서 짧은 터치·긴 터치와 분리 후 재연결을 확인한 기록이 있습니다.
해당 실물 검증 기록에는 센서가 예상보다 오래 HIGH 상태를 유지했던 사례와 재확인 필요성도 남겨두었습니다. 펌웨어 입력 검증과 전체 앱에서 관리자에게 알림이 도착하는 검증은 구분해서 봐야 합니다.
5. 팀 전체 구현 — 안내, 기억, 사람의 개입
하드웨어 입력은 팀이 만든 코칭·음성·상태 관리 흐름과 연결됩니다.
| 계층 | 기술과 역할 |
|---|---|
| 영상 입력 | Raspberry Pi 5, UVC 카메라, MJPEG 스트림 |
| 웨어러블 입력 | Arduino Uno Q, 터치 센서, USB 시리얼 |
| 화면 | React, TypeScript, MediaPipe 얼굴 흐림·손 추적 |
| 앱 제어 | Python, FastAPI |
| 작업 이해 | Claude의 영상 기반 단계 생성·실시간 이미지 판단·질문 응답 |
| 음성 | Cartesia 음성 합성, 음성 인식, 동의 기반 목소리 복제 |
| 실시간 상태 | SpacetimeDB의 작업·숙련도·도움 요청 상태 |
| 개인별 기억 | Moss를 활용한 작업 중 실수와 참고 사항 기록 |
| 안내 개선 | Factory Droid가 수정안을 만들고 관리자가 승인 |
반복해서 어려움을 겪는 단계는 자동으로 수정해 적용하기보다, 관리자가 변경 전후를 확인하고 승인하도록 했습니다. 또한 판단이 불확실하면 안내를 자제하고, 잘못된 교정이 반복되지 않도록 여러 프레임의 결과와 시간 간격을 고려합니다.
6. 가장 중요했던 제약 — 빠른 응답과 잘못된 교정 사이
지나간 장면에 대한 응답이 늦게 도착하면, 이미 다음 단계로 넘어간 사용자에게 틀린 안내를 할 수 있습니다. 그래서 영상 입력의 시간 흐름과 모델 응답이 가리키는 작업 단계를 함께 다루는 것이 중요했습니다.
Devpost에는 팀이 컵 슬리브 작업의 30개 라벨 프레임으로 비교한 결과가 공개되어 있습니다. 이는 제한된 시연 과제의 평가이며, 다양한 현장과 사용자에게 일반화한 정확도는 아닙니다. 이 글에서는 그 수치를 전체 제품의 성능처럼 확대하지 않고, 오류를 줄이기 위한 설계와 입력·호출 경로의 구현을 중심으로 정리했습니다.
프로토타입에서 확인한 흐름을 현장 서비스로 확장하려면 착용 안정성, 카메라 구도 변화, 센서 입력 신뢰성, 네트워크 지연과 개인정보 처리 등을 실제 사용자와 함께 검증해야 합니다.
7. 수상 — Claude for Public Benefit 트랙 2위
Drigil은 Cal Hacks 13.0의 Anthropic ‘Claude for Public Benefit’ 트랙에서 2위를 수상했습니다.
팀원 Sarath Sundar H, Shraddha Khanapur와 함께, 실제 작업을 관찰하고 필요한 도움으로 연결하는 서비스를 완성한 경험이었습니다. 제가 만든 하드웨어 파이프라인과 호출 시스템도 모델·웹앱·실시간 백엔드와 연결되어야 의미가 있었습니다.
8. 세 번의 해커톤을 마치며
SF Hacks에서는 캠퍼스의 이동 장벽을 공유하는 앱을, ExecuTorch Hackathon에서는 보드의 NPU로 문맥을 해석하는 장치를, Cal Hacks에서는 현장 업무를 돕는 스마트 글래스 잡 코치를 만들었습니다.
세 프로젝트에서 계속 다룬 질문은 AI의 판단을 사람이 쓸 수 있는 행동으로 어떻게 연결할 것인가였습니다. Drigil에서는 카메라 입력을 분석으로 연결하는 것과, AI만으로 해결할 수 없는 순간에 사람을 부르는 것 모두가 그 답의 일부였습니다.
하드웨어 개발자로서 센서나 보드 하나의 동작을 넘어, 입력부터 사용자 피드백까지 이어지는 전체 흐름을 만들고 확인한 경험이었습니다.
해커톤 시리즈
- SF Hacks 2026 — GatorAccess 캠퍼스 접근성 내비게이터
- ExecuTorch Hackathon — IDK Button
- Cal Hacks 13.0 — Drigil (현재 글)
프로젝트 설명은 Drigil Devpost와 공개 구현 기록을 바탕으로 작성했습니다. 개인 담당 범위는 실시간 영상·이미지 분석 하드웨어와 긴급 호출 시스템 개발입니다.