From fd1aa5a66e7bd8e8865bf767875000f20494ea26 Mon Sep 17 00:00:00 2001 From: seo Date: Mon, 3 Aug 2026 04:11:50 +0900 Subject: [PATCH] =?UTF-8?q?README=20=EB=AC=B8=EC=9E=A5=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC=20=EB=90=98=EB=8F=8C=EB=A6=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 153 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 104 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 0ed38a3..57a0d76 100644 --- a/README.md +++ b/README.md @@ -1,71 +1,126 @@ -# UWB 기반 ROS 자율주행 쇼핑카트 +# UWB 기반 ROS 자율주행 쇼핑카트 (QT-CART) -UWB 태그 위치를 읽어 사용자를 따라가거나, ROS 2 Navigation으로 지정 위치까지 이동하는 쇼핑카트 프로젝트입니다. +## 프로젝트 개요 +QT-CART는 UWB 기반 위치 추적과 ROS 2 자율주행 시스템을 결합한 스마트 쇼핑카트입니다. +사용자를 따라 이동하거나 매장 내 특정 상품 구역으로 안내하며, 무게 센서를 이용한 도난 방지 결제 시스템과 +관리자용 대시보드를 제공합니다. -Qt 화면은 상품 선택, 장바구니, 결제 화면을 담당합니다. Python 서버는 상품 데이터, 무게 검증, ROS 명령 전달을 처리합니다. +- **프로젝트 기간**: 2025.11.20 ~ 2026.01.04 +- **팀명**: 아자아자아자쓰! +- **과정**: INTEL AI SW 8기 -## 기간 +--- -- 2025.11.20 ~ 2026.01.04 -- 과정: INTEL AI SW 8기 - -## 맡은 부분 - -| 이름 | 담당 | -| --- | --- | +## 팀 구성 +| 이름 | 역할 | +|---|---| | 김기환 | PM | -| 서채건 | 하드웨어 구성, 로드셀 연동 | -| 이동현 | ROS 제어 | -| 박서정 | 하드웨어 구성, 로드셀 연동 | +| 서채건 | 하드웨어, 로드셀 | +| 이동현 | ROS 제어 시스템 | +| 박서정 | 하드웨어, 로드셀 | | 김동현 | GUI 디자인 | -## 사용한 것 +--- -- `ROS 2` -- `Qt` -- `Python` -- `Uvicorn` -- `SQLite` -- `UWB DW3000` -- `HX711` -- `TurtleBot` +## 프로젝트 목표 +- UWB 기반 사용자 위치 추적을 통한 주인 따라가기 기능 +- ROS 2 Navigation을 이용한 매장 내 자율주행 안내 +- 무게 센서를 활용한 비정상 상품 감지 및 도난 방지 +- QT 기반 터치 UI와 관리자 대시보드 제공 -## 구성 +--- -```text -. -├─ QT-Main/ Qt 터치 화면 -├─ QT-Server/ API 서버, DB, 로드셀, ROS 연동 -└─ UWB-Arduino/ UWB anchor/tag 코드 -``` +## 시스템 아키텍처 +image +image -## 동작 -- UWB anchor 3개와 tag 1개로 tag 위치를 계산합니다. -- 계산한 좌표를 ROS 쪽으로 넘겨 따라가기 동작에 사용합니다. -- 안내 모드에서는 사용자가 고른 위치를 목적지로 보내고 카트가 이동합니다. -- HX711 로드셀로 장바구니 무게를 읽습니다. -- 상품 DB의 예상 무게와 실제 무게가 다르면 결제 단계에서 확인이 필요하도록 처리합니다. -- Qt 화면에서 상품 선택, 장바구니 확인, 결제 화면을 보여줍니다. -## 하드웨어 +- **Frontend** + - QT 기반 터치스크린 UI + - 상품 안내, 장바구니 관리, 결제 화면 제공 +- **Backend** + - API Server (상품/결제/무게 검증) + - 관리자 대시보드 +- **Robot System** + - ROS 2 기반 네비게이션 + - UWB 위치 추적 + - 모터 제어 및 센서 데이터 처리 +--- + +## 주요 기능 + +### 1️. 안내 모드 +- 매장 지도에서 상품 구역 선택 +- 선택된 좌표로 카트가 자율주행 이동 +- 목적지 도착 후 장바구니 위치로 복귀 + +--- + +### 2️. 주인 따라가기 모드 +- UWB 태그를 소지한 사용자를 실시간 추적 +- 삼각측량 기반 위치 계산 +- 사용자 이동에 맞춰 카트가 자동 추종 + +--- + +### 3️. 관리자 대시보드 +- 실시간 카트 상태 모니터링 +- 상품 및 결제 정보 관리 +- 센서 데이터 시각화 + +--- + +### 4️. 도난 방지 시스템 +- HX711 로드셀 센서 기반 무게 측정 +- 상품 DB의 예상 무게와 실측 무게 비교 +- 오차 발생 시 결제 차단 및 경고 표시 + +--- + +## UWB 위치 추적 원리 +- ToF(Time of Flight) 기반 거리 측정 +- 3개의 UWB 앵커와 1개의 태그를 이용한 삼각측량 +- 계산된 좌표를 ROS 토픽으로 2초 주기로 발행 + +--- + +## Hardware 구성 - Raspberry Pi 4 -- Raspberry Pi 7인치 터치스크린 - ESP32 + UWB DW3000 -- HX711 로드셀 +- HX711 로드셀 센서 - QR 코드 스캐너 +- Raspberry Pi 7인치 터치스크린 - TurtleBot 기반 이동 플랫폼 -## 서버 +--- -- `QT-Server/main.py`: API 서버 -- `QT-Server/database.py`: 상품/결제 데이터 처리 -- `QT-Server/hx711.py`: 로드셀 읽기 -- `QT-Server/ros_controller.py`: ROS 명령 전달 +## Software 구성 +- ROS 2 (Navigation, Motor Control) +- QT (UI/UX) +- API Server (Python) +- UDP / HTTP 통신 +- FSM 기반 로봇 상태 제어 -## 메모 +--- -- UWB 데이터가 일정 시간 들어오지 않으면 추적 값을 갱신하지 않습니다. -- 로드셀 값은 여러 번 읽어 평균값을 사용합니다. -- `QT-Server/shopping_cart.db`는 시연용 SQLite DB입니다. +## Trouble Shooting +| 문제 | 해결 | +|---|---| +| UWB 통신 일시 중단 | 2초 이상 데이터 미수신 시 자동 복구 | +| 로드셀 노이즈 | 다중 샘플링 평균 필터 적용 | +| API 응답 지연 | 센서 처리 비동기화 (800ms → 240ms) | + +--- + +## 시연 +- 안내 모드 시연 +- 주인 따라가기 시연 +- 도난 방지 결제 시연 + + +https://github.com/user-attachments/assets/d50bf697-262b-453a-afcf-843e31196774 + + +---