ログの可視化

mc_rtcには、実験を行った後にログを読み取るためのシンプルなGUIが用意されています。このツールはmc_log_uiとしてインストールされています。

~/my_log.binなどにログを記録した後、以下のコマンドを実行することで、そのログをGUIで開くことができます。

$ mc_log_ui ~/my_log.bin

以下のように表示されます。

mc_log_ui default

注: 以下のセクションで説明する一部のメニューと操作は、mc_rtcのPythonバインディングがインストールされている場合にのみ使用できます。

プロットモード

インターフェイスの左下にあるセレクターで、3つのプロットモードを切り替えることができます。

時系列プロット

このモードでは、同じ横軸(一般に、このプロットの名前の由来である時間軸)を共有するデータを選択し、プロットの左右にあるパネルから表示したいデータを選択します。グループ化された項目(LeftFootForceSensorなど)や単独の項目(LeftFootForceSensor -> fzなど)を選択できます。

プロットを削除するには、削除したいデータ項目を再度クリックします。

このモードでは、文字列データ項目(通常、有限オートマトンの現在の状態出力)を選択すると、その文字列の現在の値に応じた色で描画された背景の上に文字列が表示されます。指定した時間に対して文字列を一度に1つだけ表示できます。

X/Yプロット

このモードでは、プロットの左右にあるAdd XY plots(XYプロットの追加)ボタンを使用して、X軸とY軸にそれぞれプロットする2つのデータ項目を選択できます。データ項目がちょうど2つある場合は、グループ化された項目を選択できます(LeftFoot -> CoPを選択する操作は、LeftFoot -> CoP -> xLeftFoot -> CoP -> yを個別に選択する操作と同じです)。データ選択時にラベルを設定できますが、後でスタイルメニューからラベルを設定することも可能です。

プロットを削除するには、プロットの左右にあるRemove XY plot(s)(XYプロットの削除)をクリックしてから、削除したいプロットを選択します。

3次元プロット

このモードでは、プロットの左側にあるAdd 3D plot(3次元プロットの追加)ボタンをクリックすると、X軸、Y軸、Z軸にそれぞれプロットする3つのデータ項目を選択するメニューが開きます。データ項目がちょうど3つある場合は、グループ化された項目を選択できます(CoMを選択する操作は、CoM -> xCoM -> yCoM -> zを個別に選択する操作と同じです)。データ選択時にラベルを設定できますが、後でスタイルメニューからラベルを設定することも可能です。

プロットを削除するには、Remove 3D plot(s)(3次元プロットの削除)をクリックしてから、削除したいプロットを選択します。

3次元モードでは、マウスを使用してプロットの視点を変えることができます。

時間範囲の選択、範囲の作成、軸のロック

プロットの下にあるセレクターを用いて、ログを表示したい時間範囲を選択できます。時系列プロットモードの場合、グラフの横軸の範囲が選択されます。X/Yプロットモードと3次元プロットモードの場合、データがフィルタリングされます(表示範囲を有効にすると、その範囲のデータが表示されます)。

TMake range(範囲の作成)ボタンを用いて、選択した任意のデータから時間範囲を作成できます(選択したデータがログに記録されている場合)。例えば、5 < t < 1015 < t < 20の時間範囲にcom_xというデータがログに記録されている場合、これらの時間範囲に対応したt_com_x_1t_com_x_2という時間範囲が生成されます。文字列の場合(通常、有限オートマトンのExecutor_*`)、文字列に含まれる特定の値に応じて選択範囲を絞り込むことができます(これにより、特定の状態に対応した表示範囲を生成できます)。

最後に、Make range(範囲の作成)ボタンの隣にある3つのボタンを用いて、X軸、左側のY軸、右側のY軸(3次元モードのZ軸)をそれぞれロックできます。そうしない場合は、選択したデータに応じて表示範囲が設定されます。なお、このGUIでは、表示範囲が似通っている場合でも、左側と右側のY軸の範囲を揃えるように調整されることはありません。

アニメーション

範囲セレクターの下には、アニメーションに関する3つのボタンが用意されています。

Start animation(アニメーションの開始)をクリックすると、現在選択されている時間範囲に基づいてアニメーションの実行が開始されます。デフォルトでは、アニメーションの表示内容に合わせて軸の範囲が調整されます。

アニメーションが実行されていないときにLock axes(軸のロック)をクリックすると、アニメーション停止時に表示されたグラフの全体が表示されるように軸がロックされます。そうしない場合は、現在の表示に合わせて軸がロックされます。

Save animation(アニメーションの保存)をクリックすると、アニメーションがMP4ファイルにエクスポートされます。なお、エクスポート中にプログレスバーは表示されません。また、アニメーションの保存が完了するまでしばらく時間がかかる場合があります。

[Common plots(よく使うプロット)]メニュー

このメニューでは、関節レベルの入出力と力覚センサーに関してよく使う便利なプロットを選択できます。また、項目によっては、どの関節を表示するか、範囲を表示するかどうか、関節ごとにプロットを1つずつ表示するかどうかを選択するためのサブメニューが表示されます。

[User plots(ユーザープロット)]メニュー

コントローラーを開発する際、コントローラーの処理をいろいろ試しながら同じグラフを何度もプロットする場合があると思います。そのような場合、プロットしたいデータ項目をあらかじめ保存しておけば、時間を節約できます。そのようなプロットは「ユーザープロット」と呼ばれます。

ユーザープロットを作成する場合、最初に1度だけ手動でプロットを設定する必要があります。その後、User plots(ユーザープロット)メニューでSave current plot(現在のプロットの保存)をクリックします。すると、名前を入力するよう求められます。名前を入力すると、User plots(ユーザープロット)メニューにこの名前で新しい項目が作成されます。

新しいログを読み込み、User plots(ユーザープロット)に新たに追加された項目を選択すると、プロットを保存したときと同じデータ項目とスタイルでプロットが表示されます(軸の範囲または横軸の選択は頻繁に変更される可能性があるため、これらについては保存されません)。

これらのプロットは、$HOME/.config/mc_log_ui/custom_plots.jsonにJSON形式で保存されます。このファイルをコントローラーのリポジトリに保存することで、新しいマシンにログのUIを素早くセットアップできます。また、このファイルをmc_plot_logsツールに渡すこともできます(下記を参照)。

[Robot(ロボット)]メニュー

このメニューでは、ログがどのロボットで作成されたかを選択できます。この機能を使用すると、関節に関する項目をユーザーに分かりやすい名前で表示できます(例えば、qIn_0という項目は、JVRC1を選択するとqIn_R_HIP_Pと表示され、HRP2DRCを選択するとqIn_RLEG_JOINT0と表示されます)。

このロボットの選択は、設定変更時に自動的に保存され、次にUIを起動したときに自動的に復元されます。この項目を1度設定した後は、複数のロボットを使用する場合を除き、設定を変更する必要はありません。

[Style(スタイル)]メニュー

このメニューでは、グラフのスタイルに関する各種オプションを設定できます。このメニューには以下の項目が用意されています。

  • Graph: プロットごとにラインの色とスタイルを選択できます。
  • Grid: 左右の軸に合わせてグリッドを調整できます。
  • Labels/Title/Fonts: 軸のラベルとグラフのタイトルを追加し、それぞれのフォントサイズを選択できます。
  • Colors selection: 曲線の描画色を選択できます。既存のカラーセットを使用するか、独自のカラーセットを作成することができます(既存のカラーセットで使用できる色は限られています)。
  • Polygons colors selection: 時系列プロットモードで表示する文字列データ項目の表示に使用する色を選択できます。

注: プロットを保存すると、スタイルのオプションも保存されます。

ショートカット

このインターフェイスでは以下のショートカットを使用できます。

  • Ctrl+T: 新しいタブを作成する
  • Ctrl+W: 現在のタブを閉じる
  • Ctrl+PageDown: 次のタブに移動する
  • Ctrl+PageUp: 前のタブに移動する
  • Ctrl+A: 軸範囲設定メニューを開く

図の保存

表示したいデータ項目を選択し、グラフの表示方法を設定した後に、[Save(保存)]ボタンをクリックして図をエクスポートできます。

mc_log_ui save button その際、各種形式で図を保存できます。SVG(Scalable Vector Graphics: スケーラブルベクターグラフィックス)形式で保存した場合、Inkscapeなどのベクター画像エディターを使用して、保存したファイルをさらに編集できます。

図の自動プロット

最後に、mc_plot_logsツールについて説明します。このツールを使用するには、バイナリ形式のログファイルと、プロットしたいログについて記述されたJSONファイルを指定する必要があります(形式はmc_log_uiのユーザープロットを同じです)。このツールは、指定したファイルにプロットを出力します。

複数のログの読み込み

複数の結果を比較したい場合、複数のログを読み込むと便利です。複数のログを読み込むには、以下のコマンドを実行します。

$ mc_log_ui log-1.bin log-2.bin [...] log-N.bin

あるいは、メニューからFile -> Compare...([ファイル]->[比較…])を選択してファイルを読み込みます。