SatooRu's Profile

全ての記事梶研の進捗日常の記録制作物一覧

梶研 [端末座標系を世界座標系に]

2023年6月27日

thumbnail

端末座標系を世界座標系に

出席率

  • 3年セミナー:??%

スケジュール

短期的な予定

  • 端末座標系を世界座標系に
    • データをとる
    • 重力に対する各軸の傾きを出す
    • 2次元ベクトルを回転させる
    • 3次元ベクトルを回転させる
    • 端末座標系を世界座標系に変換する

長期的な予定

  • 8/5 技育キャンプ ハッカソン
  • 8/12 技育展
  • 8/26 OpenHackU
  • 9/2 技育キャンプ アドバンス
  • 10/7,8 工科展

進捗報告

3次元ベクトルを回転させる

元の加速度

output_8.png (71.9 kB)

端末の傾き

output_4.png (62.4 kB)

元の加速度 を 端末の傾き だけ回転させる

回転後のベクトル

output_1.png (69.2 kB)

理想は y は常に9.8, x,z は常に0 になるはず
=> roll, pitch, yaw の回転のさせ方の問題?

roll だけ掛けたグラフ

output_5.png (65.3 kB)

y(橙) が理想に近づいた

pitch だけ掛けたグラフ

output_6.png (67.5 kB)

yaw だけ掛けたグラフ

output_7.png (60.0 kB)

上下が合えばいいから roll, pitch, yaw 全て使う必要はないかも?

考え直す

計算した roll, pitch, yaw が入れ替わってしまっている可能性がある

端末の座標系

assets_2.png (5.8 kB)

端末の傾き

output_4.png (62.4 kB)

0s - 4s

端末の状態は z軸正が上向き
=> pitch 以外が回転している

傾きが 0deg である pitchyaw
(yaw として扱っていた)

6s - 8s

端末の状態は y軸正が上向き
=> 傾きが 0deg である rollpitch
(pitch として扱っていた)

11s - 13s

端末の状態は x軸正が上向き
=> 傾きが 0deg である rollyaw
(roll として扱っていた)

変更後のグラフ 1

  • roll: 橙
  • yaw: 青
  • pitch: 緑

とした場合のグラフ
output_9.png (67.8 kB)

違う.

変更後のグラフ 2

いろいろ試してみた

  • roll: 青
  • yaw: 橙
  • pitch: 緑

とした場合のグラフ
output_10.png (52.8 kB)

緑(z軸) が 常にほぼ 0(m/s^2) になった.
y軸が 9.8(m/s^2) になって欲しい

変更後のグラフ 3

いろいろ試してみた

  • roll: 青
  • yaw: 緑
  • pitch: 橙

とした場合のグラフ

output_11.png (59.0 kB)

青(x軸) が 常にほぼ 0(m/s^2) になった.

変更後のグラフ 4

いろいろ試してみた

  • roll: 青
  • yaw: 橙
  • pitch: 緑

とした場合のグラフ

output_12.png (62.9 kB)

9秒までは結構理想的な形になっている.
ただし, 9.8(m/s^2) は x軸になっている.
(軸自体も間違っている可能性もある)

全パターン試したけど理想的な形のものにはならなかった.
x, z が 0 にはなるが y が 9.8 にならない.
=> 回転のさせ方が間違っている可能性がある

回転させる順番

回転させる順番によって結果変わってしまう.
3次元ベクトルを回転させる方法として正しくなさそう

回転行列

x軸周り

$$
R_x =
\begin{bmatrix}
1 & 0 & 0 \\
0 & \cos \theta & -\sin \theta \\
0 & \sin \theta & \cos \theta \\
\end{bmatrix}
$$

y軸周り

$$
R_y =
\begin{bmatrix}
\cos \theta & 0 & \sin \theta \\
0 & 1 & 0 \\
-\sin \theta & 0 & \cos \theta \\
\end{bmatrix}
$$

z軸周り

$$
R_z =
\begin{bmatrix}
\cos \theta & -\sin \theta & 0 \\
\sin \theta & \cos \theta & 0 \\
0 & 0 & 1 \
\end{bmatrix}
$$

としたとき,
回転行列をかける順番によって結果が変わる

$$
\begin{bmatrix}
x \\
y \\
z \\
\end{bmatrix}
{\times}R_x
{\times}R_y
{\times}R_z
{\neq}
\begin{bmatrix}
x \\
y \\
z \\
\end{bmatrix}
{\times}R_y
{\times}R_x
{\times}R_z
$$

[2,3,5] のベクトルを全て 30deg回転させた結果

$$
\begin{bmatrix}
2.82 \\
4.25 \\
3.45 \\
\end{bmatrix} =
\begin{bmatrix}
2 \\
3 \\
5 \\
\end{bmatrix}
{\times}R_x
{\times}R_y
{\times}R_z
$$

$$
\begin{bmatrix}
0.83\\
5.24\\
3.12\\
\end{bmatrix} =
\begin{bmatrix}
2 \\
3 \\
5 \\
\end{bmatrix}
{\times}R_y
{\times}R_z
{\times}R_x
$$

余談

バイトを辞めれませんでした

夏休み忙しそうだし、せっかくだからやめようと思った.
が, 店長がいい人すぎてお願いを断れなかった.
8-10月まで休みを貰うことに