MATLABで制御動画を作成しMP4として保存する
この記事では、MATLABを用いて制御シミュレーションの結果をアニメーション化し、MP4形式の動画として保存する方法について解説します。制御工学の理論を視覚的に理解するためには、シミュレーション結果を動画として表現することが非常に効果的です。
なお、状態フィードバック制御やオブザーバ設計の基礎については次の記事でまとめています。
状態フィードバック制御・状態方程式に基づく制御のまとめ(制御工学ブログ内)
アニメーション作成の重要性
制御システムの設計や解析において、シミュレーションは理論の妥当性を確認する重要なツールです。特に、時間的な推移をアニメーションとして可視化することで、システムの挙動を直感的に理解することができます。
MATLABは制御工学分野で広く利用されているツールであり、アニメーション機能を使うことで、シミュレーション結果を動画やGIFアニメーションとして出力できます。これにより、研究発表や教育現場で視覚的に分かりやすい資料を作成することが可能になります。
MATLABでのアニメーション作成の基本手順
MATLABでアニメーションを作成してMP4として保存する際の基本的な手順は以下の通りです。
1. 数値シミュレーション
状態方程式を数値積分し、時系列データを取得します。MATLABのode45などの関数を使用します。
% 例: 状態方程式の定義
sys = @(t,x) A*x + B*u;
% 数値積分の実行
[t, x] = ode45(sys, tspan, x0);
2. 描画処理
各時刻でのシステムの状態を図として描画します。plot関数やrectangle、lineなどの関数を組み合わせて使用します。
% 図の初期設定
figure;
hold on;
axis equal;
xlim([xmin xmax]);
ylim([ymin ymax]);
3. フレーム更新
drawnowコマンドで図を更新し、アニメーション効果を実現します。
for i = 1:length(t)
% 描画要素の更新
plot(x(i,1), x(i,2), 'ro');
drawnow;
end
4. MP4動画出力
VideoWriterを使ってMP4形式で保存します。これが最も重要なステップです。
% VideoWriterオブジェクトの作成
v = VideoWriter('simulation_output.mp4', 'MPEG-4');
v.FrameRate = 30; % フレームレート設定
v.Quality = 95; % 品質設定(0-100)
open(v);
% アニメーションループ
for i = 1:length(t)
% 描画処理
plot(x(i,1), x(i,2), 'ro');
drawnow;
% フレームのキャプチャと書き込み
frame = getframe(gcf);
writeVideo(v, frame);
end
% ファイルを閉じる
close(v);
実践例: 倒立振子のアニメーション作成
倒立振子は制御工学における代表的なベンチマーク問題です。ここでは、倒立振子のシミュレーション結果をMP4動画として保存する例を示します。
システムの定義
システムは状態方程式で表現されます。状態ベクトルは、台車の位置、台車の速度、振子の角度、振子の角速度で構成されます。
アニメーション化のポイント
倒立振子のアニメーションでは、以下の要素を描画します。
- 台車の位置と形状
- 振子の角度と長さ
- 目標位置の表示
- 時間経過のテキスト表示
MATLAB File Exchangeで公開中のサンプル
実際の制御シミュレーションと動画出力の実装例として、以下のファイルをMATLAB File Exchangeで公開しています。
1. 倒立振子のシミュレーションとアニメーション
主な機能:
- 状態フィードバック制御による倒立振子の安定化
- リアルタイムアニメーション表示
- MP4動画およびJPG画像の出力機能
- パラメータ調整による挙動の変化確認
MATLAB File Exchange: Inverted pendulum simulation and animation
2. 最適レギュレータのアニメーション
重み行列QとRを変更した際の制御性能の変化をMP4動画として出力できます。
MATLAB File Exchange: Optimal control animation
3. アダプティブクルーズ制御
2台の車両の動きをアニメーション表示し、MP4として保存できます。
MATLAB File Exchange: Adaptive Cruise Control Simulator
その他、アップしているファイルは以下から参照できます。(Mathworksアカウントが必要です。)
MATLAB Central File Exchange - 公開ファイル一覧
まとめ
本記事では、MATLABを用いて制御シミュレーション結果をアニメーション化し、MP4動画として保存する方法について解説しました。
制御シミュレーションの動画化は、研究発表、教育、デモンストレーションなど、様々な場面で活用できます。MATLAB File Exchangeで公開しているサンプルコードを参考にして頂けると幸いです。