オムニホイールとは
https://www.youtube.com/watch?v=oCm66wa7ZS4
オムニホイール (Omni Wheel) とは, 上の動画のロボットに取り付けられているような, 回転方向と垂直に回転するローラーを備えるホイールのことである. これらのローラーにより全方向に移動することを可能としている.
図1. オムニホイール. Rotacaster, CC BY 1.0, via Wikimedia Commons.
4輪の場合, 図2に示すような 45\degree 間隔の単純な移動では, ホイールの回転方向のみで簡単に移動方向を決定できる. しかし, 15\degree や 165\degree 方向などの場合は計算が必要になる. この記事ではその計算方法について記す.
図2. ロボットの移動方向とホイールの回転方向の関係
ホイールの角速度の導出
まず, オムニホイールを3輪搭載した全方位ロボットを例として考え, 各ホイールの角速度を求めてみる. ロボットの各要素の運動学的関係を表すモデルを図3に示す.
図3. 全方位ロボットの運動学的モデル
はじめに, ロボットの環境を表すグローバル座標 [x,y] を定義する. グローバル座標におけるロボットの位置と向き・速度はそれぞれ \boldsymbol{u}=(x,y,\theta)^\mathsf{T}, \dot{\boldsymbol{u}}=(\dot{x},\dot{y}, \dot{\theta})^\mathsf{T} と表せる.
続いて, ローカル座標 [x_{\mathrm{L}},y_{\mathrm{L}}] も定義する. ローカル座標の中心はロボットの重心と一致する. 3つのオムニホイールはローカル座標系に対し, 角度 \alpha_i (i=1,2,3) で配置されている. 等間隔に配置すれば軸 x_{\mathrm{L}} を始点, 反時計回りを正とし, \alpha_1 = 0\degree, \alpha_2 = 120\degree, \alpha_3 = 240\degree となる.
また, ホイール半径を r, ロボットの重心からホイール中心までの距離を R, ホイールの移動速度を \boldsymbol{v}=(v_0,v_1,v_2)^\mathsf{T}, 角速度を \dot{\boldsymbol{\phi}}=(\dot{\phi_0},\dot{\phi_1},\dot{\phi}_2)^\mathsf{T} とする.
以上の定義から v_i を求める. これは純粋な並進速度と回転速度に分けることができる.
v_i=v_{\mathrm{trans},i}+v_{\mathrm{rot}}
まず, 並進速度について考える. 図4にホイール1における並進速度 v_{\mathrm{trans},1} を拡大したものを示す.
図4. ベクトル拡大図
v_{\mathrm{trans},1} を \dot{x}, \dot{y} に写像すると次式が得られる.
v_{\mathrm{trans},1}=-\sin{(\theta})\dot{x}+\cos{(\theta)}\dot{y}
各ホイールが \theta+\alpha_i に配置されていることを考慮すれば, この写像を全てのホイールに対して一般化できる.
v_{\mathrm{trans},i}=-\sin{(\theta+\alpha_i})\dot{x}+\cos{(\theta+\alpha_i)}\dot{y}
続いて, 回転速度について考える. ロボットが純粋に回転する場合, 以下の条件を満たす.
v_{\mathrm{rot}}=R\dot{\theta}
以上より
\begin{align}
v_i=-\sin{(\theta+\alpha_i})\dot{x}+\cos{(\theta+\alpha_i)}\dot{y}+R\dot{\theta}
\end{align}
これで各ホイールの移動速度とロボットの移動速度が関連付けられた. 次はホイールの角速度について立式する.
\begin{align}
v_i=r\dot{\phi}_i
\end{align}
ここで式(1)に式(2)を代入して
\dot{\phi}_i=\frac{1}{r}\{-\sin{(\theta+\alpha_i})\dot{x}+\cos{(\theta+\alpha_i)}\dot{y}+R\dot{\theta}\}
上式は, 式(3)のような行列表現に変換できる.
\begin{align}
\begin{bmatrix}
\dot{\phi}_1\\
\dot{\phi}_2\\
\dot{\phi}_3\\
\end{bmatrix}
=
\frac{1}{r}
\begin{bmatrix}
-\sin{(\theta)}&\cos{(\theta)}&R\\
-\sin{(\theta+\alpha_2)}&\cos{(\theta+\alpha_2)}&R\\
-\sin{(\theta+\alpha_3)}&\cos{(\theta+\alpha_3)}&R\\
\end{bmatrix}
\begin{bmatrix}
\dot{x}\\
\dot{y}\\
\dot{\theta}\\
\end{bmatrix}
\end{align}
上式はグローバル座標系を使用しているため, 次式でローカル座標系に変換する.
\begin{align}
\begin{bmatrix}
\dot{x}\\
\dot{y}\\
\dot{\theta}\\
\end{bmatrix}
=
\begin{bmatrix}
\cos{(\theta)}&0&0\\
0&\cos{(\theta)}&0\\
0&0&1\\
\end{bmatrix}
\begin{bmatrix}
\dot{x}_\mathrm{L}\\
\dot{y}_\mathrm{L}\\
\dot{\theta}\\
\end{bmatrix}
\end{align}
式(4)を式(3)に代入し
\begin{align}
\begin{bmatrix}
\dot{\phi}_1\\
\dot{\phi}_2\\
\dot{\phi}_3\\
\end{bmatrix}
=
\frac{1}{r}
\begin{bmatrix}
-\sin{(\theta)}&\cos{(\theta)}&R\\
-\sin{(\theta+\alpha_2)}&\cos{(\theta+\alpha_2)}&R\\
-\sin{(\theta+\alpha_3)}&\cos{(\theta+\alpha_3)}&R\\
\end{bmatrix}
\begin{bmatrix}
\cos{(\theta)}&0&0\\
0&\cos{(\theta)}&0\\
0&0&1\\
\end{bmatrix}
\begin{bmatrix}
\dot{x}_\mathrm{L}\\
\dot{y}_\mathrm{L}\\
\dot{\theta}\\
\end{bmatrix}
\end{align}
式(5)は, ホイール数に対して一般化できる.
\begin{align*}
\begin{bmatrix}
\dot{\phi}_1\\
\dot{\phi}_2\\
\vdots\\
\dot{\phi}_n\\
\end{bmatrix}
=
\frac{1}{r}
\begin{bmatrix}
-\sin{(\theta)}&\cos{(\theta)}&R\\
-\sin{(\theta+\alpha_2)}&\cos{(\theta+\alpha_2)}&R\\
\vdots&\vdots&\vdots\\
-\sin{(\theta+\alpha_n)}&\cos{(\theta+\alpha_n)}&R\\
\end{bmatrix}
\begin{bmatrix}
\cos{(\theta)}&0&0\\
0&\cos{(\theta)}&0\\
0&0&1\\
\end{bmatrix}
\begin{bmatrix}
\dot{x}_\mathrm{L}\\
\dot{y}_\mathrm{L}\\
\dot{\theta}\\
\end{bmatrix}
\end{align*}
すなわち
\dot{\phi}_n=\frac{1}{r}\{-\sin{(\theta+\alpha_n)}\cos{(\theta)}\dot{x}_\mathrm{L}+\cos{(\theta+\alpha_n)}\cos{(\theta)}\dot{y}_\mathrm{L}+R\dot{\theta}\}
以上で, 任意の数のホイールを持つ全方位ロボットにおける各ホイールの角速度が求められた.
参考文献
Discussion