@christophebedard Thanks for sharing this very interesting PAPER! I’ll try it.
So far, there is a way to analyze from jupyter with analysis. Will you be developing trace_analysis as well?
tracetools_analysis: ros-tracing / tracetools_analysis · GitLab
–
This is a bit off-topic, but ISP and TIER IV are also working on a similar tool for tracing Autoware.universe. CARET derived ideas from ros2_tracing and RAPLET.
RAPLET: Demystifying publish/subscribe latency for ros applications.
First of all, let me share about this one, just a brief announcement.
CARET
https://github.com/tier4/CARET_doc
Features and differences to ros2_tracing are listed as below.
Features:
- Low overhead with LTTng-based tracepoints for sampling events in ROS/DDS layer
- Flexible tracepoints added by function hooking with LD_PRELOAD
- Python-based API for flexible data analysis and visualization
- Application-layer events tracing by cooperation with TILDE, runtime message tracer
Differences:
- CARET-dedicated tracepoints are added by function hooking with LD_PRELOAD
- CARET also utilizes existing tracepoints for ros2_tracing
- Implementation with C++ template prevented us from applying LD_PRELOAD, so that we added a few tracepoints to rclcpp directly
- Our target is ROS2/DDS layer mainly, but OS events like sched:wakeup is out of scope
- CARET will trace
/tf topic after v0.3.x release, and this function is under test now
- We observe and visualize data via Jupyter notebook with using Python-based API served by CARET
- To tackle difficulty to calculate latency of a node who has complicated dependency between inputs and outputs on a node, we use wrappers for publishers and subscriptions to annotate each message
- CARET will cooperate with another tool, TILDE, a framework which detects deadline overrun. This is under development.
- Only single host application is supported, but CARET cannot be applied an application who runs on multiple machine via network
CARET separates path selection and latency calculation.
- Select the path to be evaluated from the node graph
A single path is represented as a nodes-chain.
- draw message flows for the path
Each line corresponds to one message and represents latency.
Result
As reference, we will also share an example of measurement with Autoware.universe.
https://github.com/autowarefoundation/autoware.universe
The following is an example of Autoware measurement.
Our team has been so eager to trace Autoware.universe with CARET that we were late in introducing this tool to the ROS community.
First of all, since CARET’s goal is very similar to that of ros2_tracing, I’m willing to share my experience and learning to apply CARET to a large software, Autoware.universe, if you are interested in.