• ベストアンサー

三次元座標変換について

物体A(座標(x,y,z)姿勢(yaw,pitch,roll))と、点B(座標(a,b,c))が存在するとします。 物体Aからみた点Bの相対座標を、これらの文字を使った式で表すにはどうすればいいでしょうか? なお、物体Aの姿勢はオイラー角であり、回転の順番はyaw→pitch→rollであるとします。 回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

おっと、失礼。yaw→pitch→rollはオイラー角のバリエーションのひとつ Z→Y→X のことですね。オイラー角は Z→Y→Z や Z→X→Z で扱うことが多くて yaw→pitch→roll とは区別することが多いので見落としていました。申し訳ありません。 http://www.cg.info.hiroshima-cu.ac.jp/~miyazaki/knowledge/tech07.html などで、オイラー角ではなく、ロール、ピッチ、ヨー で検索すると 必要な回転行列が得られます。姿勢に対する変換なので、角度は 全て正負が反転するはずです。 (x、y,z)に対する(a, b, c)の相対座標を求め、回転行列をかければ お望みの座標が得られるはずです。

ryuzoji21
質問者

お礼

ありがとうございます。 参考にさせていただきます。

その他の回答 (1)

回答No.1

オイラー角と yaw,pitch,roll は別物ですよ。 またオイラー角は回す軸の順番の違いでたくさんの 定義があります。 各種の回転行列が載ったサイトはたくさん ありますので、まず「回転行列」で検索してみて ください。

関連するQ&A

  • 座標の変化からの位置姿勢変化の求め方

    視界内の物体の自分から見た位置(X,Y,Z)が常に分かる常態にあったとき、 それを元に自分の位置(xyz)と姿勢(ロール・ピッチ・ヨー角)の変化を 求めたいのですが、何点からどのような計算で求めることができますか?

  • 3次元での回転による座標変換

    3次元での回転による座標変換に関して質問があります. X軸,Y軸,Z軸の直交座標系があるとします. この座標系において,ある位置ベクトル(a1,b1,c1)がX軸,Y軸,Z軸と成す角度は,θx,θy,θzは,ベクトルの内積から算出可能だと思います. θx=a1/sqrt(a1^2+b1^2+c1^2) θy=b1/sqrt(a1^2+b1^2+c1^2) θz=c1/sqrt(a1^2+b1^2+c1^2) X,Y,Zの直交座標系を回転させて,この位置ベクトルの向きを基準としたX'軸,Y'軸,Z'軸による新しい直交座標系を設定するには,どのようにすればよいでしょうか? θx,θy,θzと各軸での回転角度は違うものという認識でいいのでしょうか? 元の座標系において,各軸回りに順番に回転させればいいかと思うのですが,どうもイメージがつかみきれません. よろしくお願い致します.

  • 剛体の3次元座標算出方法

    現在磁気式のセンサを使用して、長さRの角棒の一点(後端)に関して座標値と角度情報を取得し、このデータから先端の座標を算出したいのですが、方法がわかりません。物理的な問題で先端にはセンサがつけられない状況です。 以下のような条件で、角棒(剛体)の先端の三次元座標(Px,Py,Pz)を求めたいのですが、算出可能でしょうか。可能ならば算出式を教えて下さい。 不可能な場合は、この他に何がわかれば算出可能で、どのような算出式になるのか教えて下さい。 <既知の条件> ・角棒の後端の座標(X,Y、Z) ・角棒の長さR  R=√(Px-X)^2+(Py-Y)^2+(Pz-Z)^2 ・オイラー角(ψヨー、θピッチ、φロール) ・回転順序 ψ→θ→φ

  • オイラー角回転後座標系の回転について

    オイラー角で回転させた座標系を作成。 その座標系を更に回転させた場合の、 オイラー角を求めたいのですが、上手く行きません。 そこで質問させて下さい。 【やりたい事】 (1)まずは、右手系座標系AをZYXオイラー角(φ,θ,ψ)で回転した座標系A'を作成する。   1.最初にZ軸周りにφ回転   2.Y'軸(Y軸をZ軸周りにφ回転したもの)周りにθ回転   3.X''軸(X軸をY'軸周りにθ回転したもの)周りにψ回転 (2)次に回転後座標系A'を回転前座標系AのX軸周りにβ回転したモノを座標系A''とする。   座標系A’’のZYXオイラー角を求めたい。   (AをA''に一致する様に回転した時のZYXオイラー角を求めたいです。) 上記の様な角度は算出できるのでしょうか? 説明が分かりづらく申し訳御座いませんが、 ご回答何卒よろしくお願い致します。

  • 航空機の旋回のシミュレーション

    クォータニオンや行列などを用いて、航空機の旋回を表現しようと考えています。 航空機はヨー、ピッチ、ロールの3軸の旋回をしますが、常に自身のローカル座標軸を軸として回転します。 例えば、水平飛行の状態でヨーイングする場合はy軸を軸として旋回しますが、90度ローリングした状態でヨーイングする場合は、自身のローカル座標のy軸、即ちワールド座標のx軸を軸として旋回します。 また、水平飛行の状態でローリングする場合はz軸を軸として旋回しますが、90度ヨーイングした状態でローリングする場合は、ワールド座標のx軸を軸として旋回します。 同時に複数の軸で旋回を行うこともありますが、1回当たりの旋回角は微小で、かつ毎回ローカル座標の更新が行われるため、回転行列やクォータニオンを掛ける順序はどうでもいいものとみなせます。 現在の航空機の向きと姿勢を表すオイラー角(Pitch,Yaw,Roll)と、自身のローカル座標を基準とした旋回角(α,β,γ)が与えられたとき、旋回終了後の航空機の向きと姿勢はどのように表されるでしょうか。 なお、航空機の向きと姿勢はオイラー角ではなく、向きベクトルと回転角を用いた表現でも構いません。 回答よろしくお願いします。 問題が上手く表現できておらず、解りづらい箇所があるかもしれませんが、その場合は一言頂ければ補足します。

  • 回転行列が分かっているとき、基準座標に対してどれだ

    回転行列が分かっているとき、基準座標に対してどれだけ動いたかどうやって調べる? 座標系0(基準座標系)と座標系1があります。 0から1へのZYXオイラー角回転行列1R0がわかっています。 このとき,座標系1であらわされた動き(加速度)a1x,a1y,a1zを座標系0で表わすにはどう計算すればいいですか? よろしくお願いします.

  • 座標軸の変換の計算方法

    失礼いたします。 ある点の座標の算出方法がわからず困っています。 ・ある2つのA座標軸とB座標軸(ともに2D)が存在し、お互いの相対距離や軸の相対角度についてはわからない。 ・ある2つの点b,cはA,B座標軸系に対応する座標がそれぞれ解っている。 ・点aはA座標軸系に対応する座標は解っている。 という条件の元、点aのB座標軸系に対応する座標(BXa,BYa)の算出はできるのでしょうか?またその算出方法がわかればご教示ください。 以下に条件についてまとめてみます。     A座標軸系   B座標軸系 点a  (AXa,AYa)    (BXa,BYa) 点b  (AXb,AYb)    (BXb,BYb) 点c  (AXc,AYc)    (BXa,BYc) として(BXa,BYa)以外は既知という条件です。

  • 座標変換について

    座標系XYZの空間に点A(X1,Y1,Z1)、点B(X2,Y2,Z2)、点C(X3,Y3,Z3)があります。 この3点を通る円の中心をP(X0,Y0,Z0)とし、 円の存在する平面をx'y'平面とします。 さらに原点を点P、x'軸はPAを通る直線とします。 座標系x'y'z'から円周上の点D(X',Y',Z')を求め 座標系XYZに変換した(X4,Y4,Z4)を求めたいのですが、どうすればよいのでしょうか? 以下のようにすれば求まると思うのですが角度α、β、γの求め方が分かりません。 X'' = X' * cosα - Y' * sinα Y'' = X' * sinα + Y' * cosα Z'' = Z' X''' = X'' Y''' = Y'' * cosβ - Z'' * sinβ Z''' = Y'' * sinβ + Z'' * cosβ X4 = X''' * cosγ + Z''' * sinγ Y4 = Y''' Z4 = Z''' * cosγ - X''' * sinγ よろしくお願いします。

  • オイラー角 回転行列

    オイラー角 回転行列 オイラー角について質問させて下さい。 何度も質問して申し訳ないです。 今ひとつ理解できていません。 Z-X-Zオイラー角の回転行列Rz・Rx・Rzについて、 「前の2つの回転行列Rz,Rxは固定された空間座標回りの 回転ではなく、回転後の新たな座標軸回りの回転を意味する。」 と教えて頂きました。 なぜ前の2つなのでしょうか?最初は元の座標系だから後ろの2 なら分かるのですが・・・ そもそも、なぜオイラー角は一般的に座標系の回転を示すのでしょうか? 3次元空間(いわゆる私たちが日常過ごしている空間)において、 物体を回転するとき物体その物を回転しますよね? 座標系を回転する方が物体を回転するよりも 何かメリットがあるのでしょうか? またジンバルロックについてもご回答頂きました。 ジンバルロックに関してはおおよそ理解しました。 ジンバルロックとは、Z-X-Zオイラー角でRxの回転角度がπや2πのとき、 最初のRzと最後のRzとで回転軸が一致して3つの座標系の回転軸方向 ベクトルのうちRzの2つが線形従属となってオイラー角における任意の3つの 角度を決められない状態。 ジンバルロックを解消するためにクォータニオンと言われる手法があるようです。 ちなみに、このジンバルロックは頻発するように感じるのですが、それでも 回転をオイラー角で表記するのはなぜなのでしょうか? 素人考えでは最初からクォータニオンを用いれば良いのでは?と思いました。 以上、ご回答何卒よろしくお願い致します。

  • 3次元の座標変換と角度について。

    3次元のシミュレーションの勉強をしています。 3次元の座標変換で x,y,z:変換前の座標; x',y',z':変換後の座標; θ:回転する角度; lx,ly,lz:平行移動量; としたとき、 X軸に関する回転              |1 0   0    0|              |0 cosθ sinθ 0| [x' y' z' 1] = [x y z 1]|0 -sinθ cosθ0|              |0 0   0   1| Y軸に関する回転              |cosθ0 -sinθ0|              |0   1 0   0| [x' y' z' 1] = [x y z 1]|sinθ0 cosθ 0|              |0   0 0   1| Z軸に関する回転              |cosθ sinθ 0 0|              |-sinθcosθ0 0| [x' y' z' 1] = [x y z 1]|0   0   1 0|              |0   0   0 1| 平行移動              |1 0 0 0|              |0 1 0 0| [x' y' z' 1] = [x y z 1]|0 0 1 0|              |lx ly lz 1| 物体の姿勢を表現するときは [物体の姿勢の変換行列] = [Z軸の回転行列][X軸の回転行列][Y軸の回転行列][平行移動]  |XX XY XZ 0| XX,XY,XZ・・・X軸の単位ベクトルを変換した場合のベクトル  |YX YY YZ 0| YX,YY,YZ・・・Y軸の単位ベクトルを変換した場合のベクトル = |ZX ZY ZZ 0| ZX,ZY,ZZ・・・Z軸の単位ベクトルを変換した場合のベクトル  |LX LY LZ 1| LX,LY,LZ・・・平行移動量ベクトル というのは分かるのですが、 X軸、Y軸、Z軸の単位ベクトルを変換した後のベクトルから X軸、Y軸、Z軸にそれぞれ何度ずつ回転させたかを求めるにはどのようにすればよいのでしょうか? つまり、X軸に対して30度、Y軸に対して45度、Z軸に対して60度回転させた後の |XX XY XZ 0| |YX YY YZ 0| |ZX ZY ZZ 0| |LX LY LZ 1| の値からX軸に対して30度、Y軸に対して45度、Z軸に対して60度回転している事を導きたいのです。 分かる方教えてください。 お願いします。 (質問に関して、 http://www.ceres.dti.ne.jp/~ykuroda/oyaj/bone/basic3d.html を参考にさせていただきました。)