12. 다섯 번째 프로젝트: 나만의 데스크 어시스턴트 로봇
12. 다섯 번째 프로젝트: 나만의 데스크 어시스턴트 로봇

책상 위 로봇이 의외로 강력한 이유
이제 우리는 바퀴로 움직이는 로봇도 만들어 봤고, 카메라로 보는 로봇도 만들었고, 음성으로 반응하는 로봇도 다뤘다. 그런데 막상 오래 곁에 두고 쓰게 되는 로봇은 생각보다 거창한 기계가 아닐 때가 많다. 책상 위에서 나를 바라보고, 쉬라고 알려 주고, 내가 말을 걸면 짧게 반응하는 작은 로봇이 오히려 더 자주 쓰인다.
시판되는 데스크 로봇들을 살펴보면 재미있는 공통점이 있다. 사용자가 계속 곁에 두는 이유는 복잡한 기능표보다도, 말을 걸었을 때의 반응, 작은 알림, 존재감, 그리고 습관처럼 이어지는 상호작용에 더 가깝다.1 다시 말해 데스크 로봇은 "엄청난 일을 대신하는 기계"라기보다 "작은 일을 꾸준히 함께하는 존재"에 가깝다.
이번 장에서 만들 로봇도 바로 그 방향을 따른다. 목표는 완벽한 비서가 아니다. 대신 책상 위에서 다음과 같은 일을 해내는 작은 AI 로봇을 만드는 것이다.
회의, 휴식, 할 일, 타이머를 눈빛과 소리로 알려준다.
카메라로 책상 앞 상황이나 특정 물체를 확인한다.
간단한 표정과 제스처로 감정을 표현한다.
버튼, 터치, 음성 같은 쉬운 방식으로 상호작용한다.
이 프로젝트가 좋은 이유는 분명하다. 위험이 적고, 부품이 비교적 작고, 실패해도 다시 고치기 쉽다. 무엇보다 완성 후 바로 책상에 올려 두고 매일 써볼 수 있다. 로봇 프로젝트가 장식품으로 끝나지 않고 생활 도구가 되는 순간이다.
이번 프로젝트의 완성 목표
이번 장의 결과물은 책상 위에 올려두는 소형 어시스턴트 로봇이다. 이동 로봇처럼 방 안을 돌아다니지는 않지만, 대신 시선과 표정과 몸짓으로 존재감을 만든다. 이런 형태는 하드웨어 난이도를 크게 낮추면서도 사용자 경험은 오히려 풍부하게 만들 수 있다.
우리는 이 로봇에 다섯 가지 능력을 넣을 것이다.
첫째, 알림 능력이다. 정해진 시간에 회의 시작을 알려 주고, 50분 집중 후 10분 쉬라고 말할 수 있어야 한다. 소리만 울리는 것이 아니라 표정이 바뀌고 고개를 끄덕이면 훨씬 살아 있는 느낌이 난다.
둘째, 관찰 능력이다. 카메라로 내 앞에 누가 왔는지, 책상 위에 컵이 있는지, QR 코드를 보여 주었는지처럼 아주 제한된 범위만 확인해도 충분하다. 범용 감시 시스템을 만들겠다는 욕심은 잠시 접어 두자. 책상이라는 작은 세계만 잘 보면 된다.
셋째, 표현 능력이다. 화면에 눈을 띄우고, 고개를 살짝 기울이고, 반가울 때는 눈을 크게 뜨고, 생각 중일 때는 천천히 깜빡이게 하면 로봇의 인상이 완전히 달라진다. 상용 데스크 로봇들이 얼굴 애니메이션과 작은 움직임을 매우 중요하게 다루는 이유도 여기에 있다.2
넷째, 대화 능력이다. 처음부터 자유 대화까지 욕심낼 필요는 없다. "타이머 25분", "오늘 일정 보여줘", "이게 뭐야?" 같은 짧은 명령만 잘 처리해도 충분히 유용하다.
다섯째, 습관 형성 능력이다. 이게 의외로 중요하다. 로봇은 한 번만 멋지게 반응하는 것보다, 매일 아침 인사하고, 점심시간을 알려 주고, 늦은 밤에는 졸린 표정을 짓는 편이 훨씬 기억에 남는다.
어떤 모습으로 만들 것인가
데스크 어시스턴트 로봇은 크게 세 가지 형태로 만들 수 있다.
화면 중심형: 작은 LCD나 OLED 화면에 눈과 입을 표시하고, 목 서보 하나 또는 둘로 고개만 움직이는 방식이다.
상반신 제스처형: 고개와 팔을 단순하게 움직이며 인사, 끄덕임, 손짓을 표현하는 방식이다.
카메라 비서형: 몸짓은 작지만 카메라와 마이크를 강조해 관찰과 대화에 무게를 두는 방식이다.
이번 장에서는 이 셋을 적당히 섞은 형태를 추천한다. 얼굴이 보이는 작은 화면, 고개를 움직이는 서보, 상태를 알려 주는 LED, 카메라, 스피커를 갖춘 형태다. 바퀴는 없어도 된다. 데스크 로봇은 많이 움직이지 않아도 충분히 매력적이다.
특히 제스처는 생각보다 큰 차이를 만든다. Microsoft의 gestureBot 설계 키트도 데스크톱 동반 로봇에서 몸짓이 인간-로봇 상호작용의 중요한 축이 된다는 점을 잘 보여 준다. 이 프로젝트는 3D 프린터로 외형을 만들고, 비교적 접근 가능한 비용으로 물리 로봇과 시뮬레이터를 함께 다룰 수 있다는 점에서도 개인 개발자에게 좋은 참고가 된다.3
쉽게 말해, 책상 위 로봇의 핵심은 "얼마나 멀리 가느냐"가 아니라 "얼마나 잘 표현하느냐"다.
추천 하드웨어 구성
이 프로젝트는 욕심을 내면 끝없이 커질 수 있다. 그래서 처음부터 세 등급으로 생각하면 편하다.
라이트 구성
가장 가볍게 시작하는 방식이다. ESP32-S3, 작은 디스플레이, 부저, RGB LED, 터치 센서, 서보 1개 정도면 된다. 이 구성은 표정, 알림, 간단한 터치 반응에 좋다. 인터넷 API를 붙이면 날씨나 타이머 알림도 가능하다. 다만 카메라 비전과 음성 인식은 제한적이다.
표준 구성
가장 추천하는 방식이다. Raspberry Pi 5 같은 SBC를 메인 두뇌로 두고, ESP32를 보조 제어기로 붙인다. 라즈베리파이는 카메라, 음성, 스케줄러, 앱 연결을 맡고, ESP32는 서보와 LED를 안정적으로 제어한다. 이렇게 나누면 화면과 표정은 부드럽고, 모터 제어는 끊김이 적다.
AI 확장 구성
카메라 장면 이해와 로컬 AI까지 넣고 싶다면 Jetson 계열 보드를 붙이는 방법이 있다. Jetson은 작은 장치에서 LLM이나 VLM 같은 모델을 로컬로 실행해 프라이버시를 지키고 네트워크 지연을 줄이는 데 강점이 있다.4 책상 앞 장면을 보고 "컵이 왼쪽에 있어요" 같은 설명을 하게 만들고 싶다면 이런 구성이 빛난다.
현실적으로는 표준 구성이 가장 균형이 좋다. 너무 무겁지도 않고, 기능도 충분하다.
추천 부품 예시는 다음 정도면 좋다.
메인 보드: Raspberry Pi 5 또는 Jetson Orin Nano
보조 제어기: ESP32-S3
디스플레이: 1.69인치~3.5인치 IPS LCD 또는 원형 디스플레이
구동부: SG90 또는 MG90S급 서보 1~2개
센서: USB 카메라 또는 CSI 카메라, 터치 센서, 마이크
출력: 소형 스피커, RGB LED, 부저
외형: 3D 프린트 바디, 아크릴 베이스, 미끄럼 방지 고무발
여기서 중요한 것은 스펙보다 균형이다. 화면만 좋고 스피커가 형편없으면 대화가 어색하다. 카메라만 달고 표정이 없으면 그냥 웹캠처럼 느껴진다. 데스크 어시스턴트는 각 요소가 조금씩 고르게 좋아야 한다.
기능을 욕심내지 말고 캐릭터를 설계하자
개인 개발자가 만드는 데스크 로봇에서 가장 흔한 실수는 기능을 너무 많이 넣는 것이다. 일정 관리, 메신저 연동, 날씨, 번역, 물체 인식, 표정, 홈 IoT, 음성 대화, 손짓까지 한꺼번에 넣으려 하면 결국 아무것도 매끄럽게 작동하지 않는다.
대신 먼저 로봇의 성격을 정하자. 예를 들면 이런 식이다.
집중을 도와주는 조용한 도우미
귀엽게 참견하는 책상 펫
회의와 촬영을 도와주는 업무 보조 로봇
성격이 정해지면 기능 우선순위가 쉬워진다. 집중 도우미라면 포모도로 타이머, 쉬는 시간 알림, 방해 금지 모드가 핵심이다. 책상 펫이라면 표정, 반응음, 터치 상호작용이 중요하다. 업무 보조라면 캘린더, 카메라 확인, 음성 명령이 중심이 된다.
상용 데스크 로봇 EMO도 알림, 얼굴 인식, 음성 호출, 자율 반응, 다양한 표정을 결합해 "작은 기계"가 아니라 "책상 위 동반자"처럼 느껴지게 설계되어 있다.2 우리가 만드는 DIY 버전도 같은 원리를 따르면 된다. 기능 수보다 캐릭터 일관성이 중요하다.
표정과 제스처는 어떻게 만들까
표정은 이 프로젝트의 꽃이다. 하지만 너무 어렵게 생각할 필요는 없다. 처음에는 여섯 가지 표정만 있어도 충분하다.
기본 표정
반가움
생각 중
졸림
경고
축하
이 여섯 가지 표정에 고개 움직임만 합쳐도 조합이 꽤 많아진다. 예를 들어 반가움은 눈을 크게 뜨고 빠르게 두 번 끄덕이게 만들 수 있다. 생각 중은 눈동자를 위쪽으로 보내고 고개를 살짝 기울이면 된다. 졸림은 반쯤 감긴 눈과 느린 깜빡임으로 충분하다.
몸짓도 복잡할 필요가 없다. 데스크 로봇은 정교한 춤보다 짧고 분명한 움직임이 더 좋다. 다음 같은 제스처 라이브러리를 만들어 두면 대부분의 상황을 처리할 수 있다.
끄덕임: 확인, 수락, 완료
좌우 흔들기: 거절, 실패, 다시 말해 달라는 뜻
한쪽 기울임: 궁금함, 듣는 중, 관심 표현
짧은 들썩임: 기쁨, 알림 강조
중요한 건 모터 각도보다 타이밍이다. 0.2초 멈춤 후 끄덕이는 것과, 곧바로 급하게 꺾는 것은 인상이 완전히 다르다. 사람도 고개를 어떻게 움직이느냐에 따라 친절해 보이거나 성급해 보이지 않는가. 로봇도 똑같다.
이 로봇의 소프트웨어 구조
소프트웨어는 최대한 단순하게 나누는 편이 좋다. 이번 프로젝트에서는 다섯 개 모듈로 생각하면 이해가 쉽다.
첫째는 관찰 모듈이다. 카메라 프레임, 마이크 입력, 버튼과 터치 입력을 읽는다.
둘째는 상태 판단 모듈이다. 지금 사용자가 말을 거는 중인지, 알림 시간이 되었는지, 로봇이 쉬는 모드인지 판단한다.
셋째는 표현 모듈이다. 눈 애니메이션, LED 색상, 사운드 효과, 서보 동작을 제어한다.
넷째는 비서 모듈이다. 일정, 타이머, 할 일, 날씨, 간단한 질의응답을 처리한다.
다섯째는 안전 및 프라이버시 모듈이다. 카메라 사용 중 표시등, 마이크 음소거, 야간 자동 침묵 같은 정책을 맡는다.
이 구조를 하나의 루프로 돌리면 된다. 입력을 읽고, 상태를 판단하고, 반응을 출력한다. 앞 장까지 배운 입력-판단-출력 구조가 그대로 살아 있는 셈이다.
구현은 예를 들면 이렇게 흘러간다.
사용자가 "25분 집중 시작"이라고 말한다. 그러면 음성 인식이 문장을 텍스트로 바꾼다. 비서 모듈이 포모도로 타이머를 시작한다. 표현 모듈은 밝은 표정과 짧은 끄덕임으로 응답한다. 25분 뒤에는 LED가 주황색으로 바뀌고, 눈 모양이 바뀌며, "잠깐 스트레칭할까요?"라고 말한다.
이런 흐름이 자연스러우면 사용자는 이 로봇을 앱보다 더 자주 찾게 된다.
단계별로 만들어 보자
1단계: 몸체와 화면부터 완성하기
먼저 3D 프린트나 간단한 가공으로 베이스와 머리 부분을 만든다. 처음부터 너무 둥글고 복잡한 외형을 고집하지 말자. 직선형 바디에 귀처럼 보이는 장식 하나만 붙여도 충분히 귀엽다.
베이스는 넓고 낮게 만드는 편이 좋다. 책상 위에서 흔들리지 않아야 하고, 실수로 케이블을 당겨도 쉽게 넘어지지 않아야 한다. 화면은 정면에서 눈높이보다 약간 아래를 바라보게 두면 안정감이 좋다.
2단계: 표정 엔진 만들기
디스플레이에 두 눈만 띄우는 것부터 시작하자. 눈동자 이동, 깜빡임, 반달눈, 동그란 눈 정도만 만들어도 놀랄 만큼 생동감이 생긴다. 여기에 상태별 색상이나 LED를 섞으면 더 좋다.
이때 표정 전환 속도를 조절해야 한다. 너무 빠르면 장난감 같고, 너무 느리면 답답하다. 대체로 0.15초에서 0.35초 사이의 전환이 자연스럽다.
3단계: 고개 움직임 추가하기
서보 1개로는 고개 상하 움직임, 2개면 상하와 좌우를 모두 만들 수 있다. 처음에는 1개만으로도 충분하다. 사람이 말을 걸면 고개를 살짝 들고, 생각 중일 때는 천천히 숙이게 만들면 된다.
여기서 중요한 것은 기계적 안전이다. 서보가 끝 각도에서 계속 버티면 소음과 발열이 생긴다. 소프트웨어에서 안전 각도를 미리 제한하자.
4단계: 알림 기능 넣기
가장 먼저 실사용성을 만들어 주는 기능이다. 구글 캘린더 연동까지 가지 않아도 된다. 로컬 타이머, 정시 알림, 물 마시기 알림만 있어도 충분하다.
알림은 세 겹으로 주는 것이 좋다. 표정 변화, 짧은 소리, 짧은 몸짓이다. 세 가지가 합쳐지면 작은 동작도 잘 보인다.
5단계: 카메라 관찰 기능 넣기
이제 카메라를 붙여 사람 얼굴, 특정 물체, QR 코드 정도를 인식하게 만든다. 여기서는 "무엇이든 다 알아보는 AI"를 목표로 하지 않는다. 오히려 책상 위에 자주 놓이는 물건 몇 개만 안정적으로 알아보는 편이 훨씬 실용적이다.
예를 들어 컵이 오래 비어 있으면 물 마시라고 알려 주게 하거나, 책상 앞에 사람이 앉으면 인사하게 만들 수 있다. 촬영하는 사람이라면 카메라 구도 확인이나 녹화 상태 표시 보조로도 응용할 수 있다.
6단계: 음성 또는 버튼 상호작용 넣기
마이크와 스피커를 붙여 짧은 명령을 처리하게 만들면 데스크 로봇 느낌이 갑자기 살아난다. 다만 음성은 주변 소음에 민감하므로, 처음에는 버튼이나 터치 센서와 함께 쓰는 편이 좋다. 예를 들어 머리를 한 번 톡 치면 듣기 모드로 들어가게 만드는 식이다.
7단계: 성격을 입히기
마지막 단계는 기능 추가가 아니라 분위기 조정이다. 아침엔 활기차고, 밤엔 조용하고, 오래 반응이 없으면 졸린 표정을 짓게 만들자. 같은 기능도 어떤 표정과 말투로 전달하느냐에 따라 전혀 다르게 느껴진다.
실사용 시나리오를 먼저 정하면 완성도가 높아진다
책상 위 로봇은 기술 데모보다 사용 장면이 분명할수록 완성도가 높다. 다음 세 가지 시나리오를 추천한다.
집중 도우미 모드
이 모드에서는 포모도로 타이머, 자세 바꾸기 알림, 회의 5분 전 알림이 핵심이다. 로봇은 말을 많이 하지 않고 짧고 분명하게 반응한다. 작업에 방해되지 않으면서도, 사람이 시간 감각을 잃지 않게 도와준다.
관찰 도우미 모드
이 모드에서는 카메라가 중심이다. 책상에 택배가 도착했는지, 인쇄물이 놓였는지, QR 코드가 보이는지처럼 제한된 사건을 감지한다. 재택근무 환경에서는 문 앞 상황을 대신 확인하는 소형 관찰자 느낌으로도 응용할 수 있다.
감성 동반자 모드
이 모드에서는 생산성보다 정서적 존재감이 중요하다. 출근 인사, 생일 축하, 비 오는 날 표정, 야근 중 위로 한마디가 여기에 들어간다. 상용 제품들도 결국 사용자가 오래 곁에 두는 이유는 이런 감성적 연결에 있다는 점을 보여 준다.1
한 로봇에 이 세 모드를 모두 넣을 수는 있다. 하지만 기본값은 하나만 정해 두는 편이 좋다. 그래야 로봇의 캐릭터가 흐트러지지 않는다.
완성도를 올리는 디테일
처음 로봇을 만들면 누구나 기능부터 보게 된다. 그런데 실제로 오래 쓰게 만드는 것은 디테일이다.
가장 먼저 신경 쓸 것은 대기 상태다. 가만히 있을 때 완전히 멈춰 있으면 전원이 꺼진 물건처럼 보인다. 10초에 한 번 정도 천천히 눈을 깜빡이고, 아주 미세하게 고개를 움직이면 살아 있는 느낌이 생긴다.
두 번째는 반응 지연이다. 질문하고 3초 뒤에 움직이면 답답하다. 반대로 너무 즉각적이면 기계 같다. 먼저 "듣는 중" 표정을 즉시 보여 주고, 실제 답변은 0.5초 뒤에 시작하면 훨씬 자연스럽다.
세 번째는 소리의 길이다. 긴 음성 안내는 금방 피곤해진다. 데스크 로봇은 짧은 문장과 짧은 효과음이 더 좋다. "회의 5분 전", "휴식 시간이에요", "좋아요, 시작할게요" 정도가 적당하다.
네 번째는 충전과 케이블 정리다. 데스크 로봇은 책상 위에 오래 있는 물건이므로 케이블이 지저분하면 매력이 반으로 줄어든다. 가능하면 뒤쪽으로 선을 빼고, 충전 도크처럼 보이는 받침을 만들어 주면 훨씬 완성도가 올라간다. 실제 상용 데스크 로봇들이 자동 충전이나 전용 도크를 강조하는 이유도 사용 경험의 연속성을 지키기 위해서다.2
다섯 번째는 프라이버시 표시다. 카메라나 마이크가 켜질 때는 LED를 반드시 켜자. 버튼 하나로 마이크를 끌 수 있게 하면 더 좋다. 책상 로봇은 가까운 거리에서 생활을 함께하는 만큼, 편리함 못지않게 안심이 중요하다.
로컬 AI를 넣으면 무엇이 달라질까
이 프로젝트는 꼭 클라우드 AI가 없어도 완성할 수 있다. 하지만 한 단계 더 가고 싶다면 로컬 AI는 매우 매력적이다. Jetson 같은 보드에서는 작은 LLM이나 VLM을 장치 안에서 직접 돌릴 수 있어서, 카메라 영상이나 개인 메모가 외부 서버로 나가지 않게 만들 수 있고 응답도 더 빠르게 느껴진다.4
예를 들어 이런 확장이 가능하다.
카메라 장면을 보고 "왼쪽에 컵이 있고, 가운데엔 키보드가 있어요"라고 설명하기
사용자의 음성 명령을 로컬 모델로 해석해 로봇 행동으로 연결하기
오늘의 일정과 현재 책상 상태를 함께 묶어 작은 브리핑 만들기
오픈소스 프로젝트인 RIO Mini는 ROS 2, 로컬 LLM, ESP32 기반 제어를 결합해 데스크톱 동반 로봇을 구현하는 좋은 예다. 이런 구조를 보면, 작은 로봇도 센서 입력, 음성 상호작용, 표정 제어, 자율 행동을 모듈식으로 묶어 충분히 확장할 수 있다는 감이 잡힌다.5
물론 지금 단계에서는 여기까지 바로 갈 필요는 없다. 하지만 "내 로봇이 언젠가 더 똑똑해질 수 있다"는 확장 경로를 알고 만드는 것만으로도 설계가 달라진다.
이 프로젝트에서 흔히 망하는 지점
마지막으로, 미리 알고 피하면 좋은 함정을 짚고 넘어가자.
첫 번째 함정은 너무 많은 자유 대화를 기대하는 것이다. 데스크 어시스턴트는 챗봇이 아니다. 짧고 자주 쓰는 명령을 정확하게 처리하는 편이 훨씬 좋다.
두 번째 함정은 모터 움직임을 과하게 넣는 것이다. 책상 위 로봇은 작은 움직임만으로도 충분하다. 오히려 너무 자주 흔들리면 산만하고 시끄럽다.
세 번째 함정은 카메라 인식을 만능으로 생각하는 것이다. 조명, 역광, 책상 위 잡동사니 때문에 인식률은 쉽게 흔들린다. 그래서 항상 인식 대상을 제한해야 한다.
네 번째 함정은 귀여움만 추구하는 것이다. 예쁘기만 하고 실제로는 아무 도움을 주지 않으면 며칠 뒤부터 장식품이 된다. 반대로 기능만 있고 표정이 없으면 그냥 작은 컴퓨터 같다. 데스크 로봇은 유용함과 감성이 둘 다 있어야 오래 살아남는다.
이제 당신의 로봇은 생활 속 물건이 된다
이번 프로젝트는 화려한 자율주행이나 복잡한 로봇팔보다 덜 거창해 보일 수 있다. 하지만 개인 개발자에게는 오히려 이런 로봇이 더 중요하다. 매일 눈에 보이고, 직접 쓰고, 고치고, 개선할 수 있기 때문이다.
좋은 데스크 어시스턴트 로봇은 세 가지를 해낸다. 첫째, 작은 일을 도와준다. 둘째, 책상 위 분위기를 바꾼다. 셋째, 개발자가 계속 손대고 싶게 만든다. 그게 바로 오래 살아남는 개인 로봇의 조건이다.
이 장의 로봇이 완성되면, 당신은 단순히 전자 부품을 조립한 것이 아니다. 자신의 작업 공간에 맞춘 작은 물리적 AI를 만든 것이다. 그리고 이런 경험은 다음 장에서 배울 ROS 2식 모듈화와 시뮬레이션 확장으로 자연스럽게 이어진다.
오늘은 책상 위의 작은 친구를 만들었다. 그런데 이상하게도, 이런 작은 친구가 가장 오래 곁에 남는다.
참고
1AI desk robot review discussing daily usefulness over raw specifications
3Microsoft gestureBot Design Kit
4Getting Started with Edge AI on NVIDIA Jetson: LLMs, VLMs, and Foundation Models for Robotics
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.