月別アーカイブ: 2020年8月

ユニバーサルジョイントの使い方(23) – 3つの軸が同一平面に存在しない場合の角速度の変動(MPギアの場合)

ユニバーサルジョイントの3つの軸が平面にない場合の角速度の変動を前回求めました。簡単におさらいすると、3つの軸が同一平面上にあり、駆動面の角速度を\(\omega\)としたときの最終伝達面の角速度

\(\frac{d\xi}{dt}= \frac{\omega\cdot cos(\alpha)\cdot cos(\beta) }{{cos}^2(\omega t)+{sin}^2(\omega t)\cdot {cos}^2(\alpha) – (cos(\omega t)\cdot cos(\delta)-sin(\omega t)\cdot cos(\alpha)\cdot sin(\delta))^2\cdot{sin}^2(\beta)}\)

において、\(\delta\)を\(\delta-\eta\)で読み替えたものが、最終伝達面の角速度となります。

従って、駆動面の角速度に対する最終伝達面の角速度の比は、

\(\frac{cos(\alpha)\cdot cos(\beta) }{{cos}^2(\omega t)+{sin}^2(\omega t)\cdot {cos}^2(\alpha) – (cos(\omega t)\cdot cos(\delta-\eta)-sin(\omega t)\cdot cos(\alpha)\cdot sin(\delta-\eta))^2\cdot{sin}^2(\beta)}\)

で求められます。

今回は、MPギアの場合を例にとり、モーターの軸が台車の軸に対し、\(0mm\)から\(6mm\)まで、\(1.5mm\)刻みで高さが変化したときに、角速度比がどのように変化するかを計算します。

MPギアでは、3つの軸が同一平面に置かれることを想定していると理解しており、ここでの議論そのものに意味はないかと思いますが、全体の傾向を把握するために結果を示すものです。

まず、下の図に座標の求め方を記しました。曲線の中心\(O_r\)を原点とすると、\(A\)、\(B\)、\(C\)、\(D\)は、次のように計算することができます。三角関数が理解できていれば簡単に導出できますので、詳しい説明は省略します。

\(A = (0,r\cdot sin(\theta), h)\)

\(B=(-l_1, r\cdot sin(\theta), h)\)

\(C=(-w+l_2\cdot sin(\theta), r\cdot sin(\theta)+l_2\cdot cos(\theta), h)\)

\(D=(-w, r\cdot sin(\theta), h)\)

以前示したエンドウのモハ185の寸法において、600Rで角速度比がどのように変動するかを示したのが次のグラフです。

R=500の場合を示します。

いずれのグラフを見ても、\(h\)が増えると、角速度の変動の比率が急激に大きくなること、逆位相の場合は特に顕著に大きくなること、が分ります。

これまで繰り返してきた、「ユニバーサルジョイントは必ず同位相で使うこと」、に加え、「ユニバーサルジョイントは必ず同一平面上に存在するように高さを調整すること」、が必要であると言えます。

最後に、\(h\)の変動に伴って、\(\eta\)がどのように変動するかの図を参考に示します。

ユニバーサルジョイントの使い方(22) – 2つのベクトルのなす角と外積とを使って解析に必要な角度を求める

2020/8/30追記。 Tavataさんにいただいたコメントを参考に追記しました。

前回説明した2つのベクトルのなす角度および外積を利用し、3つの軸が同一平面上にないユニバーサルジョイントの解析に必要となる\(\alpha\)、\(\beta\)、\(\eta\)の計算方法を考察してゆきます。

以前示した図ですが、ユニバーサルジョイントは3つの軸で構成され、4つの点\(A\)、\(B\)、\(C\)、\(D\)で規定されます。軸\(AB\)が軸\(BC\)に動力を伝え、軸\(BC\)が軸\(CD\)に動力を伝えるものとします。

このとき、\(B\)を通り\(AB\)に垂直な赤い円を含む平面が駆動面、\(B\)を通り\(BC\)に垂直な緑の円を含む平面が伝達面、となります。駆動面に対する伝達面の傾き\(\alpha\)は、ベクトル\(\vec{AB}\)とベクトル\(\vec{BC}\)とのなす角度として求めることができます。

\(cos(\alpha)=\frac{\vec{AB}\cdot\vec{BC}}{|\vec{AB}|\cdot|\vec{BC}|}\)

同じ議論が中継面と最終伝達面に関しても成り立ちます。\(C\)を通り\(BC\)に垂直な緑の円を含む平面が中継面、\(C\)を通り\(CD\)に垂直な青い円を含む平面が最終伝達面、となります。ベクトル\(\vec{BC}\)とベクトル\(\vec{CD}\)とのなす角度が中継面に対する最終伝達面の傾き\(\beta\)となります。

\(cos(\beta)=\frac{\vec{BC}\cdot\vec{CD}}{|\vec{BC}|\cdot|\vec{CD}|}\)

これらの4つのベクトルと、\(\alpha\)、\(\beta\)の関係を念のために次に示します。

次に\(\eta\)を求めます。これは、駆動面および伝達面を回転する点の回転角の基準となる線(赤の一点鎖線)に対して、中継面と最終伝達面を回転する点の回転角の基準となる線(青の一点鎖線)がどれだけ回転しているかを表す角度です。

駆動面および伝達面を回転する点の回転角の基準となる線は\(AB\)および\(BC\)に垂直であることを思い出せば、\(\vec{AB}\)と\(\vec{BC}\)の外積\(\vec{AB}\times\vec{BC}\)を基準線として利用することができます。同様に、中継面と最終伝達面を回転する点の回転角の基準となる線として、\(\vec{BC}\)と\(\vec{CD}\)との外積\(\vec{BC}\times\vec{CD}\)を利用することができます。

これらの関係を下の図に示します。なお、今回の議論ではベクトルの外積の向きにだけ興味がありますので、ベクトルの大きさは必ずしも正しくありません。

\(\eta\)を求めるには、\(\vec{AB}\times\vec{BA}\)と\(\vec{BC}\times\vec{CD}\)とのなす角\(\eta_{abs}\)を求め、\(\vec{AB}\times\vec{BA}\)に対する\(\vec{BC}\times\vec{CD}\)の回転方向に応じて符号を与えることが必要です。

まず、\(\eta_{abs}\)は次の式を使って求める事ができます。

\(cos(\eta_{abs})=\frac{(\vec{AB}\times\vec{BC})\cdot(\vec{BC}\times\vec{CD})}{|\vec{AB}\times\vec{BC}|\cdot|\vec{BC}\times\vec{CD}|}\)

\(BC\)と垂直な2つのベクトル\(\vec{AB}\times\vec{BA}\)と\(\vec{BC}\times\vec{CD}\)の外積ベクトル\((\vec{AB}\times\vec{BA})\times(\vec{BC}\times\vec{CD})\)を求めると、\(\vec{BC}\)か\(\vec{CB}\)かのいずれかと同じ向きを向くベクトルとなります。

\((\vec{AB}\times\vec{BA})\times(\vec{BC}\times\vec{CD})\)と\(\vec{BC}\)との内積が、正、負に応じて、\((\vec{AB}\times\vec{BA})\times(\vec{BC}\times\vec{CD})\)はそれぞれ、\(\vec{BC}\)、\(\vec{CB}\)と同じ向きとなります。

\((\vec{AB}\times\vec{BA})\times(\vec{BC}\times\vec{CD})\)が\(\vec{BC}\)と同じ方向の場合、\(\vec{BC}\)の方向にネジを締める向きに\(\vec{AB}\times\vec{BA}\)を回転すれば、\(\vec{BC}\times\vec{CD}\)と同じ向きとなりますので、\(\eta=\eta_{abs}\)とします。さもなくば、\(\eta=-\eta_{abs}\)とします。

2つのベクトルが同じ向きかを調べる方法はいくつか考えられますが、ここでは以下の方法をとります。

2つのベクトルが同じ向き(反対向き)の場合は、2つのベクトルのなす角は\(0\)(\(\pi\))となり、そのなす角の余弦(\(cos\))は1(-1)となります。2つのベクトルの内積を、2つのベクトルの長さの積で割ったものは、2つのベクトルのなす角の余弦(\(cos\))となることを思い出せば、

\(\eta=\eta_{abs}\cdot\frac{((\vec{AB}\times\vec{BA})\times(\vec{BC}\times\vec{CD}))\cdot\vec{BC}}{|(\vec{AB}\times\vec{BA})\times(\vec{BC}\times\vec{CD})|\cdot|\vec{BC}|}\)

となります。

最初に示した図の場合では、\((\vec{AB}\times\vec{BA})\times(\vec{BC}\times\vec{CD})\)は\(\vec{CB}\)と同じ向きを向きますので、\(\vec{AB}\times\vec{BA}\)と\(\vec{BC}\times\vec{CD}\)とのなす角\(\eta_{abs}\)に\(-1\)をかけたものが\(\eta\)となります。

これを図示したのが下となります。この時、中継面の基準点の角度\(\varphi’\)と最終伝達面の基準点の角度\(\xi\)との間の関係式は、次のようになります。

\(tan(\xi) = -\frac{1}{tan(\varphi’-(-\eta))}\cdot\frac{1}{cos(\beta)}\)

最初に示した図からは、次のような図を連想するかと思いますが、上の図とは随分と様子が異なります。これはどういうことでしょうか。

この図では、中継面の基準点の角度\({\varphi_1}’\)と最終伝達面の基準点の角度\(\xi\)との間には次の関係が成り立ちます。

\(tan(\xi) = -\frac{1}{tan({\varphi_1}’-\eta_1)}\cdot\frac{1}{cos(\beta)}\)

\({\varphi_1}’=\varphi’-\pi\)、\(\eta_1=\pi-\eta\)ですので、これを上の式に代入すると、

\(tan(\xi) = -\frac{1}{tan(\varphi’-2\pi-\eta)}\cdot\frac{1}{cos(\beta)}\)

となります。三角関数の周期性から\(tan(\theta-\pi) = tan(\theta)\)ですので、この式は

\(tan(\xi) = -\frac{1}{tan(\varphi’-\eta)}\cdot\frac{1}{cos(\beta)}\)

となり、先ほど図の説明で示した式そのものです。つまり、上の2つの図は見た目は異なりますが、実は全く同じ計算をしていることになります。

あるいは直感的には、\(\vec{BC}\times\vec{CD}\)を起点に、反時計回りに\(\eta\)と\(\varphi’\)の角度の和の\(tan\)を求めるわけですが、これが一回り以上していますので、その一回り分の\(2\pi\)を差し引くというのが、\(tan(\varphi’-\eta-2\pi)\)という式に表れてくる、と考えることもできます。

ユニバーサルジョイントの3つの軸が同一平面にある場合は、作図によって、わかりやすい方向を人間が考えて式をたてることができました。3つの軸が同一平面にない場合は、ここで説明したようなベクトルの演算で解析を行いました。ベクトルの向きを厳密にしかし一貫性のあるように、扱うことになったと言えます。


念のため今までの議論による計算方法を示します。これまでの議論をもとに、計算に集中できるようにした式ですので、冗長な記述となっている点をご了解ください。

まず、\(A\)、\(B\)、\(C\)、\(D\)の座標をそれぞれ\(A=(a_x,a_y,a_z)\)、\(B=(b_x,b_y,b_z)\)、\(C=(c_x,c_y,c_z)\)、\(D=(d_x,d_y,d_z)\)とします。原点をどのように設定しても結果は変わりませんので、考えやすい点を原点として座標を決めれば大丈夫です。

すると、

\(\vec{AB}=(b_x-a_x, b_y-a_y, b_z-a_z)\)

\(\vec{BC}=(c_x-b_x, c_y-b_y, c_z-b_z)\)

\(\vec{CD}=(d_x-c_x, d_y-c_y, d_z-c_z)\)

となります。式が複雑になるので、以下

\(\vec{AB}=(b_x-a_x, b_y-a_y, b_z-a_z)=(ab_x, ab_y,ab_z)\)

\(\vec{BC}=(c_x-b_x, c_y-b_y, c_z-b_z)=(bc_x,bc_y,bc_z)\)

\(\vec{CD}=(d_x-c_x, c_y-c_y, d_z-c_z)=(cd_x,cd_y,cd_z)\)

と置きます。

\(\alpha\)、\(\beta\)はこれらから

\(\alpha=cos^{-1}(\frac{ab_x\cdot bc_x+ab_y\cdot bc_y+ab_z\cdot bc_z}{\sqrt{{ab_x}^2+ {ab_y}^2+ {ab_z}^2}\cdot\sqrt{{bc_x}^2+ {bc_y}^2+ {bc_z}^2}})\)

\( \beta=cos^{-1}(\frac{bc_x\cdot cd_x+bc_y\cdot cd_y+bc_z\cdot cd_z}{\sqrt{{bc_x}^2+ {bc_y}^2+ {bc_z}^2}\cdot\sqrt{{cd_x}^2+ {cd_y}^2+ {cd_z}^2}})\)

と求めることができます。

次に、\(\vec{AB}\)と\(\vec{BC}\)との外積、\(\vec{BC}\)と\(\vec{CD}\)との外積、を求めます。

\(\vec{AB}\times\vec{BC} = (ab_y\cdot bc_z-ab_z\cdot bc_y, ab_z\cdot bc_x-ab_x\cdot bc_z, ab_x\cdot bc_y-ab_y\cdot bc_x)\)

\(\vec{BC}\times\vec{CD} = (bc_y\cdot cd_z-bc_z\cdot cd_y, bc_z\cdot cd_x-bc_x\cdot cd_z, bc_x\cdot cd_y-bc_y\cdot cd_x)\)

式が複雑にならないよう、

\(\vec{AB}\times\vec{BC} = (ab_y\cdot bc_z-ab_z\cdot bc_y, ab_z\cdot bc_x-ab_x\cdot bc_z, ab_x\cdot bc_y-ab_y\cdot bc_x)\)

\(=(abc_x,abc_y,abc_z)\)

\(\vec{BC}\times\vec{CD} = (bc_y\cdot cd_z-bc_z\cdot cd_y, bc_z\cdot cd_x-bc_x\cdot cd_z, bc_x\cdot cd_y-bc_y\cdot cd_x)\)

\(=(bcd_x,bcd_y,bcd_z)\)

と置きます。

すると、\(\vec{AB}\times\vec{BC}\)と\(\vec{BC}\times\vec{CD}\)とのなす角\(\eta\)の絶対値は、

\(|\eta| = cos^{-1}(\frac{abc_x\cdot bcd_x+abc_y\cdot bcd_y+abc_z\cdot bcd_z}{\sqrt{{abc_x}^2+ {abc_y}^2+ {abc_z}^2}\cdot\sqrt{{bcd_x}^2+ {bcd_y}^2+ {bcd_z}^2}})\)

となります。

\(\vec{AB}\times\vec{BC}\)と\(\vec{BC}\times\vec{CD}\)との外積は、次のように計算できます。

\((\vec{AB}\times\vec{BC})\times(\vec{BC}\times\vec{CD}) = \)

\((abc_y\cdot bcd_z-abc_z\cdot bcd_y, abc_z\cdot bcd_x-abc_x\cdot bcd_z, abc_x\cdot bcd_y-abc_y\cdot bcd_x)\)

\(\vec{AB}\times\vec{BC})\times(\vec{BC}\times\vec{CD})\)と\(\vec{BC}\)との内積を計算します。

\((\vec{AB}\times\vec{BC})\times(\vec{BC}\times\vec{CD})\cdot\vec{BC}=\)

\(((abc_y\cdot bcd_z-abc_z\cdot bcd_y)\cdot bc_x,(abc_z\cdot bcd_x-abc_x\cdot bcd_z)\cdot bc_y, (abc_x\cdot bcd_y-abc_y\cdot bcd_x)\cdot bc_z)\)

先ほどはこの値を2つのベクトルの長さの積で割り、2つのベクトルの余弦を求めましたが、数値計算の誤差が出る場合があるので、上の値の符号で判定する方が現実的かと思います。

従って、上記の内積が正であれば、

\(\eta=cos^{-1}(\frac{abc_x\cdot bcd_x+abc_y\cdot bcd_y+abc_z\cdot bcd_z}{\sqrt{{abc_x}^2+ {abc_y}^2+ {abc_z}^2}\cdot\sqrt{{bcd_x}^2+ {bcd_y}^2+ {bcd_z}^2}})\)

上記の内積が負であれば、

\(\eta=-cos^{-1}(\frac{abc_x\cdot bcd_x+abc_y\cdot bcd_y+abc_z\cdot bcd_z}{\sqrt{{abc_x}^2+ {abc_y}^2+ {abc_z}^2}\cdot\sqrt{{bcd_x}^2+ {bcd_y}^2+ {bcd_z}^2}})\)

となります。

次回は、この結果を使って実際の数値を当てはめる予定です。

ユニバーサルジョイントの使い方(21) – 2つのベクトルのなす角度と外積

ユニバーサルジョイントの3つの軸が同一平面上にない場合の解析の基本的考え方を前回明らかにしました。3つの軸が同一平面上にある場合は、作図によって角度等の関係の式を簡単かつ直感的に求めることができますが、そうでない場合は、3次元空間で軸の位置を考える必要があり、作図して求めるには困難が予想されます。

作図に頼らずに機械的に計算ができるよう、以下に説明するベクトルに関する2つの概念を用いることとします。いずれも数学の基礎的な概念ですので、いろいろな説明がネット上に存在します。必要に応じて検索していただき、わかりやすい説明があれば、そちらもご確認ください。

まず、ベクトル\(\vec{a}=(a_x,a_y,a_z)\)と、ベクトル\(\vec{b}=(b_x,b_y,b_z)\)とのなす角度\(\theta\)に関して次の関係が成り立つことを利用します。ただし、\(0\le\theta\le\pi\)とします。

\(cos(\theta) = \frac{{a_x}\cdot{b_x}+{a_y}\cdot{b_y}+{a_z}\cdot{b_z}}{\sqrt{{a_x}^2+{a_y}^2+{a_z}^2}\cdot\sqrt{{b_x}^2+{b_y}^2+{b_z}^2}}\)

ベクトル\(\vec{a}=(a_x,a_y,a_z)\)と、ベクトル\(\vec{b}=(b_x,b_y,b_z)\)との内積が

\(\vec{a}\cdot\vec{b} = a_x\cdot b_x + a_y\cdot b_y + a_z\cdot b_z\)

であること、ベクトル\(\vec{a}=(a_x,a_y,a_z)\)の長さ\(|\vec{a}|\)は内積演算を用いると

\(|\vec{a}| = \sqrt{\vec{a}\cdot\vec{a}}\)

であることを利用すれば、上記の式は

\(cos(\theta) = \frac{\vec{a}\cdot\vec{b}}{|{\vec{a}}|\cdot|{\vec{b}}|}\)

と表すこともできます。

次に、ベクトルの外積という概念を利用します。\(\vec{A}=(a_x,a_y,a_z)\)と、ベクトル\(\vec{B}=(b_x,b_y,b_z)\)とがあったときに、次の計算で得られるベクトル\(\vec{A}\times\vec{B}\)を\(\vec{A}\)と\(\vec{B}\)との外積ベクトルと呼びます。この外積ベクトルは\(\vec{A}\)と\(\vec{B}\)との両方に垂直であるという重要な性質を持ちます。

\(\vec{A}\times\vec{B} = (a_y\cdot b_z – a_z\cdot b_y, a_z\cdot b_x – a_x\cdot b_z, a_x\cdot b_y – a_y\cdot b_x)\)

さて、ベクトル\(\vec{A}\)とベクトル\(\vec{B}\)とに垂直なベクトルの向きは3次元空間では2つ考えることができます。\(0<\theta<\pi\)となるような\(\theta\)角度だけ(右)ネジを締める方向にベクトル\(\vec{A}\)を回転させて、ベクトル\(B\)に重ねることができる場合を考えます。このネジが進む方向のベクトルが、外積ベクトルとなります。

あるいは、ベクトル\(\vec{A}\)とベクトル\(\vec{B}\)とを\(xy\)平面に置き、ベクトル\(\vec{A}\)を\(x\)軸の正の方向に向け、このベクトルを反時計回りに\(\theta\)回転させたときに、ベクトル\(\vec{B}\)に重ねることができる場合、外積ベクトル\(\vec{A}\times\vec{B}\)は、\(z\)軸の正の方向を向きます。

参考までに、ベクトル\(\vec{A}\)とベクトル\(\vec{B}\)とに垂直なもう一方のベクトルは、\(\vec{B}\times\vec{A}\)を計算すれば求めることができます。

なお、ベクトル\(\vec{A}\)とベクトル\(\vec{B}\)とが同じ方向を向き、\(\theta=0\)となる場合、およびベクトル\(\vec{A}\)とベクトル\(\vec{B}\)とが反対の方向を向き、\(\theta=\pi\)となる場合は、二つのベクトルの外積\(\vec{A}\times\vec{B}\)は\(0\)ベクトル\((0, 0, 0)\)となります。

また、外積ベクトルの長さは2つのベクトルがなす平行四辺形の面積に等いという重要な性質がありますが、今回はこの性質は使いませんので、以下では触れませんが、この性質を式で表すと、

\(|\vec{A}\cdot\vec{B}| = |\vec{A}|\cdot|\vec{B}|\cdot sin(\theta)\)

ここまで述べたことを簡単に絵にまとめました。