Skip to content

NCNU-OpenSource/lsa-WorkOut

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

健人就是矯勤

Concept Development

到底是平價的徒手健身吸引人,還是奢華的影像辨識輔助健身令人嚮往

  • 健身時動作的正確性十分重要,正確的姿勢可以讓健身事半功倍
  • 實作的目的就是為了讓使用者能全神貫注在動作本身,透過影像辨識確認動作的準確性,同時讓使用者知道正確做了多少組數消耗大卡
  • 達到該組數會有小火車獎勵 🚋 🚋 🚋 等待時間可作為組間休息

相信在輔助健身的幫助並持之以恆下,人人都可以是范馬勇次郎

適度健身吸引異性,過度健身吸引同性

Implementation Resources

  • 軟體
    • MediaPipe:由Google開發的影像辨識套件(使用其中的pose estimation)
    • OpenCV:用來做視覺相關影像處理
    • Raspberry pi OS(bullseye 11, 32bit):樹莓派的作業系統(可用cat /etc/os-release確認)
  • 硬體
設備名稱 數量
Rasberry pi 3B 1
picamera v1.3(含支架) 1
Laptop VM(Linux) 1
Laptop HD webcam 1

!在虛擬機開攝影機注意事項 VM版本要改成6.1.40版本才可以

Problem on Raspberry pi

  • 在mediapipe和picamera上有矛盾,mediapipe(支援在64bit),picamera(支援在32bit),一開始因為picamera指令和偵測不到的問題(可用vcgencmd get_camera偵測和查看有沒有/dev/video0)所以將Raspberrypi的OS從64bit改到32bit,後來經過嘗試後發現mediapipe在32bit上會有許多trouble
  • 有找到在32bit上的Unofficial但無法使用 😢(https://pypi.org/project/mediapipe-rpi4/)
  • 受限於時間緊迫,因此最後選擇在Ubuntu虛擬機下去實作

Existing Source

  • 主程式countdown.py pushup.py situp.py
  • mediapipe的PoseModule

Pose node in MediaPipe

  • 可借鑑去實作其他動作判別(距離or角度)

Implementation Process

主程式

python version: 3.8.10(Linux中內建)

  • sudo pip install cowsay(有隨機驚喜,沒有要用拿掉即可)
  • sudo apt install pip(如果沒有內建的話)
  • sudo pip install mediapipe
  • sudo pip install opencv-python(要更完整版可以sudo pip install opencv-contrib-python)

先建立opencv與mediapipe的Pose Module, Pose Module包含:

  • init function: mediapipe pose solutions跟mediapipe畫圖工具
  • findPose: 找mediapipe Pose的33個landmarks
  • findPosition: 把33個landmarks的(x,y)座標算出來
  • calculateAngle: 算出三個landmarks之間的角度
  • calculateY_axisDis: 算出兩點之間的Y軸距離
  • calculateX_axisDis: 算出兩點之間的X軸距離

PusuUp counter:

  • pushup.py用cv2跟Pose Module,然後用左肩跟左手肘的Y軸距離去做判斷伏地挺身的次數,用預備姿勢的左肩與左肘的最大距離去判斷。
  • !!!組間休息時間結束後,最好準備好預備姿勢再點OK,比較不會多算!!

GUI

目前實作在伏地挺身pushup.py上,做完後配合做仰臥起坐situp.py

  • 先下載 sudo apt-get install python3-tk才能使用python的GUI
  • 可以設定1分鐘到90分鐘(可作為組間休息),以及要做幾下push ups
  • image
  • 做完設定的Push ups後會跳出小火車 🚋

Usage

  • Step1:安裝所有需要的檔案 (可直接git clone [email protected]:NCNU-OpenSource/lsa-WorkOut.git把repo下載下來)
  • Step2:執行python3 countdown.py可以設定等待時間和要做幾下
  • Step3:時間到了會去呼叫pushup.py,做完之後會跑cowsay(隨機圖)等待休息時間再接著做situp.py(同時都會計算消耗大卡)
  • Step4:又壯了一圈

Knowledge From Lecture

  • Ubuntu環境(Linux指令使用)
  • GUI會跑出小火車(sl)

job Assignment

  • 陳竣哲:題目發想、材料購買、程式研擬、raspi研究、影片、github、報告
  • 何智立:程式研擬&彙整、raspi研究、影片、github、報告
  • 吳楚熙:GUI、GUI結合程式、github
  • 陳麒益:程式研擬、raspi研究、ppt、報告
  • 林昱翔:勞力活、ppt、報告

Future Prospects

  • 可以將整體弄成更完善的健身系統
  • 弄資料庫去記錄使用者每日運動
  • 加上提示音效、健身音樂等等...

References

線上資源

線下詢問

  • MOLi一些助教的無私幫忙

Demo Video

Demo影片在這(影片中的cutdown.py即為countdown.py)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages