Walabot搭載Posture Pal:首・背中の痛みを防ぐリアルタイム距離監視
座位姿勢をリアルタイムで監視して首と背中を健康に保ちます。Posture Palシステムは、Walabot距離センサーをRaspberry PiとカスタムAndroidアプリと組み合わせ、即時フィードバックを提供し、猫背による痛みを防ぎます。
ハードウェアコンポーネント
- Walabot
- Raspberry Pi 3 Model B
Posture Palを構築した理由
多くのプロフェッショナルが1日7-8時間デスクで過ごします。一般的な問題は前傾頭位と円背で、頸椎に過剰な負荷をかけます。15°の前傾頭位で首への実効重量が2倍になり、4.5-5.5kg(10-12ポンド)から12kg(27ポンド)に増加します[1]。研究では20°の頸部屈曲で作業関連首痛の可能性が2倍になることが示されています。
煩わしい機器なしでユーザーが適切な姿勢を維持できるよう、穏やかでデータ駆動型のリマインダーを提供するためにPosture Palを作成しました。現在のリリースでは、ユーザーが画面に近づきすぎたときに通知するオープンソースAndroidアプリを搭載しています。
ステップ1:Piでサーバーを起動
1. Raspberry PiにWalabot SDKをインストール。2. FlaskでWalabot距離データをシンプルなWeb APIとして公開。3. GitHubからサーバーコードをクローンして実行。
pip install flask --user git clone https://gist.github.com/justinshenk/aa1e1eb7ceb87fd82f0b655b5ad20c8a posture-server cd posture-server python3 server.py
server.pyスクリプトは2つのエンドポイントを作成:/set - Walabotから現在の距離を受信。/status - 最後に測定された距離をJSONで返却。
#!/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距離測定ループを開始:
python3 distance.py
スクリプトはwlbt.get_targets()でターゲット深度を読み取り、Flaskサーバーに送信:
targets = wlbt.get_targets()
distance = str(targets[0].zPosCm)
import requests
r = requests.get("https://localhost:3000/set?distance=" + distance)
ステップ2:Androidアプリを起動
事前ビルドAPKをダウンロード、またはGitHubからソースをクローン:Walabot-PosturePal。アプリはGraphViewでライブプロット、HTTPロングポーリングで毎秒距離を取得。
// JsonObjectRequestで距離取得
String url = "https://192.168.0.100:3000/status"; // PiのIPに置き換え
final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
Request.Method.GET, url, null,
new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
Double distance = 0.;
try {
distance = response.getDouble("status");
// グラフデータセット更新
dataset = updateData(dataset, distance);
// テキスト表示更新
currDistance.setText("Distance: " + String.format("%.2f", distance));
} catch (JSONException e) {
e.printStackTrace();
}
// 毎秒ポーリング
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
queue.add(jsonObjectRequest);
}
}, 0, 1000);
}
}
);
ステップ3:キャリブレーション
アプリで基準姿勢を設定し、感度閾値を調整。これにより、快適な範囲を超えて姿勢が崩れたときのみアラートが発火するようにします。
完全なソースコードとドキュメントを表示し、独自用途にシステムを構築・変更してください。
製造プロセス
- ティッシュローション:快適性と性能を高める柔軟化技術
- Raspberry Pi 2でDS18B20温度センサー読み取りガイド
- Raspberry PiでMaxim 1-WireセンサーとDS2482 I2Cブリッジを用いた温度測定
- Raspberry Piでサーバークローゼットの温度を正確に監視
- Walabot Touchpad:あらゆる平面をワイヤレスタッチインターフェースに変換
- Walabot搭載トイレ衛生モニター:カメラ不要で清潔度と使用状況を検知
- Raspberry Piで手書き数字認識:TensorFlowとOpenCVを用いたディープラーニング実装
- TJBot入門:組み立て、設定、音声制御で自分だけのAIロボットを構築
- Raspberry Pi で自作セグウェイ(自己平衡ロボット)を構築
- GoPiGo v2をWindows 10 IoT Coreで拡張 - Raspberry Pi 3対応
- レーザー距離センサーでロボット搬送システムをマスターする