スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

リアルタイム慣性同定のテスト

今週末はリアルタイム同定アルゴリズムの実装準備を行う.

やりたいのは加速度と電流値の測定値からシステム全体のJ/Kt=[慣性モーメント/トルク定数]を逐次推定することである.
この定数は電流とトルクを結びつけるサーボの最も基本的なパラメータであり,
ここからフィードバックゲインやフィードフォワード量を決定することができる.
これをリアルタイム推定できれば,例えばロボットが急に重いものを持ったりしても,持つ前と全く同じ動きをするシステムが実現できる.
マイコンに実装する前に確認のため,エクセルで計算し感じをつかむ.
入力値はモータをSinカーブの速度目標値で駆動させた時の加速度と電流値である.


上記の加速度と電流値はともに50Hz程度のローパスをかけてノイズを下げてある.
このデータに対し,最小二乗法(RLS),固定トレース法(FTA)でJt/Ktを逐次推定した結果が以下である.

逐次最小二乗法(Recursive Least Square=RLS)は忘却係数により新しい値にどのぐらい重みを付けて推定するかを選ぶことができる.
忘却係数を1.0にすると,その時までの過去データをすべて均等に使った区間平均と等価になる.
通常は1.0よりわずかに小さい値に設定し,イナーシャ変動に追従できるようにする.

固定トレース法(Fixed Trace Algolism=FTA)では加速度が大きいときは重みが増加し,加速度が小さい=S/N比が悪いときは新しいデータの重みが下がって前回値を保持する特徴がある.
このため有効なデータがノイズに埋もれ,推定値がノイズの平均値に引っ張られるのを回避することができる.

上記のグラフで,速度が小さい時はエンコーダ分解能の不足による推定精度の劣化が見られる.
ここは瞬時速度オブザーバで精度UPするか,単純に低速域の重みを下げるかで対応すればよい.
しかし,いろいろいじる中で気になったのは外乱の影響である.
上記は外乱ゼロで,摩擦負荷は事前に同定した値を使っているので安定しているが,実際には負荷変動や摩擦の変動影響があると推定値が大きく振られてしまう.
この文献によると,外乱に強くするには加速度の微分を使いDCカットする方法,外乱オブザーバで推定した推定外乱トルクを組み込む方法が有効らしい.
なるほど!ということでさっそくやってみたところ,加速度の微分=躍度のデータを入力にした場合はノイズが大きすぎて推定値はほぼゼロに収束してしまった.
外乱代入による方法も試したが,瞬時速度オブザーバのイナーシャ値が発散してしまい,こちらもうまくいってない.
何かやり方がまずいのかもしれない.

そもそも,外乱負荷と全イナーシャ変動の違いって区別できるものなんだろうか?
例えばモータに力を加えた時にモータ軸が前よりも「動きにくい」という状態だった場合に,それが一時的に加わった負荷によるものなのか,それともシステムの慣性が増加したものなのか,どうやって判別すれば良いものか.
例えばロボットアームの先端におもりをぶつけた場合と,おもりを取り付けた場合の差は何か.
差があるとしたら,負荷変動は作用時間が短く,慣性変動は長い,ということだろうか.
だとしたら,イナーシャの推定速度は外乱負荷の推定速度よりも十分遅くしないといけないことになる.
追従が遅いのではイナーシャ値を逐次更新するメリットがあまりないのではないか.
それだったらいっそのこと,イナーシャの逐次推定はやめて初期値固定にしておいて,外乱オブザーバで慣性誤差も外乱負荷もまとめて全部出力しちゃったほうが手っ取り早い気もしてくる.
でもそうなると今度は,イナーシャが長い間オフセットしたままになった場合にフィードフォワード量が実システムに合ってないので恒常的に精度が悪くなるなぁ・・・
ニワトリが先か,タマゴが先か・・
うーん・・・実はこのあたり,まだ全然イメージがつかめてない.
いずれにしても,実験をやりながら少しずつ解決していこうと思う.
スポンサーサイト

この記事へのコメント

トラックバック

URL :

プロフィール

もやね

Author:もやね
長野県在住の会社員(メカニカル・エンジニア).
ロボットは完全な趣味としてやってます.
E-mail:
mo_ya_ne[a]yahoo.co.jp
[a]⇒@

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
FC2カウンター
ブログ内検索
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。