ros2_pulse
An open-source ROS 2 tool for monitoring topic publication frequency and detecting node liveness. It injects tracetools hooks via LD_PRELOAD technology to achieve zero-intrusion, low-overhead in-process monitoring. The tool supports the Humble, Jazzy, and Kilted ROS 2 distributions.
Timeline (last 90 days)
Developer TanayK07 open-sourced a tool called ros2_pulse on Reddit for ROS 2 topic frequency monitoring and node liveness detection.
ros2_pulse requires no recompilation of nodes, does not join the DDS graph, and has extremely low overhead.
The core of ros2_pulse is an LD_PRELOAD shim that hooks into the tracetools hooks called by rclcpp on every publish and callback, performs counting within the process, and writes the frequency to a file.
ros2_pulse injects via LD_PRELOAD, working plug-and-play with existing binaries without requiring recompilation of nodes.
The ros2_pulse probe works entirely within the process, does not join the DDS graph as an additional subscriber, avoids serialization overhead, and can fully capture intra-process communication traffic.
The ros2_pulse hot path overhead is approximately 0.3 nanoseconds per message.
Under a stress test of 4,900 msg/s, the total CPU usage of the ros2_pulse probe is approximately 2%.
ros2_pulse supports setting an expected frequency for each topic and outputs a WARN-level log when the actual frequency falls below the expected value.
ros2_pulse comes with a real-time terminal dashboard that can be installed via pip3 install ros2-pulse-top and experienced with pulse-top --demo.
ros2_pulse supports three ROS 2 distributions—Humble, Jazzy, and Kilted—and is released under the Apache-2.0 open-source license.
2 more timeline events
All Facts (11)
ros2_pulse supports three ROS 2 distributions—Humble, Jazzy, and Kilted—and is released under the Apache-2.0 open-source license.
50%Unverifiedros2_pulse requires no recompilation of nodes, does not join the DDS graph, and has extremely low overhead.
50%UnverifiedThe core of ros2_pulse is an LD_PRELOAD shim that hooks into the tracetools hooks called by rclcpp on every publish and callback, performs counting within the process, and writes the frequency to a file.
50%Unverifiedros2_pulse injects via LD_PRELOAD, working plug-and-play with existing binaries without requiring recompilation of nodes.
50%UnverifiedThe ros2_pulse probe works entirely within the process, does not join the DDS graph as an additional subscriber, avoids serialization overhead, and can fully capture intra-process communication traffic.
50%UnverifiedThe ros2_pulse hot path overhead is approximately 0.3 nanoseconds per message.
50%UnverifiedUnder a stress test of 4,900 msg/s, the total CPU usage of the ros2_pulse probe is approximately 2%.
50%Unverifiedros2_pulse supports setting an expected frequency for each topic and outputs a WARN-level log when the actual frequency falls below the expected value.
50%Unverifiedros2_pulse comes with a real-time terminal dashboard that can be installed via pip3 install ros2-pulse-top and experienced with pulse-top --demo.
50%UnverifiedThe ros2_pulse project has been open-sourced on GitHub, with the repository located at TanayK07/ros2_pulse.
50%UnverifiedDeveloper TanayK07 open-sourced a tool called ros2_pulse on Reddit for ROS 2 topic frequency monitoring and node liveness detection.
50%