ロボット工学13

Dublin Core

Creator

Date Created

Rights

CC BY-NC 4.0 - 非営利目的のみ許可

note Item Type Metadata

note

# ヤコビ行列と順運動学

## 1. 2リンクロボットアームの順運動学

### 1.1 出力変数と入力変数

- 出力変数:$x$, $y$(エンドエフェクタの位置座標)
- 入力変数:$\theta_1$, $\theta_2$(各関節の角度)

### 1.2 順運動学の式

2リンクロボットアームの順運動学は以下の式で表される:

$$
\begin{align}
x &= l_1 C_1 + l_2 C_{12} \\
y &= l_1 S_1 + l_2 S_{12}
\end{align}
$$

ここで、$l_1$, $l_2$は各リンクの長さであり、略記法として以下を用いる:
- $C_1 = \cos\theta_1$、$S_1 = \sin\theta_1$
- $C_{12} = \cos(\theta_1 + \theta_2)$、$S_{12} = \sin(\theta_1 + \theta_2)$

```mermaid
flowchart LR
    A[入力変数<br/>θ₁, θ₂] --> B[順運動学計算]
    B --> C[出力変数<br/>x, y]
    B --> D[x = l₁C₁ + l₂C₁₂]
    B --> E[y = l₁S₁ + l₂S₁₂]
    D --> C
    E --> C
```

## 2. 偏微分の計算

### 2.1 関節角度による偏微分

偏微分を計算する際は、**定数がないかを考えて、それぞれの$\theta$で解く**必要がある。

```mermaid
flowchart TD
    A["多変数関数<br/>x = f(θ₁, θ₂)"] --> B["偏微分する変数を選択"]
    B --> C["∂x/∂θ₁を計算"]
    B --> D["∂x/∂θ₂を計算"]
    C --> E["θ₂を定数として扱う"]
    D --> F["θ₁を定数として扱う"]
    E --> G["結果: ∂x/∂θ₁"]
    F --> H["結果: ∂x/∂θ₂"]
```

順運動学の式:

$$
x = l_1 C_1 + l_2 C_{12}
$$

#### $\frac{\partial x}{\partial \theta_1}$の計算

$\theta_1$に関する偏微分を計算する。$\theta_1$に偏微分するため、$\theta_2$は定数として扱われる:

$$
\begin{align}
\frac{\partial x}{\partial \theta_1} &= \frac{\partial}{\partial \theta_1} \left( l_1 C_1 + l_2 C_{12} \right) \\
&= \frac{\partial}{\partial \theta_1} (l_1 \cos\theta_1) + \frac{\partial}{\partial \theta_1} \left( l_2 \cos(\theta_1 + \theta_2) \right) \\
&= -l_1 \sin\theta_1 - l_2 \sin(\theta_1 + \theta_2)
\end{align}
$$

簡略表記として、$S_1 = \sin\theta_1$、$S_{12} = \sin(\theta_1 + \theta_2)$とすると:

$$
\frac{\partial x}{\partial \theta_1} = -l_1 S_1 - l_2 S_{12}
$$

## 3. ヤコビ行列

### 3.1 ヤコビ行列の定義

ヤコビ行列$J$は、**すべての偏微分の結果をまとめたもの**である。すなわち、出力変数の各入力変数に関する偏微分を要素とする行列である:

$$
J = \begin{bmatrix}
\frac{\partial x}{\partial \theta_1} & \frac{\partial x}{\partial \theta_2} \\
\frac{\partial y}{\partial \theta_1} & \frac{\partial y}{\partial \theta_2}
\end{bmatrix}
$$

```mermaid
graph TB
    subgraph 入力変数
        T1[θ₁]
        T2[θ₂]
    end
    subgraph ヤコビ行列 J
        J11[∂x/∂θ₁]
        J12[∂x/∂θ₂]
        J21[∂y/∂θ₁]
        J22[∂y/∂θ₂]
    end
    subgraph 出力変数
        X[x]
        Y[y]
    end
    T1 --> J11
    T1 --> J21
    T2 --> J12
    T2 --> J22
    J11 --> X
    J12 --> X
    J21 --> Y
    J22 --> Y
```

### 3.2 ヤコビ行列の各要素の計算

#### $\frac{\partial x}{\partial \theta_2}$の計算

$\theta_2$に関する偏微分を計算する:

$$
\begin{align}
\frac{\partial x}{\partial \theta_2} &= \frac{\partial}{\partial \theta_2} \left( l_1 \cos\theta_1 + l_2 \cos(\theta_1 + \theta_2) \right) \\
&= \frac{\partial}{\partial \theta_2} (l_1 \cos\theta_1) + \frac{\partial}{\partial \theta_2} \left( l_2 \cos(\theta_1 + \theta_2) \right)
\end{align}
$$

$\theta_2$に偏微分するため、$l_1 \cos\theta_1$は定数として扱われる:



$$
\frac{\partial (\theta_1 + \theta_2)}{\partial \theta_2}
$$

次に、$l_2 \cos(\theta_1 + \theta_2)$についてチェインルールを適用する:

$$
\begin{align}
\frac{\partial}{\partial \theta_2} \left( l_2 \cos(\theta_1 + \theta_2) \right) &= l_2 \cdot \frac{\partial}{\partial \theta_2} \cos(\theta_1 + \theta_2) \tag{8}
\end{align}
$$

チェインルールにより、$\frac{\partial \cos(\theta_1 + \theta_2)}{\partial \theta_2}$は以下のように表される:

$$
\frac{\partial l_2 \cos(\theta_1 + \theta_2)}{\partial \theta_1 + \theta_2} \cdot \frac{\partial (\theta_1 + \theta_2)}{\partial \theta_2}
$$

$\cos(\theta_1 + \theta_2)$の微分は$-\sin(\theta_1 + \theta_2)$であり、チェインルールにより内側の関数$(\theta_1 + \theta_2)$の偏微分を掛ける必要がある。$\theta_2$で偏微分するため、$\theta_1$は定数として扱われる:

$$
\begin{align}
&= l_2 \cdot \left( -\sin(\theta_1 + \theta_2) \right) \cdot \frac{\partial}{\partial \theta_2} (\theta_1 + \theta_2) \tag{9} \\
&= -l_2 \sin(\theta_1 + \theta_2) \cdot 1 \tag{10} \\
&= -l_2 \sin(\theta_1 + \theta_2) \tag{11}
\end{align}
$$

したがって:

$$
\frac{\partial x}{\partial \theta_2} = -l_2 \sin(\theta_1 + \theta_2)
$$

## 4. 合成関数の微分

### 4.1 微分の表記法

関数$y$を変数$x$で微分することを表す記号には、以下の2つの表記法がある:

$$
y' = \frac{dy}{dx}
$$

- $y'$:プライム記号による表記(ものの記号の微分)
- $\frac{dy}{dx}$:分数形式による表記(ライプニッツの記法)

これらは同じ意味であり、**$y$を$x$で微分している**ことを示す。分数形式の方が、どの変数で微分しているかが明確に記述できる。

### 4.2 チェインルールの例

合成関数の微分(チェインルール)の例として、以下の関数を考える:

$$
y = (2x + 3)^5
$$

チェインルールを分数形式で表すと:

$$
\frac{d((2x + 3)^5)}{dx} = \frac{d((2x + 3)^5)}{d(2x + 3)} \cdot \frac{d(2x + 3)}{dx}
$$

ここで、$\frac{d((2x + 3)^5)}{d(2x + 3)}$は$(2x + 3)$で微分していることを示し、$\frac{d(2x + 3)}{dx}$は$x$で微分していることを示す。

中間変数$t = 2x + 3$を導入すると:

$$
y = t^5, \quad t = 2x + 3
$$

チェインルールにより:

$$
\frac{dy}{dx} = \frac{dy}{dt} \cdot \frac{dt}{dx}
$$

```mermaid
flowchart LR
    A[x] --> B[t = 2x + 3]
    B --> C[y = t⁵]
    A -->|dt/dx = 2| B
    B -->|dy/dt = 5t⁴| C
    A -->|dy/dx = dy/dt × dt/dx| C
```

各項を計算すると:

$$
\frac{dy}{dt} = 5t^4, \quad \frac{dt}{dx} = 2
$$

したがって:

$$
\begin{align}
\frac{dy}{dx} &= 5t^4 \cdot 2 \\
&= 5(2x + 3)^4 \cdot 2 \\
&= 10(2x + 3)^4
\end{align}
$$

# 偏微分と全微分、ヤコビ行列

## 5. 偏微分と全微分

### 5.1 基本的な微分の例

合成関数の微分の例として、以下の関数を考える:

$$
y = (2x + 3)^5
$$

この関数の微分は:

$$
\frac{dy}{dx} = 10(2x + 3)^4
$$

### 5.2 多変数関数の例(ロボット工学の文脈)

2リンクロボットアームのエンドエフェクタの$x$座標は、以下の式で表される:

$$
x = l_1 \cos\theta_1 + l_2 \cos(\theta_1 + \theta_2) \tag{①}
$$

ここで、$l_1$、$l_2$は各リンクの長さ、$\theta_1$、$\theta_2$は各関節の角度である。

#### 偏微分の計算

**$\frac{\partial x}{\partial \theta_1}$の計算**

$\theta_1$に関する偏微分を計算する。$\theta_2$は定数として扱われる:

$$
\frac{\partial x}{\partial \theta_1} = -l_1 \sin\theta_1 - l_2 \sin(\theta_1 + \theta_2)
$$

**$\frac{\partial x}{\partial \theta_2}$の計算**

$\theta_2$に関する偏微分を計算する。$\theta_1$は定数として扱われる:

$$
\frac{\partial x}{\partial \theta_2} = -l_2 \sin(\theta_1 + \theta_2)
$$

これらは**部分的に微分**した結果である。

### 5.3 全微分

①式の全微分は、偏微分を用いて以下のように表現される:

$$
dx = \frac{\partial x}{\partial \theta_1} d\theta_1 + \frac{\partial x}{\partial \theta_2} d\theta_2
$$

ここで:
- $\frac{\partial x}{\partial \theta_1}$、$\frac{\partial x}{\partial \theta_2}$は**傾き**(勾配)を表す
- $d\theta_1$、$d\theta_2$は**微小変化**(近似値)を表す
- $dx$は**微小変化の微小な数値**を表す

この表現により、**$\theta_1$と$\theta_2$の変化を分割で考えることができる**。これは**式の線形化**、すなわち**局所的線形化**を意味する。

```mermaid
flowchart LR
    A[dθ₁<br/>微小変化] --> B[∂x/∂θ₁<br/>傾き]
    C[dθ₂<br/>微小変化] --> D[∂x/∂θ₂<br/>傾き]
    B --> E[dx = ∂x/∂θ₁ × dθ₁<br/>+ ∂x/∂θ₂ × dθ₂]
    D --> E
    E --> F[線形化<br/>局所的近似]
```

**注意**:しかし、厳密な値とはかなり同じではない物がある。これは近似であることに注意が必要である。

①式の全微分を展開すると:

$$
\begin{align}
dx &= \frac{\partial x}{\partial \theta_1} d\theta_1 + \frac{\partial x}{\partial \theta_2} d\theta_2 \\
&= \left(-l_1 \sin\theta_1 - l_2 \sin(\theta_1 + \theta_2)\right) d\theta_1 + \left(-l_2 \sin(\theta_1 + \theta_2)\right) d\theta_2
\end{align}
$$

### 5.4 全微分の別の例

関数$z = x^2 + y^3$を考える。

偏微分は:
- $\frac{\partial z}{\partial x} = 2x$
- $\frac{\partial z}{\partial y} = 3y^2$

全微分は:

$$
dz = \frac{\partial z}{\partial x} dx + \frac{\partial z}{\partial y} dy = 2x \, dx + 3y^2 \, dy
$$

## 6. ヤコビ行列

### 6.1 ヤコビ行列の定義と構造

ヤコビ行列$J(\theta)$は、出力変数の各入力変数に関する偏微分を要素とする行列である。

2次元の場合(出力変数:$x$、$y$、入力変数:$\theta_1$、$\theta_2$)のヤコビ行列は:

$$
J(\theta) = \begin{bmatrix}
\frac{\partial x}{\partial \theta_1} & \frac{\partial x}{\partial \theta_2} \\
\frac{\partial y}{\partial \theta_1} & \frac{\partial y}{\partial \theta_2}
\end{bmatrix}
$$

ヤコビ行列は、関節角度の微小変化をエンドエフェクタ位置の微小変化に変換する:

$$
\begin{bmatrix} dx \\ dy \end{bmatrix} = J(\theta) \begin{bmatrix} d\theta_1 \\ d\theta_2 \end{bmatrix}
$$

**重要な性質**:
- $J(\theta)$は**$\theta$の値により**変化する
- これは**線形化**を意味する

### 6.2 順速度運動学(Forward Velocity Kinematics)

微小変位の関係式:

$$
\delta P = J(\theta) \delta Q
$$

ここで:
- $\delta P$:**先端の微小変位ベクトル**(エンドエフェクタの微小変位)
- $\delta Q$:**関節の微小変位ベクトル**(関節の微小変位)

両辺を$dt$で割ると、速度の関係式が得られる:

$$
\dot{X} = J(\theta) \dot{Q}
$$

ここで:
- $\dot{X}$:**速度**(エンドエフェクタの速度)
- $\dot{Q}$:**関節の速度**

これは**速度の順変換**(forward velocity transformation)と呼ばれる。

### 6.3 逆速度運動学(Inverse Velocity Kinematics)

もし$J(\theta)^{-1}$が存在すれば、逆変換が可能である:

$$
\dot{Q} = J(\theta)^{-1} \dot{X}
$$

ここで、$J(\theta)^{-1}$は**$J(\theta)$の逆行列**である。

これは**速度の逆変換**(inverse velocity transformation)と呼ばれ、**逆運動学の代わりとして利用**される。

**注意**:これは**多値演算**(multivalued operation)である可能性がある。つまり、同じエンドエフェクタ速度に対して複数の関節速度の解が存在する場合がある。

```mermaid
graph TD
    Qdot["関節速度 $\dot{Q}$"]
    Xdot["エンドエフェクタ速度 $\dot{X}$"]
    JinvCheck["$J(\theta)$ 逆行列あり?"]
    Qdot2["関節速度 $\dot{Q} = J^{-1}(\theta)\dot{X}$"]
    Singularity["特異姿勢<br>逆変換不可"]

    Qdot -- "$J(\theta)$で変換" --> Xdot
    Xdot -- "逆行列の有無を検討" --> JinvCheck
    JinvCheck -- "はい" --> Qdot2
    JinvCheck -- "いいえ" --> Singularity
```

# 特異姿勢、遠隔操作、運動制御

## 7. ヤコビ行列の逆行列が存在しない場合(特異姿勢)

### 7.1 特異姿勢とは

ヤコビ行列の逆行列$J(\theta)^{-1}$が存在しない場合、**ロボットアームは特異姿勢になっている**。

```mermaid
stateDiagram-v2
    [*] --> 通常姿勢: ヤコビ行列が正則
    通常姿勢 --> 特異姿勢: det(J) = 0
    特異姿勢 --> 通常姿勢: 姿勢変更
    特異姿勢 --> 問題発生: ある方向に動かせない<br/>自由度低下
    通常姿勢 --> [*]
    問題発生 --> [*]
```

### 7.2 特異姿勢の特徴

特異姿勢では以下の問題が発生する:

- **ある方向に動かせなくなる姿勢**
- **関節自由度が低下**

### 7.3 2リンクロボットアームの例

2リンクロボットアームが**35度に伸び切った場合**(完全に伸びた状態)を考える。

この状態では:
- **2自由度が独立でなくなる**
- 2自由度が1つの式に変換される
- **ある方向に動かせなくなる**ことが明確である

**注意**:関節数が多いほど、特異姿勢が発生する可能性が高くなる。

## 8. ロボットの遠隔操作

### 8.1 ラジコン(ラジオコントロール)

**ラジコン**は、人が見て1方向の指令を与える遠隔操作の方法である。

### 8.2 ネットワーク遅延の重要性

**ネットワーク遅延時間が小さいことが重要**である。これは対デイゲーム(オンラインゲーム)でも同様の要件がある。

## 9. 運動制御

### 9.1 運動制御の概要

運動制御では、**どこを通ってでもない**(特定の経路を必ず通る必要はない)場合もある。この場合、経路はシステムに任せる。

```mermaid
graph TD
    A[運動制御] --> B[PTP制御<br/>Point-to-Point]
    A --> C[CT制御<br/>Continuous Trajectory]
    B --> D[始点と終点のみ指定]
    B --> E[経路はシステムが決定]
    C --> F[始点と終点を指定]
    C --> G[経路も指定]
```

### 9.2 PTP制御(Point-to-Point Control)

**PTP制御**は、ロボットの**始点と終点の指定**を行う制御方法である。

- 始点と終点のみを指定
- 中間の経路は指定しない

### 9.3 CT制御(Continuous Trajectory Control)

**CT制御**は、始点や終点に加えて**経路(軌跡)を指定**する制御方法である。

- 始点と終点を指定
- 経路(軌跡)も指定する

Collection

Citation

unjuno, “ロボット工学13,” unjuno'sResearchLibrary, accessed October 6, 2026, https://archive.unjuno.org/items/show/156.

コメント