剛体の運動を考えるためにまず必要となるのは,やはり運動方程式を立てることである.方針としては,並進・回転運動する剛体の運動エネルギーを求めて,これをもとにLagrangeの運動方程式を立てることとする.このように進めると,角運動量・慣性モーメントに対応する量が自然と現れるので,慣性モーメントは回転のしにくさを表す量,みたいなふわふわした話からスタートせずにすむ.
剛体の運動エネルギー
ある剛体に固定されたローカルな正規直交座標系をFbとして,基底ベクトルを並べたもの(ベクトリクス)を用いて次のように表す.ここで は,基準となるような正規直交慣性座標系のベクトルであることを表す.
Fb≡⎣⎡b1b2b3⎦⎤
剛体内の質点nの位置は,基準座標系で次のように表すことができる.rnはFb原点から質点nへのベクトルで,rnはこれをFbでのパラメタとして表したもの.ただし,今のところFb原点は剛体の重心である必要はないし,剛体と一緒に動いていれば別に剛体内になくてもかまわない.
Rn=Ro+rn=Ro+FbTrn
これを時間微分すれば質点の速度が得られる.
Vn=Vo+FbTr˙n+F˙bTrn=Vo+FbTr˙n+(ω×FbT)rn
剛体では,Fb内での質点の位置は変化しないのでrn˙=0.よって,質点nの速度は次のように表される.
Vn=Vo+ω×rn
剛体内全ての質点について運動エネルギーを足し合わせて,剛体の運動エネルギーTを求める.ただし,剛体の質量はm=∑nmn,重心はc=∑nmnrnのように表される.
T=21n∑mnvn⋅vn=21n∑mn(Vo+ω×rn)⋅(Vo+ω×rn)=21n∑mnVo⋅Vo+n∑Vo⋅(ω×mnrn)+21n∑mn(rn×ω)T(rn×ω)=21mVo⋅Vo+Vo⋅(ω×c)+21ωT[n∑mn(rn×)T(rn×)]ω=21mVo⋅Vo+Vo⋅(ω×c)+21ωT[n∑mn(I(rn⋅rn)−rnrnT)]ω
ここで,3項目の角速度ベクトルに挟まれた部分を,慣性モーメントJと定義してやれば,剛体の運動エネルギーは次のような形で表すことが出来る.
T=21mVo⋅Vo+Vo⋅(ω×c)+21ωTJω
ちなみに,u×はあるベクトルu=[u1 u2 u3]について,反対称行列(skew symmetric matrix)を作るような操作を表す.具体的な成分は(3)のようになっており,左からベクトルに作用させると外積と同様の結果を返すので,外積を行列の形に変換したものと思えばよい.
u×≡⎣⎡0u3−u2−u30u1u2−u10⎦⎤
剛体のエネルギーは,任意の正規直交で静止した座標系Faで,同等な形に書くことが出来るので確認しておこう.まず,Faと基準座標系の間には次のような関係があるものとする.
r=rTFa, where Fa=[a1 a2 a3]T
また,VoのFaでのパラメタはvoと表すことにする.(小文字にしたのは,見た目的に大文字が鬱陶しい気がしたのと,最終的に原点を剛体のCoMに一致させるのを見越して)
Vo=voTFa=FaTvo
これを(2)に代入する.
T=21m(FaTvo)TFaTvo+(FaTvo)T(FaT(ω×c))+21(FaTω)T(FaTJFa)(FaTω)=21mvoTFaFaTvo+voTFaFaT(ω×c)+21ωTFaFaTJFaFaTω=21mvoTvo+voT(ω×c)+21ωTJω
上の式変形で用いた慣性モーメントの座標変換は,次のように導くことが出来る.
J= n∑mn(I(rn⋅rn)−rnrnT)=n∑mn(I(rn⋅rn)−(FaTrn)(FaTrn)T)=n∑mn(I(rn⋅rn)−FaTrnrnTFa)=FaTn∑mn(I(rn⋅rn)− rnrnT)Fa=FaTJFa
Lagrangeの運動方程式
ここで,座標が剛体に固定されて原点が重心にある(ただし,瞬間瞬間で静止している)とすれば,運動エネルギーは並進エネルギーと回転エネルギーの和というきれいに分離された形で書ける.
T=21mvoTvo+21ωTJω
ポテンシャルをU(r,θ)とすると,ラグランジアンL=T−Uを用いて次のように回転と並進の運動方程式が得られる.
dtd∂vo∂L=∂r∂Ldtd∂ω∂L=∂θ∂L:Equation of Motion for Translation:Equation of Motion for Rotation
並進の運動方程式は,(5)のように運動量の微分と力を等置した形をしている.
mdtdvo=−∂r∂U
回転の運動方程式は,(6)のように角運動量の微分とモーメントを等置した形になる.
dtd(Jω)=−∂θ∂U
最終的にシミュレーションを行うために,角速度ベクトルの微分方程式の形にしたいので(6)をさらに変形しよう.角度に依存したポテンシャル(モーメント)がないとすると右辺はゼロで,左辺は次のように変形できる.
dtd∂ω∂L=dtd(Jω)=dtdJω+Jdtdω=ω×Jω+Jdtdω
ちなみに,Jの時間微分はω×Jではないのだが,以下のようにdtdJω=ω×Jωとなることを確認できる.
J+dJ=n∑mn[I{(rn+ω×rndt)⋅(rn+ω×rndt)}−(rn+ω×rndt)(rn+ω×rndt)T]
dJ=n∑mn[I{rn⋅(ω×rndt)+(ω×rndt)⋅rn}−rn(ω×rndt)T−(ω×rndt)rnT]=n∑mn[I{rnT(ω×rndt)+(ω×rndt)Trn}−rn(ω×rndt)T−(ω×rndt)rnT]=n∑mn[I{rnTω×rndt−rnTω×rndt}+rnrnTω×dt−ω×rnrnTdt]=n∑mn(rnrnTω×−ω×rnrnT)dt
dtdJω=(n∑mn(rnrnTω×−ω×rnrnT))ω=ω×(−n∑mnrnrnT)ωω×Jω= ω×(n∑mn(I(rn⋅rn)− rnrnT))ω=ω×(−n∑mnrnrnT)ω
最終的に回転の運動方程式は次のように表される.
dtdω=−J−1ω×Jω
オイラーの運動方程式
特に,慣性モーメントが(8)のように表される時,(7)を成分ごとに分離した形(9)で表すことができる.これをオイラーの運動方程式(Euler’s Motion Equations)と呼ぶ.
J=⎣⎡J1000J2000J3⎦⎤
dtdω1+J1J3−J2ω2ω3=0dtdω2+J2J1−J3ω3ω1=0dtdω3+J3J2−J1ω1ω2=0
まとめと参考文献
以上で剛体の運動方程式を求めることが出来た.「角運動量の微分はモーメントに等しい」というようなことを前提にして,回転の運動方程式や慣性モーメントを説明していくこともあるようだが,そもそも力学である以上,並進だろうが回転だろうが同じ前提からスタートして説明できなければ,何かしらごまかしがある.ここを曖昧にして,並進運動と回転運動をばらばらに学んでしまうと,混乱の元になると思うのだ.ちなみに,前提をどう取るかはいくつか可能性があり,今回はラグランジュの運動方程式(あるいはラグランジアンを用いた最小作用の原理)を前提とした.ニュートンの運動方程式を前提としても別によいのだが「ラグランジアンを求めて一般化運動量で微分してやれば,並進も回転も同じように得られるよね」という議論のほうがより綺麗で見通しがよいと思う.このあたりの流れはを参考にしている.
もう一点.この記事では座標系を基底ベクトルを並べた形(1)で表しており,おそらくあまり馴染みのない書き方だと思う.テンソルと似てはいるのだが,姿勢運動に関しては基底ベクトルが3次元正規直交な場合だけで十分なので,その分だけ簡略化した表現というイメージだ.座標系をはっきりした形で書くので,座標系がいくつもあって相互に変換が必要な場合などには,混乱がおきにくい.この表現方法や計算のルールに関してはをもとにしているので,さらに詳しく知りたい場合には参照していただきたい.