TA的每日心情 | 开心 2022-9-28 11:25 |
---|
签到天数: 224 天 连续签到: 1 天 [LV.7]常住居民III
|
使用Walabot的距离传感器和Android应用程序监控您的坐姿,预防颈部和背部疼痛。
本项目需要的东西
硬件名称 | 数量 | Raspberry Pi 3 Model B | x1 | Walabot | x1 | 过程
姿态监测的用法和部件概述
Walabot和树莓派
为什么我要做姿态监测
每天有数百万的人花7-8个小时,久坐在他们的电脑前。在计算机使用不当的人群中,都有一个显而易见的共同特征:前倾性的姿势。人们通常坐着使用计算机,所以头部也倾向于计算机,这样将自己的脊椎松弛并弯曲成曲线[1]。由于电脑使用不当而引起的颈部疼痛可以通过专注训练来预防,而不需要使用不舒服的设备。
这种头部向前的姿势已经显示出对人们颈部产生相当大的压力。正常人的头部重约10至12磅(4.54公斤)。对压力的评估发现,头部向前15度的姿势使脊柱颈部的有效重量增加到27磅(12.25千克)。根据一项研究,与20度颈部屈曲的患者相比,工作相关的颈部疼痛的可能性是前者的两倍。当我的头离电脑太近,来提高我的编码质量,我创建了这个应用程序来提醒我。当前阶段由作者开发的开源Android应用程序提供,当用户离计算机太近时,它提供通知。
第1步 在树莓派上启动服务器
安装Walabot SDK.(https://walabot.com/getting-started)
我们将使用Python库Flask来提供Walabot目标距离,因此在您的Raspberry Pi上。
- pip install flask --user
- git clone https://gist.github.com/justinshenk/aa1e1eb7ceb87fd82f0b655b5ad20c8a posture-server
- cd posture-server
- python3 server.py
复制代码 Python脚本server.py提供了一个端点,用于通过Flask服务器获取Walabot的距离:
- #!/usr/local/env python
- import json
- import time
- from flask import Flask, jsonify, request, Response
- app = Flask(__name__)
- distance=0
- @app.route('/set')
- def set():
- global distance
- distance = request.args.get('distance')
- return jsonify(distance)
- @app.route('/status')
- def status():
- return Response(json.dumps({'status':distance}))
- if __name__ == '__main__':
- app.run(host='0.0.0.0', port=3000)
复制代码 在另一个终端窗口中,用Walabot开始感应目标距离:
通过内部API访问目标/用户的距离
通过zPosCm访问目标深度,并使用URL变量在服务器上更新:
- distance = str(targets[0].zPosCm)
- r = requests.get("http://localhost:3000/set?distance=" + distance)
复制代码 第2步 启动Android应用
下载Android应用。
该应用程序使用GraphView显示数据和HTTP长轮询以请求状态。
- // Get distance via JsonObjectRequest
- String url ="http://192.168.0.100:3000/status"; // replace with Pi IP address
- final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
- (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
- @Override
- public void onResponse(JSONObject response) {
- Double distance = 0.;
- try {
- distance = response.getDouble("status");
- // Update graph
- dataset = updateData(dataset, distance);
- ...
- // Update text display
- currDistance.setText("Distance: " + String.format("%.2f", distance));
- ...
- // Poll every second
- new Timer().scheduleAtFixedRate(new TimerTask() {
- @Override
- public void run() {
- queue.add(jsonObjectRequest);
- }
- }, 0, 1000);
复制代码 有关Android应用程序的源代码,请访问https://github.com/justinshenk/Walabot-PosturePal。自己创建或只是安装APK 。打开应用程序。
第3步:校准
Android应用程序先设置参考姿势,再进行修改设备的灵敏度。
在Android应用程序中校准姿态监测程序
当用户比校准距离更近时,通知会发送到Android应用程序。
检测方法
使用Walabot跟踪姿势以确定距离。从传感器报告的距离推断出头部与监视器的距离。数据在Android应用上保存并可视化。
结论
Posture Pal将Walabot传感器的强大功能与Raspberry Pi和Android应用程序的便利性相结合,为计算机用户提供正念训练,最终提升姿势。
参考文献
1.Tittiranonda, Burastero, & Rempel, 1999
代码
服务器源码:
距离监测源码:
安卓源码:
原文链接:https://www.hackster.io/justin-shenk/posture-pal-with-walabot-e2bf3d
|
|