HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0826
ジャイロセンサ値について5解決


リンク

2020/8/26(Wed) 17:46:11|NO.91262

自転車にスマホを載せていくつかの情報を見せるアプリを製作中です。
機能の1つとして斜度をリアルタイムで測りたいと考えていますがこれが
なかなかに難しいです。加速度センサと連携してドリフト補正云々やってみても
静止時には問題ないのですが曲がったり加減速があると途端に面白数値を叩き出します。
「ジャイロセンサは加速度の影響を受けにくい」らしいのですが
例えばこれ(winで実行しても無意味です)で
スマホを水平に持ってその場で回転するだけでX軸ジャイロ角が
どんどん加算されてしまいます。

#include "hsp3dish.as" centerX=180:centerY=150:rotX=0.0:jX=0.0 repeat redraw 0:color:boxf gosub *getJ gosub *putGrp gosub *putTex redraw 1:await 16 loop *getJ jX=ginfo(259) rotX+=jX return *putGrp color 255,255,255 line centerX-90,centerY,centerX+90,centerY line centerX,centerY-90,centerX,centerY+90 color 255,255,0 line centerX,centerY,cos(deg2rad(rotX))*90+centerX,-sin(deg2rad(rotX))*90+centerY return *putTex color 255,255,255:pos 0,0 mes"ジャイロ値"+jX mes"角度"+int(rotX) return
そもそも6軸センサー値のみをもって移動しながら角度を測る事自体が無謀なのでしょうか?



この記事に返信する


GENKI

リンク

2020/8/26(Wed) 22:40:07|NO.91267

ジャイロセンサーは角速度[rad/s]を計測しています。
これを毎フレーム足し算すれば角度に変換できる…はずなのですが、あまりうまく行かない気がします。
私は加速度(PSコントローラのセンサ)しか取り扱ったことがないのですが、積分してみると検出誤差まで積分されてしまうのか結果は現実とはかけ離れた値になってしまいました。

考えられる誤差の原因
・計測誤差の蓄積
・センサの検出レートと同期出来ていない

と、ここまで書いてから気がついたのですが、スクリプトで積分時に時間が考慮されてませんね。これだと瞬時に現実とかけ離れた値になると思います。
こう書けば最初はそれなりの値になると思います。
rotX+=jX*0.016



リンク

2020/8/27(Thu) 22:51:34|NO.91275

ご意見ありがとうございます。
ginfoのヘルプから”座標軸の傾きを-1.0〜+1.0の範囲で取得したもの”
とありますが当初はよくわかりませんでした。
様々な実験を経て”60fpsの1フレームあたりに増減した角度(deg)”であろうと
見当をつけ利用しています。
このソースでも静止状態のスマホを水平から縦にすればrotXも90度近い値が出ます。
これを自転車に装備して平地で左右に曲がったときにジャイロのXが
反応してしまうあたりが現在の悩みどころです。
勾配をはかるアプリなど参考に見てみましたが静止状態での使用を想定したものばかり
でしたので、やはり難しいのかもしれません。



GENKI

リンク

2020/8/28(Fri) 02:05:54|NO.91277

予想が外れてしまった…。

> ginfoのヘルプから”座標軸の傾きを-1.0〜+1.0の範囲で取得したもの”

失礼しました。マニュアルの記述見落としてました。
なんでしょうねこれ。単位がわからないと使えない値ですね。まずは単位を確認したほうがよさそうです。



GENKI

リンク

2020/8/31(Mon) 00:22:13|NO.91299

ドリフト補正が何か知らなかったので調べてみたのですが、他のセンサー…今回の場合加速度センサでの値を使って補正する方法のようですね。
加速度センサに重力以外の加速度が発生している場合、加速度センサーも角度を見失ってしまうため補正はうまく行きません。
なるほどおもしろ数値を叩き出すのは道理ですね。

加速度センサーによる補正を行う際、加速度の大きさによって重み付けを変える方法で解決できるみたいです。
https://garchiving.com/gyro-drift-part2/


> 様々な実験を経て”60fpsの1フレームあたりに増減した角度(deg)”であろうと

公式回答はなかったのですが、検証して頂いた結果によると rad/s で間違いなさそうです。
http://hsp.tv/play/pforum.php?mode=all&num=91278



リンク

2020/8/31(Mon) 20:46:43|NO.91302

再度のご回答ありがとうございます。自分もその後いろいろ調べておりました。
角度に関しては60fps時で生値を60で割ったのをradとして加算してみたものが
正しいっぽいのでrad/s説に自分も同意いたします。
ただ1フレームあたりの角速度が小さいことに由来するのかもしれませんが
生の値を単に足していってdegとする、も同等の結果が出ることは出ます。

ドリフト補正の件はまさにその提示されたサイトを参考に実装しました。
1Gに近い場合ジャイロ値に加速度値で補正をかけ、そうでない時はほぼジャイロ値に頼る。
そこでジャイロの挙動を観察していたところ補正とか関係なく
ジャイロセンサ値にも加速度の影響がものすごく出る、困った。という今の状況でした。

論文や企業案件を見てもセンサを垂直に複数のせる、地磁気やGpsセンサも利用する、
あらかじめ坂道のデータをdlしておく、数万回の走行データをとって何とか解決したなどなど
ちょっと数学苦手な個人の手には負えないかなと思い始めています。
リアルタイムに加速度運動中のスマホの傾き(x軸まわりに対してのみでよい)を測れるぜと
いう方いらっしゃったら是非教えを乞いたいところです。長文失礼しました。



ONION software Copyright 1997-2023(c) All rights reserved.