• 配布するファイル等の動作保証およびテクニカルサポート,発生した損害に対する責任は負いません.

はじめに

 本書で利用した MATLAB/Simulink ファイル等をまとめたもの

を配布します.

  •  mfiles.zip を解凍すると, 各章に対応したフォルダ (フォルダ p1c3 なら「第 I 部第 3 章」を意味する) 内にファイル群が生成されます. また,第 II 部 3.3 節 (モデル予測制御) のファイル群はフォルダ AutoGenU_InvPend 内に生成されます.
  •  配布する p1c2-p2c3 内の MATLAB/Simulink ファイルは Windows 7 (64bit) の R2013a/2013b/R2014a/2014b/R2015a/R2015aSP1/2015b/R2016a で動作確認を行っています.
  •  配布する p1c2-p2c3 内の MATLAB/Simulink ファイルを実行するには,「準備」の設定を行ってください.
  •  配布する AutoGenU_InvPend 内のファイル群については ReadmeInvPend.txt を参照してください.


配布ファイルの説明

第 I 部 (基礎編) / 第 2 章 台車位置の PID 制御

フォルダ名 ファイル名 説明 該当箇所
p1c2 p1c211_pcont.m 台車の P 制御 p.22
(2.1.1 項)
p1c212_pdcont.m 台車の PD 制御 p.23
(2.1.2 項)
p1c213_picont.m 台車の PI 制御 p.25
(2.1.3 項 (a))
p1c213_pidcont.m 台車の PID 制御 p.25
(2.1.3 項 (b))
PIDmodel.slx 台車の P, PD, PI, PID 制御を行う Simulink モデル (M ファイル p1c211_pcont.m, p1c212_pdcont.m, p1c213_picont.m, p1c213_pidcont.m で使用) -
p1c213_pidbode.m 台車の PD, PI, PID 制御系の Bode 線図 pp.25-26
(2.1.3 項 (b))
p1c221_id_cart.m 台車のモデリング p.27
(2.2.1 項)
cart_model.slx 台車の Simulink モデル
cartident.m 台車のパラメータ同定を行うためのファンクション M ファイル
p1c223_pcont.m モデルマッチング法による台車の P 制御 p.29
(2.2.3 項)
PIDmodel2.slx 台車の P 制御を行う Simulink モデル
p1c224_p_dcont.m モデルマッチング法による台車の P-D 制御 p.31
(2.2.4 項 (a))
PDmodel.slx 台車の P-D 制御を行う Simulink モデル
p1c224_i_pdcont.m モデルマッチング法による台車の I-PD 制御 p.32
(2.2.4 項 (b))
IPDmodel.slx 台車の I-PD 制御を行う Simulink モデル
p1c23_crane.m クレーンの I-PD 制御 p.32
(2.3 節)
IPDmodel_crane.slx クレーンの I-PD 制御を行う Simulink モデル

第 I 部 (基礎編) / 第 3 章 物理法則に基づくモデリングとパラメータ同定

 ** 印の M ファイルを実行するには,Symbolic Math Toolbox が必要です.

フォルダ名 ファイル名 説明 該当箇所
p1c3 p1c311_cdip_lagrange.m ** Lagrange の運動方程式による台車型倒立振子単体の非線形モデルの導出 pp.40-41
(3.1.1 項)
p1c321_cdip_plot_pcont.m 台車の P 制御の実験データの描画:図 3.7 (a) p.47
(3.2.1 項 (a))
p1c321_cdip_id_cart.m 2 次遅れ系の特性に注目した台車のパラメータ同定:図 3.7 (b),表 3.5 (b)
cdip_cart_pcont_data_kP_025
_ref_02.mat
台車の P 制御の実験データ
(\({k}_{\rm P} = 2.5,\ {z}_{\rm c} = 0.2\ {\rm [m]}\))
cdip_cart_pcont_data_kP_050
_ref_02.mat
台車の P 制御の実験データ
(\({k}_{\rm P} = 5,\ {z}_{\rm c} = 0.2\ {\rm [m]}\))
cdip_cart_pcont_data_kP_100
_ref_02.mat
台車の P 制御の実験データ
(\({k}_{\rm P} = 10,\ {z}_{\rm c} = 0.2\ {\rm [m]}\))
cdip_cart_pcont_data_kP_200
_ref_02.mat
台車の P 制御の実験データ
(\({k}_{\rm P} = 20,\ {z}_{\rm c} = 0.2\ {\rm [m]}\))
p1c321_cdip_id_pend.m 2 次遅れ系の特性に注目した振子のパラメータ同定:図 3.9-3.11,表 3.5 (b) p.49
(3.2.1 項 (b))
cdip_pend_data.mat 振子の自由振動の実験データ
p1c322_cdip_id_least_square.m 最小二乗法に基づく台車型倒立振子のパラメータ同定:図 3.12, 3.13 p.52
(3.2.2 項)
cdip_least_square_data.mat 台車の P 制御の実験データ
(\({k}_{\rm P} = 10,\ {z}_{\rm c} = 0.2\ {\rm [m]}\) としたときの台車位置と振子角度の実験データ)
cdip_least_square_MN_sim.slx 実験データを 3 次のローパスフィルタに通過させる処理を行う Simulink モデル
cdip_pcont_least_square_sim.slx 台車の P 制御の非線形シミュレーションを行う Simulink モデル
p1c332_adip_plot_pcont.m アームの P 制御の実験データの描画 p.55
(3.3.2 項)
p1c332_adip_id_arm.m 2 次遅れ系の特性に注目したアームのパラメータ同定
adip_arm_pcont_data_kP_1_
ref_1.mat
アームの P 制御の実験データ
(\({k}_{\rm P} = 1,\ {\theta}_{\rm 1c} = 1\ {\rm [rad]}\))
adip_arm_pcont_data_kP_2_
ref_1.mat
アームの P 制御の実験データ
(\({k}_{\rm P} = 2,\ {\theta}_{\rm 1c} = 1\ {\rm [rad]}\))
adip_arm_pcont_data_kP_3_
ref_1.mat
アームの P 制御の実験データ
(\({k}_{\rm P} = 3,\ {\theta}_{\rm 1c} = 1\ {\rm [rad]}\))
adip_arm_pcont_data_kP_4_
ref_1.mat
アームの P 制御の実験データ
(\({k}_{\rm P} = 4,\ {\theta}_{\rm 1c} = 1\ {\rm [rad]}\))
adip_arm_pcont_data_kP_5_
ref_1.mat
アームの P 制御の実験データ
(\({k}_{\rm P} = 5,\ {\theta}_{\rm 1c} = 1\ {\rm [rad]}\))
p1c332_adip_id_pend.m 2 次遅れ系の特性に注目した振子のパラメータ同定
adip_pend_data.mat 振子の自由振動の実験データ
p1c332_adip_id_least_square.m 最小二乗法に基づくアーム型倒立振子のパラメータ同定
adip_least_square_data.mat アームの P 制御の実験データ
(\({k}_{\rm P} = 3,\ {\theta}_{\rm 1c} = 1\ {\rm [rad]}\) としたときのアーム角度と振子角度の実験データ)
adip_least_square_MN_sim.slx 実験データを 3 次のローパスフィルタに通過させる処理を行う Simulink モデル
adip_pcont_least_square_sim.slx アームの P 制御の非線形シミュレーションを行う Simulink モデル
cdip_pcont_sim.slx Simulink モデルの作成例 (図 3.17) pp.57-58
(3.4 節)
p1c34_cdip_plot_pcont.m シミュレーション結果の描画例 (図 3.12)

第 I 部 (基礎編) / 第 4 章 システムの状態空間表現と安定性

フォルダ名 ファイル名 説明 該当箇所
p1c4 p1c41_cdip_respose.m 台車の P 制御を行ったときの時間応答:図 4.5 (p.67) p.66
(4.1 節)
p1c41_cdip_respose_custom.m 台車の P 制御を行ったときの時間応答:図 4.5 (p.67) ・・・グラフの描画をカスタマイズ
p1c43_lyapunov_func.m Lyapunov 関数の例:図 4.7 (p.80) p.80
(4.3 節)
p1c43_stability1.m 不安定なシステムの安定性判別の例 p.72
(4.3 節)
p1c43_stability2.m 安定なシステムの安定性判別の例 pp.72-74
(4.3 節)

第 I 部 (基礎編) / 第 5 章 可制御性と状態フィードバック

 ** 印の M ファイルを実行するには,Symbolic Math Toolbox が必要です.

フォルダ名 ファイル名 説明 該当箇所
p1c5 p1c511_ex1.m 可制御なシステムの可制御性行列 例 5.1
p.77
(5.1.1 項)
p1c511_ex2.m ** 不可制御なシステムの可制御性行列 例 5.2
p.78
(5.1.1 項)
p1c511_ex3_adip.m ** アーム型倒立振子の可制御性行列 例 5.3
pp.78-79
(5.1.1 項)
p1c511_ex4_cdip.m ** 台車型並列二重倒立振子の可制御性行列 例 5.4
pp.79-80
(5.1.1 項)
p1c512_ex5.m 可制御正準形への変換 例 5.5
pp.82-83
(5.1.2 項)
p1c522_ex6.m ** 可制御なシステムの極配置 例 5.6
pp.86-87
(5.2.2 項)
p1c522_ex7_adip_place.m アーム型倒立振子の極配置法によるコントローラ設計 例 5.7
p.87
(5.2.2 項)
p1c523_ex8_adip_lqr.m アーム型倒立振子の最適レギュレータによる制御・・・コントローラ設計 例 5.8
pp.90-92
(5.2.3 項)
p1c523_ex8_adip_lqr_plot.m アーム型倒立振子の最適レギュレータによる制御・・・コントローラ設計と非線形シミュレーション結果の描画
adip_lqr_sim.slx 例 5.8 で使用した Simulink モデル
adip_lqr_sim2.slx 例 5.8 で使用した Simulink モデル (D/A 変換,エンコーダの分解能を考慮)

第 I 部 (基礎編) / 第 6 章 内部モデル原理とサーボ系

フォルダ名 ファイル名 説明 該当箇所
p1c6 p1c62_ex1_cart_p_step.m 台車駆動系の P 制御
(\(r(t) = {r}_{0},\ d(t) = 0\))
例 6.1
pp.95-96
(6.2 節)
cart_p_step_sim.slx 例 6.1 で使用した Simulink モデル
p1c62_ex2_cart_pi_ramp.m 台車駆動系の PI 制御
(\(r(t) = {r}_{0}t,\ d(t) = 0\))
例 6.2
pp.96-97
(6.2 節)
cart_pi_ramp_sim.slx 例 6.2 で使用した Simulink モデル
p1c62_ex3_cart_p_step_dis.m 台車駆動系の P 制御
(\(r(t) = {r}_{0},\ d(t) = {d}_{0}\))
例 6.3
p.98
(6.2 節)
cart_pi_step_dis_sim.slx 例 6.3, 6.4 で使用した Simulink モデル
p1c62_ex4_cart_pi_step_dis.m 台車駆動系の PI 制御
(\(r(t) = {r}_{0},\ d(t) = {d}_{0}\))
例 6.4
p.99
(6.2 節)
p1c63_ex5_cdip_lqr_servo.m 台車型倒立振子の積分型サーボ制御 例 6.5
pp.103-104
(6.3 節)
cdip_lqr_servo_sim.slx 例 6.5 で使用した Simulink モデル
cdip_lqr_servo_sim2.slx 例 6.5 で使用した Simulink モデル (D/A 変換,エンコーダの分解能を考慮)

第 I 部 (基礎編) / 第 7 章 可観測性とオブザーバ

 ** 印の M ファイルを実行するには,Symbolic Math Toolbox が必要です.

フォルダ名 ファイル名 説明 該当箇所
p1c7 p1c74_ex1_cdip_Mc.m ** 台車型倒立振子の可制御性 例 7.1
pp.113-117
(7.4 節)
p1c74_ex1_cdip_ob_design.m 台車型倒立振子の極配置法によるオブザーバ設計
p1c74_ex1_cdip_ob_plot.m 台車型倒立振子の出力フィードバック制御
cdip_ofbk_sim.slx 例 7.1 で使用した Simulink モデル
p1c74_ex2_cdip_Mo.m ** 不可観測な台車型倒立振子 例 7.2
p.117
(7.4 節)
p1c75_ex3_cdip_detectability.m ** 不可検出な台車型倒立振子 例 7.3
p.118
(7.5 節)

第 I 部 (基礎編) / 第 8 章 コントローラの実装 ー 離散化

フォルダ名 ファイル名 説明 該当箇所
p1c8 p1c83_ex1_zero_order_hold.m 0 次ホールドによる離散化 例 8.1
p.124
(8.3 節)
p1c83_ex2_cdip_ob_design_
zoh.m
台車型倒立振子の出力フィードバックコントローラの 0 次ホールドによる離散化 例 8.2
pp.124-125
(8.3 節)
p1c84_ex3_bilinear.m 双一次変換による離散化 例 8.3
p.130
(8.4 節)
p1c84_ex4_cdip_ob_design_
bilinear.m
台車型倒立振子の出力フィードバックコントローラの双一次変換による離散化 例 8.4
pp.130-131
(8.4 節)

第 II 部 (発展編) / 第 1 章 LMI と制御

 ここのファイル群を実行するには,あらかじめ,SeDuMi/YALMIP がインストールされている必要があります.

フォルダ名 ファイル名 説明 該当箇所
p2c1 p2c112_ex1_alpha_stability.m LMI 可解問題 例 1.1
pp.138-140
(1.1.2 項)
p2c121_ex3_alpha_stability_
opt.m
LMI 最適化問題 例 1.3
pp.142-143
(1.1.2 項)
p2c122_ex4_adip_oc_servo.m アーム型倒立振子の LMI による最適制御と最適レギュレータ 例 1.4
pp.146-148
(1.2.2 項)
p2c122_ex4_adip_oc_
multiobjective_servo.m
アーム型倒立振子の LMI による多目的最適制御
adip_servo_sim.slx 例 1.4, 1.5 で使用した Simulink モデル
p2c13_ex5_adip_oc_robust_
servo.m
アーム型倒立振子の多目的ロバスト制御 例 1.5
pp.151-153
(1.3 節)
p2c13_ex5_adip_oc_nominal_
servo.m
アーム型倒立振子のノミナル値に対して設計された多目的制御
p2c13_ex5_adip_lqr_servo.m アーム型倒立振子のノミナル値に対して設計された最適レギュレータ
mvert.m 変動の端点を生成するためのファンクション M ファイル
p2c14_ex6_adip_oc_
saturation.m
入力飽和を有するアーム型倒立振子の制御 例 1.6
pp.156-157
(1.4 節)
adip_saturation_sim.slx 例 1.6 で使用した Simulink モデル
adip_saturation2_sim.slx 例 1.6 で使用した Simulink モデル (D/A 変換,エンコーダの分解能を考慮)
p2c15_ex7_adip_oc_gs_servo.m アーム型倒立振子のゲインスケジューリング制御 例 1.7
pp.162-166
(1.5 節)
qf_polynomial.m 行列二乗和多項式を生成するためのファンクション M ファイル
adip_gs_servo_sim.slx 例 1.7 で使用した Simulink モデル (アーム型倒立振子のゲインスケジューリング制御)
p2c15_ex7_adip_lqr_servo.m アーム型倒立振子の最適レギュレータ
adip_lqr_servo_sim.slx 例 1.7 で使用した Simulink モデル (アーム型倒立振子の最適レギュレータ)

第 II 部 (発展編) / 第 2 章 ディジタル制御

 例 2.1 のファイル群を実行するには,あらかじめ,ODQ Toolbox/Lab と SeDuMi がインストールされている必要があります.

フォルダ名 ファイル名 説明 該当箇所
p2c2 p2c234_ex1_cdip_odq.m 台車型倒立振子の量子化入力制御 例 2.1
pp.182-186
(2.3.4 項)
p2c234_ex1_cdip_odq_custom.m 台車型倒立振子の量子化入力制御・・・グラフの描画をカスタマイズ
cdip_odq_sim.slx 例 2.1 で使用した Simulink モデル
p2c242_ex2_cart_ipd.m 台車型駆動系の I-PD 制御における離散化の影響 例 2.2
pp.187-189
(2.4.2 項)
p2c242_ex2_cart_ipd_custom.m 台車型駆動系の I-PD 制御における離散化の影響・・・グラフの描画をカスタマイズ
cart_ipd_sim.slx 例 2.2 で使用した Simulink モデル
p2c244_ex3_cdip_sampled_data
_lqr_sim.m
台車型倒立振子のサンプル値最適レギュレータ 例 2.3
pp.193-195
(2.4.4 項)
p2c244_ex3_cdip_sampled_data
_lqr_sim_custom.m
台車型倒立振子のサンプル値最適レギュレータ・・・グラフの描画をカスタマイズ
cdip_sampled_value_lqr_sim.slx 例 2.3 で使用した Simulink モデル

第 II 部 (発展編) / 第 3 章 非線形制御 / 3.2 節

フォルダ名 ファイル名 説明 該当箇所
p2c3 p2c323_ex1_cdip_swing_up.m 台車型倒立振子の振り上げ安定化制御 例 3.1
pp.208-215
(3.2.3 項)
p2c323_ex1_cdip_swing_up
_custum.m
台車型倒立振子の振り上げ安定化制御・・・グラフの描画をカスタマイズ
p2c323_Sliding_Mode_Control.m 例 3.1 におけるスライディングモードコントローラの設計
cdip_swing_up_sim.slx 例 3.1 で使用した Simulink モデル
cdip_swing_up_sim2.slx 例 3.1 で使用した Simulink モデル (D/A 変換,エンコーダの分解能を考慮)

第 II 部 (発展編) / 第 3 章 非線形制御 / 3.3 節

 モデル予測制御によるアーム型倒立振子の振り上げ安定化のシミュレーションプログラムです.詳細は

を参照してください.

フォルダ名 ファイル名 説明 該当箇所
AutoGenU_InvPend C プログラム関係 aginvpendC.c 振り上げ制御シミュレーションの C ソースファイル 例 3.2
pp.218-221
(3.3 節)
rhfuncu.c C ソースファイル (汎用関数)
rhmainu.c C ソースファイル (メイン関数)
plotsim.m シミュレーション結果のグラフを表示する M ファイル
animInvPend.m シミュレーション結果のアニメーションを作成する M ファイル
自動生成関係 AutoGenU.nb C ソースファイルを自動生成する Mathematica ノートブック
AutoGenU.mc C ソースファイルのテンプレートファイル
inputInvPendC.m AutGenU.nb が読み込む問題設定ファイル
Format2.m AutoGenU.nb が使用するパッケージ (Mathematica Ver.4-8 用)
Format3.m AutoGenU.nb が使用するパッケージ (Mathematica Ver.9 用)
Optimize2.m AutoGenU.nb が使用するパッケージ
動画 InvPendC01.mp4 \(|u(t)| \le {u}_{\rm max} = 5\ {\rm [V]}\)
\({\theta}_{1}(0) = {\theta}_{2}(0) = \pi\ {\rm [rad]}\)
\(\dot{\theta}_{1}(0) = \dot{\theta}_{2}(0) = 0\ {\rm [rad/s]}\)
\({\theta}_{\rm 1d} = {\theta}_{\rm 2d} = 0\ {\rm [rad]}\)
InvPendC03.mp4 \(|u(t)| \le {u}_{\rm max} = 3\ {\rm [V]}\)
\({\theta}_{1}(0) = {\theta}_{2}(0) = \pi\ {\rm [rad]}\)
\(\dot{\theta}_{1}(0) = \dot{\theta}_{2}(0) = 0\ {\rm [rad/s]}\)
\({\theta}_{\rm 1d} = {\theta}_{\rm 2d} = 0\ {\rm [rad]}\)
InvPendC04.mp4 \(|u(t)| \le {u}_{\rm max} = 2.5\ {\rm [V]}\)
\({\theta}_{1}(0) = {\theta}_{2}(0) = \pi\ {\rm [rad]}\)
\(\dot{\theta}_{1}(0) = \dot{\theta}_{2}(0) = 0\ {\rm [rad/s]}\)
\({\theta}_{\rm 1d} = {\theta}_{\rm 2d} = 0\ {\rm [rad]}\)
\(\cdots\cdots\) 例 3.2 の 図3.14, 3.15
InvPendC05.mp4 \(|u(t)| \le {u}_{\rm max} = 2\ {\rm [V]}\)
\({\theta}_{1}(0) = {\theta}_{2}(0) = \pi\ {\rm [rad]}\)
\(\dot{\theta}_{1}(0) = \dot{\theta}_{2}(0) = 0\ {\rm [rad/s]}\)
\({\theta}_{\rm 1d} = {\theta}_{\rm 2d} = 0\ {\rm [rad]}\)
\(\cdots\cdots\) 目標姿勢に収束しない