查看: 3474|回复: 1

【翻译】用Walabot做姿态监测

[复制链接]
  • TA的每日心情
    开心
    2022-9-28 11:25
  • 签到天数: 224 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2018-11-16 09:27:22 | 显示全部楼层 |阅读模式
    分享到:
        使用Walabot的距离传感器和Android应用程序监控您的坐姿,预防颈部和背部疼痛。
    1.jpg

    本项目需要的东西
    硬件名称
    数量
    Raspberry Pi 3 Model B
    x1
    Walabot
    x1
    过程

    姿态监测的用法和部件概述

    3.jpg

    Walabot和树莓派

    为什么我要做姿态监测
        每天有数百万的人花7-8个小时,久坐在他们的电脑前。在计算机使用不当的人群中,都有一个显而易见的共同特征:前倾性的姿势。人们通常坐着使用计算机,所以头部也倾向于计算机,这样将自己的脊椎松弛并弯曲成曲线[1]。由于电脑使用不当而引起的颈部疼痛可以通过专注训练来预防,而不需要使用不舒服的设备。
    4.jpg

        这种头部向前的姿势已经显示出对人们颈部产生相当大的压力。正常人的头部重约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



    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-27 13:02 , Processed in 0.118731 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.