
L5 자율주행 차량 멀티모달 프로토타입
VLA 기반의 XAI 멀티모달 인터페이스를 CARLA와 연동하여 다회 실험 가능하도록 구현한 인터랙티브 프로토타입
- 작업일
- 2026.04.08–2026.07.10
- 디자인 분야
- 산업디자인, UX/UI
- 활용 목적
- 코드·프로토타입, 리서치·분석, 자동화, 아이데이션
- 사용 도구
- Figma, ChatGPT, Antigravity IDE, Gemini, Claude · OPUS
- 작성자
- 조윤서
작업 배경
본 프로젝트는 Level 5 자율주행 환경에서 차량의 주행 판단 과정을 사용자에게 명확히 전달하기 위해, VLA(Vision-Language-Action) 모델 기반의 XAI(설명 가능한 AI) 멀티모달 인터페이스를 구축하는 팀 프로젝트로 진행되었다. CARLA 자율주행 시뮬레이터와 연동하여 실제 주행 상황에서의 인지·판단 데이터를 실시간으로 시각화하고, 다양한 실험 환경에서 인터랙션을 검증할 수 있는 전체 시스템을 기획하고 구현하였다. 리서치부터 서버 연결 전반에서 LLM 모델이 다양하게 사용되었다. 전체 팀 프로젝트 맥락 중 본 아카이빙에서는 내가 담당한 인터페이스 파트 중심의 워크플로우를 다룬다. 주로 Claude와 Figma MCP를 사용해 실시간 반응형 UI 프로토타이핑을 진행하여, 디자인을 바이브에 의존하는 게 아닌 바이브 프론트엔드 개발 절차를 완성하였다.
작업 단계

선행 연구 리서치
Gemini, Chat GPT, Moonlight효율적으로 다량의 논문 분석. LLM한테 PDF 주고 요약해달라고 해도 되고 Moonlight는 유료긴 한데 논문 요약 AI 서비스라서 추가 프롬프트 쓸 필요 없이 잘 해줍니다.
.
와이어프레임 스케치
Figma시나리오 및 맥락 세팅 이후 본격적으로 인터페이스 구조 스케치 시작. 그냥 수제로 Figma에서 했는데... 의도가 확실한 웹/앱 프로토타이핑을 바이브 코딩으로 하고 싶으면 이렇게 초기에 골조를 수제로 하는 게 완성도 측면에서 낫습니다. (80%까진 딸깍으로 되는데 기능을 계속 딸깍으로 증축하게 되면 그 이후의 디버깅, 리팩토링이 엄청 힘들어집니다.)
.
사용자 시나리오 구체화 및 화면 구성 픽스
Figma정보량, 애니메이션 톤앤매너 등 회의. 여기까지 수제. 나중을 위해 기획, 와이어프레임까진 수제를 거듭 추천합니다...
.
GUI, 디자인 시스템
리서치, Figma회의 내용에 맞춰 GUI 담당 팀원이 디자인.
(한 게 없는 부분이긴 한데 뺄 수 없는 단계라서 넣음 디자인 가이드 문서는 웹에도 피그마에도 많으니 참고)플로우차트
Figma코드로 옮기기 전 AI를 위한 설명서 용도의 플로우차트 제작. 진짜 마지막 수제 단계... 기획서 정리 정도는 LLM에게 맡겨도 되지만 내용 자체는 수제 작성을 추천.
.
정적 프로토타입
Claude, Figma MCP, Git, Vercel, Supabase애니메이션, 실제 기능을 넣기 전 화면을 전부 코드 베이스로 옮기는 단계. 초반 골조는 '플로우차트를 보고 코딩 전에 기획서를 <파일명>.md 형식으로 작성해달라' 고 딸깍한 뒤 '애니메이션, 에셋 없이 와이어프레임만 그려달라고 피그마 개발 모드에서 css 몇개 붙여넣고 이후 디버깅 과정의 프롬프트 첨부함.
<MCP figma 페이지 링크> 여기서 @<MCP 특정 섹션 링크> 이 레이아웃 변경 사항 참고해서 다음과 같은 수정이 있어.
1. 메인화면 좌측 상단에서 오류 감지에 대한 알림이 뜸
2. 원래는 인삿말 정도였던 텍스트 영역에서 현재 주행 판단 관련 XAI 메시지를 첨부한 Flow.md 순서대로 실시간으로 업데이트 함. 한번에 페이드로 바뀌는게 아니라 시나리오 시퀀스 넘어가는 json에 맞춰서 진짜 판단하는 것처럼 작성. 채팅 대응에서 만약 제미나이로 실시간 속도가 안나올 것 같으면 내가 스크립트를 다 제공해야하니 속도 체크하고 알려줘.
3. 검색바 영역은 우선 기존의 사이즈와 디자인을 유지하되 변형 레이아웃에 맞춰서 전반적인 세로 패딩값만 수정해줘. mcp 코드 확인하고 정확하게 반영. 아이콘, 폰트도 비례에 맞게 수정하되 현재 상태 유지하는 방향으로. 이 디자인이 이 브랜치에는 반영을 안해놔서 그럼. 걍 빨리 업데이트 해.
4. 빠른 실행 4가지 메뉴 제안은 검색바 아래로 위치가 변경되었으니 섹션 순서 반영할것. 마찬가지로 현재 상태에서 사이즈랑 위치만 옮기면 됨. 추천옵션 띄어쓰기 등 최신 내용이 반영 안 되어있음. 텍스트 문서 확인해서 내용 업데이트.
5. 하단 gnb 바에 많은 수정이 있었음. 도착 예정과 남은 거리 영역이 중앙에 생겼고, 앱 영역은 다 오른쪽으로 변경됨. 가로 간격 값 주의해서 업데이트.HANDOVER 작성
Claude토큰 다 썼을 때 이어가기 위한 단계. 인터넷에 클로드 세션 관리 등으로 검색하면 claude hack으로 많이 나오는 방식인데, 협업 프로젝트였기 때문에 중간 중간 공유를 위해서라도 handover 파일을 만들어야 했음.
지금까지의 대화 전체를 분석해서 HANDOVER.md 파일을 프로젝트 루트에 생성해줘.
아래 항목을 반드시 포함할 것:
## 작업 요약 - 이번 세션에서 작업한 내용과 완료된 사항
## 성공/실패 기록 - 어떤 접근이 통했고, 어떤 버그를 어떻게 해결했는지 - 시도했지만 실패한 방법과 그 이유
## 주요 결정 사항 - 내린 결정과 그 이유 (왜 A 대신 B를 택했는지)
## 주의사항 & 교훈 - 다음 세션에서 주의할 점, 반복하면 안 되는 실수
## 다음 단계 - 이어서 해야 할 작업 목록 (우선순위 포함)
## 중요 파일 맵 - 이번 세션에서 주로 다룬 파일 경로와 역할 파일명은 HANDOVER-YYYY-MM-DD.md 형식으로 해줘.API 연결
Claude, Google Cloud API(STT, TTS), Gemini API, Kakao map API기능 채워넣기. 멀티모달 인터페이스로써 화면 터치 뿐 아니라 음성 인식-추론-음성 대답의 과정을 수행해야했음.
다음 api 문서를 읽고 (<각 api 링크 첨부>) 내가 .env에 api키만 채워넣으면 되도록 업데이트해줘. vercel 쓰고 있고 환경 변수에 내가 넣을 거긴한데 로컬에서도 테스트해야하니까 env local도 만들어줘야함.
TTS를 활용한 wakeword 등 기능 고도화
Claude원래 Wakeword 모델이 따로 있는데 한국어 지원은 유료인 게 많아서 그냥 TTS 응용해서 듣게하고, 음성 채팅 인터랙션도 고도화 함.
대답 이후에 잠깐 듣고있는 거 대답 도중에 쭉 듣고있다가 TTS 끝난 다음부터 카운트다운 해.
기존에는 TTS 끝나고 잠깐 마이크 열리고 타임아웃 ~5–8초였는데 답변 도중에도 잠깐, 그럼 다른 걸로 같은 끼어들기를 받을 수 있게 TTS 시작 직후 마이크 오픈. 어느 정도가 적당할지 알아서 일반적인 사례 기준으로 판단.
TTS가 끝나는 순간 카운트다운 5초 시작.
카운트다운 동안 사용자가 말하면 STT가 결과 발화하고 `isListening` 해제하고 카운트다운 클리어해서 후속 대화할 수 있게끔 하셈.
카운트다운 0 도달할 경우 STT 강제 종료하고 다시 웨이크워드 대기 상태로 복귀.
UI에 듣는 중 옆에 같은 디자인 시스템 적용해서 5 - 4- 3- 2- 1 타이머 변동 연한 회색으로 넣으셈.각종 디버깅
ClaudeAPI 연결하는 과정에서 코드 상으로 연결은 되어 있는 기능이 UI 애니메이션이랑 연동이 안되는 문제 등... 정말 많은 디버깅...
위젯 코드 완성되어 있는데 navigationApp이랑 kakao OSRM이랑 정보 연동이 안되는 것 같아. 내 생각에는 NavigationApp이 현재 설정된 루트를 호출 안해서 위젯에 업뎃이 안되는 것 같으니까 확인하고 디버깅해.
실험용 오퍼레이터 콘솔 제작 및 BaaS 연결
Claude데이터 뽑는 용 콘솔 제작. 디자인이 필요 없어서 기능 위주로 딸깍, DB를 연결해서 지난 내역도 볼 수 있게 함. 문서도 작성 안하고 프롬프트에 지시 내림.
오퍼레이터 콘솔 만들어줘. 디자인 필요없으니까 토큰 아끼셈. 데이터 분석 용이하게 하려고&자동 응답 프롬프트 고도화하려고 제작하는거니까 프로토타입 화면에서 ctrl alt shift O하면 서브 모니터에 켜지게 할거고 상황 제어 / 프롬프트 편집 / 실험&프롬프트 개발 모드 / 참가자 정보 입력란 / 시나리오 선택 으로 구성.
경과 시간 및 대화 로그를 실시간으로 보고 메모할 수 있게 하고 시험 종료 시: 시험 상태 선택 (완료/실패/무효/중단) 띄워줘. 아래 내용 확인하고 기능 넣으삼.
개발 모드:
1) 프롬프트 풀에 기여(Supabase DB에 연결되어 있으니까 버튼 누르면 실시간으로 prompt examples table에 추가되게. 업데이트 해야할 거 있으면 SQL 복붙하게도 작성해주셈.
2) 시험 로그 .md
3) 프롬프트 예시 .json
4) 대화 로그 기반 STT 입력 오류 교정
5) 대화 로그 기반 TTS 입력 오류 교정
6) 대화 로그 기반 프롬프트 교정
실험 모드: 개발 기능+ 최종 저장
다음 참가자 or 같은 참가자 시험 추가회고
성과와 한계
CARLA 시뮬레이터와 연동되는 VLA 기반 XAI 멀티모달 프론트엔드 인터페이스를 실제로 동작하는 수준으로 구현했음. 비컴공.. 디자이너 입장에서 바이브 코딩을 활용해 시뮬레이터 연동 및 복잡한 프론트엔드 로직을 빠르게 구축할 수 있었다는 점... 특히 MCP를 이용해서 디자인 한대로 오차 없이 프로토타입을 만들 수 있었다는 점이 성과임. 다만 CARLA 시뮬레이터 데이터 파이프라인과의 실시간 통신이나, 실제 차량 환경 수준의 렌더링 최적화까지는 프론트엔드 단에서 내가 할 수 있는 내용이 없었음.
시행착오와 개선점
디벨롭 과정이 길다보니 Git으로 초반부터 버전 관리를 했는데, 이렇게 장시간 다양한 기능이 추가되고 삭제되는 바이브 코딩은 처음이다 보니 관리 미숙으로... 테스트하는데 잘못된 버전이 뜨거나 듣도보도 못한 에셋이 갑자기 최상단 레이어에 뜨는 등 이해 못할 오류가 있었음... 특히 git commit도 초반에는 그냥 클로드한테 깃에 커밋하고 푸시하셈 식으로 했더니 토큰 낭비도 많이 했고....... 브랜치가 자기 마음대로 섞이는 등 문제가 많았음. 교훈은 수제로 할 건 수제로 하자...는....
적합한 활용 맥락
디자이너가 직접 HMI/UX 컨셉과 인터랙션 방향을 정의하고, AI를 활용해 작동 가능한 수준의 프로토타입을 제작하는 것에 적합
참고 자료
- 기타디자인 시스템 좋은 레퍼런스. 특히 인포테인먼트 위계나 용어가 잘 정리되어있음.document.pleos.ai
- 툴 문서카카오 디벨로퍼스 (맵, 로그인 등)developers.kakao.com
- 툴 문서google cloud console apiscloud.google.com