ブロック線図に基づく システム制御学習環境における リアルタイム制御実験 ブロック線図に基づくシステム制御学習環境におけるリアルタイム制御実験というタイトルで九州工業大学大学院の谷口が発表します。 九州工業大学 谷口仁志 古賀雅伸 矢野健太郎
Model Based Design Matlab / Simulink /Real-Time Workshop 図式モデル UML ブロック線図 G(s) 図式モデル 解析 設計 シミュレーション 実機 システムの開発プロセスを一貫して行う方法の一つにモデルベースドデザインという考え方があります。 これは、UMLやブロック線図などによりシステムを表現した図式モデルを用いて解析から実機での作業までを行うことのできる手法です。実機での検証の際に、解析や設計、シミュレーションで用いた図式モデルを利用できるので実機上での作業を最小限に短縮することができます。 制御系では、Matlabがこの手法を取り入れており、Real-Time Workshopを導入することでSimulink上で作成したブロック線図からC言語のソースコードを自動生成することができ、制御実験を効率よく行うことができます。 Matlab / Simulink /Real-Time Workshop ブロック線図からC言語コードを自動生成
Model Based Designの考え方を取り入れた 教育分野への導入 ブロック線図を利用した学習 手動でのプログラムの実装が不要 シミュレーションから実験へのスムーズな移行 教育現場で求められるシステム 既存のシステムに影響を与えない 多人数で使用できる大規模な環境に対応 この考え方を教育分野へと導入した場合、次のようなメリットが得られます。 手動でプログラムを実装する必要がないため、シミュレーションから実験へとスムーズに移行できます。 その結果ブロック線図を用いて一貫した学習を行うことができ、学習の効率が上がることが期待されます。 しかし、教育分野で利用されるPCは制限が多く、 既存のシステムに影響を与えずに利用できることや、多人数で使用できる環境が求められており、 これはMatlabを利用したシステムでは実現が難しいのが現状です。 そこで、近年Model Based Designの考え方を取り入れた学習支援システムへの要望が高まってきています。 Model Based Designの考え方を取り入れた 学習支援システムへの要望
目的 ブロック線図を用いて 制御系開発プロセスを一貫して学習できる 学習支援システムの開発 そこで本研究では、ブロック線図を用いて制御系開発プロセスを一貫して学習できる学習支援システムの開発を目標とします。
学習支援システムの特徴 HDDにインストールすることなく利用できる リアルタイム実験環境の提供 ブロック線図に基づく制御工学の学習 起動 S ネットワーク USB 倒立振子 起動 電気回路 CD ……… 今回開発した学習支援システムはこのような特徴を持ちます。 まず1つ目に、HDDにインストールすることなく、CD・USB・シンクライアント技術を用いたネットワークからの起動が可能であり、 既存のシステムに影響をあたえることなく学習支援システムを利用できます。 2つ目に、本システムでは、リアルタイム制御パッケージを用いることによって、実時間環境を構築し、リアルタイム制御実験に必要な環境を提供します。 3つ目に制御系設計支援ツールJamoxを利用することで、ブロック線図を用いて制御工学を学習することが可能であり、 Jamox上からリアルタイム制御実験用のコードを自動生成できるため、一貫した学習を行うことができます。 HDDにインストールすることなく利用できる リアルタイム実験環境の提供 ブロック線図に基づく制御工学の学習
システム制御学習支援システムの構成 KNOPPIX[6] ユーザ空間 Jamox[4] リアルタイム 制御実験プログラム リアルタイム 制御パッケージ[5] 学習支援システムの構成はこの図のようになっています。 まず、ベースとなるOSとしてKNOPPIXを利用しており、その上にリアルタイム制御パッケージをインストールすることで実時間環境を構築しており、 さらに、ユーザ空間でのリアルタイム制御実験プログラムの作成と実行を可能としています。 そして、制御系設計支援ツールであるJamoxからこのリアルタイム制御実験プログラムを生成することが可能です。 カーネル空間
リアルタイム制御パッケージ[5] Linux上でリアルタイム処理を実行 リアルタイムタスク操作モジュール リアルタイムタスク制御モジュール リアルタイム処理関数(API) リアルタイムタスク制御モジュール リアルタイムタスクの制御と管理
Jamox GUIによる ブロック線図作成 時間応答グラフ表示 Jamox web site http://jamox.mklab.org/ 8
学習支援システムを利用した学習 Jamox リアルタイム制御 実験用プログラム 制御対象の解析 自動生成 制御実験 制御器の設計 学習支援システムを利用した場合の学習の流れはこのようになっています。 まず、制御対象の解析・制御器の設計を行い、ブロック線図を作成します。 そして、作成したブロック線図によりシミュレーションを行い、良い結果が得られるまで、これらのプロセスを繰り返します。 シミュレーションで良い結果が出たら、リアルタイム制御実験用のソースコードの自動生成を行い、リアルタイム制御実験へと移行します。 制御実験により得られた実験データはJamoxにインポートすることができ、シミュレーションとの比較も容易に行うことができます。 今回のシステムではリアルタイム制御コードの自動生成を可能としラピッドプロトタイピングを実現しているため、 実験と設計、シミュレーションの繰り返しもスムーズに行うことができます。 シミュレーション 実験結果 実験結果と シミュレーションの 比較
学習支援システムを利用した学習 Jamox リアルタイム制御 実験用プログラム 制御対象の解析 自動生成 制御実験 制御器の設計 学習支援システムを利用した場合の学習の流れはこのようになっています。 まず、制御対象の解析・制御器の設計を行い、ブロック線図を作成します。 そして、作成したブロック線図によりシミュレーションを行い、良い結果が得られるまで、これらのプロセスを繰り返します。 シミュレーションで良い結果が出たら、リアルタイム制御実験用のソースコードの自動生成を行い、リアルタイム制御実験へと移行します。 制御実験により得られた実験データはJamoxにインポートすることができ、シミュレーションとの比較も容易に行うことができます。 今回のシステムではリアルタイム制御コードの自動生成を可能としラピッドプロトタイピングを実現しているため、 実験と設計、シミュレーションの繰り返しもスムーズに行うことができます。 シミュレーション 実験結果 実験結果と シミュレーションの 比較
学習支援システムを利用した学習 Jamox リアルタイム制御 実験用プログラム 制御対象の解析 自動生成 制御実験 制御器の設計 学習支援システムを利用した場合の学習の流れはこのようになっています。 まず、制御対象の解析・制御器の設計を行い、ブロック線図を作成します。 そして、作成したブロック線図によりシミュレーションを行い、良い結果が得られるまで、これらのプロセスを繰り返します。 シミュレーションで良い結果が出たら、リアルタイム制御実験用のソースコードの自動生成を行い、リアルタイム制御実験へと移行します。 制御実験により得られた実験データはJamoxにインポートすることができ、シミュレーションとの比較も容易に行うことができます。 今回のシステムではリアルタイム制御コードの自動生成を可能としラピッドプロトタイピングを実現しているため、 実験と設計、シミュレーションの繰り返しもスムーズに行うことができます。 シミュレーション 実験結果 実験結果と シミュレーションの 比較
学習支援システムを利用した学習 Jamox リアルタイム制御 実験用プログラム 制御対象の解析 自動生成 制御実験 制御器の設計 学習支援システムを利用した場合の学習の流れはこのようになっています。 まず、制御対象の解析・制御器の設計を行い、ブロック線図を作成します。 そして、作成したブロック線図によりシミュレーションを行い、良い結果が得られるまで、これらのプロセスを繰り返します。 シミュレーションで良い結果が出たら、リアルタイム制御実験用のソースコードの自動生成を行い、リアルタイム制御実験へと移行します。 制御実験により得られた実験データはJamoxにインポートすることができ、シミュレーションとの比較も容易に行うことができます。 今回のシステムではリアルタイム制御コードの自動生成を可能としラピッドプロトタイピングを実現しているため、 実験と設計、シミュレーションの繰り返しもスムーズに行うことができます。 シミュレーション 実験結果 実験結果と シミュレーションの 比較
学習支援システムを利用した学習 Jamox リアルタイム制御 実験用プログラム 制御対象の解析 自動生成 制御実験 制御器の設計 学習支援システムを利用した場合の学習の流れはこのようになっています。 まず、制御対象の解析・制御器の設計を行い、ブロック線図を作成します。 そして、作成したブロック線図によりシミュレーションを行い、良い結果が得られるまで、これらのプロセスを繰り返します。 シミュレーションで良い結果が出たら、リアルタイム制御実験用のソースコードの自動生成を行い、リアルタイム制御実験へと移行します。 制御実験により得られた実験データはJamoxにインポートすることができ、シミュレーションとの比較も容易に行うことができます。 今回のシステムではリアルタイム制御コードの自動生成を可能としラピッドプロトタイピングを実現しているため、 実験と設計、シミュレーションの繰り返しもスムーズに行うことができます。 シミュレーション 実験結果 実験結果と シミュレーションの 比較
学習支援システムを利用した学習 Jamox リアルタイム制御 実験用プログラム 制御対象の解析 自動生成 制御実験 制御器の設計 学習支援システムを利用した場合の学習の流れはこのようになっています。 まず、制御対象の解析・制御器の設計を行い、ブロック線図を作成します。 そして、作成したブロック線図によりシミュレーションを行い、良い結果が得られるまで、これらのプロセスを繰り返します。 シミュレーションで良い結果が出たら、リアルタイム制御実験用のソースコードの自動生成を行い、リアルタイム制御実験へと移行します。 制御実験により得られた実験データはJamoxにインポートすることができ、シミュレーションとの比較も容易に行うことができます。 今回のシステムではリアルタイム制御コードの自動生成を可能としラピッドプロトタイピングを実現しているため、 実験と設計、シミュレーションの繰り返しもスムーズに行うことができます。 シミュレーション 実験結果 実験結果と シミュレーションの 比較
学習支援システムを利用した学習 Jamox リアルタイム制御 実験用プログラム 制御対象の解析 自動生成 制御実験 制御器の設計 学習支援システムを利用した場合の学習の流れはこのようになっています。 まず、制御対象の解析・制御器の設計を行い、ブロック線図を作成します。 そして、作成したブロック線図によりシミュレーションを行い、良い結果が得られるまで、これらのプロセスを繰り返します。 シミュレーションで良い結果が出たら、リアルタイム制御実験用のソースコードの自動生成を行い、リアルタイム制御実験へと移行します。 制御実験により得られた実験データはJamoxにインポートすることができ、シミュレーションとの比較も容易に行うことができます。 今回のシステムではリアルタイム制御コードの自動生成を可能としラピッドプロトタイピングを実現しているため、 実験と設計、シミュレーションの繰り返しもスムーズに行うことができます。 シミュレーション 実験結果と シミュレーションの 比較 実験結果
学習支援システムを利用した学習 Jamox リアルタイム制御 実験用プログラム 制御対象の解析 自動生成 制御実験 制御器の設計 学習支援システムを利用した場合の学習の流れはこのようになっています。 まず、制御対象の解析・制御器の設計を行い、ブロック線図を作成します。 そして、作成したブロック線図によりシミュレーションを行い、良い結果が得られるまで、これらのプロセスを繰り返します。 シミュレーションで良い結果が出たら、リアルタイム制御実験用のソースコードの自動生成を行い、リアルタイム制御実験へと移行します。 制御実験により得られた実験データはJamoxにインポートすることができ、シミュレーションとの比較も容易に行うことができます。 今回のシステムではリアルタイム制御コードの自動生成を可能としラピッドプロトタイピングを実現しているため、 実験と設計、シミュレーションの繰り返しもスムーズに行うことができます。 シミュレーション 実験結果と シミュレーションの 比較 実験結果
ブロック線図からのコード生成 出力対象 MaTXユーザ定義ブロック 制御対象の出力を入力に持つ 出力が制御対象の入力になる xn=f(k, x, u) y=g(k, x, u) dx=f(t, x, u) y=g(t, x, u) 制御器 制御対象 出力対象 MaTXユーザ定義ブロック 制御対象の出力を入力に持つ 出力が制御対象の入力になる
評価実験 倒立振子の安定化制御実験 ブロック線図による設計 ブロック線図からの実験用コード生成 性能評価で利用したPCのスペック 5.0[s]ごとに目標値を0.1[m]変更 性能評価で利用したPCのスペック CPU Athlon 64 3000+ 2.0[GHz] メモリ 1024 [MB] OS Knoppix 5.3.1 日本語版 Linux Kernel 2.6.24.4 今回のシステムに対する評価実験として倒立振子の安定化制御実験を行いました。 ブロック線図から生成されたコードを利用し、5秒ごとに台車の目標値を0.1m変更するという条件のもとで実験を行いました。 実験に利用したPCのスペックはこのようになっています。
倒立振子の安定化制御 Pendulum 倒立振子 F フィードバックゲイン A B C D 連続時間オブザーバー + - 倒立振子のモデリングを行い倒立振子ブロックを作成
倒立振子の安定化制御 Pendulum 倒立振子 F フィードバックゲイン A B C D 連続時間オブザーバー + - 状態フィードバックのためのフィードバックゲイン 状態を推定するための連続時間オブザーバー
倒立振子の安定化制御 Pendulum 倒立振子 F フィードバックゲイン A B C D 連続時間オブザーバー コントローラを離散化 + - コントローラを離散化
倒立振子の安定化制御 倒立振子 Controller Pendulum 制御器(離散時間システム) 離散化されたコントローラをMaTXブロックとして作成
倒立振子の安定化制御
倒立振子の安定化制御実験
まとめ ブロック線図に基づく学習支援システムの開発 今後の課題 リアルタイム制御実験環境の提供 ブロック線図からの実験用コードを自動生成 制御系開発を一貫して学習することができる 今後の課題 サブシステムへの対応 実験プロセスのGUI化 まとめです。 今回、ブロック線図に基づく学習支援システムの開発を行いました。 学習支援システムは、リアルタイム制御実験環境を提供し、Jamox上のブロック線図から実験用コードを自動生成するため、制御系開発を一貫して学習できます。 今後の課題は、サブシステムへの対応と、実験プロセスのGUI化を行いたいと思っています。
ご静聴ありがとうございました
補足資料 KNOPPIX Linuxのリアルタイム化 RtMaTX 制御実験プログラムの構成 今後の計画 活動とか RT-Linux リアルタイム制御パッケージの性能 RtMaTX 制御実験プログラムの構成 今後の計画 サブシステムからの出力 GUIを利用した実験ツール 活動とか
KNOPPIX OSのインストールを行わずに起動可能 制御工学学習環境用にカスタマイズ Debian Linuxをベースにした1CD Linux OSのインストールを行わずに起動可能 トラブルが起きてもPCの再起動で環境を復元 システムの内部を書き換えられる恐れはない 独自の仕様にカスタマイズが可能 ソフトウェアの追加や削除 USBブート化やシンクライアントサーバー化が可能 CDを入れて 起動 Knoppixとは、Debian LinuxをベースにしたLinuxの一種で、CDから直接Linuxのシステムを起動できるという特徴を持ちます。 OSのインストールを行う必要がなく、OSのイメージはCD内に格納されているため、トラブルが起きた場合でもPCの再起動を行うことで環境を復元でき、システムの内部が誤った操作などにより書き換えられるという心配はありません。 また、独自の仕様にカスタマイズできるのも特徴の一つで、自由にソフトウェアを追加、削除できるほかに、 USBブート化やシンクライアントサーバ化が可能となっています。 今回、これらの特徴に着目し、Knoppixを制御工学の学習環境用にカスタマイズしました。 制御工学学習環境用にカスタマイズ
Linuxのリアルタイム化 Linuxは非リアルタイムOS KNOPPIX上での制御実験は困難 リアルタイム性が保証できない リアルタイム制御パッケージをインストールすることで解決 リアルタイム性が保証できない 制御プログラム 制御対象の状態 操作量 しかし、Linuxは非リアルタイムOSであるため、制御実験を行うためにはリアルタイム性を保証する必要があります。 制御実験を行う場合、PCでは制御対象の状態をリアルタイムで取得し、 操作量をリアルタイムで出力する必要があります。 このリアルタイム性が保障されていない場合、正しい状態が取得できなかったり、誤ったタイミングで操作量が出力され、制御対象が予期せぬ動作を行うなど、制御実験を行うことが困難になります。 そこで、本研究室で開発したリアルタイム制御パッケージをインストールすることでこの問題を解決しました。 制御対象
実時間環境の構築 RT-Linux 問題点 Linux上に実時間環境を構築 インストール プログラミング 環境に応じたカーネルの再構築が必要 実験環境を容易に構築することができない プログラミング カーネル空間でのプログラミング 独自のAPI OSがクラッシュする危険性があり、 ユーザに求められるプログラミング能力が高い 管理・メンテナンスにかかる負担が大きい PC上に実時間環境を構築する手法に、Linuxを拡張したRT-Linuxがあります。 しかし、インストールの際、カーネルの再構築が必要であり、容易に環境を整えることができません。 また、プログラミングも独自のAPIを利用しており、カーネル空間でのプログラミングが必要であるため、 一歩間違うとシステムがクラッシュする恐れがあり、ユーザに求められるプログラミングの能力が高くなってしまいます。 RT-Linuxを利用した場合このように管理、メンテナンスにかかる負担が大きいという問題があります。
リアルタイム制御パッケージの性能 起床レイテンシの測定 RTタスクの起床要求から実際に起床するまでの時間 1[ms]周期で動作するタスクを10000回実行 起床レイテンシ リアルタイム制御パッケージのリアルタイム性を検証するために起床レイテンシの測定を行いました。 起床レイテンシはリアルタイムタスクの起床要求から、実際に起床するまでの時間を測定したもので、 1[ms]周期で動作するタスクを10000回実行することで測定しました。 RTタスク RTタスク RTタスク 周期 時間の流れ
リアルタイム制御パッケージの性能 リアルタイム性能が改善 実行結果はこのようになりました。 リアルタイム制御パッケージを利用した場合、通常のLinuxに比べてレイテンシが小さく、リアルタイム性能が改善されている結果が得られました。 RT-Linuxと比べると、最大値で10倍、平均値で4倍になっていますが、レイテンシは設定された周期に対して十分に小さくなっており、教育目的で利用される場合問題ないと考えられます。 リアルタイム性能が改善
起床レイテンシのヒストグラム ■ Linux ■ リアルタイム制御パッケージ
RtMaTX 数値計算言語MaTXにリアルタイム処理機能を付加 MaTXの特徴 行列を簡単に定義できる A=[ [1 2] [3 4]]; 行列計算を簡単に扱うことができる C=AB (数学的表現) C=A.multiply(B) (Java言語) C=A*B (MaTX) 開発した学習支援システム上で、実時間のプログラミングを作成するために、プログラミング言語として 数値計算言語であるMaTXにリアルタイム処理機能を追加したRtMaTXを用いました。 数値計算言語であるMaTXは、このように行列を簡単に定義することができ、行列計算を数学的な表現と同様の形で記述できるという特徴があります。
実験プログラムの構成 制御実験プログラム 自動生成 ブロック同士の結合情報 ブロック情報 ハードウェア 出力されるプログラムの構成はこのようになっています。 ブロック同士の結合情報を表現した部分、ブロックが持つ処理の内容を記述した部分、 そして、ハードウェアの入出力を行う部分の3つから構成されています。 このうち、ブロック同士の結合情報とブロックの内容を表現する部分はブロック線図から自動生成することができ、ハードウェアの入出力部分はドライバが対応していることもあるため、一般の学生はソースコードを編集することなく制御実験を行うことができます。 制御実験では、先ほども述べたように、実験と設計、シミュレーションを繰り返して作業することが多く、 その際、ブロック線図の構造が変わっていなければ、ブロック情報の部分を差し替えるだけで、容易に実験をやり直すことができるというメリットもあります。 ブロック情報 ハードウェア
サブシステムからの生成に関して ブロック線図の隣接行列を利用 ブロック間の接続関係を行列で表現 ブロックの表すシステムを要素の重み 入出力のノードを行列のインデックス 1 2 3 4 5 6 7 8 I1 P O1 G2 N G1
GUIを利用した制御実験ツール JNA(Java Native Access) Javaからネイティブの共有ライブラリへアクセス ネイティブライブラリ (C言語等) GUI(Java) ブロック線図 生成
活動 Jamox Webサイト オープンソースカンファレンスへの参加 システム創成プロジェクトⅡ http://jamox.mklab.org/ オープンソースカンファレンスへの参加 倒立振子系を利用したデモを行う予定 システム創成プロジェクトⅡ リアルタイム制御パッケージ+RtMaTXでの制御実験 ブロック線図を利用したシステムへの対応も予定