RoboDine 프로젝트 시작 - 로봇 레스토랑의 첫걸음
프로젝트의 시작
2025년 4월 11일, RoboDine 프로젝트가 시작되었습니다. 6명의 팀원이 모여 “ROS2와 AI를 활용한 자율주행 & 로봇팔 통합 서비스”라는 야심찬 목표를 설정했습니다. 저는 이 프로젝트에서 통신 시스템과 웹 UI 개발을 담당하게 되었습니다.
팀 구성과 역할 분담
팀 멤버와 담당 역할
- 김용규(팀장): 조리 로봇(COOKBOT) 제어 시스템
- 김인수(본인): 통신 시스템 구축 및 웹 UI 개발
- 임지혜: AI 및 컴퓨터 비전 시스템
- 장성원: AI 및 비전 시스템 보조
- 심경용: 서빙 로봇(ALBABOT) 제어
- 허은재: 서빙 로봇 시스템 보조
초기 기술 스택 결정
첫 번째 미팅에서 우리가 결정한 핵심 기술 스택은 다음과 같았습니다:
Backend:
- Framework: FastAPI (Python 3.8+)
- Database: PostgreSQL
- Communication: WebSocket, TCP, UDP, RTSP
Frontend:
- Framework: React.js 17.0.2
- Styling: Tailwind CSS
- State Management: React Hooks
- Real-time: Socket.io-client
Robotics:
- OS: ROS2 Jazzy
- Vision: YOLOv8, OpenCV
- Robot Control: myCobot SDK, PyRobots
Development:
- Version Control: Git, GitHub
- Documentation: Confluence
- Communication: Slack
- Project Management: Jira
초기 시스템 아키텍처 설계
고수준 시스템 구조
우리가 설계한 시스템 구조입니다:
통신 프로토콜 설계
각 시스템 간의 통신 방식을 다음과 같이 계획했습니다:
연결 | 프로토콜 | 포트 | 용도 |
---|---|---|---|
웹 클라이언트 ↔ 서버 | WebSocket | 3000 | 실시간 상태 업데이트 |
웹 클라이언트 ↔ 서버 | HTTP/REST | 8000 | 데이터 CRUD |
서버 ↔ COOKBOT | TCP | 8001 | 로봇 명령 및 상태 |
서버 ↔ ALBABOT | TCP | 8002 | 이동 명령 및 위치 |
서버 ↔ CookGPT | UDP | 8003 | 비전 데이터 |
비디오 스트리밍 | RTSP | 8554 | 실시간 영상 |
초기 개발 환경 구축
개발 도구 셋업
프로젝트 시작과 함께 개발 환경을 구축했습니다:
# 1. Python 가상환경 설정
python -m venv robovenv
source robovenv/bin/activate # Linux/Mac
# robovenv\Scripts\activate # Windows
# 2. 필수 패키지 설치
pip install fastapi[all] uvicorn websockets
pip install sqlmodel sqlite3 psycopg2-binary
pip install opencv-python ultralytics
pip install python-multipart aiofiles
# 3. Node.js 프로젝트 초기화
npx create-react-app frontend
cd frontend
npm install tailwindcss socket.io-client chart.js
GitHub 저장소 구조
프로젝트 구조를 다음과 같이 설계했습니다:
roscamp-repo-2/
├── robodine_service/ # 중앙 제어 시스템
│ ├── backend/ # FastAPI 백엔드
│ │ ├── app/
│ │ ├── routers/
│ │ ├── db/
│ │ └── requirements.txt
│ └── frontend/ # React 프론트엔드
│ ├── operator/ # 운영자 대시보드
│ └── kiosk/ # 키오스크 시스템
├── cook_planner/ # 조리 로봇 제어
├── cook_gpt/ # 비전 시스템
├── alba_manager/ # 서빙 로봇 제어
├── alba_gpt/ # 서빙 로봇 AI
├── robot_debugger/ # 디버깅 도구
└── docs/ # 프로젝트 문서
첫 주 개발 목표
Week 1 (4/9 - 4/15) 목표
각 팀원별로 다음과 같은 목표를 설정했습니다:
김인수 (통신 & 웹 UI):
- FastAPI 기본 서버 구축
- WebSocket 연결 테스트
- React 프로젝트 초기 구조 생성
- 기본 대시보드 레이아웃 구현
김용규 (COOKBOT 제어):
- myCobot 로봇 기본 연결 테스트
- ROS2 노드 기본 구조 구현
- 로봇 관절 제어 기본 기능
임지혜 & 장성원 (비전 시스템):
- YOLOv8 모델 로드 및 테스트
- 카메라 입력 처리 기본 구현
- 객체 감지 기본 기능
심경용 & 허은재 (ALBABOT 제어):
- 자율주행 로봇 기본 연결
- Navigation2 기본 설정
- 로봇 이동 제어 테스트
협업 규칙 설정
Git 워크플로우
# 브랜치 네이밍 규칙
feature/통신시스템-websocket-구현
fix/대시보드-연결오류-수정
docs/API-문서-업데이트
# 커밋 메시지 규칙
[통신] WebSocket 연결 관리자 구현
[UI] 대시보드 기본 레이아웃 추가
[로봇] myCobot 기본 제어 기능 구현
일일 스크럼
- 시간: 매일 오전 9시
- 방식: 스탠드업 미팅 진행 후 Confluence에 정리
- 형식:
- 어제 한 일
- 오늘 할 일
- 블로커/이슈
문서화 규칙
- Confluence: 주요 설계 문서, 회의록
- README: 각 모듈별 설치/실행 가이드
- 코드 주석: 핵심 로직에 대한 상세 설명
초기 도전과 우려사항
기술적 도전
- 다중 프로토콜 통합: WebSocket, TCP, UDP, RTSP를 하나의 시스템에서 안정적으로 운영
- 실시간 성능: 로봇 제어의 지연 시간을 최소화해야 하는 과제
- 시스템 복잡도: 6개의 독립적인 모듈을 유기적으로 연결하는 복잡성
프로젝트 관리 우려
- 일정 관리: 2개월이라는 제한된 시간 내에 완성도 있는 시스템 구축
- 팀 협업: 6명의 개발자가 서로 다른 기술 스택으로 작업하는 조율
- 통합 테스트: 개별 모듈을 통합했을 때 발생할 수 있는 예상치 못한 이슈
프로젝트 성공을 위한 전략
점진적 개발 접근법
- MVP 우선: 핵심 기능부터 구현하여 동작하는 프로토타입 빠른 구축
- 모듈별 독립 개발: 각 모듈을 독립적으로 개발 후 단계적 통합
- 지속적 통합: 주 2회 전체 시스템 통합 테스트 진행
리스크 관리
- 백업 플랜: 핵심 기능별로 대안 기술 스택 준비
- 조기 통합: 개발 중반부터 모듈 간 연동 테스트 시작
- 문서화: 모든 설계 결정과 변경 사항을 상세히 기록
첫 주를 마치며
프로젝트 첫 주가 지나고, 우리는 야심찬 목표를 세웠습니다. 로봇 레스토랑이라는 복잡한 시스템을 2개월 만에 구현하는 것은 쉽지 않은 도전이지만, 체계적인 계획과 팀워크로 충분히 달성 가능하다고 생각했습니다.
다음 포스트에서는 실제 개발 과정에서 겪은 첫 번째 기술적 도전과 해결 과정에 대해 공유하겠습니다.
RoboDine 프로젝트는 이제 막 시작되었습니다. 앞으로의 여정이 어떻게 전개될지 기대가 됩니다. 다음 포스트에서는 FastAPI 백엔드 구축 과정을 상세히 다루겠습니다.
Enjoy Reading This Article?
Here are some more articles you might like to read next: