essential function - dongwon18/CareRobotBoBi GitHub Wiki

ν•„μˆ˜ κ΅¬ν˜„ 사항

HW

  • μ†Œμœ 

    • ν•œ web 계정이 ν•œ λ‘œλ΄‡λ§Œ μ†Œμœ 
  • 카메라

    • μ‹€μ‹œκ°„ 슀트리밍 with youtube live
    • μ˜μƒ μΈμ‹μœΌλ‘œ 아이 감지
    • 아이λ₯Ό λŒ€μ²΄ν•  μΈν˜• 등을 OpenCV둜 ν•™μŠ΅μ‹œν‚€κΈ°
    • ν•™μŠ΅μ‹œν‚¨ 게 ν™”λ©΄ 정쀑앙에 올 수 μžˆλ„λ‘ 보행 λ°©ν–₯ μ‘°μ •(λͺ©μ€ κ³ μ •, λͺΈ λ°©ν–₯ 자체λ₯Ό λ°”κΏ”μ•Ό 함)
  • 보행

    • 보행 μƒνƒœλŠ” λ‘œλ΄‡ λ‚΄μ—μ„œλ§Œ κ΄€μ—¬(DB에 μ˜¬λ¦¬μ§€ μ•ŠμŒ)
    • μ›Ήμ—μ„œ λ°©ν–₯ μ‘°μ • λͺ…령이 λ“€μ–΄μ˜€λ©΄ 보행 λ°©ν–₯ λ³€κ²½
    • μ›Ήμ—μ„œ μ˜€λŠ” λ°©ν–₯ μ‘°μ • 변경은 DBλ₯Ό ν†΅ν•΄μ„œκ°€ μ•„λ‹ˆλΌ λΌμ¦ˆλ² λ¦¬νŒŒμ΄μ™€ 직접 톡신을 톡해 λ“€μ–΄μ˜΄(MQTT λ“±)
    • μ•žμœΌλ‘œ, λ’€λ‘œ, μ •μ§€, μ™Όμͺ½, 였λ₯Έμͺ½, κ°€μš΄λ° 보행 μˆ˜ν–‰
    • 초음파 μ„Όμ„œλ‘œ λ„ˆλ¬΄ κ°€κΉŒμ›Œμ§€λ©΄ 멈좀
  • μ›€μ§μž„

    • μŒμ„± μΈμ‹μœΌλ‘œ 아이가 ν•˜λΌκ³  λͺ…령을 ν•˜λ©΄ 함
    • [κ°€λŠ₯]
      • 손
      • 앉아
      • 점프
      • Look (닀리 κ³ μ •)
        • μœ„ 보기
        • μ•„λž˜ 보기
        • +) 고개 λ„λ•μž„ (μœ„/μ•„λž˜ μ—°κ²°) ν˜Ήμ€ μ „μ‹  μ›€μ§μž„..
    • [μ•„λ§ˆ κ°€λŠ₯]
      • μ—Žλ“œλ €
    • μžˆλŠ” κΈ°λŠ₯을 μ‘°ν•©ν•΄μ„œ μƒˆλ‘œμš΄ μ›€μ§μž„μ„ λ§Œλ“œλŠ” κ²ƒκΉŒμ§€λ§Œ ν•„μˆ˜μ—μ„œ μ§„ν–‰
    • 이 λ•Œ ν•΄κΈˆλœ μ›€μ§μž„λ§Œ λ³΄μ—¬μ€Œ
    • DB에 μ›€μ§μž„ 리슀트, κ°€λŠ₯ μ—¬λΆ€λ₯Ό λ„£μ§€ 말고 HWμ—μ„œ 직접 처리
  • 마이크

    • λ§ˆμ΄ν¬μ—μ„œ μŒμ„± λ°›μ•„μ„œ google stt둜 ν…μŠ€νŠΈλ‘œ λ³€ν™˜
    • λ³€ν™˜λœ ν…μŠ€νŠΈμ—μ„œ νŠΉμ • λͺ…λ Ήμ–΄ μ°ΎκΈ°
      • λͺ…λ Ήμ–΄ κΈ°μ€€ parsing
    • 보행, μ›€μ§μž„ κ΄€λ ¨ λͺ…λ Ήμ–΄

    • μŒμ„± λ©”μ‹œμ§€λŠ” 귀에 μžˆλŠ” λ²„νŠΌμ„ 눌러 μ‹œμž‘ & 끝 ν‘œμ‹œ(귀에 μžˆλŠ” λ²„νŠΌμ„ 눌러 λ©”μ‹œμ§€λ₯Ό λ§ν•œ ν›„ λ‹€μ‹œ λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ λ˜λŠ” ν˜•μ‹)
    • λ…ΉμŒλœ μŒμ„± λ©”μ‹œμ§€κ°€ S3에 μ €μž₯됨
    • S3에 μ €μž₯된 μŒμ„± λ©”μ‹œμ§€λŠ” λ‘œλ΄‡μ—μ„œλŠ” μ‚­μ œ
    • μƒˆλ‘œμš΄ μŒμ„± λ©”μ‹œμ§€κ°€ λ°œμƒν–ˆλ‹€λŠ” κ±Έ 웹에 직접적인 톡신을 톡해 보냄, 이 λ•Œ S3에 μ €μž₯됨 path λ“± 정보λ₯Ό 쀌

    • λΆ€λͺ¨λ‹˜μ΄ μŒμ„± λ©”μ‹œμ§€λ₯Ό λ…ΉμŒν•΄μ„œ μ €μž₯ν–ˆλ‹€λ©΄ λΌμ¦ˆλ² λ¦¬νŒŒμ΄μ— 직접 톡신을 톡해 μƒˆλ‘œμš΄ μŒμ„± λ©”μ‹œμ§€κ°€ μžˆμŒμ„ μ•Œλ¦Ό
    • S3μ—μ„œ μƒˆλ‘œμš΄ μŒμ„± λ©”μ‹œμ§€λ₯Ό λ‹€μš΄ λ°›μ•„μ˜΄, 이 λ•Œ S3에 μ €μž₯된 path λ“± 정보λ₯Ό 쀌
    • μŠ€ν”Όμ»€λ₯Ό 톡해 μ†‘μΆœ
    • λ‹€μŒ μƒˆλ‘œμš΄ λ©”μ‹œμ§€κ°€ 였면 이전 λ©”μ‹œμ§€λŠ” μ‚­μ œ
  • μŠ€ν”Όμ»€

    • λΆ€λͺ¨λ‹˜μ΄ 보낸 μŒμ„± 전달
      • S3μ—μ„œ κ°€μ Έμ˜¨ μŒμ„± 파일 μ†‘μΆœ
    • μΉœλ°€λ„μ— λ”°λ₯Έ 인사말

  • μ„Όμ„œ

    • μ˜¨μŠ΅λ„ μ„Όμ„œ : μ„Όμ‹± κ°’ 웹에 ν‘œμ‹œ
    • κ°€μŠ€ μ„Όμ„œ : μœ ν•΄ κ°€μŠ€ 탐지
    • 초음파 μ„Όμ„œ (κ³ κΈ€) : μž₯애물에 κ·Όμ ‘ν•˜κ²Œ 되면 μ •μ§€
    • OLED (눈) : 감정 ν‘œν˜„ & μ‹œκ°„ ν‘œν˜„
    • ν„°μΉ˜ μ„Όμ„œ
      • ν„°μΉ˜λ₯Ό 5번(?) ν•˜λ©΄ μΉœλ°€λ„ 였λ₯΄λŠ” 방식
    • 일정 μ£ΌκΈ° λ§ˆλ‹€ μ˜¨μŠ΅λ„, κ°€μŠ€μ„Όμ„œ κ°’ DB에 μ €μž₯
      • 센싱은 1뢄에 ν•œ 번 μ§„ν–‰
      • DBμ—μ„œλŠ” ν•˜λ£¨ 치(??) 값을 κ·Έλž˜ν”„λ‘œ 확인할 수 있음
      • 24 * 60 개의 row만 μœ μ§€
  • 남은 배터리양

    • μ „μ•• 값을 DB에 솑신
    • 일정 μ£ΌκΈ° λ§ˆλ‹€
      • μ„Όμ„œ κ°’μ΄λž‘ 같이 보내기
    • μ΅œλŒ€ μ „μ••(8.4)~μ΅œμ†Œ μ „μ••(7.0)을 μ•Œμ•„λ‚΄κΈ°
    • μ „μ•• κ°’ 자체 DB에 보내기
    • esp32μ—μ„œ serial 톡신을 톡해 RPI에 보내주면 RPIμ—μ„œ DB에 올림
    • μΆ©μ „μ€‘μΌλ•ŒλŠ” μ–΄λ–»κ²Œ ν‘œμ‹œν• μ§€ 생각해야
  • μ›Ήμ΄λž‘ μ—°κ²°

    • wifi μ—°κ²°
    • νŠΉμ • 유튜브 라이브 μ•„μ΄λ””λ‘œ μ˜μƒ, μŒμ„± 데이터 μ†‘μΆœ
    • S3, server λž‘ μ—°κ²°
    • κ°€λŠ₯ν•˜λ‹€λ©΄ QR μ½”λ“œλ₯Ό μ΄μš©ν•˜μ—¬ μžλ™μœΌλ‘œ μ§„ν–‰λ˜λ„λ‘
    • μ•ˆ λœλ‹€λ©΄ μ‹œμ—°μ—μ„œλŠ” κ·Έλƒ₯ μ—°κ²°λœ μƒνƒœλ₯Ό κ°€μ •ν•˜κ³  μ§„ν–‰
  • μΉœλ°€λ„

    • λ†’μ΄λŠ” 방법
      • λΆ€λͺ¨λ‹˜μ—κ²Œ λ©”μ„Έμ§€ 전솑(μ›λž˜λŠ” λΉ„λ°€μ΄μ•ΌκΈ°ν•˜λŠ” 친ꡬ μ»¨μ…‰μ΄μ–΄μ„œ λ‚˜μ˜€λŠ” 아이디어)
      • μΆ©μ „μ‹œν‚€κΈ°
      • λ™μž‘μ‹œκ°„ πŸŽƒπŸŽ‰
      • μ›€μ§μž„ λͺ…λ Ήμ–΄ μ‚¬μš© νšŸμˆ˜πŸΏοΈπŸ‘€πŸŽ‰πŸ¦‰
      • 쓰닀듬기 πŸ¦‰ πŸŽƒπŸ‘€πŸΏοΈ
      • νŠΉμ • 말을 ν–ˆμ„λ•Œ (μ‚¬λž‘ν•΄ λ“±)
    • 일정 μ£ΌκΈ°λ§ˆλ‹€ DB에 μ €μž₯
      • 둜그 등은 DB에 μ˜¬λ¦¬μ§€ 말고 λ‘œλ΄‡μ—μ„œ 연산을 λͺ¨λ‘ ν•œ ν›„ κ·Έ μ‹œκ° κΈ°μ€€ μΉœλ°€λ„/κ²½ν—˜μΉ˜λ§Œ DB에 μ €μž₯
      • 1뢄에 ν•œ λ²ˆμ”©
  • 전원

    • 전원 ν‚€λŠ” λ²„νŠΌ
    • 전원이 μΌœμ§€λ©΄ 슀트리밍이 μžλ™μœΌλ‘œ μ‹œμž‘, μŠ€νŠΈλ¦¬λ°μ€ 전원이 μΌœμ ΈμžˆλŠ” λ™μ•ˆ λ©ˆμΆ”μ§€ μ•Šκ³  μ­‰ 지속됨
    • μ ˆμ „ κΈ°λŠ₯
      • μ›Ήμ—μ„œ μ„€μ •
      • μ›Ήμ—μ„œ λΌμ¦ˆλ² λ¦¬νŒŒμ΄μ™€ 직접 톡신을 톡해 μ ˆμ „ λͺ¨λ“œλ₯Ό 보내면 λͺ¨μ…˜ 인식 λ“± κΈ°λŠ₯ 꺼버림
      • 슀트리밍 κΈ°λŠ₯은 μœ μ§€
      • OLED에 ν˜„μž¬ μ‹œκ°„ ν‘œμ‹œ

WEB

  • ν˜•νƒœ : μ›Ή μ•±
  • νƒ€κ²Ÿ μ‚¬μš©μž : λΆ€λͺ¨λ‹˜
  • κΈ°μˆ μŠ€νƒ
    • FE : HTML5, CSS3, Javascript, React.js, Node.js, PWA
    • BE : Python, Django
    • Server : MySQL, AWS S3
  • 둜그인
    • Google Login API
      • μ˜μƒμ„ μŠ€νŠΈλ¦¬λ°ν•  유튜브 계정 연동
    • μžμ²΄μ œμž‘ 둜그인 API
  • 1계정 1λ‘œλ΄‡ 1λ””λ°”μ΄μŠ€
  • qrμ½”λ“œλ₯Ό 톡해 계정과 λ‘œλ΄‡κ³Ό 연동
    • κ°€λŠ₯ν•œ 경우 - κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ μ—°κ²° μƒνƒœ 일단 κ°€μ •
  • κΈ°λŠ₯
    • 기초 νŽ˜μ΄μ§€
      • μ•± ν•˜λ‹¨μ— μŒμ„±μ „μ†‘ 토글을 ν™œμ„±ν™”ν•˜λ©΄ μ•± μ‚¬μš©μžκ°€ μŒμ„±μ„ λ…ΉμŒν•˜κ³  λΉ„ν™œμ„±ν™”ν•˜λ©΄ μŒμ„±νŒŒμΌ ν˜•νƒœλ‘œ μ„œλ²„μ— μ €μž₯ν•˜κ³  μ €μž₯된 μŒμ„±μ„ λ‘œλ΄‡μ—μ„œ μž¬μƒν•¨ (μΉ΄ν†‘μŒμ„±λ©”μ‹œμ§€λž‘ λΉ„μŠ·ν•œλ° λ”°λ‘œ μž¬μƒλ²„νŠΌ μ•ˆλˆ„λ₯΄κ³  μŒμ„±μ΄ λ°”λ‘œ λ‚˜μ˜€λŠ”?)
        • λ‘œλ΄‡μ—κ²Œ 직접 ν†΅μ‹ μœΌλ‘œ λ©”μ‹œμ§€λ₯Ό λ³΄λƒˆκ³  보낸 λ©”μ‹œμ§€ path 보내주기
      • μ•± 상단에 μ‹€μ‹œκ°„ λ‘œλ΄‡ 배터리 μž”λŸ‰ ν‘œμ‹œκΈ°λŠ₯ (μΆ©μ „ μ€‘μΌλ•ŒλŠ” μž”λŸ‰ ν‘œμ‹œμ—†μ΄ μΆ©μ „ μ€‘μ΄λΌκ³ λ§Œ ν‘œμ‹œν• μ§€)
    • μ‘°μž‘ νŽ˜μ΄μ§€μ—μ„œ λ‘œλ΄‡ μ „ν›„μ’Œμš° 이동 μ‘°μž‘ κ°€λŠ₯ (기기와 직접 μ—°κ²°_인터넷)
      • 기초 μ‘°μž‘: 쒌/우/μ „μ§„/ν›„μ§„ λ²„νŠΌ ν•„μš” (μ‹­μžλ²„νŠΌ)
        • 쒌우-λ°©ν–₯μ „ν™˜
        • μ „ν›„-μ „μ§„/ν›„μ§„
      • λ‘œλ΄‡μ—κ²Œ 직접 ν†΅μ‹ μœΌλ‘œ 보내주기
    • μ˜μƒ 슀트리밍 κΈ°λŠ₯
      • 유투브 계정과 연동
      • μ›ΉμΊ μœΌλ‘œ λ°›μ•„μ˜¨ μ˜μƒκ³Ό 마이크둜 λ°›μ•„μ˜¨ μŒμ„±μ„ ν•©μ³μ„œ 유투브 라이브 ν˜•νƒœλ‘œ μ‹€μ‹œκ°„μœΌλ‘œ μŠ€νŠΈλ¦¬λ°ν•΄μ„œ 보여주기 (μŒμ„± + μ˜μƒ ν•©μΉ˜λŠ”κ²Œ λ˜λŠ”μ§€ 일단 ν•΄λ³΄μžκ΅¬)
    • μ•„μΉ΄μ΄λΈŒ κΈ°λŠ₯
      • μŠ€νŠΈλ¦¬λ°μ€‘μΈ μ˜μƒμ„ μ‹€μ‹œκ°„μœΌλ‘œ μΊ‘μ²˜ν•˜μ—¬ μ•„μΉ΄μ΄λΈŒμ— μ €μž₯ν•˜λŠ” κΈ°λŠ₯ β‡’κ°€λŠ₯? (기술 μ•Œμ•„λ³΄κΈ°)
      • 슀트리밍된 μ˜μƒμ„ 개인 유투브 μŠ€νŠœλ””μ˜€μ—μ„œ νŽΈμ§‘ν•΄μ„œ μ €μž₯ν•˜κ³  μ €μž₯된 μ˜μƒμ˜ 링크와 κ·Έ μ˜μƒμ˜ 썸넀일을 μ•„μΉ΄μ΄λΈŒ ν˜•νƒœλ‘œ μ €μž₯
    • 아이가 λ‘œλ΄‡μ„ 톡해 보낸 μŒμ„± λ©”μ‹œμ§€ 쑰회 νŽ˜μ΄μ§€ (미확인/확인 λΆ„λ₯˜, μ•Œλ¦Ό νŒμ—…?)
      • λ‘œλ΄‡μ—μ„œ S3둜 보낸 μŒμ„± λ©”μ‹œμ§€λ₯Ό 받아와 ν™”λ©΄μ—μ„œ 좜λ ₯
      • λ‘œλ΄‡μ—μ„œ μƒˆλ‘œμš΄ λ©”μ‹œμ§€ μ•Œλ¦Όμ„ λ°›λŠ” 경우 데이터λ₯Ό μ½μ–΄μ˜€κ³  μ‚¬μš©μžμ—κ²Œ μ•Œλ¦Ό
    • μ„Όμ„œλ‘œ λ°›μ•„μ˜¨ μ‹€μ‹œκ°„ 데이터λ₯Ό λ³΄μ—¬μ£ΌλŠ” νŽ˜μ΄μ§€
      • ν˜„μž¬ μ˜¨λ„μ™€ μŠ΅λ„
      • 30뢄에 ν•œ 번 μ‹€μ‹œκ°„μœΌλ‘œ μ΅œμ‹  데이터 좜λ ₯
      • 일정 μ£ΌκΈ°(30λΆ„? 1μ‹œκ°„?)λ§ˆλ‹€ μ €μž₯된 μ˜¨μŠ΅λ„ 값을 νŠΉμ • κΈ°κ°„λ™μ•ˆ κ·Έλž˜ν”„ ν˜•νƒœλ‘œ λ³΄μ—¬μ£ΌλŠ” κΈ°λŠ₯
      • κ°€μŠ€ μ„Όμ„œ - 1λΆ„λ§ˆλ‹€ κ°±μ‹ λ˜λŠ” μ„Όμ„œκ°’μ—μ„œ μœ ν•΄ κ°€μŠ€κ°’μ΄ λΉ„μ •μƒμ μœΌλ‘œ λ†’μœΌλ©΄ λ°˜μ‘(alert)
    • λ‘œλ΄‡κ³Όμ˜ μΉœλ°€λ„λ₯Ό λ‚˜νƒ€λ‚΄λŠ” νŽ˜μ΄μ§€
      • νŠΉμ • 행동을 ν•˜λ©΄ μΉœλ°€λ„ κ²½ν—˜μΉ˜κ°€ μŒ“μž„
      • κ²½ν—˜μΉ˜κ°€ μ–΄λŠ 정도 μŒ“μ΄λ©΄ μΉœλ°€λ„ 레벨이 올라감
      • μΉœλ°€λ„ λ ˆλ²¨μ— 따라 μŠ€ν† λ¦¬μ™€ κ°€λŠ₯ν•œ 행동듀을 λ³΄μ—¬μ€Œ
      • μΉœλ°€λ„ 레벨이 μ˜¬λΌκ°μ— 따라 μŠ€ν† λ¦¬μ™€ λ‘œλ΄‡μ΄ κ°€λŠ₯ν•œ 행동듀이 점점 ν•΄κΈˆλ¨
      • κ°€λŠ₯ν•œ 행동 리슀트λ₯Ό ν΄λ¦­ν•˜λ©΄ λ‘œλ΄‡μ΄ κ·Έ 행동을 ν•˜λŠ” μ˜μƒμ„ λ³΄μ—¬μ€Œ (사전에 μ˜μƒ λ…Ήν™”ν•˜μ—¬ μ‚½μž… (μ˜μƒμ€ s3에 μ €μž₯))
      • 1λΆ„λ§ˆλ‹€ DB에 μΉœλ°€λ„ update
    • ν™˜κ²½μ„€μ • νŽ˜μ΄μ§€
      • μ•± ν…Œλ§ˆ μ„€μ • : κΈ°λ³Έλͺ¨λ“œ / 닀크λͺ¨λ“œ
      • μ ˆμ „λͺ¨λ“œ μ„€μ • : ν™œμ„±ν™”μ‹œ λ‘œλ΄‡μ€ μ˜μƒμ΄¬μ˜μ„ λΉ„λ‘―ν•œ λͺ¨λ“  행동을 λ©ˆμΆ”κ³  μ˜μƒ 촬영 및 슀트리밍 μ§„ν–‰κ³Ό 눈 뢀뢄에 λΆ€μ°©λœ OLEDμ—μ„œ ν˜„μž¬ μ‹œκ°„λ§Œ λ³΄μ—¬μ€Œ
        • μ ˆμ „λͺ¨λ“œ ν™œμ„±ν™”, λΉ„ν™œμ„±ν™” λ‘œλ΄‡μ—κ²Œ 직접 ν†΅μ‹ μœΌλ‘œ λ³΄λ‚΄μ€Œ

μΆ”κ°€ κΈ°λŠ₯

  • Web
    • κ°€λŠ₯ν•˜λ‹€λ©΄ 슀트리밍 μ˜μƒμ„ 자체적으둜 λ³΄μ—¬μ£ΌλŠ” UI μ œμž‘
    • 슀트리밍된 μ˜μƒμ„ 자체적으둜 μ†‘μΆœν•˜λŠ” UIμ—μ„œ μ˜μƒ λ…Ήν™”(κ°„λ‹¨ν•œ νŽΈμ§‘)λ₯Ό ν•  수 μžˆλ„λ‘ 지원
    • ν™˜κ²½μ„€μ • - μ΄ˆκΈ°ν™” : DB만 μ΄ˆκΈ°ν™”
    • 보비 μŒλŸ‰ μ„€μ • : 보비 λͺ©μ†Œλ¦¬ 크기 쑰절
      • 5λ‹¨κ³„λ‘œ λ‚˜λˆ μ„œ 각각 μŒμ„± νŒŒμΌμ„ λ§Œλ“€μ–΄ μž¬μƒ(μŠ€ν”Όμ»€ μ‹€μ œ μŒλŸ‰μ€ κ·Έλƒ₯ κ³ μ •)
      • λΉ„μ‹Ό μŠ€ν”Όμ»€
      • μ—΄μ‹¬νžˆ κ΅΄λŸ¬μ„œ μžˆλŠ” 걸둜 쑰절
  • HW
    • 자이둜 μ„Όμ„œλ₯Ό μ΄μš©ν•œ λ‘œλ΄‡ 좩돌 감지(아이가 λ‘œλ΄‡μ„ λ•Œλ¦¬λŠ” 경우)
    • μΆ©μ „ 쀑 배터리 μž”λŸ‰μ€ μ–΄λ–»κ²Œ ν‘œμ‹œν•΄μ•Όν•˜λŠ”μ§€?
  • μ•± 초기 μ‹œμž‘ μ‹œ 각 νŽ˜μ΄μ§€μ˜ μš©λ„ 및 μ‚¬μš© 방법 μ•Œλ €μ£ΌλŠ” κΈ°λŠ₯ (ex. 넀이버)

μ œμ™Έ κΈ°λŠ₯

  • μ›Ήμ—μ„œ λ‘œλ΄‡μ˜ 이동 λ“± μƒνƒœ 확인 - λΆˆν•„μš”

기타

  • μ›Ή μ‘°μž‘ κΈ°λŠ₯의 의의: ν™”λ©΄μ—μ„œ 아이λ₯Ό 놓쳀을 λ•Œ / 아이 말고 λ‹€λ₯Έ 곳을 ν™•μΈν•˜κ³  싢을 λ•Œ