【STA24】IMU加速度を2回積分して距離だしてRTK値で比較補正<10-20%誤差でる>

RTKのサンプリングが非常に遅くて120msecでサンプリングしているので、
スラロームの一流選手だと60kmhくらいで旗門通過するので、サンプリング間隔が2m/120msecなので、旗門のターンの測点が1-2点しか測定できません。
そこで、周期の速いIMU10msecで補間するためにRTKと同期させて計測しました。
●今回の積分 RTK補正方法
加速度成分ax,ayを加速度ベクトルsqrt(ax^2+ay^2)にしてから積分して速度Vaを求めて、120msec周期の初期値としてRTKの速度gSpeed値を与えて、その初期値からVaを台形積分して次の120msec周期まで積分して周期間の変位量をもとめる方法で計算しました。
=>この方法だとスカラーしかでなくて、プロットできないので、角度はheadMotで与えて、プロットしてみて様子をみるのは後日やります。
120msec間でカーブしていれば、当然、積分値がRTKの距離より大きくなるので、誤差でなく正確な軌跡長になるので、その辺の考察が未だできてないので
今回のデータは、とりあえず積分したらこうだったという事例として理解します。

今回は20%近く差がでましたが、内訳では、実際の道のり差とIMUのドリフト誤差がまじってますので、従来のIMUの短時間ドリフト誤差は10%程度なので
10%くらいは道のり誤差かもしれませんので、今回の計算結果は一例であって、未だ、深堀する必要があるかと考えてます。
10%誤差なら、2mで20cmなので、補間としては使える可能性あるので、高速ターンで測定してみる必要があります。

●積分方法
①EXCELで予備計算して計算方法を確認
台形積分で、加速度XYを加速度ベクトルにしてからベクトルを速度に積分して、速度の初期値をRTKのgSpeedで与えてから2回目の積分で距離をだしました。
 初速の誤差を120msecに一回RTK値で補正する方法です。
RTKが25cm進んだときIMUの積分値も24cmとか近い値がでてるので、Pythonで積分させるプログラム作成しました。



②Pythonプログラム
加速データ10msecの中にRTKの必要なデータを埋め込むDFを作成して、120msec毎に補正をいれる計算させました。積分部分は下記です。

 for n in range(1,12):#積分ループ
                        ax=df_BNO.loc[si+n,”ax”]
                        ax_1=df_BNO.loc[si+n-1,”ax”]
                        ay=df_BNO.loc[si+n,”ay”]
                        ay_1=df_BNO.loc[si+n-1,”ay”]
                        df_BNO.loc[si+n,”vx”]=(ax+ax_1)/2*0.01+df_BNO.loc[si+n-1,’vx’]
                        df_BNO.loc[si+n,”vy”]=(ay+ay_1)/2*0.01+df_BNO.loc[si+n-1,’vy’]
                        vx=df_BNO.loc[si+n,”vx”]
                        vx_1=df_BNO.loc[si+n-1,”vx”]
                        vy=df_BNO.loc[si+n,”vy”]
                        vy_1=df_BNO.loc[si+n-1,”vy”]
                        df_BNO.loc[si+n,”dx”]=(vx+vx_1)/2*0.01+df_BNO.loc[si+n-1,’vx’]
                        df_BNO.loc[si+n,”dy”]=(vy+vy_1)/2*0.01+df_BNO.loc[si+n-1,’vy’]
                        #Vector積分
                        va=df_BNO.loc[si+n,”Va”]
                        va_1=df_BNO.loc[si+n-1,”Va”]
                        df_BNO.loc[si+n,”Vv”]=(va+va_1)/2*0.01+df_BNO.loc[si+n-1,’Vv’]
                        vv=df_BNO.loc[si+n,”Vv”]
                        vv_1=df_BNO.loc[si+n-1,”Vv”]
                        df_BNO.loc[si+n,”Vd”]=(vv+vv_1)/2*0.01+df_BNO.loc[si+n-1,’Vd’]

③グラフ

IMUの積分距離(120msec単位)とRTKの距離(120msec周期)で相関をみると0.865と線形とは言えない程度でした。
誤差の長さは±10cm以内ですが、これは速度が時速20kmhのシュテムターンだからこの程度の距離誤差となります。

④統計計算
 寸法誤差で±9.3cm %誤差で18.9%となってます。20kmhと遅く120msecで20-40cm程度しか進んでないので、誤差寸法も9cmになりましたが。
通常のスキーヤーなら40kmhはだすので、±20cm程度は誤差がでる計算となります。ましてや、スラロームの選手なら60kmhくらいだすので、
IMUだと±30cm程度寸法誤差がでそうなので、あまり役立たない精度しかでないという結果です。

●IMUの役立て方
yaw角で±5度と2回積分で20%の精度は、スキーの要求精度ではあまり役にたたないことが判りつつありますが、
roll角は、スキーの角付け角という重要な角度を精度±1度以内で測定できるので、IMUはなくてはならないセンサす。
しかし、RTKを代替えできるというと無理で、RTKの遅い周期をどの程度補間できるか実際に40-60kmhでデータをとって
実際のデータを見ながら考えてみたいとおもいます。私自身高速でターンできないので、どなたか、上手な人で測定したいと思います。
ご関心がある方で、測定モデルになっていただける方はご連絡いただければ幸いです。
本記事の下のコメント欄に記入願います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です