์์ฐฝ ๋ฐฉ์ง ์์ธ ๋ณํ ๋ก๋ด ํ๋ซํผ / Pressure Ulcer Prevention Auto-Repositioning Robot Platform
์ด ํ๋ก์ ํธ๋ ์ฌ๋์ ์์ด๋์ด์ Claude AI์ ๊ตฌํ์ด ๋๋ฑํ๊ฒ ๊ฒฐํฉ๋ ํ์ ๊ฒฐ๊ณผ๋ฌผ์ ๋๋ค.
This project is a collaboration where human ideas and Claude AI's implementation contributed equally.
| ์ญํ / Role | ๊ธฐ์ฌ์ / Contributor | ๊ธฐ์ฌ๋ / Contribution |
|---|---|---|
| ๐ก ์์ด๋์ด & ๋๋ฉ์ธ ์ง์ (Idea & Domain Knowledge) | ์ฌ๋ (Human) | 50% |
| ๐ค ์ฝ๋ ๊ตฌํ & ์ํคํ ์ฒ (Code & Architecture) | Claude AI (Anthropic) | 50% |
์์ด๋์ด โ ์ฌ๋ (Human) 50%:
- ์์ฐฝ ๋ฐฉ์ง๋ฅผ ์ํ ์๋ ์์ธ ๋ณํ ํ์์ฑ ๋ฐ๊ฒฌ
- ๊ฑฐ๋ ๋ถ๋ฅ ํ์๋ฅผ ๋์์ผ๋ก ํ ๋ก๋ด ๊ฐ๋ณ ๊ฐ๋ ์ ์
- 90๋ถ ์ฃผ๊ธฐ ์์ธ ๋ณํ์ด๋ผ๋ ์ํ์ ์๊ตฌ์ฌํญ ์ ์
- ๊ณต์ต ๋ชฉ์ ์คํ์์ค๋ก ๋ฐฐํฌํ๋ค๋ ๋ฐฉํฅ ๊ฒฐ์
- Identifying the need for automated repositioning to prevent pressure ulcers
- Defining the target use case: immobile patients in care settings
- Specifying the 90-minute medical repositioning requirement
- Deciding to release as open-source for public benefit only
๊ตฌํ โ Claude AI (Anthropic) 50%:
- Python ๋น๋๊ธฐ ์ ์ด ์์คํ (asyncio, Raspberry Pi GPIO)
- FastAPI REST API + WebSocket ์ค์๊ฐ ์๋ฒ
- Vue 3 ๋ชจ๋ํฐ๋ง ๋์๋ณด๋ ์ค๊ณ ๋ฐ ๊ตฌํ
- ์์ ์์คํ ์ํคํ ์ฒ (๊ธด๊ธ ์ ์ง, ์ ์ง์ ์ด๋, ์๋ ฅ ๊ฐ์ง)
- ํ๋ก์ ํธ ์ ์ฒด ๊ตฌ์กฐ ๋ฐ ๋ฌธ์ํ
- Python async control system (asyncio, Raspberry Pi GPIO)
- FastAPI REST API + WebSocket real-time server
- Vue 3 monitoring dashboard design and implementation
- Safety system architecture (emergency stop, gradual movement, pressure detection)
- Overall project structure and documentation
ํ๊ตญ์ด:
๊ฑฐ๋์ด ๋ถํธํ ํ์๋ ์ฅ์๊ฐ ๊ฐ์ ์์ธ๋ฅผ ์ ์งํ ๊ฒฝ์ฐ ์์ฐฝ(์๋ฐ ๊ถค์) ์ด ๋ฐ์ํฉ๋๋ค. ์๋ฃ ์ง์นจ์ ๋ฐ๋ฅด๋ฉด 2์๊ฐ๋ง๋ค ์์ธ๋ฅผ ๋ณํํด์ผ ํ์ง๋ง, ๊ฐํธ ์ธ๋ ฅ ๋ถ์กฑ์ผ๋ก ์ด๋ฅผ ์งํค์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํนํ ์ผ๊ฐ์ ์ด ๋ฌธ์ ๊ฐ ์ฌ๊ฐํฉ๋๋ค.
English:
Immobile patients develop pressure ulcers when kept in the same position for too long. Medical guidelines recommend repositioning every 2 hours, but understaffed care facilities often cannot maintain this schedule โ especially overnight.
"์๋ฐ ๊ถค์์ 93%๋ ์๋ฐฉ ๊ฐ๋ฅํ๋ค" โ ํ๊ตญ๊ฐํธํํ (2022)
"93% of pressure ulcers are preventable" โ Korean Nursing Association (2022)
CareBot์ ์นจ๋์ ์ฅ์ฐฉ๋ ๋ฆฌ๋์ด ์ก์ถ์์ดํฐ๋ฅผ ํตํด 90๋ถ๋ง๋ค ์๋์ผ๋ก ํ์ ์์ธ๋ฅผ ๋ณํํฉ๋๋ค.
CareBot uses linear actuators mounted to the bed to automatically reposition patients every 90 minutes.
์์ธ ์ํ / Position Rotation:
์์์ (Supine)
โ ์ข์ธก์์ (Left Lateral 30ยฐ)
โ ์์์ (Supine)
โ ์ฐ์ธก์์ (Right Lateral 30ยฐ)
โ ๋ฐ๋ณต (Repeat)
| ๊ธฐ๋ฅ / Feature | ์ค๋ช / Description |
|---|---|
| โฑ๏ธ ์๋ ์์ธ ๋ณํ / Auto Repositioning | 90๋ถ๋ง๋ค ์์์ โ ์ธก์์ ์๋ ์ํ / Rotates supine โ lateral every 90 min |
| ๐ฆพ ์ก์ถ์์ดํฐ ์ ์ด / Actuator Control | Raspberry Pi GPIO โ L298N โ ๋ฆฌ๋์ด ์ก์ถ์์ดํฐ / GPIO PWM control |
| ๐ก๏ธ ๋ค์ค ์์ ์์คํ / Multi-layer Safety | ๊ธด๊ธ ์ ์ง, ์๋ ฅ ๊ฐ์ง, ์ ์ง์ ์ด๋ / Emergency stop, pressure detection, gradual movement |
| ๐ ์ค์๊ฐ ๋์๋ณด๋ / Real-time Dashboard | Vue 3 + WebSocket ์ค์๊ฐ ์ํ ๋ชจ๋ํฐ๋ง / Live status monitoring |
| ๐ค AI ์ํ ๋ถ์ / AI Analysis | Claude API ๊ธฐ๋ฐ ๋ณดํธ์ ์๋ด ์์ฝ / Caregiver summaries powered by Claude |
| ๐ฑ ๋ณดํธ์ ์๋ฆผ / Caregiver Alerts | ๋ณํ ์๋ฃ ๋ฐ ์ด์ ๊ฐ์ง ์ ์ฆ์ ์๋ฆผ / Instant alerts on completion or anomaly |
CareBot System
โ
โโโ ๐ง carebot_core/ # ๋ก๋ด ์ ์ด / Robot Control (Python + asyncio)
โ โโโ main.py # GPIO ์ ์ด, 90๋ถ ์ค์ผ์ค๋ฌ, ์์ ์์คํ
โ # GPIO control, 90-min scheduler, safety system
โ
โโโ ๐ carebot_api/ # ๋ฐฑ์๋ ์๋ฒ / Backend Server (FastAPI)
โ โโโ main.py # REST API + WebSocket ์๋ํฌ์ธํธ
โ โโโ services/
โ โโโ ai_service.py # Claude API ์ฐ๋ / Claude API integration
โ
โโโ ๐ฅ๏ธ carebot_dashboard/ # ํ๋ก ํธ์๋ / Frontend (Vue 3 + Tailwind)
โ โโโ src/App.vue # ์ค์๊ฐ ๋ชจ๋ํฐ๋ง UI / Real-time monitoring UI
โ
โโโ ๐งช tests/ # ๋จ์ ํ
์คํธ / Unit Tests (pytest)
โโโ ๐ docs/ # ์กฐ๋ฆฝ ๊ฐ์ด๋, ํ๋ก๋ / Assembly guide, circuit diagram
โโโ .env.example # ํ๊ฒฝ๋ณ์ ์์ / Environment variable template
โโโ requirements.txt # Python ์์กด์ฑ / Python dependencies
| ๋ถํ / Part | ์๋ / Qty | ์ญํ / Role | ์์ ๊ฐ๊ฒฉ / Est. Cost |
|---|---|---|---|
| Raspberry Pi 4 (4GB) | 1 | ๋ฉ์ธ ์ปจํธ๋กค๋ฌ / Main controller | โฉ65,000 |
| 12V ๋ฆฌ๋์ด ์ก์ถ์์ดํฐ (200mm) | 4 | ์นจ๋ ํจ๋ ๊ตฌ๋ / Bed panel actuation | โฉ40,000 ร 4 |
| L298N ๋ชจํฐ ๋๋ผ์ด๋ฒ | 2 | PWM ์ ์ด / PWM control | โฉ3,000 ร 2 |
| FSR400 ์๋ ฅ ์ผ์ | 4 | ํ์ ๊ฐ์ง / Patient detection | โฉ8,000 ร 4 |
| ADS1115 ADC (I2C) | 1 | ์๋ ๋ก๊ทธโ๋์งํธ / AnalogโDigital | โฉ5,000 |
| ๊ธด๊ธ ์ ์ง ๋ฒํผ (์ ์) | 1 | ๋น์ ์ ์ง / Emergency stop | โฉ5,000 |
| 12V 20A ์ ์ ๊ณต๊ธ๊ธฐ | 1 | ์ก์ถ์์ดํฐ ์ ์ / Actuator power | โฉ30,000 |
์์ ์ด ๋น์ฉ / Estimated Total: โฉ340,000 ~ โฉ500,000 (ํ๋ ์ ์ ์ธ / excluding frame)
์์ธํ ์กฐ๋ฆฝ ๊ฐ์ด๋ โ docs/hardware_guide.md
git clone https://github.com/YOUR_ID/carebot.git
cd carebot
# Python ๊ฐ์ํ๊ฒฝ / Python virtual environment
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# ํ๊ฒฝ ์ค์ / Environment setup
cp .env.example .env
# .env ํ์ผ์์ ANTHROPIC_API_KEY ์
๋ ฅ / Set ANTHROPIC_API_KEY in .env# ํฐ๋ฏธ๋ 1 โ ๋ก๋ด ์ ์ด / Terminal 1 โ Robot control
SIMULATION_MODE=true python carebot_core/main.py
# ํฐ๋ฏธ๋ 2 โ API ์๋ฒ / Terminal 2 โ API server
uvicorn carebot_api.main:app --host 0.0.0.0 --port 8000 --reload
# ํฐ๋ฏธ๋ 3 โ ๋์๋ณด๋ / Terminal 3 โ Dashboard
cd carebot_dashboard && npm install && npm run dev
# โ http://localhost:5173SIMULATION_MODE=true pytest tests/ -v| Method | Endpoint | ์ค๋ช / Description |
|---|---|---|
GET |
/api/status |
ํ์ฌ ์์ธ & ์ํ / Current position & status |
POST |
/api/position/rotate |
์๋ ์์ธ ๋ณํ / Manual rotation |
POST |
/api/emergency-stop |
๐จ ๊ธด๊ธ ์ ์ง / Emergency stop |
POST |
/api/scheduler/pause |
์ค์ผ์ค ์ผ์์ ์ง / Pause schedule |
POST |
/api/scheduler/resume |
์ค์ผ์ค ์ฌ๊ฐ / Resume schedule |
GET |
/api/logs |
์์ธ ๋ณํ ๊ธฐ๋ก / Change history |
GET |
/api/ai/summary |
AI ์ํ ์์ฝ / AI status summary |
WS |
/ws |
์ค์๊ฐ WebSocket / Real-time WebSocket |
- ๐ด ๋ฌผ๋ฆฌ์ ๊ธด๊ธ ์ ์ง ๋ฒํผ / Physical Emergency Stop โ ๋๋ฅด๋ฉด ๋ชจ๋ ์ก์ถ์์ดํฐ ์ฆ์ ์ ์ง / Instantly halts all actuators
- ๐ ์ ์ง์ ์ด๋ / Gradual Movement โ 30๋จ๊ณ ์ฒ์ฒํ ๋ณํ, ๊ธ๊ฒฉํ ์์ง์ ์์ / 30-step gradual transition
- โ๏ธ ์๋ ฅ ์ผ์ ํ์ธ / Pressure Verification โ ์ด๋ ์ ํ์ ๊ฐ์ง ํ์ / Verifies patient presence before movement
- โก ๊ณผ๋ถํ ๊ฐ์ง / Overload Detection โ ๋น์ ์ ์ ๋ฅ ๊ฐ์ง ์ ์๋ ์ ์ง / Auto-stop on abnormal current
- ๐ข ๋ณดํธ์ ์ฆ์ ์๋ฆผ / Instant Alerts โ ์ด์ ์ SMS/์ฑ ์๋ฆผ / SMS/app alert on anomaly
- ๐ ์ ์ฒด ๊ฐ์ฌ ๋ก๊ทธ / Full Audit Log โ ์๊ฐ, ์์ธ, ๊ฒฐ๊ณผ ์ ๋ถ ๊ธฐ๋ก / All actions logged with timestamp
์ด ์ํํธ์จ์ด๋ ๊ณต์ต ๋ชฉ์ ์ผ๋ก๋ง ์ฌ์ฉ๋์ด์ผ ํฉ๋๋ค.
This software must be used for public benefit purposes only.์ด ์ํํธ์จ์ด๋ ์๋ฃ๊ธฐ๊ธฐ๊ฐ ์๋๋๋ค.
This software is NOT a certified medical device.
- ์ค์ ํ์์๊ฒ ์ฌ์ฉํ๊ธฐ ์ ๋ฐ๋์ ์๋ฃ ์ ๋ฌธ๊ฐ์ ๊ฐ๋
ํ์ ๊ฒ์ฆํ์ญ์์ค
Always validate under medical supervision before use on real patients - ์ด ์์คํ
์ ๊ฐํธ ์ธ๋ ฅ์ ๋ณด์กฐํ๋ ๋๊ตฌ์ด๋ฉฐ, ์์ ํ ๋์ฒดํ ์ ์์ต๋๋ค
This system supplements nursing care โ it cannot fully replace it
| ๋ฌธ์ / Document | ์ค๋ช / Description |
|---|---|
docs/hardware_guide.md |
ํ๋์จ์ด ์กฐ๋ฆฝ ๊ฐ์ด๋ & ํ๋ก๋ / Assembly guide & circuit diagram |
docs/safety_protocol.md |
์์ ํ๋กํ ์ฝ / Safety protocol |
docs/api.md |
API ์ ์ฒด ๋ช ์ธ / Full API specification |
docs/medical_disclaimer.md |
์๋ฃ ๋ฉด์ฑ ๊ณ ์ง / Medical disclaimer |
์ด ํ๋ก์ ํธ๋ ๊ณต์ต์ ์ํ ์คํ์์ค์
๋๋ค.
์๋ฃ์ง, ๊ฐ๋ฐ์, ๊ฐ๋ณ์ธ, ๋ณต์ง ์ฐ๊ตฌ์ ๋ชจ๋ ํ์ํฉ๋๋ค!
This is an open-source project for public benefit.
Medical professionals, developers, caregivers, and welfare researchers are all welcome!
git checkout -b feat/๊ธฐ๋ฅ์ด๋ฆ
git commit -m "feat: ์ค๋ช
/ description"
# Pull Request ์ ์ถ / Submit Pull RequestGPL-3.0 โ ์์ค ๊ณต๊ฐ ๊ฐ์ , ๊ณต์ต์ ํ์ฉ ์ฅ๋ ค
GPL-3.0 โ Requires source disclosure, encourages public benefit use
์์
์ ์ด์ฉ ์ ๋ณ๋ ๋ฌธ์ / Contact for commercial use
์ด ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ค ๋ชจ๋ ๊ฐ๋ณ์ธ๊ณผ ์๋ฃ ์ข
์ฌ์๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์์ฐฝ์ผ๋ก ๊ณ ํต๋ฐ๋ ๋ชจ๋ ํ์๋ถ๋ค์ ์ํด ์ด ํ๋ก์ ํธ๋ฅผ ๋ฐ์นฉ๋๋ค.
Dedicated to all caregivers working tirelessly to prevent pressure ulcers,
and to every patient who deserves dignity and comfort in their care.