corrects your sitting posture and provides feedback in real time in conjunction with the app. A sensor of 31 cells detects your posture to get better life-wellness

Overview

Notichair

실시간 자세분석 및 교정 스마트체어

🏆 상명대학교 PRIME 경진대회 수상 🏆


요구사항

방석센서1
31-cell sensor (mdxs-16-5610)

목차

1. 소개

  • 프로젝트 내용 소개

2. 개발 환경

  • 사전 설정 및 환경 구축

3. 기능

  • Sensors
  • App & Server

4. 결론

  • 결론

1. 소개

image

31개의 착석구조로 배열된 cell-sensor에 기반하여 실시간으로 사용자의 자세분석 및 교정을 제공한다.

대한민국 성인기준 하루 평균 의자에 앉아서 보내는 시간이 8.5시간, 이와 더불어 코로나사회에 맞물려 늘어나는 재택근무 및 단순 여가생활 등 우리의 일상생활은 의자와 더욱 가까워지는 추세이다.

이러한 환경에서 착석자세를 실시간으로 측정하고 분석해주어 현대인들의 척추건강을 개선시키는 것이 목적이다.



2. 개발 환경

버전 확인사항

  • 안드로이드 스튜디오 3.4.0 이상의 버전

Android Studio Download

  • API: 21이상
  • 필수 조건
    minSdkVersion 18
    ext.kotlin_version = "1.5.0"

Firebase 연동

Firebase에 접속하여 새 프로젝트를 시작한다. 이후 안드로이드 앱을 추가하여 시작한다.

fireabase1

Firebase Authentication 설정하기


Google 로그인을 사용 하므로 '디버그 서명 인증서 SHA-1'을 알아야 한다.

'SHA-1' 추출법 : 안드로이드 스튜디오 내 Gradle->Tasks->android->signInReport

image

구성 파일을 다운로드 한 뒤, 생성된 프로젝트 파일-> app 폴더에 저장한다.

image

build.gradle (moudle :app )에 작성한다.

image image image

Android Studio에 Firebase 추가 완료

Firebase Authentication 설정하기 이메일/비밀번호 로그인과 , 구글 로그인 , 페이스북 로그인을 사용 하는데, Authentication의 Sign-in method의 3가지 로그인 방법을 활성화 시킨다. 이메일/비밀번호 로그인, 구글 로그인은 파이어베이스 사이트에서 해결 할 수 있지만, 페이스북 로그인은 페이스북 개발자 사이트에 접속을 해서 연결시켜야 한다.

페이스북 연동하기

페이스북 개발자 사이트 접속해서 로그인을 한 뒤 '새 앱 추가'를 한다. 제품 추가에서 페이스북 로그인을 선택한다. 로그인 플랫폼 선택에서 안드로이드를 클릭한다.


builde.gralde(Module:app)

implementation 'com.facebook.android: facebook-android-sdk:[4,5)')
컴파일문을 추가하여 최신 버전의 SDK를 컴파일한다.



image


주요 기술 및 기능 설명

1. 로그인/회원가입

//로그인단 이미지

  • 구글과 페이스북 연동을 통한 로그인
  • 이메일을 통한 회원가입
  • Firebase 연동

2. 착석형태에 따른 real-time data 수신

사용자의 자세 및 착석형태에 따른 real-time data를 31개의 cell-sensor를 통하여 실시간으로 수신

착석 형태 real-time data 설명
non press image 사용자가 착석하지 않은 상태로서 모든 셀에서 0이 수신된다.
front press image 사용자가 엉덩이를 빼고 의자 앞쪽에 걸쳐앉은 형태로서 앞쪽 셀에서만 실시간으로 데이터가 수신된다.
left press image 사용자가 좌측으로 다리를 꼬는 등 좌측하중으로 인한 데이터가 수신된다.
right press image 사용자가 우측으로 다리를 꼬는 등 우측하중으로 인한 데이터가 수신된다.
back press image 사용자가 의자를 뒤로 젖히는 등의 후측하중으로 후면의 셀에서만 데이터가 수신된다.




  • 사용자의 자세 및 착석형태에 따른 real-time data를 31개의 cell-sensor를 통하여 실시간으로 받아들이고 이를 압력값에 따라 색상의 가시화된 형태로 피드백을 준다.
  • 사용자의 착석데이터를 분석한 결과에 따라 착석형태를 판단하여 현재상태를 표시해준다.
  • 착석형태에 따라 사용자의 착석패턴을 교정할수있도록 실시간으로 피드백을 줌으로서 즉각적인 자세교정효과를 기대할수있다.

//착성상태에 따른 변화 이미지
### 3. 마이페이지
### 4. 운도영상

하드웨어 구성

![방석센서34](https://user-images.githubusercontent.com/74412438/148797607-0f518d6c-9bb3-47d4-9348-aca511603b3c.png)

예시

image


2. 개발 환경

시스템 구성도

3. 기능

데이터셋 구축 - Lableme

image

학습 데이터로 사용할 이미지를 Labelme에서 Class마다 영역을 나누어 Label을 지정해준다. Class는 Background, Roadway, Sidewalk, Crosswalk로 총 4개로 구성된다.




도로 구분 - Semantic Segmentation

어린이의 교통안전의식 향상과 무단횡단을 방지 기능을 구현하기 위해 Semantic Segmentation 기술을 사용하였으며 FCN(Fully Convolutional Networks) 모델을 사용하였다.

카메라 모듈로 정면을 촬영하여 들어오는 Input data로 Semantic Segmentation 기술을 통하여 각 픽셀의 Class들을 알 수 있고, 판단 영역을 잡아 해당 영역에 가장 많이 있는 Class가 무엇인지 계산하여 해당 Class로 어린이가 바라보고 있는 도로의 유형을 판단한다.

어린이가 바라보고 있는 도로의 유형을 판단하기 위한 영역은 위 그림과 같이 Input data의 가로와 높이를 크게 5x5로 나누어 (5, 3) 위치를 판단 영역으로 설정하였다. Semantic Segmentation을 통하여 알 수 있는 픽셀 당 Class는 행렬로 저장이 되고, (5, 3) 구역 안에 행렬로 저장되어 있는 Class 값들 중 가장 많이 차지하고 있는 Class로 어린이가 바라보고 있는 곳의 도로 유형을 판단한다.


도로의 유형에 따른 알림

도로 유형 사진 설명
인도 image 판단 영역이 인도로 판단될 경우 어린이가 인도 위에서 안전하게 보행하고 있다고 판단하며 별도의 알림이 울리지 않는다.
횡단보도 image 판단 영역이 횡단보도로 판단될 경우 어린이가 횡단보도 앞에 있다고 판단하며 보호자의 음성 알림( 예시: “00아 초록불 일 땐 양옆을 살피고 빨간불에는 멈춰!” )이 울린다.
도로 image 판단 영역이 차도로 판단될 경우 어린이가 차도를 향해서 보행하고 있어 위험하다고 판단하며 보호자의 음성 알림(예시: “00아 도로에서 뛰면 위험해 횡단보도로 건너”)이 울린다.
무단횡단의 경우 판단 영역이 차도로 판단된 후 가속도 센서의 변화가 일정량 감지되면 어린이가 차도 방향으로 무단횡단을 시도하는 것으로 판단되어 보호자의 음성 알림(예시: “00아 무단횡단은 안돼! 횡단보도로 건너”)이 울린다.





Application & Server

Application Repository
Server Repository

Application

보호자용 App 메인화면과 안심 구역 관리

보호자용 App의 메인화면(좌)과 아이가 이동한 영역에 대해 안심 구역을 설정한 화면(우)이다. 메인화면의 가장 왼쪽에 있는 안심 구역 관리 버튼을 클릭하면 아이의 안심 구역을 추가, 삭제가 가능하고, 아이의 무단횡단 기록을 열람할 수 있다.


안심 구역 이탈 및 추가

아이가 안심 구역을 이탈했을 경우 안심 구역을 추가, 삭제할 수 있는 화면이다. 아이가 안심 구역을 이탈하면 보호자용 App을 통하여 보호자에게 알림이 가고, 이탈한 경로가 빨간색 선으로 표시가 된다. 이 경로를 안심 구역으로 추가를 하거나 삭제할 수 있다.


무단횡단 기록 열람 & 상황별 보호자 음성 알림 녹음

아이의 무단횡단 기록을 열람할 수 있는 화면이다. 아이가 무단횡단을 할 시, 그 위치 정보가 서버에 저장되고 보호자용 App에서 보호자가 무단횡단 위치와 당시 시간대를 알 수 있다.
어린이 스마트 배지에서 울리게 될 알림을 녹음하는 화면이다. 차도일 때, 횡단보도일 때, 무단횡단할 때로 세 가지의 경우로 나누어져 있다. 보호자용 App에서 알림을 녹음하면 서버에 녹음 파일이 저장되고 어린이 스마트 배지에서 보호자 음성 알림을 재생할 수 있다.



Server

WAS 서버 구조

어린이 스마트 배지로 HTTP 통신을 수행하기 위해 웹 서버는 Nginx를 사용하였고, 어린이 스마트 배지에서 실시간 위치 정보를 서버로 전송하기 때문에 REST 방식의 서버를 설계할 수 있도록 애플리케이션 프레임워크로 Django restframework를 사용하였다. 미들웨어로는 Nginx와 Django의 호환성이 높은 Gunicorn WSGI를 사용하였다. Gunicorn은 Nginx와 함께 역방향 프록시 구성으로 배포되며 Nginx와 Django framework의 사이에서 요청과 응답을 전달한다.


Server DB Table

서버의 DB(Data Base)는 MySQL DB를 사용하였다. 서버의 DB Table은 위 <그림 10>과 같다. DB에는 어린이 스마트 배지 구동을 위해 사용자 정보를 저장하는 users table에 어린이 스마트 배지의 일련번호, 사용자 고유 ID 값을 저장한다. 저장된 사용자 정보는 Application에서 데이터를 요청할 때 인증 절차에 사용된다. voicefile table은 보호자가 Application에서 상황별 알림을 녹음한 파일이 저장된다. gpsroute, jaywalking, newroute table의 경우 어린이 보행 안전 확보와 실종 사고를 예방하기 위해서 GPS 정보 저장의 목적으로 활용된다.


GPS정보 분석 및 안심 구역 이탈 감지

안심구역 PolyLine 생성


어린이 스마트 배지는 실시간으로 GPS 정보를 서버로 전송한다. 서버로 전송된 GPS 정보는 안심 구역이 생성되어 있지 않았을 경우 초기 안심 구역 설정에 필요함으로 해당 GPS 정보를 별도의 DB에 저장한다.

안심 구역은 생성 시에 별도로 저장된 GPS 정보를 기반으로 중복되는 불필요한 정보를 그림과 같이 제거한 후에 PolyLine 객체로 저장한다. PolyLine으로 저장된 안심 구역은 보호자용 Application에서 시각화하여 보여줄 수 있도록 하였다.


Ray Casting 알고리즘


안심 구역 이탈 감지의 경우 저장된 안심 구역 PolyLine객체를 일정 범위를 가지고 있는 Polygon객체로 변환하는 과정을 우선 수행한다. 이후 어린이 스마트 배지의 실시간 GPS 정보가 서버로 들어오면 Ray Casting 알고리즘을 수행하여 그림과 같이 교차점의 수가 홀수 개일 때 해당 GPS 정보가 안심 구역 내부에 있다고 판단하여 Safe State를 True로, 교차점의 수가 0 또는 짝수 개일 때 외부에 있다고 판단하여 False를 반환하여 안심 구역 이탈을 감지한다. 안심 구역을 이탈하였을 경우 이탈하는 지점부터 GPS 정보를 DB에 저장한다. 이후 이탈한 GPS 정보에 대해서 기존 안심 구역에 추가 또는 삭제를 할 수 있으며, 추가의 경우 기존 안심 구역의 PolyLine객체에 가장 근접한 지점을 찾은 후 안심 구역 생성과 동일한 알고리즘을 수행하여 안심 구역을 갱신한다.


Sensors

mdxs-16-5610


4. 결론

어린이 스마트 배지는 Jetson nano에 카메라와 GPS 모듈을 사용하여 어린이의 시야에서 도로 유형 판별에 따른 알림 및 안심 구역 생성과 이탈을 감지하기 위한 기능을 구현하였다.

Semantic Segmentation을 통해 도로의 유형을 구분하고 어린이에게 도로의 위험성을 사전에 인지할 수 있도록 하였으며, 어린이의 이동 경로를 기반으로 하는 GPS 정보를 분석하여 안심 구역을 스스로 생성하고 이탈을 감지하도록 하였다. 보호자용 App과 서버를 통해 어린이 스마트 배지와 통신하며 각종 알림에 대한 보호자의 목소리 녹음과 이탈 시 알림을 받을 수 있도록 하였다.

실험을 통해 제안 시스템의 안정성과 정확성을 확인하였고 어린이 보행 안전 및 안심 구역 이탈 감지를 실시간으로 할 수 있음을 보였다. 이를 통해 어린이 사고 예방을 위한 시스템으로 활용 가능할 것이다.

더 많은 영상 데이터 셋을 구축하여 Semantic Segmentation 정확도를 향상시키고, 직접적으로 무단횡단을 방지할 수 있는 방법과 어린이의 이동 경로를 실시간으로 추정하여 이상 경로에 대한 위험성을 사전에 분석하는 방법 연구를 지속적으로 수행할 예정이다.

You might also like...

A real-time ray tracer in Java, accelerated on heterogeneous hardware using TornadoVM

A real-time ray tracer in Java, accelerated on heterogeneous hardware using TornadoVM

Java Ray Tracer for TornadoVM Description This project aims to build a real-time ray tracer in Java, accelerated on heterogeneous hardware using Torna

May 23, 2022

Source code of course - Building Real-Time REST APIs with Spring Boot

springboot-blog-rest-api Learn how to build real-time REST APIs with Spring Boot by building a complete Blog App. Source code of Popular Building Real

Jan 6, 2023

The Google code scanner API provides a complete solution for scanning codes without requiring your app to request camera permission.

Android Google Code Scanner The Google code scanner API provides a complete solution for scanning codes without requiring your app to request camera p

Nov 23, 2022

An All-In-One Macro for Hypixel Skyblock. Includes numerous features for Quality of Life that do NOT abide by the Hypixel Rules.

AIOMacro An All-In-One Macro for Hypixel Skyblock. Includes numerous features for Quality of Life that do NOT abide by the Hypixel Rules. Installation

Dec 19, 2022

An Android library for member secretGFX group, This can be used to growing your apps and get more install via a simple banner view & native view and interstitial dialog.

An Android library for member secretGFX group, This can be used to growing your apps and get more install via a simple banner view & native view and interstitial dialog.

GFX-AdPromote An Android library for member secretGFX group, This can be used to growing your apps and get more install via a simple banner view & nat

Dec 25, 2022

A simple live streaming mobile app with cool functionalities and time extension, and live chat. With a payment system integrated. Server is designed with socket.io to give you full flexibility.

A simple live streaming mobile app with cool functionalities and time extension, and live chat. With a payment system integrated. Server is designed with socket.io to give you full flexibility.

Video Live Streaming Platform Android A simple live streaming mobile app with cool functionalities and time extension, and live chat. With a payment s

Dec 16, 2022

Minecraft configurable plugin , which sends messages the first time a player logs into the server or the next time they log in.

JoinMessages Minecraft configurable plugin , which sends messages the first time a player logs into the server or the next time they log in or leave.

Aug 30, 2022

Just-In-Time Access is an AppEngine application that lets you manage just-in-time privileged access to Google Cloud projects.

Just-In-Time Access is an AppEngine application that lets you manage just-in-time privileged access to Google Cloud projects.

Just-In-Time Access Just-In-Time Access is an AppEngine application that lets you manage just-in-time privileged access to Google Cloud projects. Syno

Jan 3, 2023

Curated Collection of all Low level design Questions and implementation asked in major Tech companies , Get yourself prepared for the LLD round and ace the interview.

Low level Design / Machine Coding Question Collections What is Machine Coding Round ? Machine Coding Round has become very popular interview round in

Dec 31, 2022
Owner
Minuk_LEE
Minuk_LEE
This app based on Java to make the life of firefighters easier by implementing features which they need in their day-to-day life

Fire Rescue App This app based on Java to make the life of firefighters easier by implementing features which they need in their day-to-day life. Scre

Senith Umesha 2 Jul 24, 2022
Doing red/green/refactor with quick and visual feedback loop on your Nanoleaf

nanoleaf-intellij-plugin Want fancy coloured and visual quick feedback for your tests? Install the Nanoleaf IntelliJ plugin. The plugin listen to your

Baptiste Lecocq 5 Dec 27, 2022
This is a Meme repo for fixed & Cleaned source of 'Better'Bungeecord but its not realy better code is trash!

#Fucking cleaned by CryCodes Disclaimer: Based of MD_5's Bungeecord (Fork of "BetterBungee") | I am not the owner of the code This repo is just for fu

Rooks 3 Jan 2, 2022
With react-native-update-in-app library you can easily implement in-app updates in your React Native app using CDN or any other file server

React Native In-App update With react-native-update-in-app library you can easily implement in-app updates in your React Native app using CDN or any o

Nepein Andrey 7 Dec 21, 2022
A password strength test app with strength, estimated crack times, warnings and suggestions to help make better passwords.

Is Your Password Secure? A password strength test app which displays strength, estimated crack time and provides warnings and suggestions to help make

the-weird-aquarian 24 Dec 15, 2022
LOQUI - Real-time chat application built using Apache Kafka, Java, Spring Boot, SockJS and React

LOQUI is a simple real-time chat application that demonstrates how to use Apache Kafka as a message broker along with Java, Spring Boot and React on the front-end

Castanho Correia 2 Jun 5, 2022
Conway's Game Of Life, but made by me in a very inefficient and unpractical way. Still, I am proud!

Conway's Game Of Life, but made by me in a very ugly and inefficient way. Still, I am proud! I want to share my appreciation to cellular automata with anyone who comes across this repo.

Ulaş Dilek 6 May 25, 2022
Person Apri development in real time

Digital Innovation: Expert class - Desenvolvendo um sistema de gerenciamento de pessoas em API REST com Spring Boot Nesta live coding vamos desenvolve

Vitor Nunes 1 Nov 11, 2021
A near real time Data Warehouse using the MeshJoin Algorithm

MeshJoin-Data-Warehouse A near real time Data Warehouse using the MeshJoin Algorithm Steps to run the project: Step 1: Run the createDW.sql file -This

M. Adil Fayyaz 2 Dec 1, 2022
A near-real-time Mesh Join Algorithm Implementation provided with a Complete Data warehouse for METRO

Mesh Join Algorithm and Data Warehouse A complete Mesh-Join Algorithm Implementation as provided in the paper R-MESHJOIN . This is demonstrated by the

null 3 Aug 11, 2022