mc_rtc::Configuration
設定mc_rtcには、実験を行った後にログを読み取るためのシンプルなGUIが用意されています。このツールはmc_log_ui
としてインストールされています。
~/my_log.bin
などにログを記録した後、以下のコマンドを実行することで、そのログをGUIで開くことができます。
$ mc_log_ui ~/my_log.bin
以下のように表示されます。
注: 以下のセクションで説明する一部のメニューと操作は、mc_rtcのPythonバインディングがインストールされている場合にのみ使用できます。
インターフェイスの左下にあるセレクターで、3つのプロットモードを切り替えることができます。
このモードでは、同じ横軸(一般に、このプロットの名前の由来である時間軸)を共有するデータを選択し、プロットの左右にあるパネルから表示したいデータを選択します。グループ化された項目(LeftFootForceSensor
など)や単独の項目(LeftFootForceSensor -> fz
など)を選択できます。
プロットを削除するには、削除したいデータ項目を再度クリックします。
このモードでは、文字列データ項目(通常、有限オートマトンの現在の状態出力)を選択すると、その文字列の現在の値に応じた色で描画された背景の上に文字列が表示されます。指定した時間に対して文字列を一度に1つだけ表示できます。
このモードでは、プロットの左右にあるAdd XY plots
(XYプロットの追加)ボタンを使用して、X軸とY軸にそれぞれプロットする2つのデータ項目を選択できます。データ項目がちょうど2つある場合は、グループ化された項目を選択できます(LeftFoot -> CoP
を選択する操作は、LeftFoot -> CoP -> x
とLeftFoot -> CoP -> y
を個別に選択する操作と同じです)。データ選択時にラベルを設定できますが、後でスタイルメニューからラベルを設定することも可能です。
プロットを削除するには、プロットの左右にあるRemove XY plot(s)
(XYプロットの削除)をクリックしてから、削除したいプロットを選択します。
このモードでは、プロットの左側にあるAdd 3D plot
(3次元プロットの追加)ボタンをクリックすると、X軸、Y軸、Z軸にそれぞれプロットする3つのデータ項目を選択するメニューが開きます。データ項目がちょうど3つある場合は、グループ化された項目を選択できます(CoM
を選択する操作は、CoM -> x
、CoM -> y
、CoM -> z
を個別に選択する操作と同じです)。データ選択時にラベルを設定できますが、後でスタイルメニューからラベルを設定することも可能です。
プロットを削除するには、Remove 3D plot(s)
(3次元プロットの削除)をクリックしてから、削除したいプロットを選択します。
3次元モードでは、マウスを使用してプロットの視点を変えることができます。
プロットの下にあるセレクターを用いて、ログを表示したい時間範囲を選択できます。時系列プロットモードの場合、グラフの横軸の範囲が選択されます。X/Yプロットモードと3次元プロットモードの場合、データがフィルタリングされます(表示範囲を有効にすると、その範囲のデータが表示されます)。
TMake range(範囲の作成)ボタンを用いて、選択した任意のデータから時間範囲を作成できます(選択したデータがログに記録されている場合)。例えば、
5 < t < 10と
15 < t < 20の時間範囲に
com_xというデータがログに記録されている場合、これらの時間範囲に対応した
t_com_x_1と
t_com_x_2という時間範囲が生成されます。文字列の場合(通常、有限オートマトンの
Executor_*`)、文字列に含まれる特定の値に応じて選択範囲を絞り込むことができます(これにより、特定の状態に対応した表示範囲を生成できます)。
最後に、Make range
(範囲の作成)ボタンの隣にある3つのボタンを用いて、X軸、左側のY軸、右側のY軸(3次元モードのZ軸)をそれぞれロックできます。そうしない場合は、選択したデータに応じて表示範囲が設定されます。なお、このGUIでは、表示範囲が似通っている場合でも、左側と右側のY軸の範囲を揃えるように調整されることはありません。
範囲セレクターの下には、アニメーションに関する3つのボタンが用意されています。
Start animation
(アニメーションの開始)をクリックすると、現在選択されている時間範囲に基づいてアニメーションの実行が開始されます。デフォルトでは、アニメーションの表示内容に合わせて軸の範囲が調整されます。
アニメーションが実行されていないときにLock axes
(軸のロック)をクリックすると、アニメーション停止時に表示されたグラフの全体が表示されるように軸がロックされます。そうしない場合は、現在の表示に合わせて軸がロックされます。
Save animation
(アニメーションの保存)をクリックすると、アニメーションがMP4ファイルにエクスポートされます。なお、エクスポート中にプログレスバーは表示されません。また、アニメーションの保存が完了するまでしばらく時間がかかる場合があります。
このメニューでは、関節レベルの入出力と力覚センサーに関してよく使う便利なプロットを選択できます。また、項目によっては、どの関節を表示するか、範囲を表示するかどうか、関節ごとにプロットを1つずつ表示するかどうかを選択するためのサブメニューが表示されます。
コントローラーを開発する際、コントローラーの処理をいろいろ試しながら同じグラフを何度もプロットする場合があると思います。そのような場合、プロットしたいデータ項目をあらかじめ保存しておけば、時間を節約できます。そのようなプロットは「ユーザープロット」と呼ばれます。
ユーザープロットを作成する場合、最初に1度だけ手動でプロットを設定する必要があります。その後、User plots
(ユーザープロット)メニューでSave current plot
(現在のプロットの保存)をクリックします。すると、名前を入力するよう求められます。名前を入力すると、User plots
(ユーザープロット)メニューにこの名前で新しい項目が作成されます。
新しいログを読み込み、User plots
(ユーザープロット)に新たに追加された項目を選択すると、プロットを保存したときと同じデータ項目とスタイルでプロットが表示されます(軸の範囲または横軸の選択は頻繁に変更される可能性があるため、これらについては保存されません)。
これらのプロットは、$HOME/.config/mc_log_ui/custom_plots.json
にJSON形式で保存されます。このファイルをコントローラーのリポジトリに保存することで、新しいマシンにログのUIを素早くセットアップできます。また、このファイルをmc_plot_logs
ツールに渡すこともできます(下記を参照)。
このメニューでは、ログがどのロボットで作成されたかを選択できます。この機能を使用すると、関節に関する項目をユーザーに分かりやすい名前で表示できます(例えば、qIn_0
という項目は、JVRC1を選択するとqIn_R_HIP_P
と表示され、HRP2DRCを選択するとqIn_RLEG_JOINT0
と表示されます)。
このロボットの選択は、設定変更時に自動的に保存され、次にUIを起動したときに自動的に復元されます。この項目を1度設定した後は、複数のロボットを使用する場合を除き、設定を変更する必要はありません。
このメニューでは、グラフのスタイルに関する各種オプションを設定できます。このメニューには以下の項目が用意されています。
Graph
: プロットごとにラインの色とスタイルを選択できます。Grid
: 左右の軸に合わせてグリッドを調整できます。Labels/Title/Fonts
: 軸のラベルとグラフのタイトルを追加し、それぞれのフォントサイズを選択できます。Colors selection
: 曲線の描画色を選択できます。既存のカラーセットを使用するか、独自のカラーセットを作成することができます(既存のカラーセットで使用できる色は限られています)。Polygons colors selection
: 時系列プロットモードで表示する文字列データ項目の表示に使用する色を選択できます。注: プロットを保存すると、スタイルのオプションも保存されます。
このインターフェイスでは以下のショートカットを使用できます。
Ctrl+T
: 新しいタブを作成するCtrl+W
: 現在のタブを閉じるCtrl+PageDown
: 次のタブに移動するCtrl+PageUp
: 前のタブに移動するCtrl+A
: 軸範囲設定メニューを開く表示したいデータ項目を選択し、グラフの表示方法を設定した後に、[Save(保存)]ボタンをクリックして図をエクスポートできます。
その際、各種形式で図を保存できます。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...
([ファイル]->[比較…])を選択してファイルを読み込みます。