1回答

1收藏

【翻译】用Walabot做姿态监测

#其他 #其他 4156 人阅读 | 1 人回复 | 2018-11-16

    使用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上。
  1. pip install flask --user
  2. git clone https://gist.github.com/justinshenk/aa1e1eb7ceb87fd82f0b655b5ad20c8a posture-server
  3. cd posture-server
  4. python3 server.py
复制代码
    Python脚本server.py提供了一个端点,用于通过Flask服务器获取Walabot的距离:
  1. #!/usr/local/env python
  2. import json
  3. import time
  4. from flask import Flask, jsonify, request, Response
  5. app = Flask(__name__)
  6. distance=0
  7. @app.route('/set')
  8. def set():
  9.    global distance
  10.    distance = request.args.get('distance')
  11.    return jsonify(distance)
  12. @app.route('/status')
  13. def status():
  14.    return Response(json.dumps({'status':distance}))
  15. if __name__ == '__main__':
  16.    app.run(host='0.0.0.0', port=3000)
复制代码
    在另一个终端窗口中,用Walabot开始感应目标距离:
  1. python3 distance.py
复制代码
    通过内部API访问目标/用户的距离
  1. wlbt.get_targets()
复制代码
    通过zPosCm访问目标深度,并使用URL变量在服务器上更新:
  1. distance = str(targets[0].zPosCm)
  2. r = requests.get("http://localhost:3000/set?distance=" + distance)
复制代码
第2步 启动Android应用
    下载Android应用。
    该应用程序使用GraphView显示数据和HTTP长轮询以请求状态。
  1. // Get distance via JsonObjectRequest
  2. String url ="http://192.168.0.100:3000/status"; // replace with Pi IP address
  3. final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
  4.         (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
  5.             @Override
  6.             public void onResponse(JSONObject response) {
  7.                 Double distance = 0.;
  8.                 try {
  9.                     distance = response.getDouble("status");
  10.                     // Update graph
  11.                     dataset = updateData(dataset, distance);
  12. ...
  13. // Update text display
  14. currDistance.setText("Distance: " + String.format("%.2f", distance));
  15. ...
  16. // Poll every second
  17. new Timer().scheduleAtFixedRate(new TimerTask() {
  18.     @Override
  19.     public void run() {
  20.         queue.add(jsonObjectRequest);
  21.     }
  22. }, 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



关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条