走行距離を時間軸とする時間軸状態制御形

目次

  • 目次
  •  はじめに
  • 時間軸状態制御の概要
    • 時間軸の選定
    • 適用の流れ
    • 座標変換の到着点
  • 時間軸状態制御の2輪モデルへの適用
  • シミュレーション
    • 実装に必要な情報
    • シミュレーション

 はじめに

自動車などの経路追従制御でよく利用される2輪モデルは非ホロノミック(Nonholonomic)な拘束を有するシステムであり,比較的制御が困難であると言われています.

このようなシステムを安定化する方法として,以下のような手法が挙げられています.

  • 時変状態フィードバック
  • 不連続フィードバック
  • 時間軸状態制御

最近は時間軸状態制御に基づく手法をよく見るような気がしますので,勉強までに実装してみました.

ベースとする資料は下記の論文です.

www.jstage.jst.go.jp

続きを読む

6軸センサの状態方程式

目次

  • 目次
  •  はじめに
  • よく知られている6軸センサの状態方程式 / 観測方程式
  • 状態方程式 / 観測方程式の導出
    • 回転行列
      • ロール方向
      • ピッチ方向
      • ピッチ方向
    • 観測方程式 
    •  状態方程式
      • 回転行列による角速度の座標変換
      • オイラー角の書き直し
      • ロール・ピッチ・ヨーのグローバル座標への変換
      • ロール・ピッチ・ヨー角速度の座標変換
  • おわりに

 はじめに

6軸センサは3軸の加速度センサ(x, y, z)と3軸のジャイロセンサ(roll, pitch, yaw)を複合させたセンサの名称で,ロボットなどの姿勢を推定するためによく利用されるセンサです.

このセンサによって3軸の姿勢(roll, pitch, yaw)を推定するために,拡張カルマンフィルタ(Extended Kalman filter; EKF)が使用されることも多くあります.
低周波数域での特性に優れた加速度センサと,高週数域での特性に優れたジャイロセンサをEKFを用いたセンサフュージョン(Sensor fusion)により組み合わせることで,広い周波数域での高精度な姿勢推定を可能にします.

EKFではシステムの状態方程式が必要になるのですが,一部導出に躓いたのでまとめておこうと思います.

状態方程式はロール・ピッチ・ヨーのオイラー角(Euler angle)で表現されるものを想定しています.
オイラーパラメータ(Euler parameter; またはQuaternion)により表現する場合には導出は比較的簡単なようです.

よく知られている6軸センサの状態方程式 / 観測方程式

6軸センサの状態方程式 / 観測方程式としてよく知られている式です.
式の変形によりここに到達することが今回の目標です.

続きを読む

シンプルな外乱オブザーバ

目次

  • 目次
  • はじめに
    • 外乱オブザーバとは?
    • なぜ外乱オブザーバが必要なのか
  • 簡単な外乱オブザーバの動作原理
    • 外乱の除去
    • 外乱の推定
  • 実際の外乱オブザーバ
    • ノミナルモデル
    • 外乱オブザーバのメリット・デメリット
      • メリット
      • デメリット
    •  ローパスフィルタの設計
  •  シミュレーション

はじめに

外乱オブザーバ(Disturbance observer; DOB)はフィードバックシステムに外乱が加わるような状況で比較的簡単に外乱を除去し安定化できる強力なツールですが,ウェブにはあまり記述が無いようだったので書いてみました.

外乱オブザーバとは?

“外乱”でググってみると,以下のような説明が得られます.

ある通信系に、所定の信号系以外から加わり妨害となる信号。 --- 大辞林

大体内容としては間違いないですが,今回扱うのは”通信系”に限らず制御システムに対してはたらく妨害となる信号くらいに留めておきます.

外乱オブザーバとはこのような外乱を除去するために,制御系のコントローラに組み込む補償器のひとつです.

なぜ外乱オブザーバが必要なのか

次のような1次遅れ系のフィードバックループを考えてみます.

f:id:blockahead:20180128101528p:plain

ここで, C(s)はコントローラ, G(s)は制御対象です.また,目標値を r,出力を yで表します.

外乱というと図の1,2,3番の箇所に加わることが想定されますが,ここでは1について記述します.

2,3番を省く理由としては以下になります.

  • 2番の部分に入力される外乱は,フィードバックループを構成する主な目的のひとつであるため,比較的簡単に除去(補償)できる.
  • 3番については,システム自体は目標通り動作している(外乱によって私たち使用者が目標値通りに動いているか確認できないだけの状態)のため.

1番はコントローラは制御対象を最適に動作させるための操作量を正常に生成できているが,それが外乱によって変えられ制御対象に入力されてしまっている状態です.

つまり,PIDなどのコントローラを適切に設計していても,設計通りの操作量が制御対象に入力されないということです.

今回はこの外乱を除去する外乱オブザーバについて述べていきます.

ここでは,"最適な操作量"は設計時に想定している操作量を指します.
最適レギュレータなどの最適とは根本的に異なる意味ですのであしからず.

続きを読む

三相同期モータの最大トルク制御

目次

  • 目次
  •  はじめに
    • SPMSMの電流とトルクの関係
    • IPMSMの電流とトルクの関係
  • IPMSMの最大トルク制御 
    • 最大トルク制御の概念
    • 最適な電流位相の導出
    • 電流に対するトルクのマップ化
  • シミュレーション

 はじめに

前回,三相同期モータ(ブラシレスDCモータ,PMSM)の運動モデルの立式と,ベクトル制御によるトルク制御のシミュレーションを行いました.

hamachannel.hatenablog.com

PMSMでは,Park変換と呼ばれる回転子に固定した d-q座標系への変換によって,電流とトルクの関係が簡単に表すことができます.

PMSMの種類である,表面磁石同期電動機(Surface Permanent Magnet Synchronous Motor; SPMSM)埋込磁石同期電動機(Interior Permanent Magnet Synchronous Motor; IPMSM)の電流とトルクの関係は以下のようになります.

SPMSMの電流とトルクの関係

\begin{align}
T = \frac{P_{n}}{2} \Phi_{a} i_{q}
\end{align}

SPMSMの場合には,トルクと q軸電流が比例関係にあり,簡単に目標トルクを出すための電流値を求めることができます.

\begin{align}
i_{q} = \frac{2T}{P_{n} \Phi_{a}}
\end{align}

IPMSMの電流とトルクの関係

\begin{align}
T = \frac{P_{n}}{2}[ \Phi_{a} i_{q} + ( L_{d} - L_{q} ) i_{d} i_{q} ]
\end{align}

一方でIPMSMでは右辺第2項のラクタンストルクが発生するため,id=0制御によってリラクタンストルクの項を消去し,トルクを出すために必要な電流値を算出していました.

 i_{d}に関する項が消え,SPMSMと全く同じ以下の式になります.

\begin{align}
i_{q} = \frac{2T}{P_{n} \Phi_{a}}
\end{align}

一方で,IPMSMではリラクタンストルクを上手く利用することで,同じ電流でより大きなトルクを生み出すことができます.

これを実現する手法が最大トルク制御です.

続きを読む

三相同期モータ(ブラシレスDCモータ)のベクトル制御

目次

  • 目次
  • はじめに
  • 永久磁石同期電動機の運動モデル
    •  電圧と電流の関係
    • 電流とトルクの関係
    • モータの機械的特性
    • 機械角と電気角の関係
    • dq座標とabc座標の変換
      • Park変換(abc軸からdq軸への変換)
      • 逆Park変換(dq軸からabc軸への変換)
    • PMSMの運動モデル
  • ベクトル制御
    • PIコントローラ
    • 非干渉化
    •  トルク指令
  • シミュレーション

はじめに

ブラシレスDCモータについて調べてみたところ,割りと簡単にモデル化できそうだったのでやってみました.

ブラシレスDCモータとは,三相同期モータにドライバが乗っかったもののことを指すようです. これら2つの違いはハードウェアというよりは,動かす手法(ソフトウェア)の違いに起因するようです.

ざっくりと以下の種類があるようです.

  • 三相同期モータ(周波数制御)
    直接三相交流を入力する.ドライバなし.
  • ブラシレスDCモータ(120度通電制御)
    直流を入力する.ドライバによって回転子の角度に応じて通電する相をスイッチングする.
  • ベクトル制御
    直流を入力する.ドライバによって回転子の角度に応じてインバータにより正弦波を与える.

詳細については述べませんが,これらは全て永久磁石同期電動機(Permanent Magnet Synchronous Motor; PMSM)という種類のモータです.

またPMSMには表面磁石同期電動機(Surface Permanent Magnet Synchronous Motor; SPMSM)埋込磁石同期電動機(Interior Permanent Magnet Synchronous Motor; IPMSM)の2種類があります.

基本的な動作についてはRENESASのウェブページが詳しいです.

www.renesas.com

このなかでも最も新しい手法がベクトル制御で,これを用いることで三相モータの高効率な特性を活かしつつ,DCモータのように簡単な制御を行うことができます.

今回は,永久磁石同期電動機をモデル化し,ベクトル制御を行ってみます.

ベクトル制御といってもモータの出力軸トルクを所望の値に制御することを目的とします.

続きを読む

カルマンフィルタの基礎式を代数とベイズ定理から見る

 目次

  •  目次
  •  はじめに
  • 対象とする運動モデル
  • 状態を予測する方法
    • 運動モデルを利用した予測
    • 観測による推定
    • 予測と推定の組み合わせ
  •  カルマンフィルタ
    • 最適カルマンゲインとは
    • 最適とは何か
    • 分散を最小化するゲインの導出
    • カルマンゲインのパラメータ導出
      • 入力による分散
      • 観測による分散
    • カルマンフィルタによる状態推定
    • 分散の更新
      • 事前推定
      • 事後推定
  • 対象が高次元の場合
    • 変わるところ
    • 多次元でのカルマンフィルタ
  • おわりに

 はじめに

カルマンフィルタの歴史ももう長いことと思いますが,各所で各人なりにまとめられているあたり,なかなか理解の難しいものなんだなあと感じています.

例に漏れず自分もカルマンフィルタの原理がいまいちピンとこなかったので自分なりにまとめてみました.

カルマンフィルタ(Kalman Filter)はフィルタと名付けられてはいますが,使われ方としてはフィルタよりも現代制御のオブザーバ(Observer; 状態推定器)に近いような気がします.

観測した情報から,状態ベクトルが真値に最も近くなるように推定するものです.

概念は以下のところでわかりやすく説明されています.

bufonmake.blogspot.jp

qiita.com

 ただ,数式として少し省略されているところもあったので,改めてまとめるに至りました.

基本的に,代数とベイズの定理のみから丁寧に導出していこうという感じです.

カルマンゲインの式の導出,予測値の算出,分散の更新は天下り的な部分も多いので,今回はこれらの導出に焦点を当ててみました.

統計的にみて,予測値と実プラントの誤差が最小となるように演繹的に求めていくとカルマンフィルタの式に行き着くあたり,統計学の応用先の代表例になっているだけのことはあるなあ,という感想です.

ここでは,状態空間と観測空間が同一の場合のみ扱います.

続きを読む

数式処理ソフトウェアで立式した運動方程式をSimulinkで実行する

目次

はじめに

 運動方程式の立て方とラグランジュ

制御工学で避けては通れないのが運動方程式の立式です.

プラントモデリングではもちろんのこと,現代制御に代表されるモデルベース制御では制御ロジックを構築するために運動方程式状態方程式)が必要になります.

運動方程式の立式というと,ほぼラグランジュ法(オイラーラグランジュ方程式)一択のような気がしています.

いまいちこのあたりの用語を掴みきれていないのですが,汎函数と呼ばれる"函数を変数とした函数"を変分(汎函数での微分)することで運動方程式を求めるといった流れです.

たとえば, f(t) = at函数と呼ばれ, \frac{df(t)}{dt}という操作が微分と呼ばれることはご存知のとおりです.
それと似たような関係で, I[f(t)] = Af(t)函数と呼び, \frac{dI[f(t)]}{df(t)}変分と呼ぶようです.

物体の運動の場合,最も必要エネルギの少ない方向に物体が運動するという原理があるらしく(最小作用の原理?),以下の形式で与えられます.

\begin{align}
I[ y ] = \int^{b}_{a}f( x, y, y' ) dx
\end{align}

特に運動の場合は,右辺 f(x,y,y')ラグランジアン Lというエネルギ量で与えるようです.

合っている自信はないですが,以下の式のようなイメージです.(時間微分なのでドットで書いています)

\begin{align}
I[ x ] = \int^{b}_{a}L( t, x, \dot{x} ) dt
\end{align}

これはある時刻 aから bまでのエネルギの合計となります.
上の式が最小になるようにすれば良いということで, I[x]の変分(微分)がゼロとなるような x(停留値)を求めれば良いことになります.

この解(停留値)は決まっていて,これをオイラーラグランジュ方程式と呼びます.

\begin{align}
\frac{d}{dt}\left( \frac{\partial L}{\partial \dot{x}} \right) - \left( \frac{\partial L}{\partial x} \right) = 0
\end{align}

解の形式が決まっているのでシーケンシャルに解けて便利なのですが,非常に計算量が多いです.

前置きが長くなりましたがこれを数式処理ソフトウェアで楽にしようというのが今回のコンセプトです.

使用するソフトウェア

この記事では数式処理ソフトウェアとして以下を使用しています.

恐らく運動方程式を求めたあとはMATLAB/SimulinkとかPyControlとかでシミュレーションすることになると思うのですが,結論としてはwxMaxima優位といった印象です.

運動方程式の対象

今回,2重振り子を例として,Simulinkでのシミュレーションまでやってみようかと思います.

f:id:blockahead:20180114105203p:plain

f:id:blockahead:20180114105207p:plain

ラグランジュ法では物体の運動エネルギ,位置エネルギの関係を与えてあげることが必要になります.

逆に言うとエネルギまで出せてしまえばあとはソフトウェア任せにできます.

事前にやってみたところ,wxMaximaのインストールから結果確認まで45分程度で終わりました.

続きを読む