加速度とジャイロの測定したデータから位置推定するためにクォータニオンを用いて推定する方法を検討しております。
python3.6でQuarternionを作成するメソッドがインストールできなく、自分で組み立てていくしかないのでしょうか?
ネットや本で色々と調べましたが、
pip install Quarternion および pip install pyquaternion
はインストールできない。ディープラーニングなども用いたいため、可能であればバージョンはこのままで行きたいと考えていたのですが。
C#,unityでQuaternionが使われている記事をよく見かけるのですが、c#をの手法をpythonにもってくることなどは難しいかなど検討しています。
現在作りたいプログラムの流れ、
加速度とジャイロセンサーを測定し、quaternionによる回転行列を計算し、センサーの位置推定を行いたい。
加速度xyz、gyroのデータは測定可能。
現在の課題;pythonで4元数の扱いが全くできない。jをつければ複素数として認識するのですが、4元数にはできないです。pythonの複素数のドキュメントも調べましたが、それらしい記事がないと思われる。
今検討しているプログラムの流れをいかに記載。
初期位置を設定する。
shokichi=np.array(1,0,0,0) (w,x,y,z)の順の4元数とする。
取得した加速度のセンサーの値をacX,acY,acZとする[単位は
G]。gyroセンサーの値を(gx,gy,gz)とする[単位rad/sec]。
X=[w,qx,qy,qz]
30hzとするとdt=0.2となる?そうすると
Q=np.array(1,gxdt/2,gydt/2,gzdt/2)
Xn Xn+1を求める式は Xn+1=Xnquarternion(1,gxdt/2,gydt/2,gzdt/2)でXn+1を出力することが可能。
Quint=np.array([[1,-gxdt/2,-gydt/2,-gzdt/2],
[gydt/2,1,gzdt/2,-gydt/2],
[gydt/2,-gzdt/2,1,gxdt/2],
[gzdt/2,gydt/2,-gxdt/2,1]])
X[k+1]=QuintX[k].Tをクォータニオン積として計算して、位置推定を行なって行きたい。
4元数の設定になっていないため、勉強して今後やりたい方針のみですが記載しております。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。