ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

フィットネス ウォッチャーのモデル化

この例では、Stateflow® の duration 演算子を使用して実装されるフィットネス ウォッチャーの単純なモデルを説明します。また、MATLAB® App Designer を使用して設計されたユーザー インターフェイスと連携できる Simulink® モデルの作成ワークフローについても説明します。

モデルの概要

このモデルのフィットネス ウォッチャーには 4 つのパーツがあります。Human Simulator はアクティビティをモデル化するサブシステムで、心拍数や速度などの信号を出力します。Fitness Watcher は、ステータスの判定方法や各種の有用な通知を送信するタイミングなど、中核となるロジックをモデル化する Stateflow チャートです。UI Controller は、グラフィカル ユーザー インターフェイス (UI) と通信する Stateflow チャートです。最後のパーツは MATLAB App Designer で設計されたアプリであり、UI を実装し、コールバックを定義します。

フィットネス ウォッチャーの論理設計

Fitness Watcher チャートはフィットネス ウォッチの出力を制御します。このチャートは、心拍数や速度を計算する Human Simulator サブシステムから入力を受け取ります。さらに、UI の [Setting] パネルからも、ユーザーに運動するよう通知する時間間隔などのパラメーターを入力として受け取ります。次に、チャートはユーザーのアクティビティを判定します。Human Simulator からの入力が活発に変化すると、検知されるアクティビティも変化します。この移行過程では、duration 演算子を使用して信号ノイズを除去します。たとえば、静止状態にあるユーザーが突然すばやく動いた場合、必ずしも運動をしているわけではありません。フィットネス ウォッチは、動きが一定時間継続した後にのみ、ユーザーが歩行状態または運動状態にあると判断します。duration 演算子は、このようにデバウンスが必要な場合に最適です。また、Fitness Watcher チャートは各アクティビティの持続時間もトラッキングします。さまざまな条件に応じてチャートから Stateflow メッセージを UI Controller チャートに送信するため、カスタマイズした通知を UI で表示することができます。

UI コントローラーの設計

Fitness Watcher チャートからの出力データとメッセージは UI Controller チャートで処理されます。このチャートは、App Designer で作成されたアプリ内で定義されているコールバック関数を呼び出すことで、UI と通信します。これらのコールバック関数はアプリ内で定義されているため、Stateflow チャートではすぐには認識されません。Init ステートには、Stateflow をアプリと通信可能にするスクリプトが含まれています。アプリ名 sf_fitness_appcoder.extrinsic として宣言すると、ローカル データ アプリを使用して Stateflow モデルでアプリを開き、アプリ ハンドルを保存できます。コールバック関数を coder.extrinsic として宣言すると、同じチャート内の任意の場所からこれらを呼び出すことができます。アプリからのコールバック関数はすべて、ローカル データ app を最初の引数として取ります。

MATLAB App Designer を使った UI 設計

MATLAB App Designer では、設計ビューを使用してユーザー インターフェイスのビジュアル コンポーネントをすばやくレイアウトできます。また、コード ビューを使用してアプリの動作をプログラムすることもできます。この例では、Simulink® と Stateflow で作成したモデルを、MATLAB App Designer で作成したアプリとコシミュレートできます。シミュレーション中に、UI を操作して、入力を Stateflow チャートに送出する Simulink 信号を変更できます。たとえば、UI の [Rest] ボタンを押すと、Activity という名前の定数ブロックの値が Activity.Rest という列挙型に変わります。その後、Human Simulator は対応する信号の生成を開始し、静止状態のユーザーをモデル化します。一方、Stateflow では、アプリで定義されているコールバック関数を呼び出し、これによって UI の表示を変更できます。たとえば、ユーザーが一定時間 Rest ステートにあった場合、Fitness Watcher チャートは Stateflow メッセージを UI Controller チャートに送信し、これによってコールバック updateText が呼び出されます。次に、メイン ディスプレイに通知が表示され、時計と 5 秒間置き換わります。

関連するトピック