🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

1回答

2236閲覧

四元数からロール・ピッチ・ヨーを求めてみたけどよくわからない

rck79851871

総合スコア2

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2021/01/15 07:43

前提

スマートフォンのセンサーから取得した加速度センサー,ジャイロセンサーを使って
madgwick様の
リンク内容
の論文を参考にして四元数を求めました.

そして
リンク内容
に載っている変換式
roll = arctan[2.0 * (q2q3 + q0q1)/ (q0q0 - q1q1 - q2q2 + q3q3)]
pitch = arcsin(2.0 * (q0q2 - q1q3))
yaw = arctan[2.0 * (q1q2 + q0q3)/(q0q0 + q1q1 - q2q2 - q3q3)]
を利用してロール・ピッチ・ヨーを求めました.

そして
0.000133 0.000053 -0.000045
0.000289 0.000053 -0.00008
0.000445 0.000062 -0.000241
0.000674 0.00012 -0.000497
0.000901 0.000099 -0.000872
0.001079 0.000234 -0.001263
0.001192 0.000291 -0.001502
0.001192 0.000218 -0.002157
0.001256 0.000332 -0.002986
0.001449 0.000574 -0.003336
0.001491 0.000574 -0.003799
0.001458 0.000599 -0.004368
0.001558 0.000685 -0.00473
0.00158 0.000975 -0.005386
0.00143 0.001171 -0.006054
0.001434 0.001243 -0.006682
0.001589 0.000936 -0.007737
0.001532 0.00113 -0.008277
0.001523 0.0015 -0.008689
0.001464 0.001749 -0.00913
0.001612 0.001779 -0.009675
0.001455 0.001887 -0.010512
0.001332 0.002038 -0.010962
0.001307 0.002212 -0.011073
0.001106 0.002465 -0.011568
0.00054 0.002556 -0.012126
0.000542 0.002628 -0.012655
0.000525 0.002798 -0.012925
0.000521 0.002856 -0.013749
0.000504 0.002942 -0.014351
0.000581 0.002989 -0.014743
0.000611 0.003068 -0.015123
0.000463 0.003193 -0.015302
0.000342 0.003281 -0.015719
0.000345 0.00342 -0.01636
0.000274 0.003272 -0.016925
0.00015 0.003207 -0.017503
0.000029 0.003048 -0.018182
-0.000305 0.002354 -0.019047
-0.000253 0.002488 -0.019548
-0.000489 0.003263 -0.019195
-0.000735 0.003671 -0.019208
-0.000831 0.004169 -0.019331
-0.000856 0.004462 -0.019454
-0.000838 0.004362 -0.020036
-0.000694 0.003925 -0.021195
-0.000435 0.003646 -0.022072
-0.000429 0.003307 -0.022788
-0.00045 0.003235 -0.023541
-0.000701 0.002798 -0.024351
-0.000875 0.00272 -0.025181
-0.000776 0.002567 -0.025912
-0.00096 0.002366 -0.026621
-0.001113 0.00222 -0.027447
-0.001143 0.002154 -0.02821
-0.001132 0.002034 -0.028966
-0.001041 0.001948 -0.029689
-0.000912 0.001771 -0.030458
-0.000869 0.001678 -0.030996
-0.000576 0.001862 -0.031485
-0.000239 0.002218 -0.031452
-0.00024 0.002327 -0.031277
-0.000174 0.00233 -0.031227
-0.0001 0.002363 -0.03125
-0.000143 0.002513 -0.031225

のような値を得ることが出来ました.
これは下の図のように時計回りで一回転させたときに得られたジャイロセンサー値と加速度センサー値を使って求めました.手で持って一回転させたので回転速度等は一定ではないです.
イメージ説明

わからないこと

うまく説明できないのですがこの値が一体何なのかよくわからないのです.
オイラー角というのはわかるのですがオイラー角の何なのかわからないのです.
例えばロールピッチヨーはそれぞれの軸からどれくらい回転したのかを表すものなのはわかるのですがその値だとどれくらい回転したの??って感じです.

質問の内容

ここまでの内容を踏まえてロールピッチヨーについて説明をお願いします.
そして自分が計算したロールピッチヨーがあっているのかどうか?
もし計算方法が違う場合などは教えていただきたいです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/01/15 08:17

> 四元数を求めました この求めた四元数自体は妥当な値が得られているのでしょうか? (ちゃんと,物を一回転させたことを示すような値になっているのかどうか) また,RPYを求める変換処理の実装がバグってないことについては確認されているのでしょうか? 最終結果の値の怪しさを考えるよりも前に,まずは上記2点を固めるべきに思えます.
fana

2021/01/15 08:22

・四元数の妥当性が確認されていない場合 → そこから求めたRPYの値を見てても意味ない ・RPYへの変換処理実装の信頼性が不明な場合 → アウトプットのRPYだけ見てても仕方ない
guest

回答1

0

ベストアンサー

この値が一体何なのかよくわからない

ロールピッチヨーについて説明をお願いします

得られたRPYの値には言うほど特別な意味は無いのではないかと.

というのは,そもそもある回転に対するオイラー角というのは一意ではないわけなので,
たまたま(?)何かの計算をして出てきたRPYの値の意味を考えようということにどれだけの意味があるのか疑問です.
「あるRPYの3値があるとき,それを所定の順序で用いて3つの軸周りで3回回転させた結果というのが,ある回転姿勢を表す」だけです.

意味を考えようというならば,「回転軸とその軸周りの回転量」という分かりやすい表現をしている世界での量(四元数)が与えられているのであれば,それで十分ではないでしょうか.

投稿2021/01/15 08:35

fana

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/01/15 08:38

実際に実物を「まず1つ目の軸周りにこれだけ回転させて,次に2つ目の軸周りにこれだけ回転させて,最後に3つ目の軸周りにこんだけ回転させるぜ」という形で回転させた のであれば,まぁ,センサ情報から得られたRPYの値との対比を見るようなことには意味があるかもしれないけども.
rck79851871

2021/01/16 07:32

四元数についてもう少し勉強して,求めた四元数についての妥当性を調べてみたいと思います. 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問