2016年10月2日日曜日

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

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

  • 外乱オブザーバとは?
  • なぜ外乱オブザーバが必要なのか
  • 基本原理
  • 実際の外乱オブザーバ(ノミナルモデル,ローパスフィルタ)

そもそも外乱オブザーバとは?

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

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

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

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


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

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

system

ここで,はコントローラ,は制御対象です.また,目標値を,出力をで表します.
外乱というと,図の1, 2, 3番の箇所に加わることが想定されますが,本稿では1について記述します.

また,以下の理由で2, 3番を省いています.

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

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

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

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

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

2016年8月3日水曜日

ニューラルネットで雑な手書き文字認識

以前にもニューラルネットについて言及しましたが,かなり原初的な内容ばかりだったので今回は簡単な応用について.

C言語でニューラルネット(関数近似)

C言語でニューラルネット(2次元平面での分離)

といっても,修士の授業で作った内容そのままなので,いざ実装してみると動かないかも.

ニューラルネットの応用先として,真っ先に上がるのがパターン認識の分野でしょう.

とくに文字認識の分野ではすでにかなりの数,実用化されていると聞きます.

ここでは,最も単純な文字の認識について述べていきたいと思います.

具体的には以下の2点.

  • ニューラルネット(誤差逆伝播法)の基本的な部分
  • 特徴量(ニューラルネットへの入力)

2016年6月11日土曜日

パーティクルフィルタによるグリッドマップマッチング

result

今回,著作権的にグレーな感じがするので問題があればご一報ください.

専門ではないですが,ロボットの自己位置推定に興味を持ったのでMATLAB/simulinkでシミュレーションしてみました.
ところどころ用語が間違っていると思いますがご容赦ください.

手を付けたきっかけは,“グリッドマップのマッチングに基づく未知障害物にロバストな自己位置推定”という論文の発表を聞いたことです.

面白そうだったので今回は,これを実装したいと思います.

また,今回の記事の大部分はMyEnigmaさんの記事を参考にしています.

パーティクルフィルタやグリッドマップそれぞれについては,こちらがとてもに詳しいのですが,これらを組み合わせた実装について記載がなかったため,本記事で述べていきます.

自己位置推定は,ロボットが現在,どこに居るのかを知るための手法です.
見晴らしの良い屋外であればGPSで事足りることが多いかと思いますが,そうでない場合にはロボット自身が現在の位置を知ることは難しくなります.

自己位置推定はよく知るものだとカーナビがありますが,これは普段はGPSで位置を測定していて,トンネル内などのGPSの電波が入らないところでは,タイヤの回転数(回転角)や加速度センサの2回積分(位置)を使って,自己位置を推定しています(多分).

カーナビでは,トンネル内であまり自己位置の精度が要求されない(トンネル内での分岐は少ない)ことと,道路自体がカーナビ内部にあるので推定された位置が多少ズレていても道路に引き寄せられること,最終的な運転は人間が行うことから,あまり自己位置推定は難しくない/重要でないのでは,と以前は思っていました.

ロボットの場合だと,精度の高い自己位置の推定が要求されるため,いろいろな手法が開発されてきたとのことです.あまり詳しくないのでこの辺りは省略します.

今回はその中でもパーティクルフィルタによるグリッドマップマッチングについてシミュレーションをしてみました.

2016年5月1日日曜日

多入力多出力系とは

自分も初めて聞いた時に,

多入力多出力系ってなんぞや?入出力ごとに制御系組めばいいんじゃないの?

とおもったので,覚え書き程度にまとめておきます.

多入力多出力系(システム)とは,制御工学において,入力および出力が1つだけではないことを指します.

一体何言ってるかわかんないよね.

ということで制御工学でときおり出てくる,多入力多出系について.

多入力多出力系(Multi Input Multi Output; MIMO; マイモ)系とは,上で述べているように入出力が1つではない制御対象の事を言います.

多入力多出力系は,よく制御が困難であると言われます.

この記事では,多入力多出力系の制御のどこがどう困難であるのかについて,簡単に述べたいと思います.

2016年1月3日日曜日

倒立振子シミュレーション(MATLAB/Simulink)

せっかく個人用(学生用)のMATLABを買ったので,それを使ってみましょう的な記事.
制御系の研究ではお馴染みの倒立振子のシミュレーションをやってみます.

動画はシミュレーションの様子.
実は,ToolBoxにSimscapeというものがありまして,その中のSimMechanicsではMATLAB上で3Dソリッドモデルを作るだけで物理シミュレーションができたりします.
ただし,今回は普通のSimulinkのみで行います(笑)
やっぱり解析的に色々するには,どちらにしろ運動方程式も立てないといけないので.
大体の場合において,制御をしようと思うと,運動方程式のパラメータから
制御系の設計パラメータを求める必要が出てきます.
そんな理由から,運動方程式を立てて,制御パラメータを決めていく方法で今回は制御系の設計を行います.