Robo-剣 Conference 2017/05/20(Sat)- Robo-剣におけるMATLAB/Simulinkの活用 –MathWorks Japan三田宇洋© 2012 The MathWorks, Inc.1

Robo-剣 Conference

2017年05月20日土曜日 講習会 13:00-18:00

会場: 県立青少年センター






2.ロボット作りへのMatlab活用(制御、画像処理など) 45分
マスワークス 三田宇洋--講演概要-Matlabをロボットプログラミングでどのように活用すれば良いかを解説します。

2

3. MATLABとSimulinkの使い方

3

MATLABとは？
今回、競技参加者の皆さんに貸し出すツールは下記の通りです。
(1) MATLAB®
数値計算を得意とするインタープリター型スクリプト言語(2) Simulink®
時間の概念を持つブロック線図環境のシミュレータ(3) StateFlow®
状態遷移図、フローチャート等で表現されるシーケンス
制御ロジックを記述するSimulinkのオプション(4) SimMechnicsTM
Simulink上での機構系(剛体)のモデリングオプション(5) SimscapeTM
Simulink上での物理モデリングの基本環境(6) Simulink® CoderTM
Simulinkのモデルの等価Cコード自動生成（7） Real-Time Windows Target
Simulinkのモデルのリアルタイム動作(8) Image Acquisition ToolboxTM
実画像データとMATLABのインターフェース(9) DSP System ToolboxTM
信号処理のオプションライブラリ(10) Image processing ToolboxTM
画像処理の基本(11) Control System Toolbox
ＭＡＴＬＡＢにおける制御工学(12) Computer Vision System Toolbox
動画像の処理(13) DSP System Toolbox
信号処理の基本(14 )MATLAB Coder
MATLABソースをコード生成する(15 )Simulink coder
Ｓｉｍｕｌｉｎｋモデルをコード生成する(16 )Robotics System Toolbox
MATLABとＲＯＳをリンクする

4

MATLABをうまく使いこなそう

ロボットモデル作成に効率の良いアプローチ
真似できるところは真似る。
– 標準デモ– 参考文献（特にこれは参考にしよう）– 市販の文献

MathWorks HPの情報を活用しよう。
– FAQ– http://www.mathworks.co.jp/support/product/technicalsolutions-index.html– MATLAB Central– http://www.mathworks.co.jp/matlabcentral/5この本も参考になります。
注：文献[1],[2]と一部内容が重なります。

7

MATLABの特徴



インタープリター型スクリプト言語
数学(行列・ベクトル、関数)計算が得意
数百もの数学関数



この競技で予想される使い方– スクリプト 計算、パラメータ定義
– 関数化

8

Simulinkの基本
静的システム

代数方程式
Etc.

動的システム

常微分方程式（連続時間）
差分方程式（離散時間）

連続時間システム
離散時間システム

線形システムSimulinkで表現できるシステムは？

非線形システムマルチレートシステム（異なるサンプリングレート）
ハイブリッドシステム（連続時間＋離散時間）
イベントドリブンシステム＜非線形要素＞
摩擦
空気抵抗
ギヤのすべり量ヒステリシスEtc.
9シミュレーションステップ
Simulinkは数値計算をベースにしたシミュレータ
各変数は有限の時間刻み（ステップサイズ）で計算• 可変ステップ

・ステップサイズ：Δt– ステップサイズがシミュレーション中に自動調節される• 固定ステップ– シミュレーション中にステップサイズが変化しない

0tΔt
10

モデリング（直接表現）

運動方程式はmx  (cx )  (kx)  u
整理するとmx  cx  kx  u
初期値は

x(0)  0, x(0)  0, x(0)  0 とする。
xkkx・cxmuc

図 機械系ダイナミクスの例（１自由度振動系）
11

Simulink連続モデルの作成の基本原則

STEP0 準備– 微分回数最大の変数を左辺に移項、残りを右辺に移項

STEP1

微積分変数の位置関係– 式に登場する微分積分の関係を、積分器(Integrator)を使って表現する。
STEP2

右辺 各項の要素 作成– 式の右辺に登場する項を、線を分岐させ作成する。
STEP3

左辺と右辺の整合性– 右辺と左辺の整合性をモデルに表現する。

どんな複雑なモデルでも基本原則は変わらない。
12

STEP1

微積分変数の位置関係

x
加速度

x
速度x
位置

２階の微分方程式

13

STEP2

右辺 各項の要素 作成①②③mx  (cx )  (kx)  u①xu ③x

x

②14

STEP3

左辺と右辺の整合性④mx  (cx )  (kx)  ux 作成のための割り算に注意

x④umx x

x

15

サブシステム化

サブシステム化したい箇所を選択（マウス左クリック 範囲指定）
16

編集→サブシステム化

17

サブシステム
ダブルクリックでモデル表示

18

連続系 便利な機能 Tips
背景色の変更(スクリーンカラー)

前景色、背景色ドロップシャドウ

テキスト挿入テキスト挿入(sdof.mdl)

19

ロボットモデルに有益なデモ

コマンドウィンドウから>>demo[Enter]

各ツールのユーザーガイド
関数例
デモなどが見れる。

20

MATLAB
参考になりそうな標準デモ(1)

デモ名：スペクトル解析のための FFT
ファイル名：fftdemo.m21

Simulink
参考になりそうな標準デモ(1)

デモ名：跳ねるボールのシミュレーション
ファイル名： sldemo_bounce.mdl
エッセンス：連続系(sの世界)のモデリングが理解できる。

22

Stateflow
参考になりそうな標準デモ(1)

デモ名：列挙型のデータ型を使った CD プレーヤー/ラジオのモデル化
ファイル名：sf_cdplayer.mdl
エッセンス：Stateflowの基本的な機能が網羅

23

Stateflow
参考になりそうな一般デモ(2)シミュレーションモデル 倒立振り子

フィードバック制御

Stateflowによるモード管理
モード制御

コントローラモデル(invert_pend_sim_vr.mdl)

24各モードのコントローラロジック

①

③

④

②⑤

最適レギュレータとオブザーバ[1] Swingモード：腕(Arm)を定周期で左右に振り、振子(Pend)を揺動させ徐々に鉛直上向きに近づけるモード。
[2] Wake Upモード：振子全体の安定化制御を行うモード。
[3] Hold モード:制御を停止したモード。

25

シミュレーションモデル 上級編
Stateflowによるモード管理ロジック

26

SimMechanics First Generation
参考になりそうな標準デモ(1)First Generation:先代までのSimMechanics
デモ：Robot Arm with Virtual Reality Scene
ファイル名：mech_robot_vr.mdl
エッセンス：多リンクのロボットアームのモデル化のイメージ

(A)
27

設定

28

SimMechanics First Generation
参考になりそうな標準デモ(1)

デモ：Four Bar Mechanism with Custom Body Visualization Data
ファイル名：mech_four_bar_vis.mdl
エッセンス：4リンク、ボディ(剛体)とJoint(関節：自由度)の関係
STLファイルの張り方

29

SimMechanics Second Generation
参考になりそうな標準デモ(1)

デモ：How to Build a Model
ファイル名：sm_double_crank_aiming.m30

Simscape
参考になりそうな標準デモ(1)

デモ：永久磁石DCモータ
ファイル名： ssc_dcmotor.mdl
エッセンス：Simscape標準ブロックでの電気＋機械モデルの作り方

31

Simscape
参考になりそうな標準デモ(2)

デモ：カスタマイズしたコンデンサ ライブラリを使ったモデル
ファイル名：ssc_ultracapacitor.mdl
エッセンス：Simscape言語によるオリジナルモデルの作り方

32

Simulink 3D Animation
参考になりそうな標準デモ(1)

デモ：Manipulator Moving a Load with use of Global Coordinates
ファイル名：vrmanipul_global.mdl
エッセンス：ロボットアームのVRML表示

33

Image Processing Toolbox
参考になりそうな標準デモ(1)

デモ：動いている振子の長さを検出
ファイル名： PendulumLengthExample.m
エッセンス：静画像の処理

34

Computer Vision Toolbox
参考になりそうな標準デモ(1)

デモ：Abandoned Object Detection
ファイル名：vipabandonedobj.mdl
エッセンス：動画像の処理

35

4. Simulinkによるサーボモータのモデル化


サーボモータ例 Dynamixel EX-106+(株)ベストテクノロジー
36一般的なフィードバック制御の構造(設定値追従制御)
物理モデリングの対象
設定値＋制御器(コントローラ)

－D/A
変換

アクチュ
エータ

制御対象
(プラント)

センサ

操作

計測

実体

計算機上で動くアルゴリズム、プログラム

物理の世界
電気、機械、流体、熱等

分類

デジタル

アナログ

例：DCモータの角度制御の場合角度
指令値

* ＋－

PID
制御

I/O

A/D
変換

： データの流れ

ハード/ソフトのI/F

モータ
ドライブ
回路

DC
モータ

角度センサ

ハード/ソフトのI/F

I/O

カウント
値→
角度変換

検出
角度

37

フィードバック制御の構造

設定値
＋－

制御器
(コントローラ)

D/A
変換

アクチュエータ

制御対象(プラント)

操作

センサ

A/D
変換

計測

実体

計算機上で動くアルゴリズム、プログラム

物理の世界
電気、機械、流体、熱等系

離散系

連続系

分類

デジタル

アナログ

38

簡単にすると行う作業(1) 制御構造の設計(2) 制御パラメータのチューニング

v

r＋＋
C(s)
－

設定値

外乱＋

例：PID制御器

G(s)y

制御対象(例：一次遅れ+無駄時間系)

39

モータのモデリング【要旨】
DCモータの数式モデルを例として、データフローのSimulinkと物理モデリングのSimscapeを比べ、 物理モデリングの基礎を掴む。
[ポイント]

Simscape標準ブロックによるモデリング
Simulinkモデルと比較

di K edt
d 2dc
機械系 T  K t i  I2dtdt
電気系 V  Ri  L

動特性式
[記号]

V : 電圧[V ], R : 抵抗[], i : 電流[ A], L :自己インダクタンス[ H ], K e : 逆起定数[V  s / rad ],T , :トルクK t :トルク定数( K t  K e ), I : 慣性モーメント[kg  m 2 ], c : 粘性係数[ N  m  rad 1  s ]

 : 角速度[rad / s] d dt 40

モータのモデル(Simulink/Simscape)
機械系モデル

電気系モデルエネルギー変換

Simscape

SimscapeとSimulinkモデル
シミュレーション結果（ほぼ等価）
電流

Current0.40.2001.5

x 10

0.5

11.521.5

2Velocity
角速度-310.5
000.51Time

注記：パラメータ値
V=1.5;R=3.9;L=12e-3;
Kt=Ke=0.072e-3/(2*pi/60);
c=0.2;I=0.1;

Simulink(ssc_dcmotor_2.mdl)

41

サーボモータのモデル（連続系）
PI制御器
モータ

モータ

PI制御器

(ssc_dcmotor_2_fb.mdl)

42

サーボモータのモデル（連続系）
Subsystem版
r＋
C(s)

G(s)

－y

黄：パルス状の設定値
紫：制御量(ssc_dcmotor_2_fb2.mdl)

43

MathWorksのRobo-One紹介ページ

関連
プロダ
クト

関連
デモ

初歩

44

 御清聴ありがとうございました。

45