M5STACKのATOM MatrixでG-Bowlもどき ~5~
前回までだと車に対する水平垂直を合わせてATOM Matrixを設置しなければ正常動作できないものになっていました。
そしてその課題に対応するには
ということをしなければならないと思ったのでいろいろ調べたところ、以下のページを見つけました。
これを使うと重力(つまりは車の水平垂直)に対して傾いた状態でATOM Matrixを設置しても、その傾き具合を補正して正常動作させることができそうです。
最初に静止した状態で加速度センサーから得られる重力加速度のベクトルを傾きがない状態の重力加速度のベクトル(グローバル座標系のZ方向に1G)に変換する回転行列を求めて、上の方法で求めた回転行列を使って都度加速度センサーから得られるデータを変換すればいいということになります。
そんなわけで上のページを見て何をしているのか調べました。細かいことは置いておいて、上のページに載っているコードはPythonのコードでNumPyというライブラリを使っています。
どうもNumPyというライブラリはPythonで行列やベクトルの計算をする時には必須のライブラリらしく、NumPyを使うと行列やベクトルの計算を簡便に記述できるし計算速度も速いようです。
ところがこのNumPyはMicroPythonでは使えずNumPyと同じようなMicroPythonで使えるulabというライブラリがあることが分かりました。
で、ulabというライブラリを使おうとすると今度はMicroPython+ulabのソースコードを自らコンパイルしてMicroPythonのUF2ファイルを作成しなければならないみたいです。
正直自らMicroPythonをコンパイルするための環境も技量もまだないので、上のページで行っている計算をulabを使わずに手計算するコードにして使おうと思っています。