Artefacts ツールキットのチャートヘルパー

Artefacts ツールキットのチャートヘルパーは、テスト実行中にトピックから受信したデータを可視化するのに役立つように設計されています。 インポート方法:

from artefacts_toolkit.chart import make_chart

関数

関数リファレンス

make_chart

2つの提供されたトピックからのデータに基づいてインタラクティブなHTMLチャートを作成します。

make_chart(
    filepath,
    topic_x,
    topic_y,
    axis_x_name="",
    axis_y_name="",
    field_unit=None,
    output_dir="output",
    chart_name="chart",
    file_type="rosbag",
    output_format="html"
)

Parameters

パラメータ 説明 デフォルト
filepath str データファイル(rosbag)へのパス 必須
topic_x Union[str, list] x軸のトピック名。時間に対してプロットする場合は “Time” を使用 必須
topic_y Union[str, list] y軸のトピック名。時間に対してプロットする場合は “Time” を使用 必須
axis_x_name str x軸のラベル。単一トピックの場合は自動生成。トピックのリストを使用する場合は指定を推奨 ""
axis_y_name str y軸のラベル。単一トピックの場合は自動生成。トピックのリストを使用する場合は指定を推奨 ""
field_unit str フィールドデータの測定単位(例:「m/s」、「rad」) None
output_dir str チャートが保存されるディレクトリ "output"
chart_name str 生成されるチャートファイルの名前 "chart"
file_type str データファイルのタイプ。現在は “rosbag” をサポート "rosbag"
output_format str 出力ファイルタイプ。“html” または “csv” から選択してください "html"

戻り値

None:

output_format="html" の場合
  • output_dir に plotly html チャート <chart_name>.html を作成しますが、値は返しません。
  • 単一または複数のプロットチャートを作成できます(例を参照)
output_format="csv" の場合
  • output_dir に csv ファイル <chart_name>.csv を作成しますが、値は返しません。ダッシュボードはアップロード時に csv ファイルを自動的にチャートに変換しようとします。ファイルサイズを小さく保ちたい場合に便利です。
  • ダッシュボードは現在、単一トピックのチャートのみ自動作成できます。

単一トピック

以下の例では、テストが完了し rosbag が保存された後、すなわちシャットダウン後に make_chart 関数を追加しています。

# my_test_file.launch.py
# test code

...

@launch_testing.post_shutdown_test()
class TestProcOutputAfterShutdown(unittest.TestCase):
    def test_exit_code(self, rosbag_filepath):
        make_chart(
            rosbag_filepath,
            "/odom.pose.pose.position.x",
            "/odom.pose.pose.position.y",
            field_unit="m",
            chart_name="odometry_position",
            output_format="csv"
        )

以下のように、ダッシュボードでチャートとして自動的に表示される csv ファイルが生成されます:

Example Chart

トピック vs 複数トピック
make_chart(
    rosbag_filepath,
    "time",
    ["/critics_cost/ConstraintCritic.data", "/critics_cost/GoalAngleCritic.data", "/critics_cost/GoalCritic.data", "/critics_cost/CostCritic.data", "/critics_cost/PathAlignCritic.data", "/critics_cost/PathAngleCritic.data", "/critics_cost/PathFollowCritic.data", "/critics_cost/PreferForwardCritic.data"],
    axis_x_name="time",
    axis_y_name="critics",
    chart_name="Critics vs Time",
)

以下のようなチャートが生成されます:

Example Chart, topic vs topics

複数トピック vs 複数トピック
 make_chart(
        rosbag_filepath,
        topic_x=["/odom.pose.pose.position.x", "/gt_odom.pose.pose.position.x"],
        topic_y=["/odom.pose.pose.position.y", "/gt_odom.pose.pose.position.y"],
        axis_x_name="x (m)",
        axis_y_name="y (m)",
        chart_name="odom vs gt positions"
    )

以下のようなチャートが生成されます:

Example Chart, topics vs topics

最終更新 26.12.2025: Make chart update (#91) (8f3c446)