Skip to content
/ caret Public

CARET (Chain-Aware ROS Evaluation Tool) is one of performance analysis tools dedicated with ROS 2 applications

License

Notifications You must be signed in to change notification settings

tier4/caret

Repository files navigation

CARET logo

build-and-test pytest Build with Autoware Test with Autoware

CARET

CARET (Chain-Aware ROS Evaluation Tool) is one of performance analysis tool dedicated with ROS 2 applications. It is able to measure not only callback latency and communication latency, but also path latency, in other words, chain of node or callback. As additional tracepoints are introduced by function hook, tracing resolution is improved.

overview

Publications & presentations

If you find CARET is useful in your research, please consider citing:

  • T. Kuboichi, A. Hasegawa, B. Peng, K. Miura, K. Funaoka, S. Kato, and T. Azumi, "CARET: Chain-Aware ROS 2 Evaluation Tool," IEEE international conference on Embedded and Ubiquitous Computing (EUC), 2022.

  • B. Peng, A. Hasegawa, and T. Azumi, "Scheduling Performance Evaluation Framework for ROS 2 Applications," IEEE International Conference on Embedded Software and Systems (ICESS), 2022.

BibTeX
@inproceedings{CARET,
title={{CARET}: Chain-{Aware} {ROS} 2 {Evaluation Tool}},
author={Kuboichi, Takahisa and Hasegawa, Atsushi and Peng, Bo and Miura, Keita and Funaoka, Kenji and Kato, Shinpei and Azumi, Takuya},
booktitle={Proceedings of IEEE international conference on embedded and ubiquitous computing (EUC)},
year={2022}}
@inproceedings{callback_scheduling,
title={Scheduling Performance Evaluation Framework for {ROS} 2 Applications},
author={Peng, Bo and Hasegawa, Atsushi and Azumi, Takuya},
booktitle={Proceedings of IEEE International Conference on Embedded Software and Systems (ICESS)},
year={2022}}

Also, check out ROSCON 2022 presentation titled "Chain-Aware ROS Evaluation Tool (CARET)" (video, slide).

Documentation

Repository overview

  • caret
    • Meta-repository containing .repos files to construct a CARET workspace
  • caret_trace
    • Define tracepoints added by function hooking
  • caret_analyze
    • Library for scripts to analyze and visualize data
  • caret_analyze_cpp_impl
    • Efficient helper functions to analyze trace data written in C++
  • ros2caret
    • CLI commands like ros2 caret
  • caret_doc
    • Documentation
  • caret_demos
    • Demo programs for CARET
  • rclcpp
    • The forked rclcpp including CARET-dedicated tracepoints
  • ros2_tracing
    • The forked ros2_tracing including definition of CARET-dedicated tracepoints