72 lines
2.0 KiB
Markdown
72 lines
2.0 KiB
Markdown
# UWB 기반 ROS 자율주행 쇼핑카트
|
|
|
|
UWB 태그 위치를 읽어 사용자를 따라가거나, ROS 2 Navigation으로 지정 위치까지 이동하는 쇼핑카트 프로젝트입니다.
|
|
|
|
Qt 화면은 상품 선택, 장바구니, 결제 화면을 담당합니다. Python 서버는 상품 데이터, 무게 검증, ROS 명령 전달을 처리합니다.
|
|
|
|
## 기간
|
|
|
|
- 2025.11.20 ~ 2026.01.04
|
|
- 과정: INTEL AI SW 8기
|
|
|
|
## 맡은 부분
|
|
|
|
| 이름 | 담당 |
|
|
| --- | --- |
|
|
| 김기환 | PM |
|
|
| 서채건 | 하드웨어 구성, 로드셀 연동 |
|
|
| 이동현 | ROS 제어 |
|
|
| 박서정 | 하드웨어 구성, 로드셀 연동 |
|
|
| 김동현 | GUI 디자인 |
|
|
|
|
## 사용한 것
|
|
|
|
- `ROS 2`
|
|
- `Qt`
|
|
- `Python`
|
|
- `Uvicorn`
|
|
- `SQLite`
|
|
- `UWB DW3000`
|
|
- `HX711`
|
|
- `TurtleBot`
|
|
|
|
## 구성
|
|
|
|
```text
|
|
.
|
|
├─ QT-Main/ Qt 터치 화면
|
|
├─ QT-Server/ API 서버, DB, 로드셀, ROS 연동
|
|
└─ UWB-Arduino/ UWB anchor/tag 코드
|
|
```
|
|
|
|
## 동작
|
|
|
|
- UWB anchor 3개와 tag 1개로 tag 위치를 계산합니다.
|
|
- 계산한 좌표를 ROS 쪽으로 넘겨 따라가기 동작에 사용합니다.
|
|
- 안내 모드에서는 사용자가 고른 위치를 목적지로 보내고 카트가 이동합니다.
|
|
- HX711 로드셀로 장바구니 무게를 읽습니다.
|
|
- 상품 DB의 예상 무게와 실제 무게가 다르면 결제 단계에서 확인이 필요하도록 처리합니다.
|
|
- Qt 화면에서 상품 선택, 장바구니 확인, 결제 화면을 보여줍니다.
|
|
|
|
## 하드웨어
|
|
|
|
- Raspberry Pi 4
|
|
- Raspberry Pi 7인치 터치스크린
|
|
- ESP32 + UWB DW3000
|
|
- HX711 로드셀
|
|
- QR 코드 스캐너
|
|
- TurtleBot 기반 이동 플랫폼
|
|
|
|
## 서버
|
|
|
|
- `QT-Server/main.py`: API 서버
|
|
- `QT-Server/database.py`: 상품/결제 데이터 처리
|
|
- `QT-Server/hx711.py`: 로드셀 읽기
|
|
- `QT-Server/ros_controller.py`: ROS 명령 전달
|
|
|
|
## 메모
|
|
|
|
- UWB 데이터가 일정 시간 들어오지 않으면 추적 값을 갱신하지 않습니다.
|
|
- 로드셀 값은 여러 번 읽어 평균값을 사용합니다.
|
|
- `QT-Server/shopping_cart.db`는 시연용 SQLite DB입니다.
|