つかう数学
ロボット工学に使う数学は、ベクトル、行列が主になります。 座標やロボットの状態、関節角度の組を表すためにベクトルを、その変換を行うために行列をつかい、かつ、それらの要素は何らかの関数になります。
そのため、線形代数学で学ぶような数学的な扱いとともに、その演算が意味することをイメージとして理解することが重要になります。 ただの数式としてではなく、意味合いを覚えるようにしましょう。
四則演算ができない→小学校
文字、変数の概念がわからない→中学、高校
連立一次方程式が解けない→中学校、高校
計算ミスが多い→練習
  • cos, sin, tan, acos, asin, atan(arctangent, tan-1)の意味は最低限把握、 グラフも頭に思い浮かぶように。
  • メジャーな角度の値は頭に入れておくように。π(180deg)、π/2(90deg)、π/3(60deg)、2π/3(120deg)、π/6(30deg)など。 また、ラジアン表記の角度の大きさが具体的に認識できること、もしくはdegreeに直せること。
  • 微分、積分できること
そこそこ微分がでてきます。三角関数の微分、関数の積の微分などをできるようにしておくこと。 多変数の関数であるため、微分はほぼ偏微分ですが、ただの微分と思ってそれほど困りません。
ベクトル:

標準で縦ベクトル、一般に小文字、ボールド(太文字)表記

転置(T)で横ベクトル。

ベクトルの長さ(大きさ)。

用途:
ベクトルは座標や状態量を表すために使用。

  • 2次元位置    → 2要素
  • 2次元位置+姿勢 → 3要素
  • 3次元位置    → 3要素
  • 3次元位置+姿勢 → 6要素
  • 関節の数だけ → 関節の状態量
※姿勢が入るとベクトルじゃなくなる場合が出てきます。たとえば、3次元での姿勢角度を表そうとした場合、回転させる順番で結果が異なる、すなわち ab=ba という交換法則が成り立たなくなります。けど、角速度はベクトルです(詳細はいずれ)。

ベクトルの加算、スカラ倍:



ベクトルの内積:

ベクトルの内積はその平行具合いを示します。2、3次元では成す角度をθとして、

となります。そのため、「=0」で直交を意味し、またベクトルの成す角を定義できます。
(4次元から先、成す角度という概念があるかは未確認。ただし、ロボット的には意味無し。)


ベクトルの外積(3次):


順番があることに注意。
外積で得られるベクトルは、
  • 長さ(大きさ)は2ベクトルでできる平行四辺形の面積、すなわち、2ベクトルのなす角をθとすると、

    です。
    ※1/2すれば、簡単に3角形の面積が求まります。
  • 両ベクトルに垂直
    (向きはaをbに小さな角度で重ねる向きにネジを回転させたときに進む方向、θ=0ならそもそも外積も0なので向きは気にせず)
という特性を持ちます。 たとえば、頂点が定義された三角形の法線ベクトルが必要な場合(案外よくある)、頂点間で方向ベクトルをつくって、その外積を求めて、長さで割る(長さの逆数をかける)(normalize)と得られます。 ちなみに、CG分野ではそれを前提に、頂点を定義する順番で表裏の区別をつけます。
ちなみに(2)、右ネジの進む方向がわからなくなったら、右手を握って親指を立ててみてください。人指し指〜小指の指す回転方向にネジをまわすと、親指の方向に進みます (フレミングといっしょで手を間違ったらアウト(笑))。


ベクトルの微分

に対して、

のように、単純に成分ごとに微分する。 その他の公式類は線形代数の教科書を引っ張り出して勉強しておくこと。
行列:
例)

(2×3)

行列は数字や関数を縦m行×横n列の形に並べたものです。 一般に大文字、ボールド表記。 特にm=nの場合、n次正方行列といいます。 ベクトルは行列の特殊な例(n×1、1×m)とも見ることができます(行列とベクトルの演算は行列同士の演算として扱える)。
各成分を個別に扱うときにはの形で第i行第j列を表します(小文字、非ボールド、添字)。

用途:
行列は、座標変換(回転)や関節の角度とロボットの姿勢の関係を表すなどに使用されます。


行列の基本演算:
行列の和は行の数および列の数が等しい行列間のみで定義できます。


スカラ倍は各要素がスカラ倍になります。


行列の積:
行列の積は、行列がl×mとm×nの形と、一つ目の行と二つ目の列の数が一致するときのみ定義でき、l×nの行列が出来ます(もちろん l=m=n という場合もあり)。



定義は上式のようになりますが、覚えるときは以下のようなイメージで覚えると分かりやすいかもしれません。

注意:
一般に、

ことに注意。そのため、行列の乗算を行うときは、「右からかける」「左からかける」と掛け方に注意します。
例)
に対して
左からCをかけたと、右からCをかけたは成立しますが、
左右をごちゃまぜしたは一般に成立しません。


行列によるベクトルの変換:


たとえば、3次のベクトルに左から3×3の行列をかけると、再び3次のベクトルになります。 これは、座標系の回転など、あるベクトルを何らかの規則で変換する場合につかえます。


転置:

に対して、

と行と列を入れ替えたものを転置と言い、右肩に添字Tをつけて表します。
("Tenchi"のTではなく、"Transpose"のT)
空間的にはあまり意味のある操作ではありませんが、数学的処理においてつかうことがあります。


逆行列:
n次正方行列(n×nの行列)Aに対して、

(行列Iは対角成分のみ1で残りは0のn次正方行列、単位行列)
となるようなn次正方行列Xを、Aの逆行列といい、と右肩に"-1"をつけて表します。 逆行列は必ず存在するとはかぎりません(行列式が0でない場合に存在)。

行列式および逆行列の計算法に関しては、時々必要になるので各自線形代数学の教科書で確認して、2×2、3×3の行列に関しては求められるようにしておいてください。

逆行列は、ロボット工学においては、「逆変換」の意味で用いられます。ある座標系から別の座標系に行列Rで変換できる場合に、Rの逆行列を用いると逆の座標変換ができます。

  • 一般的な数学では、添字は "1",...,"n" と数字です。ただし、ベクトルや行列を空間に使用する場合においては、2次のベクトルで添字として "x","y"、3次では "x","y","z"、4次では"x","y","z","w" と直感的に具体的な文字を使うことがよくあります。 また、座標軸の名前を使うこともあって、座標系X-Y上では添字にx,y を、座標系U-V上では添字にu,vを使って、区別をつきやすくする場合もあります。
  • 空間の各座標点ごとに定義されるベクトルとして、ベクトル場があります。

    (座標の関数であると同時に、時間の関数のこともよくある)
    これに関してはまたいろいろな理論があり、電磁気学などで使用されますが、ロボット工学では普段は使わないので、ここではパスします(ロボットの移動経路の選択などでは使用することがあります)。
  • 本講義では、ベクトルは縦ベクトルを標準に使いますが、ものによっては前提として、ベクトルは横ベクトル、行列による変換を行う場合に右から乗じる、というケースもあります(たとえば、MicrosoftのDirectX)。 これはこれで、なにか作用を追加するときに右に並べていく、普通に書くときに横ベクトルの方が書きやすいなど分かりやすい点もあります。
    自分ですべてを定義せず、何らかのシステムにのっかる場合はそれぞれの定義をよく調査しましょう。