Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
マイクロマウスのための
MATLAB/Simulink講座
(2) Simulink入門
Teng Tokoro
(@tokoro10g)
この講習会について
MATLAB/Simulink を使用して
 経験と勘 → データと解析 
への移行を目指します.
シミュレーションやデータの可視化を使いながら,楽しく
学びましょう.
講習会の構成
全5回を予定
1) MATLAB入門 (1/19) 
2) Simulink入門 (3/16) 
3) 信号処理・システム同定(仮) (5月)
4) ログデータ可視化・解析(仮) (7月)
5) Simulinkからのコード生成(...
アジェンダ
今回の内容は以下の3つです.
1. Simulinkの基礎
Simulinkを使った時系列データの簡単な
取り扱い方と,シミュレーション手法に
ついて学びます.
2. 実践(1) DCモータのPID制御
DCモータをSimulink...
MATLAB/Simulinkとは?
MATLAB
科学・技術計算に特化したプログラミング
言語・開発環境.
特徴
❖ 行列・ベクトル計算を標準装備
❖ 習得しやすい言語仕様
❖ 豊富な標準関数・ツールボックスで
本質的でない実装の手間を省ける...
マイクロマウスへの
Simulinkの使用例
① モータのシミュレーション
ブロックを組み合わせて微分方程
式を表現
物理パラメータを代入してシミュ
レーション
マイクロマウスへの
Simulinkの使用例
② 壁制御のシミュレーション
どのような制 御 則を実 装すれば
よいのか事前にシミュレーション
できる!
Simulinkに慣れる
MATLABを起動してください!
>> simulink
Simulinkを起動
コマンドウィンドウから起動するのが一番楽
>> simulink
「空のモデル」をクリック
「ライブラリブラウザー」を起動
ライブラリブラウザー
カテゴリ
ブロック
ブロックの挿入
ドラッグ&
ドロップ
Tip
ブロック線図の画面をク
リックしてからブロック
名を入力してもできる
ライブラリブラウザーから
● Sources → Sine Wave
● Sinks → Scope
を挿入
ブロックの接続
Tips
ホイールで拡大・縮小
ホイールドラッグで視点
移動
スペースキーで画面に
フィット
Sine WaveブロックとScope
ブロックの入出力をドラッグ
でつなぐ
ブロックパラメータの変更
ブロックをダブルクリックすると
振幅等のパラメータを変更できる
Scopeブロックはダブルクリックで
スコープ(オシロ的な画面)が開く
シミュレーションの実行
再生マークをクリックして実行
結果はScopeに表示される
よく使用するブロック
● Source → Constant
定数信号
● Math Operations → Gain
定数ゲイン
● Signal Routing → Mux, Demux
ベクトル信号の分割・結合
など…
多くは "Com...
シミュレーションをいろいろ試してみる
いろいろブロックを追加して
試してみよう
Tip
信号線を右クリックしな
がらドラッグで分岐 例)
シミュレーション設定
可変ステップ・固定ステップなど
シミュレーションの設定
ソルバーの種類
時間ステップ
● 可変ステップ
計算精度が高くなるように
時間ステップを調整しながら
シミュレーションする方法
● 固定ステップ
時間ステップを固定する方法
計算方法
● 連続時間
連続時間系の数値積分で...
Tips [Coffee Break]
シミュレーション結果
が時間方向に粗いなと
感じた場合は,固定ス
テップソルバを使うか
最小ステップ幅を変更
するかしてみよう
スペースキーを押すと
ブロック線図の全体が
見える視点になる
Ctrlキーを押...
アジェンダ
今回の内容は以下の3つです.
1. Simulinkの基礎
Simulinkを使った時系列データの簡単な
取り扱い方と,シミュレーション手法に
ついて学びます.
2. 実践(1) DCモータのPID制御
DCモータをSimulink...
DCモータの数理モデル
ブロック線図
DCモータは電気系と機械系の2つの1次遅れ系
を直列接続したものとしてモデル化できる.
L: インダクタンス
R: 抵抗
J: 慣性モーメント
Km: トルク定数
Kf: 粘性摩擦定数
Kb: 逆起電力定数
Va: 端子間電圧
V...
伝達関数
線形な系は,入出力間のゲイン・位相の周波数特性で表現できることが知られている.
周波数領域での出力を周波数領域での入力で割ったものを伝達関数と呼ぶ.
伝達関数の周波数特性を可視化する方法として,ボード線図が有名.
注意事項
● 連続時間と離散時間では伝達関数の表現が異なる
(ラプラス変換 ↔ z変換)
cf. 双一次変換
● 非プロパーな系(分子の次数>分母の次数)は実現できない
未来の情報が必要になるため
Simulinkでのモデル化
Transfer Fcn(伝達関数)ブロックを使用する
各種定数はMATLABスクリプトに記述する R = 2.0; % Ohms
L = 0.5; % Henrys
Km = 0.1; % torque cons...
端子間電圧
外乱トルク
角速度
上のブロック線図を参考に,実際にSimulinkでDCモータの
モデル全体を作成してみよう
サブシステム化
作成したDCモータのモデルをサブシステムに
まとめておくとブロックの整理ができる
1. 入出力(印加電圧, 外乱トルク, 角速度)
以外のブロックを選択する
2. 右クリック→「選択からサブシステムを
作成」
3. 見た目を調整...
PID制御の実装
DCモータの速度制御をシミュレーションします
PID制御器
(説明するまでもないと思いますが…)
目標値に対する偏差とその積分・微分に対してそれぞれ
ゲインをかけ合わせて合計した値を制御入力とする手法
Simulink上での信号の積分・微分には,Continuousカテ
ゴリにあるInte...
PID制御器
MATLABコードにゲインを定義し,
手動チューニングでいろいろな値を
試して変化を見てみる.
PID制御にあまり馴染みのない方は
まずはいろいろ試してみる.
PID Controllerブロックを使う
実はSimulinkにはPID制御器が実装されたブロックがあります…
PID調整器を使う
PIDゲインを自動チューニングできる!
※Simulink Control Designが必要
挙動のパラメータを設定
アジェンダ
今回の内容は以下の3つです.
1. Simulinkの基礎
Simulinkを使った時系列データの簡単な
取り扱い方と,シミュレーション手法に
ついて学びます.
2. 実践(1) DCモータのPID制御
DCモータをSimulink...
マイクロマウスの簡易モデル
最も根本的な部分だけモデル化します
記号の定義
Tip
簡単化のために速度・角
速度を入力としたモデル
を考えている.
本来はDCモータへの電圧
入力で考えるべきだが,
ここではそれは本質では
ないためである.
角速度入力
速度入力
座標(x,y)
(+xが進行方向)
角度
マイクロマウスの簡易モデル
Tip
簡単化のために速度・角
速度を入力としたモデル
を考えている.
本来はDCモータへの電圧
入力で考えるべきだが,
ここではそれは本質では
ないためである.
単純な計算から,座標 (x, y) と角度 θ の時...
マイクロマウスの簡易モデル
Math Operations/
Trigonometric Function
Sinks/
XY Graph
作り終えたら,この部分をサブシステムにまとめておく
適当な定数を速度・角速度に入力した
場合のシミュレーション結果
壁トレース制御問題
左右の壁で区切られた通路の中心を直進走行させることを考える.
中心からの横方向へのズレ(y座標)と姿勢角(θ)を計測できると仮定する.
このとき,角速度入力ωをどのように決めればyを0に制御できるか?
最も単純な方法として思...
制御則の実装
先ほどの方針「y座標に定数をかけてωにフィードバックする」をSimulinkで実装する
Tip
Ctrl+Iで選択ブロックを
反転,Ctrl+Rで回転
先ほど作成した
マイクロマウスの簡易モデル
シミュレーションの設定
中心からずれた状態からスタートさせるため,y座標のIntegratorブロックに初期値を設定する.
シミュレーション結果
「y座標に定数をかけてωにフィード
バックする」
という方針では応答が振動的…
制御則の改良
PD制御の考え方を応用して,応答を改善する
先ほどの方針:yに対するフィードバック
改良案の方針:yとyの時間微分に対するフィードバック
シミュレーション結果
良くなった!
まとめ
● Simulinkを用いることで,シミュレーション環境を楽に構築できる
● 制御に使用するゲインを予めシミュレーションで決めておくことができる
● 簡易的なモデルを立ててシミュレーション検証することで,原理的に目標の
達成が難しい手法...
オンライン
リソース
自学自習に役立つウェブサイト
MATLAB Onramp
MATLABの基礎をブラウザ上で学べる
オンラインコース
約2~3時間で完了できる
(こちらで自習するとより身につくと思います)
https://matlabacademy.mathworks.co
m/jp
Sim...
Próxima SlideShare
Cargando en…5
×

マイクロマウスのためのMATLAB-Simulink講座 第2回 - Simulink入門

425 visualizaciones

Publicado el

2019/3/16に開催したマイクロマウスのためのMATLAB/Simulink講座の第2回資料です.Simulinkの基本操作と,DCモータやマイクロマウスの簡易モデルの作成とシミュレーション,PID制御の実装などを扱っています.

Publicado en: Software
  • Sé el primero en comentar

マイクロマウスのためのMATLAB-Simulink講座 第2回 - Simulink入門

  1. 1. マイクロマウスのための MATLAB/Simulink講座 (2) Simulink入門 Teng Tokoro (@tokoro10g)
  2. 2. この講習会について MATLAB/Simulink を使用して  経験と勘 → データと解析  への移行を目指します. シミュレーションやデータの可視化を使いながら,楽しく 学びましょう.
  3. 3. 講習会の構成 全5回を予定 1) MATLAB入門 (1/19)  2) Simulink入門 (3/16)  3) 信号処理・システム同定(仮) (5月) 4) ログデータ可視化・解析(仮) (7月) 5) Simulinkからのコード生成(仮) (9月)
  4. 4. アジェンダ 今回の内容は以下の3つです. 1. Simulinkの基礎 Simulinkを使った時系列データの簡単な 取り扱い方と,シミュレーション手法に ついて学びます. 2. 実践(1) DCモータのPID制御 DCモータをSimulink上でモデル化し ,PID制御を用いた速度制御を実装して自 動チューニングしてみます. 3. 実践(2) 壁トレース制御 マウスの簡易モデルを構築し,壁トレー ス制御のシミュレーションを行います.
  5. 5. MATLAB/Simulinkとは? MATLAB 科学・技術計算に特化したプログラミング 言語・開発環境. 特徴 ❖ 行列・ベクトル計算を標準装備 ❖ 習得しやすい言語仕様 ❖ 豊富な標準関数・ツールボックスで 本質的でない実装の手間を省ける Simulink ブロック線図をベースにしたシミュレー ションソフト. 特徴 ❖ ブロックをつないでプログラミング ❖ シミュレーションと実装を一括で開発 ❖ C/C++のソースコードをブロック線図 から生成できる(コード生成)
  6. 6. マイクロマウスへの Simulinkの使用例 ① モータのシミュレーション ブロックを組み合わせて微分方程 式を表現 物理パラメータを代入してシミュ レーション
  7. 7. マイクロマウスへの Simulinkの使用例 ② 壁制御のシミュレーション どのような制 御 則を実 装すれば よいのか事前にシミュレーション できる!
  8. 8. Simulinkに慣れる MATLABを起動してください! >> simulink
  9. 9. Simulinkを起動 コマンドウィンドウから起動するのが一番楽 >> simulink 「空のモデル」をクリック 「ライブラリブラウザー」を起動
  10. 10. ライブラリブラウザー カテゴリ ブロック
  11. 11. ブロックの挿入 ドラッグ& ドロップ Tip ブロック線図の画面をク リックしてからブロック 名を入力してもできる ライブラリブラウザーから ● Sources → Sine Wave ● Sinks → Scope を挿入
  12. 12. ブロックの接続 Tips ホイールで拡大・縮小 ホイールドラッグで視点 移動 スペースキーで画面に フィット Sine WaveブロックとScope ブロックの入出力をドラッグ でつなぐ
  13. 13. ブロックパラメータの変更 ブロックをダブルクリックすると 振幅等のパラメータを変更できる Scopeブロックはダブルクリックで スコープ(オシロ的な画面)が開く
  14. 14. シミュレーションの実行 再生マークをクリックして実行 結果はScopeに表示される
  15. 15. よく使用するブロック ● Source → Constant 定数信号 ● Math Operations → Gain 定数ゲイン ● Signal Routing → Mux, Demux ベクトル信号の分割・結合 など… 多くは "Commonly Used Blocks" カテゴリにまとまっている
  16. 16. シミュレーションをいろいろ試してみる いろいろブロックを追加して 試してみよう Tip 信号線を右クリックしな がらドラッグで分岐 例)
  17. 17. シミュレーション設定 可変ステップ・固定ステップなど
  18. 18. シミュレーションの設定 ソルバーの種類 時間ステップ ● 可変ステップ 計算精度が高くなるように 時間ステップを調整しながら シミュレーションする方法 ● 固定ステップ 時間ステップを固定する方法 計算方法 ● 連続時間 連続時間系の数値積分で計算 ● 離散時間 各時刻でブロックの値をその まま計算
  19. 19. Tips [Coffee Break] シミュレーション結果 が時間方向に粗いなと 感じた場合は,固定ス テップソルバを使うか 最小ステップ幅を変更 するかしてみよう スペースキーを押すと ブロック線図の全体が 見える視点になる Ctrlキーを押しながら ブロックを順番に選択 すると,自動的に接続 される
  20. 20. アジェンダ 今回の内容は以下の3つです. 1. Simulinkの基礎 Simulinkを使った時系列データの簡単な 取り扱い方と,シミュレーション手法に ついて学びます. 2. 実践(1) DCモータのPID制御 DCモータをSimulink上でモデル化し ,PID制御を用いた速度制御を実装して自 動チューニングしてみます. 3. 実践(2) 壁トレース制御 マウスの簡易モデルを構築し,壁トレー ス制御のシミュレーションを行います.
  21. 21. DCモータの数理モデル
  22. 22. ブロック線図 DCモータは電気系と機械系の2つの1次遅れ系 を直列接続したものとしてモデル化できる. L: インダクタンス R: 抵抗 J: 慣性モーメント Km: トルク定数 Kf: 粘性摩擦定数 Kb: 逆起電力定数 Va: 端子間電圧 Vemf: 逆起電力 Td: トルク外乱 ω: 角速度 https://jp.mathworks.com/help/control/examples/dc-motor-control.html 電気系 機械系
  23. 23. 伝達関数 線形な系は,入出力間のゲイン・位相の周波数特性で表現できることが知られている. 周波数領域での出力を周波数領域での入力で割ったものを伝達関数と呼ぶ. 伝達関数の周波数特性を可視化する方法として,ボード線図が有名.
  24. 24. 注意事項 ● 連続時間と離散時間では伝達関数の表現が異なる (ラプラス変換 ↔ z変換) cf. 双一次変換 ● 非プロパーな系(分子の次数>分母の次数)は実現できない 未来の情報が必要になるため
  25. 25. Simulinkでのモデル化 Transfer Fcn(伝達関数)ブロックを使用する 各種定数はMATLABスクリプトに記述する R = 2.0; % Ohms L = 0.5; % Henrys Km = 0.1; % torque constant Kb = 0.1; % back emf constant Kf = 0.2; % Nms J = 0.02; % kg.m^2/s^2 Tip MATLABワークスペース 内の変数をSimulinkから 使用することができる. 物理定数の設定に便利. 物理パラメータの例 ブロックの設定 書き終わったら実行して定数を定義しておく.
  26. 26. 端子間電圧 外乱トルク 角速度 上のブロック線図を参考に,実際にSimulinkでDCモータの モデル全体を作成してみよう
  27. 27. サブシステム化 作成したDCモータのモデルをサブシステムに まとめておくとブロックの整理ができる 1. 入出力(印加電圧, 外乱トルク, 角速度) 以外のブロックを選択する 2. 右クリック→「選択からサブシステムを 作成」 3. 見た目を調整する (ブロックの大きさ, 信号の回り込み等)
  28. 28. PID制御の実装 DCモータの速度制御をシミュレーションします
  29. 29. PID制御器 (説明するまでもないと思いますが…) 目標値に対する偏差とその積分・微分に対してそれぞれ ゲインをかけ合わせて合計した値を制御入力とする手法 Simulink上での信号の積分・微分には,Continuousカテ ゴリにあるIntegratorとDerivativeを使用する 実際に作ってみよう
  30. 30. PID制御器 MATLABコードにゲインを定義し, 手動チューニングでいろいろな値を 試して変化を見てみる. PID制御にあまり馴染みのない方は まずはいろいろ試してみる.
  31. 31. PID Controllerブロックを使う 実はSimulinkにはPID制御器が実装されたブロックがあります…
  32. 32. PID調整器を使う PIDゲインを自動チューニングできる! ※Simulink Control Designが必要 挙動のパラメータを設定
  33. 33. アジェンダ 今回の内容は以下の3つです. 1. Simulinkの基礎 Simulinkを使った時系列データの簡単な 取り扱い方と,シミュレーション手法に ついて学びます. 2. 実践(1) DCモータのPID制御 DCモータをSimulink上でモデル化し ,PID制御を用いた速度制御を実装して自 動チューニングしてみます. 3. 実践(2) 壁トレース制御 マウスの簡易モデルを構築し,壁トレー ス制御のシミュレーションを行います.
  34. 34. マイクロマウスの簡易モデル 最も根本的な部分だけモデル化します
  35. 35. 記号の定義 Tip 簡単化のために速度・角 速度を入力としたモデル を考えている. 本来はDCモータへの電圧 入力で考えるべきだが, ここではそれは本質では ないためである. 角速度入力 速度入力 座標(x,y) (+xが進行方向) 角度
  36. 36. マイクロマウスの簡易モデル Tip 簡単化のために速度・角 速度を入力としたモデル を考えている. 本来はDCモータへの電圧 入力で考えるべきだが, ここではそれは本質では ないためである. 単純な計算から,座標 (x, y) と角度 θ の時間微分はつぎのように求まる これをSimulink上で表現してシミュレーションを行う
  37. 37. マイクロマウスの簡易モデル Math Operations/ Trigonometric Function Sinks/ XY Graph 作り終えたら,この部分をサブシステムにまとめておく
  38. 38. 適当な定数を速度・角速度に入力した 場合のシミュレーション結果
  39. 39. 壁トレース制御問題 左右の壁で区切られた通路の中心を直進走行させることを考える. 中心からの横方向へのズレ(y座標)と姿勢角(θ)を計測できると仮定する. このとき,角速度入力ωをどのように決めればyを0に制御できるか? 最も単純な方法として思いつくのは… 「y座標に定数をかけてωにフィードバックする」 狙い通りに動作するかどうかを,シミュレーションによって検証する
  40. 40. 制御則の実装 先ほどの方針「y座標に定数をかけてωにフィードバックする」をSimulinkで実装する Tip Ctrl+Iで選択ブロックを 反転,Ctrl+Rで回転 先ほど作成した マイクロマウスの簡易モデル
  41. 41. シミュレーションの設定 中心からずれた状態からスタートさせるため,y座標のIntegratorブロックに初期値を設定する.
  42. 42. シミュレーション結果 「y座標に定数をかけてωにフィード バックする」 という方針では応答が振動的…
  43. 43. 制御則の改良 PD制御の考え方を応用して,応答を改善する 先ほどの方針:yに対するフィードバック 改良案の方針:yとyの時間微分に対するフィードバック
  44. 44. シミュレーション結果 良くなった!
  45. 45. まとめ ● Simulinkを用いることで,シミュレーション環境を楽に構築できる ● 制御に使用するゲインを予めシミュレーションで決めておくことができる ● 簡易的なモデルを立ててシミュレーション検証することで,原理的に目標の 達成が難しい手法を実機で延々と試さずに済む!
  46. 46. オンライン リソース 自学自習に役立つウェブサイト
  47. 47. MATLAB Onramp MATLABの基礎をブラウザ上で学べる オンラインコース 約2~3時間で完了できる (こちらで自習するとより身につくと思います) https://matlabacademy.mathworks.co m/jp Simulink Onrampもあります!! ※MATLAB/Simulinkインストールが必要

×