Skip to content

Launch video

A 40-second silent-with-captions launch video for ros2_pulse, generated with Remotion so every number on screen is a value in src/data.ts that cites the committed file it came from, so the video can be re-rendered when the numbers move, and never drift from them.

Not part of the ROS package, not built in CI. Rendered output is attached to the GitHub Release, not committed.

Scenes

# Scene What it shows Numbers from
1 Hook the question: is every topic flowing at the rate it should?
2 The tools you have hz / echo cost per watched topic; the intra-process observer effect bench/RESULTS.md (observer effect)
3 The probe one LD_PRELOAD line, the log it writes, the intra-process line README "What you get"
4 pulse-top real frames of pulse-top --demo through a /scan stall, then the Warns tab capture_frames.py
5 Measured, not claimed hot path, jitter clock read, sockets, stress CPU test/orin/RESULTS.md, bench/RESULTS.md
6 CTA repo, pip install ros2-pulse-top, license

Build

# 1. dashboard frames (needs tools/pulse-top's venv: textual, cairosvg, pillow)
cd tools/pulse-top
env -u PYTHONPATH -u AMENT_PREFIX_PATH .venv/bin/python ../../video/capture_frames.py
#    -> video/public/frames/f*.png and video/src/frames.json (stall / warns frames found by pixel colour)

# 2. render
cd ../../video
npm install
npm run render            # out/ros2_pulse-launch.mp4, 1920x1080, 30 fps, h264 crf 18
npm run dev               # Remotion Studio, to scrub and tweak

Frames are rasterized from Textual SVG screenshots with cairosvg. cairosvg draws Fira Code wider than Textual's cell grid (text runs collide), so the SVG font is swapped for DejaVu Sans Mono, which sits on the grid (PULSE_TOP_SVG_FONT to override).

Music

Bed track: Digital Cobalt (Synthwave) by AvigeiaAvetian (https://pixabay.com/music/synthwave-digital-cobalt-synthwave-580426/), Pixabay Content License (free for commercial use, no attribution required). The license does not allow redistributing the file on its own, so public/music/ is gitignored: download the MP3 from that page and save it as public/music/digital-cobalt.mp3 before rendering. Gain 0.22, 20-frame fade in, 75-frame fade out (src/Launch.tsx).

Updating a number

Change it in src/data.ts (with the file it now comes from), re-render. Nothing else in the scenes carries a literal measurement.