cohen

cohen

A man who want to make the world better.

南科大高等ロボット制御コースノート - ツイスト(空間速度)

私たちの現実のほとんどのロボットは剛体の組み合わせとして見ることができるので、まず剛体の速度について議論します。

物理量と数値の関係と違い#

物理の抽象的な世界では、私たちは実際に存在する二つのもの、すなわち点とベクトルがあると考えます。

点は物理世界における物理量の抽象的な表現であり、任意の座標系に依存せずに存在します。

剛体の位置は抽象的に一点として表現できます。座標系を構築するかどうか、またどのような座標系を構築するかに関わらず、ロボットの位置は変わりません。剛体自体が静止している限り、その物理世界における位置(点)は固定されています。

ベクトルもまた物理世界における物理量の抽象的な表現ですが、点とは異なり、大きさと方向を持ちます。

剛体の速度や加速度はベクトルです。同様に、座標系がどのように変わっても、速度と加速度が表すベクトルは変わりません。

ここで注意すべき点は、私が言っている座標系と高校物理で学んだ参照系は同じではないということです。
![[ロボット研究における座標系と参照系の違いと関係 #移動ロボットの例]]

物理法則を使用して物理量を表現し計算する際、物理量の具体的な大きさには関心がなく、物理量間の関係にのみ関心がある場合、座標系も数値も必要ありません。

質点 $b$ が空間で運動している場合、私たちはその速度を vbv_b というベクトルで表現できます。また、速度の合成と分解という物理法則を使用して、任意の二つのベクトルを選び、vb1+vb2=vbv_{b_1} + v_{b_2} = v_b を満たすようにします。
質点 bb は速度 vbv_b を持ち、vb|v_b| の大きさで vbv_b の方向に沿って運動しています。
また、質点 bb は二つの速度 vb1v_{b_1}vb2v_{b_2} を持つとも言えます。

上記の例では、座標系や数値を使用せず、物理法則を用いて三つのベクトル間の関係を記号で表現し、それらの物理的意味を説明しました。

点とベクトルに関して、私たちは常に適用する際に点がどこにあるのか、ベクトルの大きさはどれくらいか、ベクトルの方向は何かに関心を持つ必要があります。

実際の応用プロセスでは、もちろんロボットの位置がどこにあるのか、ロボットの速度がどれくらいか、どの方向に運動しているのかを知りたいと思います。

この時、私たちは座標系を定義する必要があります。座標系があれば、私たちは物理量を数値で表現できるようになります。

剛体の速度#

まず、剛体の速度とは何かを明確にする必要があります。

この授業を学ぶ前、私の剛体速度に対する直感的理解は、剛体の質心の速度と剛体が質心を中心に回転する角速度であり、これらが統合されて剛体の速度になるというものでした。

これは明らかに不十分な理解なので、ここで剛体の速度を定義する必要があります。

まず、剛体は無限に多くの点から構成されていることを知っています。また、剛体内のこれらの点の速度は、その剛体内での位置や他のパラメータ(例えば、剛体が軸を中心に回転する角速度)に依存しています。

したがって、剛体内の任意の点 pip_i の速度を vpi=f(pi,parameters)v_{p_i}=f(p_i, \text{parameters}) の形で表現できます。

この形に基づいて、剛体の速度はここでの parameters\text{parameters} です。

言い換えれば、剛体の速度と剛体上の一点の座標がわかれば、その点の速度を計算できます。

実際には、私たちは通常、剛体の速度には関心がありません。私たちは、アームの先端の速度、車両の幾何学的中心の速度、四足ロボットの体の中心点の速度などに関心があります。
しかし、最初に剛体の速度を計算すれば、私たちが求めるすべての点の速度を非常に簡単に計算できます。
逆に、最初に一点だけを計算し、後で他の点を計算したい場合は、面倒で混乱することになります。

もちろん、ここまでの説明はあまりにも抽象的です。次に、私たちは一歩一歩拡張し、説明していきます。最終的には空間速度に至ります。

image

図 1 のように、剛体は固定軸を中心に回転しています。私たちは回転軸上の剛体内の一点 p0p_0 を基準点として選びます。高校物理での角速度と線速度の関係に基づいて、剛体内の任意の点 pip_i に対して、vpi=ω×p0piv_{p_i}=\omega \times \overrightarrow{p_0p_i} であることがわかります。

次に、私たちの議論をより普遍的にするために、一歩前進します。剛体の回転軸が固定されておらず、運動していると仮定します。

image

p0p_0 は依然として剛体内の回転軸上の一点であり、私たちは p0p_0 を質点の速度を表す基準点として選びます。剛体内の任意の点 pip_i に対して、vpi=vp0+ω×p0piv_{p_i}=v_{p_0} + \omega \times \overrightarrow{p_0p_i} となります。

再度お知らせしますが、私たちの現在の説明はベクトル間の関係に関するものであり、したがって、いかなる座標系にも関与せず、同時にこれらの関係は任意の座標系で成り立ちます。

物理的な意味から、vpi=vp0+ω×p0piv_{p_i}=v_{p_0} + \omega \times \overrightarrow{p_0p_i} がどのように導かれるかを見てみましょう。

まず、本質的に一点の速度はその点の位置の変化、すなわちその導関数であり、vpi=pi˙v_{p_i}=\dot{p_i} です。同様に、vp0=p0˙v_{p_0}=\dot{p_0} です。

次に、理解を容易にするために、座標系の原点 oo を設定します。ベクトル合成の原則に基づいて(そう、あなたは間違っていません、これは物理法則です!数学的ルールではありません)、必然的に opi=op0+p0pi\overrightarrow{op_i}=\overrightarrow{op_0}+\overrightarrow{p_0p_i} となります。

また、剛体が運動しているため、点 pip0p_i \text{, } p_0 は時間とともに変化します。そして、任意の時刻 tt において opi(t)=op0(t)+p0pi(t)\overrightarrow{op_i}(t)=\overrightarrow{op_0}(t)+\overrightarrow{p_0p_i}(t) が成り立ちます。

後の記号表現において pip_iopi\overrightarrow{op_i} は同じ意味であり、pip_i を使用するのは、座標系に依存しないことを強調するためです。それ自体や他のベクトル、点との関係は座標系に関係ありません。

したがって、pi(t)=p0(t)+p0pi(t)p_i(t)=p_0(t)+\overrightarrow{p_0p_i}(t) となり、等号の両辺を同時に微分すると pi˙=p0˙+(p0pi)\dot{p_i}=\dot{p_0}+(\overrightarrow{p_0p_i})' となります。最終的に、vpi=vp0+ω×p0piv_{p_i}=v_{p_0} + \omega \times \overrightarrow{p_0p_i} を得ます。

(p0pi)(\overrightarrow{p_0p_i})' の中の p0pi\overrightarrow{p_0p_i} の長さは常に変わりません(なぜなら、これらの二つの点は剛体内にあり、剛体は変形しないからです)。方向だけが変わります。
ベクトル p0pi\overrightarrow{p_0p_i} の導関数は ω×p0pi\omega \times \overrightarrow{p_0p_i} です。
物理的な意味から理解すると、ω×p0pi\omega \times \overrightarrow{p_0p_i}pip_i という点が角速度 ω\omega によってもたらされる線速度です。
{ps: 図を描いて基本的な定義公式を使うことで、この点を理解するのは非常に簡単です}。

私たちは、vpi=vp0+ω×p0piv_{p_i}=v_{p_0} + \omega \times \overrightarrow{p_0p_i}vpi=ω×p0piv_{p_i}= \omega \times \overrightarrow{p_0p_i} の違いは、vp0=0v_{p_0}=0 かどうかです。

したがって、剛体が空間で純粋に転がっているかどうかに関わらず、剛体内の任意の一点の速度と基準点 p0p_0 の速度との関係は vpi=vp0+ω×p0pi v_{p_i}=v_{p_0} + \omega \times \overrightarrow{p_0p_i} を満たします。

vpi=vp0+ω×p0piv_{p_i}=v_{p_0} + \omega \times \overrightarrow{p_0p_i} と隠れた関数の表現 vpi=f(pi,parameters)v_{p_i}=f(p_i, \text{parameters}) を組み合わせると、剛体の速度の定義に基づいて、この時の剛体の速度は (vp0ω)(v_{p_0}\text{, }\omega) であることがわかります。

前述を振り返ると:
私たちは剛体内の任意の点 pip_i の速度を vpi=f(pi,parameters)v_{p_i}=f(p_i, \text{parameters}) の形で表現できます。この形に基づいて、剛体の速度はその中の parameters\text{parameters} です。

image

図 2 のように、私たちは次のステップに進みます。剛体上の任意の点 qq を速度を表現する基準点として選びます。

このステップの意義は、剛体の速度の表現において基準点の選択範囲を広げ、基準点を必ずしも回転軸上に選ぶ必要はないことを証明することです。

回転軸上に基準点を選ぶことは便利ですが、基準点が回転する問題を考慮する必要がありません。

しかし、実際の工学では、私たちは多くの場合、回転軸の速度を直接取得することができません。
私たちは、測定速度のセンサーを機械の適切な位置に配置することしかできず、常に回転軸に取り付けることはできません。

CallBack:
剛体の速度と剛体上の一点の座標がわかれば、その点の速度を計算できます。
より広範囲に基準点を選択できるようにすることで、多くの不完全な現実の状況の中でも、剛体の速度をうまく計算できるようになります。

したがって、vpi=vq+ω×qpi v_{p_i}=v_{q} + \omega \times \overrightarrow{qp_i} となります。
私たちは物理法則を使用して、この式がどのように導かれるかをさらに推導します。

qq に対して、vq=vp0+ω×p0q(3) v_{q}=v_{p_0} + \omega \times \overrightarrow{p_0q} \quad\text{(3)}
pip_i に対して、vpi=vp0+ω×p0pi(4) v_{p_i}=v_{p_0} + \omega \times \overrightarrow{p_0p_i} \quad\text{(4)}

(4)(3)(4) - (3) を得ると、

vpi=vq+ω×p0piω×p0qvpi=vq+ω×(p0pip0q)vpi=vq+ω×qpi\begin{gathered} v_{p_i}=v_{q} + \omega \times \overrightarrow{p_0p_i} - \omega \times \overrightarrow{p_0q} \\ v_{p_i}=v_{q} + \omega \times (\overrightarrow{p_0p_i} - \overrightarrow{p_0q}) \\ v_{p_i}=v_{q} + \omega \times \overrightarrow{qp_i} \end{gathered}

同様に、剛体の速度の定義に基づいて、この時の剛体の速度は (vqω)(v_{q}\text{, }\omega) です。

CallBack:
私たちは剛体内の任意の点 pip_i の速度を vpi=f(pi,parameters)v_{p_i}=f(p_i, \text{parameters}) の形で表現できます。この形に基づいて、剛体の速度はその中の parameters\text{parameters} です。

さて、ここまで来たら、すべての基礎部分を完成させました。

image

次に重要な第三歩に進む必要があります。図 3 のように、剛体の外部にランダムに選定された body-fixed の点 qq' を選びます。

このステップの意義は、剛体の速度の表現において基準点の選択範囲をさらに広げ、基準点を必ずしも剛体上に選ぶ必要はなく、body-fixed であればよいことを証明することです。

第二ステップでは剛体上の任意の一点を選びましたが、今回は剛体の外部にある body-fixed の任意の点を選びます。この二つは全く同じ意味を持ち、その鍵は body-fixed です。

ここでは、物理学の「場」の概念を用いて body-fixed を理解するのに役立ちます。
例えば、磁石の磁場の中で、点 A を選定すると、その点は磁石上にはありませんが、磁石の運動に従って運動します。これがいわゆる body-fixed です。

したがって、第二ステップの結果に基づいて、vpi=vq+ω×qpi(5) v_{p_i}=v_{q'} + \omega \times \overrightarrow{q'p_i} \quad\text{(5)} を得ます。
再度繰り返しますが、この時の図中の剛体の速度は (vq,ω)(v_{q'}, \omega) です。

さて、最終的な第四歩に進みましょう:剛体の速度の表現において基準点の選択範囲を極限まで広げ、基準点が必ずしも body-fixed である必要はなく、任意の点であってもよいことを証明します。動いていても静止していても、body-fixed でなくても構いません。

image

私たちは座標系 {A}\{A\} を選び、常に body-fixed の点が座標系 {A}\{A\} の原点 OAO_A と重なることを言えます。

私たちは定義します:数学記号 vOA(t)v_{O_A}(t) は時刻 t において点 OAO_A と重なる body-fixed の点 qq' の速度を表します。

この文は重要です。記号 vOA(t)v_{O_A}(t) は時刻 t において点 OAO_A と重なる body-fixed の点 qq' の速度を表します。

OAO_A の速度ではなく、点 OAO_A の速度には関心がありません。どれだけの速度であっても関係ありません。

したがって、式 (5) に基づいて、vqv_{q'}vOAv_{O_A} に置き換えます。vpi=vOA+ω×OApi(6) v_{p_i}=v_{O_A} + \omega \times \overrightarrow{O_Ap_i} \quad\text{(6)}
また、点 OAO_A は原点であるため、** 座標系 {A}\{A\} においてこの式を表現すると、Avpi=AvOA+Aω×AOApi(6)^{A}v_{p_i}=^{A}v_{O_A} + ^{A}\omega \times ^{A}\overrightarrow{O_Ap_i} \quad\text{(6)} となります。
Avpi=AvOA+Aω×Api(7)^{A}v_{p_i}=^{A}v_{O_A} + ^{A}\omega \times ^{A}p_i \quad\text{(7)}

最後に、剛体の速度の定義に基づいて、この時の剛体の速度は (vOA,ω)(v_{O_A}, \omega) です。

あなたは感じているはずです。この (vOA,ω)(v_{O_A}, \omega) は直感に反しており、剛体の質心が XYZ 方向に持つ速度と XYZ 周りの角速度の組み合わせではありません。それは「剛体の速度とはあまり似ていない」ように感じます......
直感の犠牲は価値があります。この概念があれば、後で多剛体構造のロボットの正逆運動学を計算する際に非常に便利です。

教科書では (vOA,ω)(v_{O_A}, \omega) を spatial velocity または旋量(twist)と呼びます。

ここまで来ると、まだ少し混乱しているかもしれません。さらに二つの例を挙げてみましょう。

image

ω=50rad/s\omega = 50 \> rad/sOBOA=0.04|\overrightarrow{O_BO_A}| = 0.04 とします。ここで座標系 {A}\{A\} は固定された世界座標系であり、座標系 {B}\{B\} は円錐と共に回転します。

注意:ω=50rad/s\omega = 50 rad/s は円錐が世界座標系に対して持つ角速度を意味します。

まず、座標系 {A}\{A\} における円錐の旋量は:Aν=(AωAvOA)^{A}\nu=\left( \begin{array} {ccc} ^{A}\omega\\ ^{A}v_{O_A} \end{array} \right) です。
ここで自然に、Aω=(0050)^{A}\omega = \left( \begin{array} {ccc} 0\\ 0 \\ 50 \end{array} \right) です。次に AvOA^{A}v_{O_A} はいくらでしょうか?

CallBack:
記号 vOA(t)v_{O_A}(t) は時刻 t において点 OAO_A と重なる body-fixed の点 qq' の速度を表します。

したがって、私たちはこの body-fixed の点 qq' を直接見つけることができます。

body-fixed の点と剛体上の点は全く同じ意味を持ち、どちらも剛体の運動に従って運動します。

したがって、剛体上の点 qq' の速度はどう求めるか? 直接式 (5) を適用します。vq=vr+ω×rq v_{q'}=v_{r} + \omega \times \overrightarrow{rq'}
ここで vrv_r は基準点の速度であり、rr は基準点です。

注意:速度 vv と旋量 ν\nu は異なることに注意してください。

私たちは便利な基準点 OBO_B を選んで vqv_{q'} を簡単に求めることができます。なぜなら、vOBv_{O_B} がゼロであることがわかっているからです。

円錐は回転しているだけで、平行移動はしていないため、vOBv_{O_B} はゼロです。ps:この vOBv_{O_B} は剛体上の body-fixed の点 OBO_B の速度を指します。
現在、私たちは {A}\{A\} において旋量を表現しているので、vOAv_{O_A} のみが特別です。
再度 CallBack:
記号 vOA(t)v_{O_A}(t) は時刻 t において点 OAO_A と重なる body-fixed の点 qq' の速度を表し、点 OAO_A の速度ではありません。

したがって、私たちは得られます。Avq=AvOB+Aω×AOBq ^{A}v_{q'}=^{A}v_{O_B} + ^{A}\omega \times \overrightarrow{^{A}O_Bq'}
忘れないでください!ここでの $^{A} v_{q'}$ は実際には私たちが定義した AvOA^{A}v_{O_A} です。

AvOA=AvOB+Aω×AOBOAAvOA=Aω×AOBOAAvOA=(0050)×(00.040)AvOA=(200)\begin{align} ^{A}v_{O_A}&=^{A}v_{O_B} + ^{A}\omega \times ^{A}\overrightarrow{O_BO_A} \\ ^{A}v_{O_A}&=^{A}\omega \times ^{A}\overrightarrow{O_BO_A} \\ ^{A}v_{O_A}&= \left( \begin{array} {ccc} 0 \\ 0 \\ 50 \end{array} \right) \times \left( \begin{array} {ccc} 0 \\ -0.04 \\ 0 \end{array} \right) \\ ^{A}v_{O_A}&= \left( \begin{array} {ccc} 2 \\ 0 \\ 0 \end{array} \right) \end{align}

これで、私たちは剛体円錐の速度を旋量で表現し、座標系 {A}\{A\} における表現は Aν=(0050200)^{A}\nu=\left( \begin{array} {ccc} 0 \\ 0 \\ 50 \\ 2 \\ 0 \\ 0 \end{array} \right) となります。
次に、剛体円錐の速度を座標系 {B}\{B\} において表現するとどうなるでしょうか?

CallBack:
注意:ここで表現している円錐の速度は常に世界座標系に対するものです。

私たちはただ異なる座標系でこの既存の物理量を数学的に表現しているだけです。

Bν=(BωBvOA)^{B}\nu=\left( \begin{array} {ccc} ^{B}\omega\\ ^{B}v_{O_A} \end{array} \right)
まず Bω^{B}\omega ですが、図から見ると Aω^{A}\omega は $\widehat {z}$ 周りに回転しており、Bω^{B}\omega は $\widehat {x}$ 軸周りに回転しています。したがって、Bω=(5000)^{B}\omega = \left( \begin{array} {ccc} 50\\ 0 \\ 0 \end{array} \right) です。

図からわかるように、円錐が回転する過程で、この円錐に対して body-fixed のすべての点は常に変わらず、円錐の頂点であり、回転も平行移動もしていません。したがって、BvOA=(000)^{B}v_{O_A} = \left( \begin{array} {ccc} 0\\ 0 \\ 0 \end{array} \right) です。
したがって、Bν=(5000000)^{B}\nu=\left( \begin{array} {ccc} 50\\ 0 \\0 \\0\\0\\0 \end{array} \right) となります。
ここで、重要な知識点である座標変換を導入できます。

私たちはただ異なる座標系で同じ物理ベクトルを表現しているのですから、これらの異なる座標系の表現はどのように変換されるべきかを考える必要があります。これは、私たちが関心のある物理量を計算やコードを書くのに便利な座標系に変換するのに役立ちます。

[[Todo:旋量の座標変換]]

もう一つ、移動ロボットの例を見てみましょう。

image

図は、移動ロボットが回転中心 rr 点を中心に回転している様子を示しています。rr 点は座標系 {s}\{s\} において sr=(2,1,0)^{s}r = (2,-1,0) の座標を持ち、座標系 {b}\{b\} においては br=(2,1.4,0)^{b}r=(2,-1.4,0) です。回転の角速度は ω=2rad/s\omega = 2 \> rad/s です。

図には二つの座標系、世界座標系 {s}\{s\} と車両座標系 {b}\{b\} があり、どちらも右手の法則に従っています。{s}\{s\}zz 軸は紙面の外を指し、座標系 {b}\{b\}zz 軸はその反対を指します。

円錐の例と同様に、まず座標系 {s}\{s\} における旋量 sν=(sωsv)^{s}\nu=\left( \begin{array} {ccc} ^{s}\omega\\ ^{s}v \end{array} \right) を見てみましょう。

ここでの記号 sv^{s}vsvOs^{s}v_{O_s} と同義であり、後続では明示的に必要でない限り sv^{s}v を使用します。

ここで、sω=(002)^{s}\omega = \left( \begin{array} {ccc} 0\\ 0 \\ 2 \end{array} \right) です。

sv=vr+sω×srOssv=0+ω×(sr)sv=(002)×(210)sv=(240)\begin{align}^{s}v &= v_r + ^{s}\omega \times \overrightarrow{^{s}rO_{s}} \\^{s}v&=0 + \omega \times (-^{s}r) \\^{s}v&= \left( \begin{array} {ccc} 0\\ 0 \\ 2 \end{array} \right) \times \left( \begin{array} {ccc} -2\\ 1 \\ 0 \end{array} \right)\\ ^{s}v&= \left( \begin{array} {ccc} -2\\ -4 \\ 0 \end{array} \right)\end{align}

再度計算し、座標系 {b}\{b\} における旋量の値は(過程を手計算して練習してください) bν=(0022.840)^{b}\nu=\left( \begin{array} {ccc} 0\\ 0\\-2\\2.8\\4\\0 \end{array} \right) です。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。