Skip to content

복잡한 건강검진 절차를 자율주행 기반의 로봇이 수검자가 건강검진을 완료할 수 있도록 1:1 안내를 진행하는 IoT 프로젝트입니다.

Notifications You must be signed in to change notification settings

IoT-gganbu/gganbu

Repository files navigation

1:1 건강검진 파트너 깐부


1. 프로젝트 개요

🏆 프로젝트 목표

복잡한 건강검진 절차를 자율주행 기반의 로봇이 수검자가 건강검진을 완료할 수 있도록 1:1 안내를 진행하는 IoT 프로젝트입니다.

안내 기능뿐 아니라 검진 대기 중 다양한 컨텐츠를 제공하여 건강 검진을 보다 지루하지 않게 받을 수 있게 구성하였습니다.

  1. 1:1 안내를 위해 OpenCV을 이용한 수검자 Tracking 기능
  2. STT(Speech-to-Text), TTS(Text-to-Speech)를 이용한 자동 문진 작성 기능 및 KWS(Keyword Spotting) 기능
  3. Pose Estimation을 이용한 스트레칭 게임, 카드 뒤집기 게임
  4. Gazebo 시뮬레이션을 활용하여 디지털 트윈 환경 구축 및 유지보수

📅 전체 일정

2022.10.11. ~ 2022.11.21. (6주)

기 간 내 용
2022. 10. 11. ~ 2022. 10. 14. 아이디어 선정
2022. 10. 17. ~ 2022. 10. 21. 요구사항 분석 및 기능명세서 작성 / 프로토타입 / ERD / REST API 설계
2022. 10. 24. ~ 2022. 10. 28. TurtleBot 설계 / 개발환경 설정 / 개발 시작
2022. 10. 31. ~ 2022. 11. 4. Gazebo 시뮬레이션 추가 / 서비스 개발 및 1차 배포
2022. 11. 7. ~ 2022. 11. 11. 서비스 개발 및 유지보수
2022.11. 14. ~ 2022.11. 18. QA 및 프로젝트 마무리

👥 구성원

싸브란스 병원 팀

image-20221120145450499


2. 프로젝트 설계

🎨 Figma(link) / 📖 기능명세서 (link) / :page_with_curl:API (link)


🛠 개발환경 (link)

Backend Frontend IoT CI/CD 협업툴
Java Open-JDK zulu 17 Vue 2 ROS AWS EC2 Mattermost
SpringBoot Gradle 2.7.2 Vuex Gazebo Ubuntu 20.04 LTS Webex
Spring Data JPA axios Roslib Docker 20.10.18 Notion
Lombok BootStrap rosbridge Jenkins
Swagger 2.9.2 node.js TurtleBot Nginx
MySQL 8.0.29 SockJS JetsonNano
Fast API
Azure
OpenCV

📊 아키텍처

Web App Reference Architecture (3)


🛢 ERD

image-20221120143054890


4. 프로젝트 소개

의료진 접수처 화면 의료진 검진실 화면
ec2 로그인 image

의료진 접수처 화면

  • 의료진 각자의 계정으로 로그인.
  • 접수처 화면과 검진실 화면을 따로 구성하여 각자의 기능을 수행함.
  • 접수처 화면은 환자 등록과 검진 시작을 통해 수검자 고유의 QR을 문자로 발급.

의료진 검진실 화면

  • 수검자 고유의 QR을 이용하여 검진을 시작 및 종료을 수행.
  • 시작, 종료 수행을 통해 수검자 검진 상태를 SockJS와 Roslib, RosBridge을 이용하여 통신.


절차 안내 화면 QR 연결 및 자동 문진 Tracking 연결 및 안내 시작
깐부 설명 깐부 문진 깐부 안내2

절차 안내 화면

  • 각각의 검진 절차에 대한 자세한 설명을 제공함.

QR 연결 및 자동 문진

  • 건강검진 시작하기 버튼을 통해 QR을 이용하여 수검자와 로봇 1:1 연결 수행.
  • 연결을 완료하고 STT, TTS을 이용하여 자동 문진 작성 기능을 수행.

Tracking 연결 및 안내 시작

  • 안내시작 버튼을 통해 OpenCV을 이용하여 로봇과 수검자 사이의 1:1 Tracking 연결.
  • 연결을 완료한 후 이동 중 화면으로 이동.
  • 이동 중 STT을 이용한 KWS(Keyword Spotting) 기능을 이용하여 깐부를 불렀을시 안내를 잠시 멈출 수 있음.


Pose Estimation를 이용한 스트레칭 Card Game
image 카드

Pose Estimation를 이용한 스트레칭

  • Google Teachable MachinePose Estimation을 이용하여 오랜 대기 시간에 지친 몸을 풀 수 있도록 구성.
  • 학습시킨 모델의 동작과 웹캠의 수검자 동작의 정확도를 수치로 표현.

Card Game

  • 긴 대기시간에 다양한 컨텐츠를 제공하기 위해 구성.


실제 깐부의 주행 모습 Gazebo를 활용한 디지털 트윈 환경 구축
주행 가제보

실제 깐부의 주행 모습

  • TurtleBot3를 개조하여 깐부를 구성.
  • 위의 화면 조작을 통한 깐부 제어

Gazebo를 활용한 디지털 트윈 환경 구축

  • 실제 병원에서 로봇을 구동할 수 있는 여건이 마땅하지 않아 시뮬레이션 상에서 먼저 구동하고 테스트하며 유지보수
  • 실제 병원(건강검진센터)와 유사하게 맵을 구성하여 시뮬레이션 상에서 로봇 구동

5. 포팅 매뉴얼

EC2-Backend

  1. git clone https://lab.ssafy.com/s07-final/S07P31B309.git
  2. cd ec2-back
  3. 경로 : ec2-back/gganbu/src/main/resources/env.properties 파일 추가
USER_NAME = {db.username}
PASSWORD = {db.pw}
COOLSMS_API_KEY = {coolsms api key}
COOLSMS_SECRET = {coolsms secret key}
COOLSMS_PHONE = {coolsms에서 인증받은 번호}
BACKEND_ADDRESS = k7b309.p.ssafy.io:8081
  1. Build Project

  2. Run 'GganbuApplication'


EC2-Frontend

  1. cd ec2-front
  2. 경로: ec2-front/.env.local파일 추가
VUE_APP_API_SERVER="https://k7b309.p.ssafy.io/api”
VUE_APP_WEATHER_API_KEY={인증받은 weather api key}
  1. Project build : npm install

  2. Project run : npm run serve


gganbu-Back

  1. cd gganbu-back
  2. pip pip install -r requirements.txt
  3. Project run : uvicorn main:app --reload

gganbu-Front

  1. cd gganbu-front
  2. 경로: gganbu-front/.env파일 추가
VUE_APP_WEATHER_API_KEY={인증받은 weather api key}
  1. Project build : npm install

  2. Project run : npm run serve

6. 프로젝트 산출물


About

복잡한 건강검진 절차를 자율주행 기반의 로봇이 수검자가 건강검진을 완료할 수 있도록 1:1 안내를 진행하는 IoT 프로젝트입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published