diff --git a/trace-analysis.ipynb b/trace-analysis.ipynb index 69e05cd..459b994 100644 --- a/trace-analysis.ipynb +++ b/trace-analysis.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" @@ -10,15 +10,17 @@ }, "outputs": [], "source": [ + "import json\n", "import os\n", + "import pickle\n", "import sys\n", "\n", "import numpy as np\n", "import pandas as pd\n", "from matplotlib import pyplot as plt\n", "\n", + "from clang_interop.cl_types import ClContext\n", "from clang_interop.process_clang_output import process_clang_output\n", - "from clang_interop.types import ClContext\n", "\n", "sys.path.append(\"../autoware/build/tracetools_read/\")\n", "sys.path.append(\"../autoware/build/tracetools_analysis/\")\n", @@ -30,14 +32,14 @@ "from dataclasses import dataclass\n", "from typing import List, Dict, Set, Tuple\n", "\n", - "from tracing_interop.types import TrTimer, TrTopic, TrPublisher, TrPublishInstance, TrCallbackInstance, \\\n", - " TrCallbackSymbol, TrCallbackObject, TrSubscriptionObject, TrContext, TrNode\n", + "from tracing_interop.tr_types import TrTimer, TrTopic, TrPublisher, TrPublishInstance, TrCallbackInstance, \\\n", + "TrCallbackSymbol, TrCallbackObject, TrSubscriptionObject, TrContext\n", "from misc.utils import ProgressPrinter, cached" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" @@ -45,39 +47,26 @@ }, "outputs": [], "source": [ - "TR_PATH = os.path.expanduser(\"~/Downloads/autoware-trace/ust\")\n", + "TR_PATH = os.path.expanduser(\"data/trace-awsim-x86/ust\")\n", "CL_PATH = os.path.expanduser(\"~/Projects/llvm-project/clang-tools-extra/ros2-internal-dependency-checker/output\")" ] }, { "cell_type": "markdown", + "source": [ + "# Organize Trace Data" + ], "metadata": { + "collapsed": false, "pycharm": { "name": "#%% md\n" } - }, - "source": [ - "# Organize Trace Data" - ] + } }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[CACHE] Found up-to-date cache entry for tr_objects, loading.\n", - "Done.\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "def _load_traces():\n", " file = load_file(TR_PATH)\n", @@ -85,6 +74,7 @@ " util = Ros2DataModelUtil(handler)\n", " return TrContext(util, handler)\n", "\n", + "\n", "_tracing_context = cached(\"tr_objects\", _load_traces, [TR_PATH])\n", "_tr_globals = [\"nodes\", \"publishers\", \"subscriptions\", \"timers\", \"timer_node_links\", \"subscription_objects\",\n", " \"callback_objects\", \"callback_symbols\", \"publish_instances\", \"callback_instances\", \"topics\"]\n", @@ -96,497 +86,13 @@ " globals()[name] = getattr(_tracing_context, name)\n", "\n", "print(\"Done.\")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "# Callback-Sub & Callback-Timer Links" - ] - }, - { - "cell_type": "code", - "execution_count": null, + ], "metadata": { + "collapsed": false, "pycharm": { "name": "#%%\n" } - }, - "outputs": [], - "source": [ - "import re\n", - "\n", - "sym_table = []\n", - "\n", - "for sym in callback_symbols.values():\n", - " try:\n", - " cbo = list(filter(lambda val: val.callback_object == sym.id, callback_objects.values()))\n", - " assert len(cbo) == 1\n", - " cbo = cbo[0]\n", - " except:\n", - " print(len(cbo))\n", - " continue\n", - " owner_info = cbo.owner_info\n", - "\n", - " if None in owner_info: continue\n", - " type, info = owner_info\n", - " sym_table.append((sym, type, info))\n", - "\n", - "sym_table.sort(key=lambda tup: tup[1])\n", - "\n", - "\n", - "def trim(string, length):\n", - " if len(string) > length:\n", - " return f\"{string[:length - 3]}...\"\n", - " return string\n", - "\n", - "\n", - "for sym, type, info in sym_table:\n", - " sym: TrCallbackSymbol\n", - " pretty_sym = Ros2DataModelUtil._prettify(None, sym.symbol)\n", - " pretty_sym = re.sub(r\"std::shared_ptr<(.*?) *(const)?>\", r\"\\1*\", pretty_sym)\n", - " try:\n", - " i = len(sym.callback_obj.callback_instances)\n", - " except KeyError:\n", - " i = -1\n", - " print(f\"{trim(pretty_sym, 100):100s}: i={i:>4d} {type:12s} n={info['node']:40s}\", end=' ')\n", - " if type == 'Timer':\n", - " print(f\"p={info['period']:7s}\")\n", - " elif type == 'Subscription':\n", - " print(f\"t={info['topic']:30s}\")\n", - " else:\n", - " print()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "# Topic-Node Mapping" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "# Aggregate topics that have the same pubs and subs\n", - "topic_cohorts = {}\n", - "for topic in topics.values():\n", - " key = (frozenset({*(pub.node_handle for pub in topic.publishers)}),\n", - " frozenset({*(sub.node_handle for sub in topic.subscriptions)}))\n", - " if key not in topic_cohorts:\n", - " topic_cohorts[key] = []\n", - " topic_cohorts[key].append(topic)\n", - "\n", - "print(f\"{len(topics)} topics were aggregated into {len(topic_cohorts)} cohorts\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "# Timer-Node Mapping" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "unknowns = {}\n", - "\n", - "print_node_timer = lambda node_path, period: print(f\"{node_path:<90s}: {1 / (period * 1e-9):8.2f}Hz\")\n", - "\n", - "for timer in timers.values():\n", - " timer_nodes = timer.nodes\n", - " if not timer_nodes:\n", - " if timer.period not in unknowns:\n", - " unknowns[timer.period] = 0\n", - " unknowns[timer.period] += 1\n", - "\n", - " for node in timer_nodes: print_node_timer(node.path, timer.period)\n", - "\n", - "for period, count in unknowns.items():\n", - " print_node_timer(f\"UNKNOWN (x{count})\", period)\n", - "\n", - "n_unknown = sum(unknowns.values()) # Values are counts per period\n", - "print(f\"Found {len(timers) - n_unknown} timers with a recorded node, {n_unknown} without.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "# Measure Frequency Deviations" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "# Get Publisher frequencies\n", - "df_publications = handler.data.rcl_publish_instances\n", - "pub_stats = {}\n", - "unknown = 0\n", - "for pi in publish_instances:\n", - " try:\n", - " pub = pi.publisher\n", - " except KeyError:\n", - " unknown += 1\n", - " continue\n", - " if pub.id not in pub_stats:\n", - " pub_stats[pub.id] = {'times': []}\n", - " pub_stats[pub.id]['times'].append(pi.timestamp * 1e-9) # Nanoseconds to seconds float\n", - "\n", - "print(f\"{unknown} unknown publisher handles ({len(pub_stats)} known ones)\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "# Plot Frequency Deviations" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true, - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "fig_dirname = \"fig_frequency\"\n", - "os.makedirs(fig_dirname, exist_ok=True)\n", - "for i, (k, v) in enumerate(sorted(pub_stats.items(), key=lambda kv: len(kv[1]['times']), reverse=True)):\n", - " pub_time_diff = np.diff(np.array(v['times']))\n", - " v['period'] = pub_time_diff.mean()\n", - " v['period_std'] = pub_time_diff.std()\n", - " v['frequency'] = 1 / v['period']\n", - " v['frequency_std'] = (1 / pub_time_diff).std()\n", - "\n", - " try:\n", - " publisher = publishers[k]\n", - " publisher_node = publisher.node\n", - " topic_name = publisher.topic_name\n", - " node_path = publisher_node.path\n", - " except Exception:\n", - " topic_name = \"UNKNOWN\"\n", - " node_path = \"UNKNOWN\"\n", - "\n", - " fig = plt.figure(figsize=(15, 5))\n", - " ax = fig.add_subplot()\n", - " ax.hist(1 / pub_time_diff)\n", - " ax.set_xlabel(\"Publication Frequency [Hz]\")\n", - " ax.set_ylabel(\"#Publications\")\n", - " ax.set_title(f\"{node_path} =({v['frequency']:.2f}Hz)=> {topic_name}\")\n", - " plt.savefig('/'.join((fig_dirname, f\"{i:06}{node_path}__{topic_name}\".replace('/', '-'))))\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "# Data Flow Graph" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false, - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "node_filters = [\"transform_listener_impl\", \"_monitor\"]\n", - "topic_filters = [\"/rosout\", \"/parameter_events\", \"/diagnostics\"]\n", - "\n", - "from pyvis.network import Network\n", - "\n", - "net = Network(notebook=True, height='750px', width='100%', bgcolor='#ffffff', font_color='#000000')\n", - "\n", - "net.add_node(\"INPUT\", label=\"Input\", size=100, color=\"green\", physics=False, x=0, y=0)\n", - "net.add_node(\"OUTPUT\", label=\"Output\", size=100, color=\"red\", physics=False, x=6000, y=0)\n", - "\n", - "for node in nodes.values():\n", - " if any(f in node.path for f in node_filters):\n", - " continue\n", - " net.add_node(node.id, label=node.name, title=node.path, size=20, color=\"#333\")\n", - "\n", - "for cohort_key, cohort_topics in topic_cohorts.items():\n", - " cohort_topic_names = [topic.name for topic in cohort_topics if not any(f in topic.name for f in topic_filters)]\n", - " if not cohort_topic_names:\n", - " continue\n", - " cohort_id = \"\\n\".join(cohort_topic_names)\n", - " cohort_weight = len(cohort_topic_names)\n", - " net.add_node(cohort_id, label=\" \", title=cohort_id, size=5, color=\"#333\")\n", - "\n", - " pubs = cohort_key[0]\n", - " subs = cohort_key[1]\n", - " n_pubs = len(pubs)\n", - " n_subs = len(subs)\n", - "\n", - " try:\n", - " if not n_pubs:\n", - " net.add_edge(\"INPUT\", cohort_id, arrows=\"to\", color=\"green\", weight=cohort_weight)\n", - " if not n_subs:\n", - " net.add_edge(cohort_id, \"OUTPUT\", arrows=\"to\", color=\"red\", weight=cohort_weight)\n", - "\n", - " for pub in pubs:\n", - " net.add_edge(pub, cohort_id, arrows=\"to\", color=\"green\", weight=cohort_weight)\n", - " for sub in subs:\n", - " net.add_edge(cohort_id, sub, arrows=\"to\", color=\"red\", weight=cohort_weight)\n", - " except:\n", - " continue\n", - "\n", - "net.toggle_physics(True)\n", - "net.show_buttons()\n", - "net.show(\"graph.html\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "# Pub-Use Latencies\n", - "Compute for each node and its data dependencies the list of pub-use delays (per-topic-per-node list of pub-use delays)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "def filter_none(ls):\n", - " return filter(lambda x: x is not None, ls)\n", - "\n", - "\n", - "def safe_map(func, ls):\n", - " def safe_func(arg):\n", - " try:\n", - " return func(arg)\n", - " except:\n", - " return None\n", - "\n", - " return map(safe_func, ls)\n", - "\n", - "\n", - "pub_use_delays = {node.id: {\n", - " 'pubs': {},\n", - " 'invocations': {},\n", - " 'n_unknown_invocations': 0,\n", - " 'n_pub_timestamps': 0\n", - "} for node in nodes.values()}\n", - "\n", - "for node in nodes.values():\n", - " node_pub_use_dict = pub_use_delays[node.id]\n", - " timestamp_min = np.inf;\n", - " timestamp_max = 0\n", - "\n", - " n_pub_timestamps = 0\n", - " for sub in node.subscriptions:\n", - " node_pub_use_dict['pubs'][sub.topic_name] = {}\n", - " for pub in sub.publishers:\n", - " pub_timestamps = [inst.timestamp for inst in pub.instances]\n", - "\n", - " try:\n", - " pub_t_min = min(pub_timestamps);\n", - " pub_t_max = max(pub_timestamps)\n", - " except ValueError:\n", - " pub_t_min = np.inf;\n", - " pub_t_max = 0\n", - "\n", - " if pub_t_min < timestamp_min: timestamp_min = pub_t_min\n", - " if pub_t_max > timestamp_max: timestamp_max = pub_t_max\n", - "\n", - " node_pub_use_dict['pubs'][sub.topic_name][pub.node.path] = pub_timestamps\n", - " node_pub_use_dict['n_pub_timestamps'] += len(pub_timestamps)\n", - "\n", - " timer_cb_objs = list(filter_none(safe_map(lambda timer: timer.callback_object, node.timers)))\n", - " subsc_cb_objs = list(\n", - " filter_none(safe_map(lambda subsc: subsc.subscription_object.callback_object, node.subscriptions)))\n", - "\n", - " print(\n", - " f\"{node.path:95s} has {len(timer_cb_objs):1d} timer callbacks, {len(subsc_cb_objs):2d} subscription callbacks, {len(node_pub_use_dict['pubs']):2d} subscribed topics.\")\n", - "\n", - " node_invocations = node_pub_use_dict['invocations']\n", - "\n", - " for cb_obj in timer_cb_objs + subsc_cb_objs:\n", - " cb_invocations = []\n", - " for inst in cb_obj.callback_instances:\n", - " cb_invocations.append((inst.timestamp, inst.duration))\n", - "\n", - " node_invocations[cb_obj.id] = cb_invocations" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "from matplotlib import cm\n", - "\n", - "fig_dirname = \"fig_pub_use\"\n", - "os.makedirs(fig_dirname, exist_ok=True)\n", - "plt.close('all')\n", - "\n", - "node_filters = [] #\"transform_listener_impl\",]\n", - "\n", - "nodes_filtered = [node for node in nodes.values() if not any(f in node.path for f in node_filters)]\n", - "print(f\"Ignoring {len(nodes.values()) - len(nodes_filtered)} nodes due to filters.\")\n", - "\n", - "common_offset = min(map(lambda cb_inst: cb_inst.timestamp.timestamp(), callback_instances))\n", - "\n", - "zero_color = cm.get_cmap('viridis')(0.0)\n", - "\n", - "for node_i, (node, node_path, node_pub_use_dict) in enumerate(\n", - " map(lambda node: (node, node.path, pub_use_delays[node.id]), nodes_filtered)):\n", - "\n", - " if not node_pub_use_dict['invocations']:\n", - " print(f\"{node_path:95s} has no invocations, skipping.\")\n", - " continue\n", - "\n", - " if len(node_pub_use_dict['pubs']) == 0:\n", - " print(f\"Skipping {node_path}, no publications\")\n", - " continue\n", - "\n", - " fig = plt.figure(figsize=(15, 5))\n", - " ax: plt.Axes = fig.add_subplot()\n", - "\n", - " max_pubs_per_topic = max(len(pubs) for pubs in node_pub_use_dict['pubs'].values())\n", - " topic_names, topic_pubs = (zip(*node_pub_use_dict['pubs'].items()))\n", - "\n", - " vmin = 0;\n", - " vmax = max_pubs_per_topic\n", - "\n", - " y_labels = []\n", - " current_y = 0\n", - "\n", - " for invoc_i, (cb_obj_id, cb_invocations) in enumerate(node_pub_use_dict['invocations'].items()):\n", - " try:\n", - " cb_obj = callback_objects[cb_obj_id]\n", - " sym = callback_symbols[cb_obj.callback_object].symbol\n", - " sym = Ros2DataModelUtil._prettify(None, sym)\n", - " sym = re.sub(r\"std::shared_ptr<(.*?)>\", r\"\\1*\", sym)\n", - "\n", - " cb_owner = cb_obj.owner\n", - " if isinstance(cb_owner, TrTimer):\n", - " cb_type = \"T\"\n", - " elif isinstance(cb_owner, TrSubscriptionObject):\n", - " cb_type = \"S\"\n", - " except KeyError or AttributeError:\n", - " sym = \"UNKNOWN\"\n", - " cb_type = \"U\"\n", - "\n", - " y_labels.append(f\"{sym} {cb_type}\")\n", - " n_markers = len(cb_invocations)\n", - "\n", - " points_x = [];\n", - " points_y = []\n", - " for time, dur in cb_invocations:\n", - " time = time.timestamp() - common_offset;\n", - " dur = dur.total_seconds()\n", - " points_x += [time, time + dur, None]\n", - " points_y += [current_y, current_y, 0.0]\n", - "\n", - " ax.plot(points_x, points_y, marker='.', c=zero_color)\n", - " current_y += 1\n", - "\n", - " n_cbs = current_y\n", - "\n", - " for topic_i, (topic_name, pubs) in enumerate(zip(topic_names, topic_pubs)):\n", - " for pub_i, (pub_name, timestamps) in enumerate(pubs.items()):\n", - " n_markers = len(timestamps)\n", - " ax.scatter(np.array(timestamps) * 1e-9 - common_offset, (current_y,) * n_markers, marker='.',\n", - " c=(pub_i,) * n_markers, vmin=vmin, vmax=vmax)\n", - "\n", - " y_labels.append(topic_name)\n", - " current_y += 1\n", - "\n", - " trigger_strs = []\n", - " t = node.timers\n", - " if t:\n", - " n_timers = len(t)\n", - " freqs = map(lambda timer: 1 / (timer.period * 1e-9), t)\n", - " trigger_strs.append(\n", - " f\"{n_timers} timer{'s' if n_timers != 1 else ''}, {'Hz, '.join((f'{freq:.0f}' for freq in freqs))}Hz\")\n", - " if node.subscriptions:\n", - " n_subs = len(node.subscriptions)\n", - " trigger_strs.append(f\"{n_subs} subscription{'s' if n_subs != 1 else ''}\")\n", - "\n", - " ax.set_xlabel(\"Publication / Invocation Timestamp [s]\")\n", - " ax.set_ylabel(\"Topic\")\n", - " ax.set_yticks(range(current_y))\n", - " ax.set_yticklabels(y_labels)\n", - " ax.set_ylim(0 - .1, current_y - 1 + .1)\n", - " ax.set_title(f\"{node_path} ({'; '.join(trigger_strs)})\")\n", - " ax.set_xlim(50, 50.25)\n", - "\n", - " ax.hlines(n_cbs - 0.5, *ax.get_xlim(), linestyles='dashed')\n", - " plt.savefig(os.path.join(fig_dirname, f\"{node_i:06}{node_path}\".replace('/', '-')))" - ] + } }, { "cell_type": "markdown", @@ -602,2294 +108,13 @@ }, { "cell_type": "code", - "execution_count": 4, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[CACHE] Creating cache entry for cl_objects (in cache/cl_objects_7b616c9c48.pkl).\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/action/test_controller_selector_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-action-test_controller_selector_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/behavior_velocity_planner/src/node.cpp\n", - "Fused 3 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/map/map_loader/src/lanelet2_map_loader/lanelet2_map_visualization_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_pcl/src/grid_map_pcl_loader_node.cpp\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/action/controller_cancel_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-action-controller_cancel_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/map/map_loader/src/lanelet2_map_loader/lanelet2_map_loader_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/sensing/image_diagnostics/src/image_diagnostics_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/system/dummy_diag_publisher/src/dummy_diag_publisher_node/dummy_diag_publisher_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/simple_demo_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/object_range_splitter/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/decorator/goal_updater_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-decorator-goal_updater_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/vehicle/accel_brake_map_calibrator/accel_brake_map_calibrator/src/accel_brake_map_calibrator_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/octomap_to_gridmap_demo_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/vehicle/external_cmd_converter/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/iterators_demo_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/object_merger/src/object_association_merger/node.cpp\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_system_tests/src/behavior_tree/test_behavior_tree_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_system_tests-src-behavior_tree-test_behavior_tree_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/interpolation_demo_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/image_projection_based_fusion/src/fusion_node.cpp\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_map_server/test/component/test_map_server_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_map_server-test-component-test_map_server_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/euclidean_cluster/src/voxel_grid_based_euclidean_cluster_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/localization/gyro_odometer/src/gyro_odometer_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/behavior_path_planner/src/behavior_path_planner_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/trajectory_follower_nodes/test/test_lateral_controller_node.cpp\n", - " [WARN ] Empty tool output detected in universe-autoware.universe-control-trajectory_follower_nodes-test-test_lateral_controller_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/control/round_robin_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-control-round_robin_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/filters_demo_node.cpp\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/action/test_spin_cancel_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-action-test_spin_cancel_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/localization/twist2accel/src/twist2accel_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/sensing/vehicle_velocity_converter/src/vehicle_velocity_converter_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/simulator/fault_injection/src/fault_injection_node/fault_injection_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/sensing/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/pointcloud_based_occupancy_grid_map_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/action/test_bt_action_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-action-test_bt_action_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/vehicle/raw_vehicle_cmd_converter/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/radar_tracks_msgs_converter/src/radar_tracks_msgs_converter_node/radar_tracks_msgs_converter_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/localization/ekf_localizer/src/ekf_localizer_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/obstacle_collision_checker/src/obstacle_collision_checker_node/obstacle_collision_checker_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/image_to_gridmap_demo_node.cpp\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_system_tests/src/localization/test_localization_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_system_tests-src-localization-test_localization_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/opencv_demo_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/lidar_apollo_instance_segmentation/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/planning_evaluator/src/motion_evaluator_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/vehicle/external/pacmod_interface/pacmod_interface/src/pacmod_additional_debug_publisher/pacmod_additional_debug_publisher_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/radar_fusion_to_detected_object/src/radar_object_fusion_to_detected_object_node/radar_object_fusion_to_detected_object_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/joy_controller/src/joy_controller/joy_controller_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/vehicle/steer_offset_estimator/src/steer_offset_estimator_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_loader/src/grid_map_loader_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/euclidean_cluster/src/euclidean_cluster_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/action/test_goal_checker_selector_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-action-test_goal_checker_selector_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/action/test_controller_cancel_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-action-test_controller_cancel_node.json\n", - "Processing /home/max/Projects/autoware/src/vehicle/external/pacmod_interface/pacmod_interface/src/pacmod_dynamic_parameter_changer/pacmod_dynamic_parameter_changer_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/vehicle/external/pacmod_interface/pacmod_interface/src/pacmod_interface/pacmod_interface_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/traffic_light_map_based_detector/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/image_projection_based_fusion/src/pointpainting_fusion/node.cpp\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/extensions/ros/tracing/ros2_tracing/test_tracetools/src/test_lifecycle_node.cpp\n", - " [WARN ] Empty tool output detected in extensions-ros-tracing-ros2_tracing-test_tracetools-src-test_lifecycle_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/rtc_auto_approver/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_map_server/test/component/test_map_saver_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_map_server-test-component-test_map_saver_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/heatmap_visualizer/src/heatmap_visualizer_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/pure_pursuit/src/pure_pursuit/pure_pursuit_node.cpp\n", - " [WARN ] Empty tool output detected in universe-autoware.universe-control-pure_pursuit-src-pure_pursuit-pure_pursuit_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/trajectory_follower_nodes/test/test_controller_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/map/map_tf_generator/src/pcd_map_tf_generator_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_amcl/src/amcl_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_amcl-src-amcl_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/localization/pose2twist/src/pose2twist_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/lidar_centerpoint/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/action/goal_checker_selector_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-action-goal_checker_selector_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/planning_error_monitor/src/planning_error_monitor_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/common/fake_test_node/test/test_fake_test_node.cpp\n", - "Fused 2 s\n", - "Fused 4 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/elevation_map_loader/src/elevation_map_loader_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/common/goal_distance_calculator/src/goal_distance_calculator_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/image_projection_based_fusion/src/roi_cluster_fusion/node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/traffic_light_visualization/src/traffic_light_map_visualizer/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/external_velocity_limit_selector/src/external_velocity_limit_selector_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/action/test_planner_selector_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-action-test_planner_selector_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/action/back_up_cancel_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-action-back_up_cancel_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/obstacle_cruise_planner/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/move_demo_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/external/pointcloud_to_laserscan/src/pointcloud_to_laserscan_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/control/test_round_robin_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-control-test_round_robin_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/decorator/test_goal_updater_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-decorator-test_goal_updater_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/control/recovery_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-control-recovery_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_system_tests/src/recoveries/backup/test_backup_recovery_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_system_tests-src-recoveries-backup-test_backup_recovery_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_system_tests/src/recoveries/spin/test_spin_recovery_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_system_tests-src-recoveries-spin-test_spin_recovery_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/action/controller_selector_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-action-controller_selector_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/external_cmd_selector/src/external_cmd_selector/external_cmd_selector_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_util/src/lifecycle_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_util-src-lifecycle_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_system_tests/src/planning/test_planner_random_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_system_tests-src-planning-test_planner_random_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/decorator/single_trigger_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-decorator-single_trigger_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/action/test_wait_cancel_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-action-test_wait_cancel_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/localization/localization_error_monitor/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_util/test/test_lifecycle_cli_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_util-test-test_lifecycle_cli_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/system/emergency_handler/src/emergency_handler/emergency_handler_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/planning_evaluator/test/test_planning_evaluator_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/obstacle_avoidance_planner/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/system/system_error_monitor/src/system_error_monitor_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/map/map_tf_generator/src/vector_map_tf_generator_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/image_projection_based_fusion/src/roi_detected_object_fusion/node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/common/fake_test_node/src/fake_test_node.cpp\n", - " [WARN ] Empty tool output detected in universe-autoware.universe-common-fake_test_node-src-fake_test_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/external/pointcloud_to_laserscan/src/laserscan_to_pointcloud_node.cpp\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/vehicle/external/pacmod_interface/pacmod_interface/src/pacmod_interface/pacmod_diag_publisher_node.cpp\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/action/planner_selector_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-action-planner_selector_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/sensing/probabilistic_occupancy_grid_map/src/laserscan_based_occupancy_grid_map/laserscan_based_occupancy_grid_map_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/system/velodyne_monitor/src/velodyne_monitor_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/resolution_change_demo_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/scenario_selector/src/scenario_selector_node/scenario_selector_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/system/dummy_infrastructure/src/dummy_infrastructure_node/dummy_infrastructure_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/tutorial_demo_node.cpp\n", - "Processing /home/max/Projects/autoware/src/sensor_component/external/velodyne_vls/velodyne_laserscan/src/node.cpp\n", - " [WARN ] Empty tool output detected in sensor_component-external-velodyne_vls-velodyne_laserscan-src-node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/shape_estimation/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/costmap_generator/nodes/costmap_generator/costmap_generator_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/external/tier4_ad_api_adaptor/awapi_awiv_adapter/src/awapi_awiv_adapter_node.cpp\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/control/test_recovery_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-control-test_recovery_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/compare_map_segmentation/src/compare_elevation_map_filter_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/map/map_loader/src/pointcloud_map_loader/pointcloud_map_loader_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/trajectory_follower_nodes/src/controller_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_costmap_2d/src/costmap_2d_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_costmap_2d-src-costmap_2d_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/crosswalk_traffic_light_estimator/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/control_performance_analysis/src/control_performance_analysis_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/trajectory_follower_nodes/test/test_longitudinal_controller_node.cpp\n", - " [WARN ] Empty tool output detected in universe-autoware.universe-control-trajectory_follower_nodes-test-test_longitudinal_controller_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/decorator/test_single_trigger_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-decorator-test_single_trigger_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/surround_obstacle_checker/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_system_tests/src/planning/test_planner_costmaps_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_system_tests-src-planning-test_planner_costmaps_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/control/trajectory_follower_nodes/test/test_latlon_muxer_node.cpp\n", - " [WARN ] Empty tool output detected in universe-autoware.universe-control-trajectory_follower_nodes-test-test_latlon_muxer_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/localization/stop_filter/src/stop_filter_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/perception/map_based_prediction/src/map_based_prediction_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/vehicle/external/pacmod_interface/pacmod_interface/src/pacmod_steer_test/pacmod_steer_test_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/obstacle_stop_planner/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/action/wait_cancel_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-action-wait_cancel_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_system_tests/src/recoveries/wait/test_wait_recovery_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_system_tests-src-recoveries-wait-test_wait_recovery_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/freespace_planner/src/freespace_planner/freespace_planner_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/plugins/action/spin_cancel_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-plugins-action-spin_cancel_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/system/ad_service_state_monitor/src/ad_service_state_monitor_node/ad_service_state_monitor_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher/src/node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_demos/src/normal_filter_comparison_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/sensing/livox/livox_tag_filter/src/livox_tag_filter_node/livox_tag_filter_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/localization/ndt_scan_matcher/src/ndt_scan_matcher_node.cpp\n", - "Processing /home/max/Projects/autoware/src/universe/external/grid_map/grid_map_visualization/src/grid_map_visualization_node.cpp\n", - " [WARN ] Empty tool output detected in universe-external-grid_map-grid_map_visualization-src-grid_map_visualization_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/localization/pose_initializer/src/pose_initializer_node.cpp\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_behavior_tree/test/plugins/action/test_back_up_cancel_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_behavior_tree-test-plugins-action-test_back_up_cancel_node.json\n", - "Processing /home/max/Projects/autoware/src/missing_packages/navigation2/nav2_util/test/test_lifecycle_node.cpp\n", - " [WARN ] Empty tool output detected in missing_packages-navigation2-nav2_util-test-test_lifecycle_node.json\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/motion_velocity_smoother/src/motion_velocity_smoother_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Processing /home/max/Projects/autoware/src/universe/autoware.universe/planning/planning_evaluator/src/planning_evaluator_node.cpp\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n", - "Fused 2 s\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "def _load_cl_objects():\n", " return process_clang_output(CL_PATH)\n", "\n", + "\n", "_cl_context: ClContext = cached(\"cl_objects\", _load_cl_objects, [CL_PATH])" ], "metadata": { @@ -2901,265 +126,16 @@ }, { "cell_type": "code", - "execution_count": 5, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "//launch_ros_1466825 None\n", - "//pointcloud_container None\n", - "//robot_state_publisher None\n", - "/system/system_monitor/system_monitor/system_monitor_container None\n", - "/system/system_monitor/cpu_monitor None\n", - "//aggregator_node None\n", - "/system/system_error_monitor None\n", - "/system/system_monitor/hdd_monitor None\n", - "/map/map_container None\n", - "/system/ad_service_state_monitor AutowareStateMonitorNode\n", - "/system/transform_listener_impl_aaab23389890 None\n", - "/sensing/lidar/top/pointcloud_preprocessor/velodyne_node_container None\n", - "/system/emergency_handler None\n", - "/system/system_monitor/mem_monitor None\n", - "/system/system_monitor/net_monitor None\n", - "/sensing/lidar/left/pointcloud_preprocessor/velodyne_node_container None\n", - "/map/lanelet2_map_loader Lanelet2MapLoaderNode\n", - "/sensing/lidar/right/pointcloud_preprocessor/velodyne_node_container None\n", - "/system/system_monitor/ntp_monitor None\n", - "/sensing/lidar/rear/pointcloud_preprocessor/velodyne_node_container None\n", - "/map/lanelet2_map_visualization Lanelet2MapVisualizationNode\n", - "/system/system_monitor/process_monitor None\n", - "/sensing/imu/imu_corrector None\n", - "/sensing/lidar/right/velodyne_convert_node None\n", - "/system/system_monitor/gpu_monitor None\n", - "/localization/twist_estimator/vehicle_velocity_converter_node None\n", - "/sensing/gnss/gnss_poser None\n", - "/sensing/gnss/transform_listener_impl_aaaae7eca970 None\n", - "/localization/pose_twist_fusion_filter/stop_filter None\n", - "/sensing/lidar/rear/velodyne_convert_node None\n", - "/map/pointcloud_map_loader PointCloudMapLoaderNode\n", - "/sensing/lidar/top/velodyne_convert_node None\n", - "/localization/localization_error_monitor LocalizationErrorMonitor\n", - "/localization/util/pose_initializer None\n", - "/localization/util/transform_listener_impl_aaab1061ada0 None\n", - "/map/map_tf_generator None\n", - "/perception/object_recognition/detection/apollo/shape_estimation ShapeEstimationNode\n", - "/sensing/lidar/left/velodyne_convert_node None\n", - "/perception/occupancy_grid_map/occupancy_grid_map_container None\n", - "/perception/object_recognition/detection/detection_by_tracker/initial_cluster_shape_estimation None\n", - "/localization/twist_estimator/gyro_odometer None\n", - "/localization/twist_estimator/transform_listener_impl_aaaad13f85a8 None\n", - "/localization/pose_twist_fusion_filter/ekf_localizer None\n", - "/perception/object_recognition/detection/clustering/euclidean_cluster_container None\n", - "/perception/occupancy_grid_map/occupancy_grid_map_node None\n", - "/perception/occupancy_grid_map/transform_listener_impl_ffff4c078050 None\n", - "/perception/object_recognition/detection/voxel_based_compare_map_filter None\n", - "//transform_listener_impl_ffff305f6d70 None\n", - "/perception/object_recognition/detection/object_association_merger_edgar_sim_stable_1466825_8039539255778196589 None\n", - "/perception/object_recognition/detection/transform_listener_impl_aaab13785ba8 None\n", - "/perception/obstacle_segmentation/common_ground_filter None\n", - "/perception/object_recognition/detection/apollo/detected_object_feature_remover None\n", - "//transform_listener_impl_fffee0068280 None\n", - "//transform_listener_impl_fffee000a798 None\n", - "/perception/object_recognition/tracking/multi_object_tracker None\n", - "/perception/obstacle_segmentation/occupancy_grid_map_outlier_filter None\n", - "/perception/object_recognition/tracking/transform_listener_impl_aaaafd450638 None\n", - "//transform_listener_impl_ffff38054c10 None\n", - "/perception/object_recognition/detection/detection_by_tracker/detection_by_tracker_node None\n", - "/planning/scenario_planning/external_velocity_limit_selector ExternalVelocityLimitSelectorNode\n", - "/perception/object_recognition/prediction/map_based_prediction map_based_prediction::MapBasedPredictionNode\n", - "/perception/object_recognition/detection/detection_by_tracker/transform_listener_impl_aaaae6a40478 None\n", - "/perception/object_recognition/detection/apollo/lidar_apollo_instance_segmentation None\n", - "/perception/object_recognition/prediction/transform_listener_impl_aaaae0a54950 None\n", - "/perception/traffic_light_recognition/traffic_light_node_container None\n", - "/perception/object_recognition/detection/apollo/transform_listener_impl_aaab206dd058 None\n", - "/planning/scenario_planning/motion_velocity_smoother motion_velocity_smoother::MotionVelocitySmootherNode\n", - "/perception/traffic_light_recognition/traffic_light_map_based_detector traffic_light::MapBasedDetector\n", - "/perception/object_recognition/detection/obstacle_pointcloud_based_validator_node None\n", - "/planning/scenario_planning/transform_listener_impl_aaab0e68d7a0 None\n", - "/perception/traffic_light_recognition/transform_listener_impl_aaaae4b65338 None\n", - "/perception/object_recognition/detection/transform_listener_impl_aaaad385b6f8 None\n", - "/planning/scenario_planning/lane_driving/behavior_planning/behavior_planning_container None\n", - "/planning/mission_planning/mission_planning_container None\n", - "/perception/traffic_light_recognition/traffic_light_map_visualizer None\n", - "/planning/scenario_planning/scenario_selector ScenarioSelectorNode\n", - "/planning/scenario_planning/transform_listener_impl_aaaafa63fcb8 None\n", - "/planning/planning_diagnostics/planning_error_monitor planning_diagnostics::PlanningErrorMonitorNode\n", - "/awapi/awapi_relay_container None\n", - "/planning/scenario_planning/parking/parking_container None\n", - "/planning/scenario_planning/lane_driving/behavior_planning/rtc_auto_approver None\n", - "/control/control_container None\n", - "/planning/scenario_planning/lane_driving/motion_planning/motion_planning_container None\n", - "/sensing/lidar/rear/crop_box_filter_self None\n", - "/autoware_api/internal/initial_pose_2d None\n", - "/sensing/lidar/rear/pointcloud_preprocessor/transform_listener_impl_aaaaea9e1c20 None\n", - "/autoware_api/internal/crosswalk_states None\n", - "/autoware_api/internal/autoware_iv_adaptor None\n", - "/autoware_api/external/autoware_iv_adaptor None\n", - "/sensing/lidar/rear/crop_box_filter_mirror None\n", - "/sensing/lidar/rear/pointcloud_preprocessor/transform_listener_impl_aaaaeaa76000 None\n", - "/autoware_api/internal/intersection_states None\n", - "/sensing/lidar/rear/velodyne_interpolate_node None\n", - "/localization/pose_estimator/ndt_scan_matcher None\n", - "/sensing/lidar/rear/pointcloud_preprocessor/transform_listener_impl_aaaaea988030 None\n", - "/awapi/awapi_awiv_adapter_node None\n", - "/sensing/lidar/rear/ring_outlier_filter None\n", - "/localization/pose_estimator/transform_listener_impl_aaaab8dd4448 None\n", - "/awapi/transform_listener_impl_aaaae22a8c38 None\n", - "/localization/util/crop_box_filter_measurement_range None\n", - "/autoware_api/internal/traffic_signals None\n", - "/sensing/lidar/rear/pointcloud_preprocessor/transform_listener_impl_aaaaeab85f10 None\n", - "/awapi/route_relay None\n", - "/planning/scenario_planning/lane_driving/motion_planning/obstacle_avoidance_planner ObstacleAvoidancePlanner\n", - "/sensing/lidar/left/crop_box_filter_self None\n", - "/awapi/predict_object_relay None\n", - "/sensing/lidar/right/crop_box_filter_self None\n", - "/sensing/lidar/top/pointcloud_preprocessor/transform_listener_impl_fffefc5dc390 None\n", - "/sensing/lidar/left/pointcloud_preprocessor/transform_listener_impl_aaaafe9502f0 None\n", - "/control/trajectory_follower/longitudinal_controller_node_exe None\n", - "/sensing/lidar/right/pointcloud_preprocessor/transform_listener_impl_aaaacfe628e0 None\n", - "/planning/mission_planning/mission_planner None\n", - "/sensing/lidar/top/crop_box_filter_self None\n", - "/awapi/nearest_traffic_signal_relay None\n", - "/sensing/lidar/left/crop_box_filter_mirror None\n", - "/sensing/lidar/right/crop_box_filter_mirror None\n", - "/planning/scenario_planning/lane_driving/motion_planning/transform_listener_impl_ffff6409e150 None\n", - "/autoware_api/internal/initial_pose None\n", - "/control/transform_listener_impl_aaaae83d9e30 None\n", - "/sensing/lidar/left/pointcloud_preprocessor/transform_listener_impl_aaaafe9ea7e0 None\n", - "/sensing/lidar/right/pointcloud_preprocessor/transform_listener_impl_aaaacff0f600 None\n", - "/awapi/ready_module_relay None\n", - "/planning/mission_planning/transform_listener_impl_aaab0697dcc0 None\n", - "/sensing/lidar/top/pointcloud_preprocessor/transform_listener_impl_fffee006b030 None\n", - "/sensing/lidar/right/velodyne_interpolate_node None\n", - "/localization/util/voxel_grid_downsample_filter None\n", - "/autoware_api/internal/iv_msgs None\n", - "/sensing/lidar/left/velodyne_interpolate_node None\n", - "/awapi/force_available_relay None\n", - "/sensing/lidar/right/pointcloud_preprocessor/transform_listener_impl_aaaacfebd400 None\n", - "/sensing/lidar/left/pointcloud_preprocessor/transform_listener_impl_aaaafe8ebe50 None\n", - "/sensing/lidar/right/ring_outlier_filter None\n", - "/awapi/running_modules_relay None\n", - "/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner behavior_path_planner::BehaviorPathPlannerNode\n", - "/sensing/lidar/left/ring_outlier_filter None\n", - "/sensing/lidar/right/pointcloud_preprocessor/transform_listener_impl_aaaad0054750 None\n", - "/control/external_cmd_selector ExternalCmdSelector\n", - "/planning/scenario_planning/lane_driving/behavior_planning/transform_listener_impl_ffff400cb1c0 None\n", - "/sensing/lidar/left/pointcloud_preprocessor/transform_listener_impl_aaaafeb1d2e0 None\n", - "/autoware_api/external/cpu_usage None\n", - "/autoware_api/internal/operator None\n", - "/sensing/lidar/top/pointcloud_preprocessor/transform_listener_impl_ffff140694b0 None\n", - "/sensing/lidar/top/crop_box_filter_mirror None\n", - "/awapi/autoware_engage_relay None\n", - "/perception/traffic_light_recognition/traffic_light_ssd_fine_detector None\n", - "/planning/scenario_planning/parking/costmap_generator CostmapGenerator\n", - "/autoware_api/external/diagnostics None\n", - "/control/external_cmd_converter external_cmd_converter::ExternalCmdConverterNode\n", - "/autoware_api/internal/route None\n", - "/awapi/vehicle_engage_relay None\n", - "/planning/scenario_planning/parking/transform_listener_impl_aaab03fa1058 None\n", - "/autoware_api/internal/velocity None\n", - "/sensing/lidar/top/pointcloud_preprocessor/transform_listener_impl_ffff2005c060 None\n", - "/awapi/put_route_relay None\n", - "/localization/util/random_downsample_filter None\n", - "/planning/mission_planning/goal_pose_visualizer None\n", - "/map/map_hash_generator None\n", - "/control/trajectory_follower/lateral_controller_node_exe None\n", - "/sensing/lidar/top/pointcloud_preprocessor/transform_listener_impl_ffff140f8f90 None\n", - "/awapi/put_goal_relay None\n", - "/sensing/lidar/top/velodyne_interpolate_node None\n", - "/autoware_api/external/door None\n", - "/perception/object_recognition/detection/clustering/outlier_filter None\n", - "/control/transform_listener_impl_aaaae85e7a30 None\n", - "/control/trajectory_follower/latlon_muxer_node_exe None\n", - "/awapi/lane_change_approval_relay None\n", - "/autoware_api/external/emergency None\n", - "/sensing/lidar/top/pointcloud_preprocessor/transform_listener_impl_ffff44007d40 None\n", - "/awapi/force_lane_change_relay None\n", - "/perception/object_recognition/detection/clustering/transform_listener_impl_aaaae8bc5300 None\n", - "/perception/object_recognition/detection/clustering/voxel_grid_filter_edgar_sim_stable_1466825_1597630548661680678 None\n", - "/sensing/lidar/top/ring_outlier_filter None\n", - "/autoware_api/external/engage None\n", - "/awapi/external_approval_relay None\n", - "/control/trajectory_follower/lane_departure_checker_node lane_departure_checker::LaneDepartureCheckerNode\n", - "/awapi/force_approval_relay None\n", - "//rosapi None\n", - "/control/transform_listener_impl_aaaae879d3f0 None\n", - "/sensing/lidar/top/pointcloud_preprocessor/transform_listener_impl_ffff2406e400 None\n", - "/perception/object_recognition/detection/clustering/transform_listener_impl_aaaae8c656c0 None\n", - "/autoware_api/external/fail_safe_state None\n", - "/perception/object_recognition/detection/clustering/euclidean_cluster None\n", - "//rosapi_params None\n", - "/awapi/obstacle_avoid_approval_relay None\n", - "/autoware_api/external/initial_pose None\n", - "//_ros2cli_1467000 None\n", - "/awapi/traffic_signal_relay None\n", - "/autoware_api/external/map None\n", - "/autoware_api/external/operator None\n", - "/awapi/overwrite_traffic_signals_relay None\n", - "/autoware_api/external/metadata_packages None\n", - "/awapi/speed_exceeded_relay None\n", - "/autoware_api/external/route None\n", - "/awapi/crosswalk_status_relay None\n", - "//rosbridge_websocket None\n", - "/autoware_api/external/service None\n", - "/awapi/intersection_status_relay None\n", - "/autoware_api/external/start None\n", - "/awapi/expand_stop_range_relay None\n", - "/autoware_api/external/vehicle_status None\n", - "/awapi/pose_initialization_request_relay None\n", - "/autoware_api/external/velocity None\n", - "/autoware_api/external/version None\n", - "/perception/traffic_light_recognition/traffic_light_image_decompressor None\n", - "/perception/traffic_light_recognition/traffic_light_classifier None\n", - "/perception/traffic_light_recognition/traffic_light_roi_visualizer None\n", - "//rosbag2_player None\n", - "/planning/scenario_planning/parking/freespace_planner freespace_planner::FreespacePlannerNode\n", - "/planning/scenario_planning/parking/transform_listener_impl_aaab0443e0c0 None\n", - "/control/shift_decider None\n", - "/control/vehicle_cmd_gate None\n", - "/planning/scenario_planning/lane_driving/motion_planning/surround_obstacle_checker None\n", - "/planning/scenario_planning/lane_driving/motion_planning/transform_listener_impl_ffff4000d8a8 None\n", - "/planning/scenario_planning/lane_driving/motion_planning/obstacle_stop_planner motion_planning::ObstacleStopPlannerNode\n", - "/planning/scenario_planning/lane_driving/motion_planning/transform_listener_impl_ffff0c014730 None\n", - "/localization/pose_twist_fusion_filter/transform_listener_impl_ffffdd3a8138 None\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ - "#################################################\n", - "# Match nodes\n", - "#################################################\n", + "from matching.subscriptions import cl_deps_to_tr_deps, match\n", "\n", - "node_map = {}\n", - "for node in nodes.values():\n", - " node: TrNode\n", - " for tu_path, tu in _cl_context.translation_units.items():\n", - " for cl_node in tu.nodes.values():\n", - " if node.name == cl_node.ros_name:\n", - " if node in node_map:\n", - " print(f\"[WARN ] Node already mapped: {node.path} -> {node_map[node].qualified_name}\")\n", - " node_map[node] = cl_node\n", + "matches, tr_unmatched, cl_unmatched = match(_tracing_context, _cl_context)\n", + "tr_internal_deps = cl_deps_to_tr_deps(matches, _tracing_context, _cl_context)\n", + "tr_cl_matches = {tup[1]: tup[0] for tup in matches}\n", "\n", - "for n1 in nodes.values():\n", - " n2 = node_map[n1].qualified_name if n1 in node_map else None\n", - " print(n1.path, n2)\n", - "\n", - "#################################################\n", - "# Match subscriptions\n", - "#################################################\n", - "\n", - "\n", - "\n", - "#################################################\n", - "# Match publishers\n", - "#################################################\n", - "\n", - "\n", - "\n", - "#################################################\n", - "# Match timers\n", - "#################################################" + "print(len(tr_internal_deps), sum(map(len, tr_internal_deps.values())))" ], "metadata": { "collapsed": false, @@ -3170,621 +146,233 @@ }, { "cell_type": "markdown", + "source": [ + "# E2E Latency Calculation" + ], "metadata": { + "collapsed": false, "pycharm": { "name": "#%% md\n" } - }, - "source": [ - "# E2E Latency Calculation" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(1842/1842) Processing done. \r\n" - ] - } - ], - "source": [ - "#################################################\n", - "# Data structures & helpers\n", - "#################################################\n", - "\n", - "LatencyStats = pd.Series\n", - "\n", - "\n", - "@dataclass\n", - "class LatencyGraph:\n", - " verts: Set[TrCallbackObject]\n", - " edges: Dict[Tuple[TrCallbackObject, TrCallbackObject], Tuple[TrTopic, LatencyStats]]\n", - " starts: Dict[TrCallbackObject, TrTopic]\n", - " ends: Dict[TrCallbackObject, TrTopic]\n", - "\n", - "\n", - "def pub_use_latencies(cb_instances: List[TrCallbackInstance], pub_instances: List[TrPublishInstance]):\n", - " cb_times = sorted([inst.timestamp.timestamp() for inst in cb_instances])\n", - "\n", - " if not pub_instances:\n", - " return pd.Series(np.full(len(cb_instances), np.nan), index=cb_times)\n", - "\n", - " pub_times = np.array(sorted([pub.timestamp * 1e-9 for pub in pub_instances]))\n", - "\n", - " pub_use_lats = np.array([cb_time - np.max(pub_times[pub_times < cb_time], initial=-np.inf) for cb_time in cb_times])\n", - " pub_use_lats[np.isposinf(pub_use_lats)] = np.nan\n", - " ret_series = pd.Series(pub_use_lats, index=cb_times)\n", - " return ret_series\n", - "\n", - "\n", - "def inst_runtime_interval(cb_inst):\n", - " inst_t_min = cb_inst.timestamp.timestamp()\n", - " inst_t_max = inst_t_min + cb_inst.duration.total_seconds()\n", - " return (inst_t_min, inst_t_max)\n", - "\n", - "\n", - "def count_pub_insts_in_intervals(cb_intervals: List[Tuple[float, float]], pub_insts: List[TrPublishInstance]):\n", - " \"\"\"\n", - " Counts number of publication instancess that lie within one of the cb_intervals.\n", - " \"\"\"\n", - " pub_timestamps = [inst.timestamp * 1e-9 for inst in pub_insts]\n", - "\n", - " # Algorithm: Two-pointer method\n", - " # With both the pub_timestamps and cb_intervals sorted ascending,\n", - " # we can cut down the O(m*n) comparisons to O(m+n).\n", - " pub_timestamps.sort()\n", - " cb_intervals.sort(key=lambda tup: tup[0])\n", - "\n", - " n_overlaps = 0\n", - " cb_iter = iter(cb_intervals)\n", - " pub_iter = iter(pub_timestamps)\n", - " (t_min, t_max) = next(cb_iter, (None, None))\n", - " t_pub = next(pub_iter, None)\n", - "\n", - " while t_pub is not None and t_min is not None:\n", - " if t_min <= t_pub <= t_max: # If publication in interval, increase counter, go to next pub (multiple pubs can be within one interval)\n", - " n_overlaps += 1\n", - " t_pub = next(pub_iter, None)\n", - " elif t_pub < t_min: # If publication before interval, increase pub\n", - " t_pub = next(pub_iter, None)\n", - " else: # If interval before publication, increase interval\n", - " (t_min, t_max) = next(cb_iter, (None, None))\n", - "\n", - " return n_overlaps\n", - "\n", - "\n", - "#################################################\n", - "# Identify input and output topics\n", - "#################################################\n", - "\n", - "in_topics = [t for t in topics.values() if not t.publishers]\n", - "out_topics = [t for t in topics.values() if not t.subscriptions]\n", - "\n", - "#################################################\n", - "# For each node, work out dependencies and\n", - "# publications of each callback\n", - "#################################################\n", - "\n", - "cb_to_scored_pub: Dict[TrCallbackObject, Set[Tuple[TrPublisher, float]]] = {}\n", - "topic_to_dep_cb: Dict[TrTopic, Set[TrCallbackObject]] = {}\n", - "pub_cb_to_lat_stats: Dict[Tuple[TrPublisher, TrCallbackObject], LatencyStats] = {}\n", - "\n", - "with ProgressPrinter(\"Processing\", len(callback_objects)) as p:\n", - " for cb in callback_objects.values():\n", - " cb_sym = callback_symbols[cb.callback_object].symbol if cb.callback_object in callback_symbols else None\n", - " if cb_sym:\n", - " p.step(Ros2DataModelUtil._prettify(None, cb_sym))\n", - " else:\n", - " p.step(cb.id)\n", - "\n", - " if \"ParameterEvent\" in cb_sym:\n", - " continue\n", - "\n", - " # Find topics the callback EXPLICITLY depends on\n", - " # - Timer callbacks: no EXPLICIT dependencies\n", - " # - Subscription callbacks: callback depends on the subscribed topic. Possibly also has other IMPLICIT dependencies\n", - "\n", - " if type(cb.owner).__name__ == TrSubscriptionObject.__name__:\n", - " owner_node = cb.owner.subscription.node\n", - " dep_topics = [cb.owner.subscription.topic, ]\n", - " elif type(cb.owner).__name__ == TrTimer.__name__:\n", - " owner_nodes = cb.owner.nodes\n", - " if len(owner_nodes) != 1:\n", - " raise (ValueError(\"Timer has more than one owner!\"))\n", - " dep_topics = []\n", - " elif cb.owner is None:\n", - " dep_topics = []\n", - " continue\n", - " else:\n", - " raise RuntimeError(\n", - " f\"Callback owners other than timers/subscriptions cannot be handled: {cb.owner} {cb.owner_info}\")\n", - "\n", - " for topic in dep_topics:\n", - " if topic not in topic_to_dep_cb:\n", - " topic_to_dep_cb[topic] = set()\n", - " topic_to_dep_cb[topic].add(cb)\n", - "\n", - " for pub in topic.publishers:\n", - " pub_cb_to_lat_stats[(pub, cb)] = pub_use_latencies(cb.callback_instances, pub.instances)\n", - "\n", - " # Find topics the callback publishes to (HEURISTICALLY!)\n", - " # For topics published to during the runtime of the callback's instances, \n", - " # assume that they are published by the callback\n", - "\n", - " cb_runtime_intervals = [inst_runtime_interval(inst) for inst in cb.callback_instances]\n", - " cb_pub_overlap_counts = [count_pub_insts_in_intervals(cb_runtime_intervals, pub.instances) for pub in\n", - " owner_node.publishers]\n", - "\n", - " for pub, olap_count in zip(owner_node.publishers, cb_pub_overlap_counts):\n", - " if olap_count == 0 or not pub.instances:\n", - " continue\n", - " score = olap_count / len(pub.instances)\n", - "\n", - " if cb not in cb_to_scored_pub:\n", - " cb_to_scored_pub[cb] = set()\n", - " cb_to_scored_pub[cb].add((pub, score))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/diagnostics:\n", - " 93.922652% void (diagnostic_updater::Updater::?)(),\n", - " 6.629834% void (ProcessMonitor::?)()\n", - "/diagnostics:\n", - " 0.202429% void (rclcpp::TimeSource::?)(rosgraph_msgs::msg::Clock*),\n", - " 60.526316% void (planning_diagnostics::PlanningErrorMonitorNode::?)()\n", - "/awapi/vehicle/get/status:\n", - " 0.689655% void (rclcpp::TimeSource::?)(rosgraph_msgs::msg::Clock*),\n", - " 100.000000% void (autoware_api::AutowareIvAdapter::?)()\n", - "/diagnostics:\n", - " 0.005231% void (rclcpp::TimeSource::?)(rosgraph_msgs::msg::Clock*),\n", - " 0.005231% void (NDTScanMatcher::?)(geometry_msgs::msg::PoseWithCovarianceStamped*),\n", - " 0.428960% void (NDTScanMatcher::?)(sensor_msgs::msg::PointCloud2*),\n", - " 4.723792% void (NDTScanMatcher::?)(sensor_msgs::msg::PointCloud2*),\n", - " 0.136012% void (AutowareStateMonitorNode::?)()\n", - "/localization/pose_estimator/pose_with_covariance:\n", - " 0.384615% void (rclcpp::TimeSource::?)(rosgraph_msgs::msg::Clock*),\n", - " 100.000000% void (NDTScanMatcher::?)(sensor_msgs::msg::PointCloud2*)\n", - "/localization/pose_estimator/initial_to_result_distance:\n", - " 100.000000% void (NDTScanMatcher::?)(sensor_msgs::msg::PointCloud2*),\n", - " 0.373134% void (AutowareStateMonitorNode::?)()\n", - "/localization/pose_estimator/initial_to_result_distance_new:\n", - " 100.000000% void (NDTScanMatcher::?)(sensor_msgs::msg::PointCloud2*),\n", - " 0.373134% void (AutowareStateMonitorNode::?)()\n", - "/localization/pose_estimator/transform_probability:\n", - " 100.000000% void (NDTScanMatcher::?)(sensor_msgs::msg::PointCloud2*),\n", - " 0.373134% void (AutowareStateMonitorNode::?)()\n", - "/localization/pose_estimator/exe_time_ms:\n", - " 100.000000% void (NDTScanMatcher::?)(sensor_msgs::msg::PointCloud2*),\n", - " 0.373134% void (AutowareStateMonitorNode::?)()\n", - "/localization/pose_estimator/nearest_voxel_transformation_likelihood:\n", - " 100.000000% void (NDTScanMatcher::?)(sensor_msgs::msg::PointCloud2*),\n", - " 0.373134% void (AutowareStateMonitorNode::?)()\n", - "/localization/pose_estimator/initial_to_result_distance_old:\n", - " 100.000000% void (NDTScanMatcher::?)(sensor_msgs::msg::PointCloud2*),\n", - " 0.373134% void (AutowareStateMonitorNode::?)()\n", - "/localization/pose_estimator/iteration_num:\n", - " 100.000000% void (NDTScanMatcher::?)(sensor_msgs::msg::PointCloud2*),\n", - " 0.373134% void (AutowareStateMonitorNode::?)()\n", - "/diagnostics:\n", - " 34.070796% void (diagnostic_updater::Updater::?)(),\n", - " 65.486726% void (vehicle_cmd_gate::VehicleCmdGate::?)()\n", - "/control/current_gate_mode:\n", - " 50.000000% void (vehicle_cmd_gate::VehicleCmdGate::?)(),\n", - " 50.000000% void (vehicle_cmd_gate::VehicleCmdGate::?)()\n" - ] - } - ], - "source": [ - "pub_to_scored_cb = {}\n", - "\n", - "verts = set(callback_objects.values())\n", - "edges = {}\n", - "for send_cb, scored_pubs in cb_to_scored_pub.items():\n", - " for pub, score in scored_pubs:\n", - " if score == 0.0:\n", - " continue\n", - " if pub not in pub_to_scored_cb:\n", - " pub_to_scored_cb[pub] = []\n", - " pub_to_scored_cb[pub].append((send_cb, score))\n", - " receiver_cbs = [sub_obj.callback_object for sub in pub.subscriptions for sub_obj in sub.subscription_objects]\n", - " for recv_cb in receiver_cbs:\n", - " edges[(send_cb, recv_cb)] = (pub.topic, pub_cb_to_lat_stats[(pub, recv_cb)])\n", - "\n", - "for pub, scored_cbs in pub_to_scored_cb.items():\n", - " if len(scored_cbs) > 1:\n", - " def _mapfun(tup):\n", - " cb, score = tup\n", - " pretty_sym = Ros2DataModelUtil._prettify(None, callback_symbols[cb.callback_object].symbol)\n", - " pretty_sym = re.sub(r\"std::shared_ptr<(.*?) *(const)?>\", r\"\\1*\", pretty_sym)\n", - " return f'{score * 100:>10.6f}% {pretty_sym}'\n", - "\n", - "\n", - " cbstr = ',\\n '.join(map(_mapfun, scored_cbs))\n", - " print(f\"{pub.topic_name}:\\n {cbstr}\")\n", - "\n", - "inputs = {}\n", - "outputs = {}\n", - "for topic in out_topics:\n", - " outputs.update(\n", - " {cb: topic for pub in topic.publishers if pub in pub_to_scored_cb for cb, score in pub_to_scored_cb[pub]})\n", - "for topic in in_topics:\n", - " inputs.update(\n", - " {sub_obj.callback_object: topic for sub in topic.subscriptions for sub_obj in sub.subscription_objects})\n", - "\n", - "#################################################\n", - "# Filter callback objects and topics\n", - "#################################################\n", - "\n", - "callback_symbol_filters = [\n", - " \"rcl_interfaces::msg::ParameterEvent\", \"diagnostic_updater::Updater\",\n", - " \"rclcpp::ParameterService::ParameterService\", \"tf2_ros::TransformListener\",\n", - " \"rclcpp_components::ComponentManager\", \"diagnostic_aggregator::Aggregator\"\n", - "]\n", - "\n", - "verts = set(\n", - " filter(\n", - " lambda vert: not any(\n", - " f in callback_symbols[vert.callback_object].symbol for f in callback_symbol_filters),\n", - " verts))\n", - "edges = {(cb1, cb2): val for (cb1, cb2), val in edges.items() if cb1 in verts and cb2 in verts}\n", - "outputs = {cb: topic for cb, topic in outputs.items() if cb in verts}\n", - "inputs = {cb: topic for cb, topic in inputs.items() if cb in verts}\n", - "\n", - "latency_graph = LatencyGraph(verts, edges, inputs, outputs)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "ename": "KeyError", - "evalue": "281471221778768", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mKeyError\u001B[0m Traceback (most recent call last)", - "\u001B[0;32m/tmp/ipykernel_6800/33364117.py\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[1;32m 12\u001B[0m \u001B[0mnode_internal_deps\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0myaml\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mload\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mf\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 13\u001B[0m \u001B[0;31m# Convert node path to node instance\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 14\u001B[0;31m node_internal_deps = {_find_node(path): {\n\u001B[0m\u001B[1;32m 15\u001B[0m \u001B[0mcallback_objects\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mcb_id\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0mcallback_objects\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mdep_id\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mdep_id\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mdep_ids\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 16\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mcb_id\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mdep_ids\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m/tmp/ipykernel_6800/33364117.py\u001B[0m in \u001B[0;36m\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 12\u001B[0m \u001B[0mnode_internal_deps\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0myaml\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mload\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mf\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 13\u001B[0m \u001B[0;31m# Convert node path to node instance\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 14\u001B[0;31m node_internal_deps = {_find_node(path): {\n\u001B[0m\u001B[1;32m 15\u001B[0m \u001B[0mcallback_objects\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mcb_id\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0mcallback_objects\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mdep_id\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mdep_id\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mdep_ids\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 16\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mcb_id\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mdep_ids\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m/tmp/ipykernel_6800/33364117.py\u001B[0m in \u001B[0;36m\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 13\u001B[0m \u001B[0;31m# Convert node path to node instance\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 14\u001B[0m node_internal_deps = {_find_node(path): {\n\u001B[0;32m---> 15\u001B[0;31m \u001B[0mcallback_objects\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mcb_id\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0mcallback_objects\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mdep_id\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mdep_id\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mdep_ids\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 16\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mcb_id\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mdep_ids\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 17\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mdeps\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mitems\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;31mKeyError\u001B[0m: 281471221778768" - ] - } - ], - "source": [ - "#################################################\n", - "# Get intra-node dependencies from settings\n", - "#################################################\n", - "\n", - "def _find_node(path):\n", - " return next(filter(lambda n: n.path == path, nodes.values()))\n", - "\n", - "\n", - "from ruamel.yaml import YAML\n", - "\n", - "yaml = YAML()\n", - "with open(\"settings/intra-node-data-deps.yaml\", \"r\") as f:\n", - " node_internal_deps = yaml.load(f)\n", - " # Convert node path to node instance\n", - " node_internal_deps = {_find_node(path): {\n", - " callback_objects[cb_id]: [callback_objects[dep_id] for dep_id in dep_ids]\n", - " for cb_id, dep_ids\n", - " in deps.items()\n", - " } for path, deps in node_internal_deps.items()}\n", - "\n", - "for node, cb_mappings in node_internal_deps.items():\n", - " print(node)\n", - " for cb, deps in cb_mappings.items():\n", - " print(\" \", type(cb).__name__, \"->\", ' '.join(map(lambda x: type(x).__name__, deps)))" - ] + } }, { "cell_type": "code", "execution_count": null, + "outputs": [], + "source": [ + "from latency_graph import latency_graph as lg\n", + "\n", + "#lat_graph = lg.LatencyGraph(_tracing_context)\n", + "\n", + "import pickle\n", + "\n", + "#with open(\"lat_graph.pkl\", \"wb\") as f:\n", + "# pickle.dump(lat_graph, f)\n", + "with open(\"lat_graph.pkl\", \"rb\") as f:\n", + " lat_graph = pickle.load(f)" + ], "metadata": { + "collapsed": false, "pycharm": { "name": "#%%\n" } - }, + } + }, + { + "cell_type": "code", + "execution_count": null, "outputs": [], "source": [ + "from matching.subscriptions import sanitize\n", + "from typing import Iterable, Sized\n", + "from tracing_interop.tr_types import TrNode, TrCallbackObject, TrCallbackSymbol, TrSubscriptionObject\n", "\n", "#################################################\n", "# Plot DFG\n", "#################################################\n", "\n", + "# Compare with: https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/node-diagram/\n", + "node_colors = {\n", + " \"sensing\": {\"fill\": \"#e1d5e7\", \"stroke\": \"#9673a6\"},\n", + " \"localization\": {\"fill\": \"#dae8fc\", \"stroke\": \"#6c8ebf\"},\n", + " \"perception\": {\"fill\": \"#d5e8d4\", \"stroke\": \"#82b366\"},\n", + " \"planning\": {\"fill\": \"#fff2cc\", \"stroke\": \"#d6b656\"},\n", + " \"control\": {\"fill\": \"#ffe6cc\", \"stroke\": \"#d79b00\"},\n", + " \"system\": {\"fill\": \"#f8cecc\", \"stroke\": \"#b85450\"},\n", + " \"vehicle_interface\": {\"fill\": \"#b0e3e6\", \"stroke\": \"#0e8088\"},\n", + " None: {\"fill\": \"#f5f5f5\", \"stroke\": \"#666666\"}\n", + "}\n", + "\n", + "node_namespace_mapping = {\n", + " 'perception': 'perception',\n", + " 'sensing': 'sensing',\n", + " 'planning': 'planning',\n", + " 'control': 'control',\n", + " 'awapi': None,\n", + " 'autoware_api': None,\n", + " 'map': None,\n", + " 'system': 'system',\n", + " 'localization': 'localization',\n", + " 'robot_state_publisher': None,\n", + " 'aggregator_node': None,\n", + " 'pointcloud_container': 'sensing',\n", + "}\n", + "\n", "import graphviz as gv\n", "\n", "g = gv.Digraph('G', filename=\"latency_graph.gv\",\n", - " node_attr={'shape': 'record', 'margin': '0.00001', 'width': '0.00001', 'height': '0.001'},\n", + " node_attr={'shape': 'plain'},\n", " graph_attr={'pack': '1'})\n", "g.graph_attr['rankdir'] = 'LR'\n", "\n", - "g.node(\"INPUT\", gv.nohtml(\"{INPUT |}\"))\n", - "g.node(\"OUTPUT\", gv.nohtml(\"{ |OUTPUT}\"))\n", + "def plot_hierarchy(gv_parent, lg_node: lg.LGHierarchyLevel, **subgraph_kwargs):\n", + " if lg_node.name == \"[NONE]\":\n", + " return\n", "\n", - "nodes_to_cbs = {}\n", - "export_dict = {}\n", + " print(f\"{' ' * lg_node.full_name.count('/')}Processing {lg_node.name}: {len(lg_node.callbacks)}\")\n", + " with gv_parent.subgraph(name=f\"cluster_{lg_node.full_name.replace('/', '__')}\", **subgraph_kwargs) as c:\n", + " c.attr(label=lg_node.name)\n", + " for cb in lg_node.callbacks:\n", + " if isinstance(cb, lg.LGTrCallback):\n", + " tr_cb = cb.cb\n", + " try:\n", + " sym = _tracing_context.callback_symbols.get(tr_cb.callback_object)\n", + " pretty_sym = repr(sanitize(sym.symbol)).replace(\"&\", \"&\").replace(\"<\", \"<\").replace(\">\", \">\")\n", + " except KeyError:\n", + " pretty_sym = cb.name\n", + " except TypeError:\n", + " pretty_sym = cb.name\n", + " else:\n", + " pretty_sym = cb.name\n", + " c.node(cb.id(),\n", + " f'<
{pretty_sym}
>')\n", "\n", - "for vert in latency_graph.verts:\n", - " vert: TrCallbackObject\n", + " for ch in lg_node.children:\n", + " plot_hierarchy(c, ch, **subgraph_kwargs)\n", "\n", - " if isinstance(vert.owner, TrTimer):\n", - " owner_nodes = vert.owner.nodes\n", - " elif isinstance(vert.owner, TrSubscriptionObject):\n", - " owner_nodes = [vert.owner.subscription.node]\n", - " else:\n", - " owner_nodes = []\n", + "def plot_lg(graph: lg.LatencyGraph):\n", + " for top_level_node in graph.top_node.children:\n", + " colors = node_colors[node_namespace_mapping.get(top_level_node.name)]\n", + " plot_hierarchy(g, top_level_node, graph_attr={'bgcolor': colors[\"fill\"], 'pencolor': colors[\"stroke\"]})\n", "\n", - " if len(owner_nodes) > 1:\n", - " raise RuntimeError(f\"CB has owners {', '.join(map(lambda n: n.path, owner_nodes))}\")\n", - " elif not owner_nodes:\n", - " print(\"[WARN] CB has no owners\")\n", - " continue\n", + " for edge in graph.edges:\n", + " g.edge(f\"{edge.start.id()}:out\", f\"{edge.end.id()}:in\")\n", "\n", - " owner = owner_nodes[0]\n", - " if not owner in nodes_to_cbs: nodes_to_cbs[owner] = []\n", - " nodes_to_cbs[owner].append(vert)\n", - " if not owner.path in export_dict: export_dict[owner.path] = []\n", - "\n", - "for node, cbs in nodes_to_cbs.items():\n", - " with g.subgraph(name=f\"cluster_{node.path}\") as c:\n", - " c.attr(label=node.path)\n", - " c.attr(margin='0.0')\n", - " c.attr(bgcolor='lightgray')\n", - "\n", - " for cb in cbs:\n", - " cb: TrCallbackObject\n", - " pretty_sym = Ros2DataModelUtil._prettify(None, callback_symbols[cb.callback_object].symbol)\n", - " pretty_sym = re.sub(r\"std::shared_ptr<(.*?) *(const)?>\", r\"\\1*\", pretty_sym)\n", - " pretty_sym = pretty_sym.replace('{', '\\\\{').replace('}', '\\\\}')\n", - "\n", - " export_dict[node.path].append({cb.id: {\n", - " 'symbol': pretty_sym,\n", - " 'ins': sum(map(lambda k: k[1].id == cb.id, latency_graph.edges.keys())) + sum(\n", - " map(lambda k: k.id == cb.id, latency_graph.starts.keys())),\n", - " 'outs': sum(map(lambda k: k[0].id == cb.id, latency_graph.edges.keys())) + sum(\n", - " map(lambda k: k.id == cb.id, latency_graph.ends.keys()))\n", - " }})\n", - "\n", - " cb_durations = np.array(list(map(lambda inst: inst.duration.total_seconds(), cb.callback_instances)))\n", - " if len(cb_durations) == 0:\n", - " cb_durations = np.zeros(1)\n", - " cb_dur_stats = (cb_durations.min(), cb_durations.mean(), cb_durations.max())\n", - " c.node(str(cb.id), gv.nohtml(f\"{{ |{pretty_sym} |}}\"),\n", - " tooltip=f\"{cb_dur_stats[0] * 1e6:.0f}µs, {cb_dur_stats[1] * 1e6:.0f}µs, {cb_dur_stats[2] * 1e6:.0f}µs\",\n", - " fontcolor=('red' if isinstance(cb.owner, TrTimer) else 'black'))\n", - "\n", - "for (c1, c2), (topic, lat_stats) in latency_graph.edges.items():\n", - " g.edge(f\"{c1.id}:out\", f\"{c2.id}:in\", tooltip=f\"{topic.name} ({lat_stats.mean() * 1000:.2f}ms)\")\n", - "\n", - "for c, t in latency_graph.starts.items():\n", - " g.edge(\"INPUT:out\", f\"{c.id}:in\", tooltip=t.name)\n", - "\n", - "for c, t in latency_graph.ends.items():\n", - " g.edge(f\"{c.id}:out\", \"OUTPUT:in\", tooltip=t.name)\n", - "\n", - "for n, deps in node_internal_deps.items():\n", - " for cb, dep_cbs in deps.items():\n", - " for dep_cb in dep_cbs:\n", - " g.edge(f\"{dep_cb.id}:out\", f\"{cb.id}:in\", tooltip=\"node-internal data dependency\", color='red')\n", - "\n", - "with open(\"settings/node-cbs.yaml\", \"w\") as f:\n", - " yaml = YAML()\n", - " yaml.dump(export_dict, f)\n", + "plot_lg(lat_graph)\n", "\n", "g.save(\"latency_graph.gv\")\n", + "g.render(\"latency_graph.svg\")\n", "\n", "g" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "....................................*.......................................*.......................................*........................................*.......................................*...#*....................................*.......................................*.......................................*.........................................*.......................................*.......................................*.......................................*.....#*..........................................*.......................................*.......................................*.......................................*.....#**.....................................*.......................................*.......................................*.......................................*.......................................*.......................................*.......................................*.......................................*.......................................*.......#*....................................*.......................................*...#**#***.****.**.#**....................................*.......................................*........................................*.......................................*.......................................*.........................................*........................................*.......................................*.........................................*.......................................*.......................................*.......................................*.......................................*.......................................*.........................................*............................................*.......................................*.........................................*.........................................*.......................................*...........................................*........................................*.......................................*.........................................*.......................................*..........................................*.......................................*.........................................*...#**....................................*.....#****.........................................*.......................................*.....*.===== PATH 0 =====\n", - "===== PATH 1 =====\n", - "===== PATH 2 =====\n", - "===== PATH 3 =====\n", - "===== PATH 4 =====\n", - "/diagnostics 56.812ms 56.812ms\n", - "===== PATH 5 =====\n", - "===== PATH 6 =====\n", - "===== PATH 7 =====\n", - "===== PATH 8 =====\n", - "===== PATH 9 =====\n", - "===== PATH 10 =====\n", - "===== PATH 11 =====\n", - "===== PATH 12 =====\n", - "===== PATH 13 =====\n", - "===== PATH 14 =====\n", - "===== PATH 15 =====\n", - "===== PATH 16 =====\n", - "===== PATH 17 =====\n", - "===== PATH 18 =====\n", - "===== PATH 19 =====\n", - "===== PATH 20 =====\n", - "===== PATH 21 =====\n", - "===== PATH 22 =====\n", - "===== PATH 23 =====\n", - "===== PATH 24 =====\n", - "===== PATH 25 =====\n", - "===== PATH 26 =====\n", - "===== PATH 27 =====\n", - "===== PATH 28 =====\n", - "/diagnostics 56.812ms 56.812ms\n", - "===== PATH 29 =====\n", - "===== PATH 30 =====\n", - "===== PATH 31 =====\n", - "===== PATH 32 =====\n", - "===== PATH 33 =====\n", - "===== PATH 34 =====\n", - "===== PATH 35 =====\n", - "===== PATH 36 =====\n", - "===== PATH 37 =====\n", - "===== PATH 38 =====\n", - "===== PATH 39 =====\n", - "===== PATH 40 =====\n", - "===== PATH 41 =====\n", - "===== PATH 42 =====\n", - "===== PATH 43 =====\n", - "===== PATH 44 =====\n", - "===== PATH 45 =====\n", - "===== PATH 46 =====\n", - "===== PATH 47 =====\n", - "===== PATH 48 =====\n", - "===== PATH 49 =====\n", - "===== PATH 50 =====\n", - "===== PATH 51 =====\n", - "===== PATH 52 =====\n" - ] - } ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], "source": [ + "##################################################\n", + "# Compute in/out topics for hierarchy level X\n", + "##################################################\n", "\n", - "#################################################\n", - "# Transitively add latencies to get E2E latency\n", - "#################################################\n", + "HIER_LEVEL = 2\n", "\n", - "@dataclass\n", - "class PathElem:\n", - " src: TrCallbackObject\n", - " dst: TrCallbackObject\n", - " topic: TrTopic\n", - " latencies: LatencyStats\n", + "def get_nodes_on_level(lat_graph: lg.LatencyGraph):\n", + " def _traverse_node(node: lg.LGHierarchyLevel, cur_lvl=0):\n", + " if cur_lvl == HIER_LEVEL:\n", + " return [node]\n", + "\n", + " if not node.children and cur_lvl < HIER_LEVEL:\n", + " return [node]\n", + "\n", + " collected_nodes = []\n", + " for ch in node.children:\n", + " collected_nodes += _traverse_node(ch, cur_lvl + 1)\n", + " return collected_nodes\n", + "\n", + " return _traverse_node(lat_graph.top_node)\n", + "\n", + "lvl_nodes = get_nodes_on_level(lat_graph)\n", + "lvl_nodes = [n for n in lvl_nodes if \"transform_listener_impl\" not in n.full_name]\n", + "\n", + "print(', '.join(map(lambda n: n.full_name, lvl_nodes)))\n", + "\n", + "def _collect_callbacks(n: lg.LGHierarchyLevel):\n", + " callbacks = []\n", + " callbacks += n.callbacks\n", + " for ch in n.children:\n", + " callbacks += _collect_callbacks(ch)\n", + " return callbacks\n", "\n", "\n", - "def get_latency_paths(cb1, cb_to_cb_to_lat_stats, goals, parent_path=[]) -> List[List[PathElem]]:\n", - " if cb1 in goals:\n", - " return [parent_path]\n", - "\n", - " if cb1 not in cb_to_cb_to_lat_stats:\n", - " return [parent_path]\n", - "\n", - " paths = []\n", - " for cb2 in cb_to_cb_to_lat_stats[cb1]:\n", - " for topic, lats in cb_to_cb_to_lat_stats[cb1][cb2].items():\n", - " new_paths = get_latency_paths(cb2, cb_to_cb_to_lat_stats, goals,\n", - " parent_path + [PathElem(cb1, cb2, topic, lats)])\n", - " paths += new_paths\n", - "\n", - " return paths\n", + "cb_to_node_map = {}\n", + "for n in lvl_nodes:\n", + " cbs = _collect_callbacks(n)\n", + " for cb in cbs:\n", + " cb_to_node_map[cb.id()] = n\n", "\n", "\n", - "cb_to_cb_to_lat_stats = {}\n", - "for (pub, cb2), lat_stats in pub_cb_to_lat_stats.items():\n", - " if pub not in pub_to_scored_cb:\n", - " #print(f\"[WARN] Pub on topic {pub.topic.name} not in pub_to_scored_cb, skipping.\")\n", - " print(end='.')\n", + "edges_between_nodes = {}\n", + "for edge in lat_graph.edges:\n", + " from_node = cb_to_node_map.get(edge.start.id())\n", + " to_node = cb_to_node_map.get(edge.end.id())\n", + "\n", + " if from_node is None or to_node is None:\n", " continue\n", - " if len(pub_to_scored_cb[pub]) > 1:\n", - " #print(f\"[WARN] Pub on topic {pub.topic.name} has {len(pub_to_scored_cb[pub])} callbacks.\")\n", - " print(end='#')\n", - " for cb1, score in pub_to_scored_cb[pub]:\n", - " if score != 1.0:\n", - " #print(f\"[WARN] Callback for topic {pub.topic.name} only has a score of {score*100:.3f}%\")\n", - " print(end='*')\n", - " if cb1 in cb_to_cb_to_lat_stats and cb2 in cb_to_cb_to_lat_stats[cb1]:\n", - " #print(f\"[WARN] Pair of callbacks already in dict!\")\n", - " print(end='_')\n", - " else:\n", - " if cb1 not in cb_to_cb_to_lat_stats:\n", - " cb_to_cb_to_lat_stats[cb1] = {}\n", - " if cb2 not in cb_to_cb_to_lat_stats[cb1]:\n", - " cb_to_cb_to_lat_stats[cb1][cb2] = {}\n", - " cb_to_cb_to_lat_stats[cb1][cb2][pub.topic] = pub_cb_to_lat_stats[(pub, cb2)]\n", "\n", - "latency_paths = []\n", - "for cb in inputs:\n", - " latency_paths += get_latency_paths(cb, cb_to_cb_to_lat_stats, outputs.keys())\n", + " if from_node.full_name == to_node.full_name:\n", + " continue\n", "\n", + " k = (from_node.full_name, to_node.full_name)\n", "\n", - "def pl(l, lvl=0):\n", - " if isinstance(l, list):\n", - " print(\" \" * lvl, type(l), len(l))\n", - " for i in l:\n", - " pl(i, lvl + 1)\n", - " else:\n", - " print(\" \" * lvl, type(l))\n", + " if k not in edges_between_nodes:\n", + " edges_between_nodes[k] = 0\n", "\n", + " edges_between_nodes[k] += 1\n", "\n", - "#pl(latency_paths)\n", + "g = gv.Digraph('G', filename=\"latency_graph.gv\",\n", + " node_attr={'shape': 'plain'},\n", + " graph_attr={'pack': '1'})\n", + "g.graph_attr['rankdir'] = 'LR'\n", "\n", - "for i, path in enumerate(latency_paths):\n", - " print(\"===== PATH\", i, \"=====\")\n", - " #print(type(path))\n", - " tot_lat = 0.0\n", - " for item in path:\n", - " tot_lat += item.latencies.mean()\n", - " print(f\"{item.topic.name:120s} {item.latencies.mean() * 1000:.3f}ms {tot_lat * 1000:.3f}ms\")" - ] + "for n in lvl_nodes:\n", + " colors = node_colors[node_namespace_mapping.get(n.full_name.strip(\"/\").split(\"/\")[0])]\n", + " g.node(n.full_name, label=n.full_name, fillcolor=colors[\"fill\"], color=colors[\"stroke\"], shape=\"box\", style=\"filled\")\n", + "\n", + "for (src_name, dst_name), cnt in edges_between_nodes.items():\n", + " print(src_name, dst_name, cnt)\n", + " g.edge(src_name, dst_name, weight=str(cnt))\n", + "\n", + "g.save(\"level_graph.gv\")\n", + "g.render(\"level_graph.svg\")\n", + "\n", + "g" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } }, { "cell_type": "code", "execution_count": null, + "outputs": [], + "source": [], "metadata": { + "collapsed": false, "pycharm": { "name": "#%%\n" } - }, - "outputs": [], - "source": [ - "fig = plt.figure(figsize=(30, 10))\n", - "ax = fig.add_subplot()\n", - "\n", - "for lat_stats in pub_cb_to_lat_stats.values():\n", - " ax.plot(lat_stats.index, np.where(np.isnan(lat_stats), 0, lat_stats))\n", - "\n", - "ax.set_ylim(0, .1)\n", - "ax.set_xlim(655 + 1.652795e9, 660 + 1.652795e9)\n", - "None" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [] + } } ], "metadata": {