Skip to content

sim_time での時系列データ評価#

CARET のデフォルト(LTTng)では、システム時間で測定結果が出力されます。
この場合、同じ条件で繰り返し測定する場合などでは、時間がズレてしまい、並べて比較するのが困難です。
そのような場合には、sim_time で時刻を一致させることで、同条件下での評価が可能になります。
本ページでは、時系列データの時刻を sim_time に時刻を揃えて評価する方法を説明します。

sim_time の記録#

sim_time を使った評価を行う際には、測定時に特定のノードを実行させておく必要が有ります。

ros2 run caret_trace clock_recorder

clock_recorderノードを起動させておくことで、ros2_caret:simimeトレースが有効になります。

以下のようにコマンドを実行することで、トレースポイントが記録されていることを確認できます。

$ babeltrace ~/.ros/tracing/ctf_path | cut -d' ' -f 4 | sort -u | grep sim_time
ros2_caret:sim_time:

なお、sim_time は/clockトピックが publish されている間のみ記録されます。

sim_time を使った可視化#

caret_analyze.plot配下の可視化では、時間軸を sim_time にした可視化が可能です。
最新版 v.0.2.1 では、callback_schedmessage_flowが sim_time の時刻を使用した可視化に対応しています。

def callback_sched(
    target: Union[Node, CallbackGroup, Executor],
    lstrip_s: float = 0,
    rstrip_s: float = 0,
    coloring_rule='callback',
    use_sim_time: bool = False)
):

def message_flow(
    path: Path,
    export_path: Optional[str] = None,
    granularity: Optional[str] = None,
    treat_drop_as_delay=False,
    lstrip_s: float = 0,
    rstrip_s: float = 0,
    use_sim_time: bool = False
)

オプション引数のuse_sim_time = Trueとすることで、横軸が sim_time のグラフを描画できます。
なお、ros2_caret:sim_timeトレースポイントが見つからない場合には、エラーが出るようになっています。