articles:rmrc

文書の過去の版を表示しています。


分解運動(速度)制御

ヤコビ行列でも述べたが, 望ましい手先座標系(位置・姿勢)の微小変位(速度)を実現する 関節パラメタの微小変位(速度)を ヤコビ行列(の逆行列)を用いることにより求めることができる.

逆運動学の数値解法では, これを用いて目標座標系に連続的に直線的に遷移させ それを実現する関節パラメタへと収束させることで 逆運動学問題を陽に解くことなく逆運動学解を得た.

逆運動学を数値的に解く過程で実際のロボットアームを動作させれば ロボットアームの手先座標系が直線的に目標座標系へと 移動することは容易に理解できるだろう. その過程では,軌道の分割点での明示的な逆運動学解の計算が 不要であることはいうまでもない.

このような動作制御手法を分解運動速度制御(resolved motion rate control)と呼ぶ.

なぜ分解運動「速度」制御かといえば,ヤコビ行列が表す関係は微小量, すなわち単位時間で考えれば速度となること, また多くのロボットアーム(モータ)のサーボアンプが速度制御モードを備えていて 直接速度を指示することができること, などの事情による 1)

分解運動速度制御を用いると単純な直線的な動作だけでなく任意の軌道をたどることができる.

またサーボ系として利用すれば,手先座標系(位置・姿勢)に対する三次元空間での制御則を実現できる. これと力センサフィードバックと組み合わせれば 位置・姿勢の6軸ごとに制御則を変えたハイブリッド制御や ダンピング制御やインピーダンス制御を行うこともできる.

このヤコビ行列を用いた制御系の構成は手先座標系に対してだけでなく, 関節角に対するヤコビ行列が求められれば任意のパラメタに対して 適用できる. そのパラメタがセンサ情報で得られるものであれば そのセンサ値直接的にサーボループに組み込むこともできる.

ここでは分解運動速度制御を用いた種々のフィードバック制御法について述べる. これを用いたアームの軌道生成についてはこちらで別途述べる.

手先座標系を目標座標系に一致させる制御法を考える.

これは基本的には逆運動学の数値解法と同じであるが, 違いはステップ幅の決め方である.

ステップ幅といっても制御の場合は連続系で扱い それをサンプリング周期を考慮してステップ幅に落とし込むというのが 考えやすい.

まずは単純な比例制御を扱う. 下位のサーボ系が速度制御モードである場合は 安定で分かりやすい制御となる.

目標座標系を$T_{ref}$,現在の手先座標系を$T$とすると, その差分は逆運動学の数値解法での 方法と同様に求めることができる.それを$\boldsymbol{e}$とする.

ここで注意してほしい点は,逆運動学の数値解法の計算では,現在値から目標値への差分を求めている という点である.

一般に制御系の誤差ベクトルを考えるときは目標値から現在値への差分とすることが多い. しかし,現時点でのヤコビ行列を使うことを考えれば,その逆の方が分かりやすい.

ここでもその考え方を踏襲する.その場合,比例ゲインの符号が一般には負であるのが 正に反転することに注意して欲しい.

比例制御則は以下のように書ける.

$$ \boldsymbol{v}=k\boldsymbol{e} $$

$\boldsymbol{v}$は手先座標系の並進速度および回転速度である.

$k$は比例ゲインであり正の定数である.これを対角行列として要素ごとに ゲインを指定することもできるが,それぞれの収束の時定数が異なることになり この単純な制御においてはあまり望ましくないだろう.

これをヤコビ行列をを用いて, $$ \boldsymbol{\dot{\theta}}=J^+\boldsymbol{v} $$ とすることで,分解運動速度制御による手先座標系の比例制御が実現できる.

下位のサーボ系が速度制御雨の場合はこの値を指令値として入力する.

関節角の刻み幅はこれにサンプル周期を乗じたものになる. 下位のサーボ系が位置制御の場合はそれを次の目標値として入力することになる.

下位のサーボ系の速度制御が理想的であればこの伝達関数は, $$ G(s)=\frac{1}{1+s/k} $$ という単純な一時遅れ系になり$k$は時定数の逆数となっている.

注意点など

この手法の注意点,問題点は以下のようなものが挙げられる.

まず,刻み幅が大きくなりすぎるとヤコビ行列の(擬似)逆行列を用いた線形近似が 成り立たなくなるという点である.

これに関しては,サンプリング周期が1msecであれば,1mオーダのアームで10m/secの速度でも刻み幅は1cmであり 線形計算による誤差はほとんど問題にならない.

これは運動学に関するプログラムで示したように, 汎用のノートpcであればpythonプログラムで簡単に実現できるレベルである. 組込などの非力なcpuであってもC言語などに書き下せば十分対応可能であろう.

一方で,これはゲインを大きくしすぎて目標値周りでも大きな速度指令値を出せば それにサンプリング周期を乗じた値で振動的に振る舞うことを示していて 十分な注意が必要となる.

もう一つの大きな問題点は物理的,機械的実現性の問題である.


1)
動力学計算によりコリオリ力,重力などの非線形項を補償し, ヤコビ行列を加速度に適用した制御手法(計算トルク法)などもある
  • articles/rmrc.1649041906.txt.gz
  • 最終更新: 2022/04/04 12:11
  • by Takashi Suehiro