Skip to content

Instantly share code, notes, and snippets.

@mrpollo
Created March 17, 2026 02:19
Show Gist options
  • Select an option

  • Save mrpollo/356b4ad5548753b7d69cb7bb9642600d to your computer and use it in GitHub Desktop.

Select an option

Save mrpollo/356b4ad5548753b7d69cb7bb9642600d to your computer and use it in GitHub Desktop.
Foxglove @ PX4 San Diego Meetup - Talk Research & Proposals (April 30, 2026)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Foxglove @ PX4 San Diego Meetup — Talk Topic Research</title>
<style>
:root {
--bg-primary: #0f1219;
--bg-secondary: #1a1f2e;
--bg-card: #222839;
--bg-card-hover: #2a3148;
--border: #2e3650;
--text-primary: #e8eaf0;
--text-secondary: #9ca3b8;
--text-muted: #6b7394;
--foxglove-purple: #7C3AED;
--foxglove-purple-light: #9b6bf7;
--foxglove-purple-dim: rgba(124, 58, 237, 0.15);
--px4-orange: #f97316;
--px4-orange-dim: rgba(249, 115, 22, 0.15);
--green: #22c55e;
--green-dim: rgba(34, 197, 94, 0.15);
--amber: #eab308;
--amber-dim: rgba(234, 179, 8, 0.15);
--red: #ef4444;
--blue: #3b82f6;
--blue-dim: rgba(59, 130, 246, 0.15);
--sidebar-width: 260px;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
background: var(--bg-primary);
color: var(--text-primary);
line-height: 1.65;
font-size: 15px;
}
a { color: var(--foxglove-purple-light); text-decoration: none; }
a:hover { text-decoration: underline; }
/* Sidebar TOC */
.sidebar {
position: fixed;
top: 0;
left: 0;
width: var(--sidebar-width);
height: 100vh;
background: var(--bg-secondary);
border-right: 1px solid var(--border);
overflow-y: auto;
z-index: 100;
padding: 24px 16px;
}
.sidebar-logo {
font-size: 14px;
font-weight: 700;
color: var(--foxglove-purple-light);
text-transform: uppercase;
letter-spacing: 1.5px;
margin-bottom: 24px;
padding-bottom: 16px;
border-bottom: 1px solid var(--border);
}
.sidebar nav a {
display: block;
padding: 6px 10px;
font-size: 13px;
color: var(--text-secondary);
border-radius: 6px;
margin-bottom: 2px;
transition: all 0.15s;
}
.sidebar nav a:hover {
background: var(--foxglove-purple-dim);
color: var(--foxglove-purple-light);
text-decoration: none;
}
.sidebar nav .toc-section {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
color: var(--text-muted);
margin-top: 16px;
margin-bottom: 6px;
padding: 0 10px;
}
/* Main content */
.main {
margin-left: var(--sidebar-width);
min-height: 100vh;
}
.container {
max-width: 960px;
margin: 0 auto;
padding: 0 32px;
}
/* Header */
.header {
padding: 64px 0 48px;
border-bottom: 1px solid var(--border);
margin-bottom: 48px;
}
.header h1 {
font-size: 36px;
font-weight: 800;
line-height: 1.2;
margin-bottom: 12px;
background: linear-gradient(135deg, var(--foxglove-purple-light), var(--px4-orange));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.header .subtitle {
font-size: 17px;
color: var(--text-secondary);
margin-bottom: 8px;
}
.header .date {
font-size: 13px;
color: var(--text-muted);
}
/* Section headings */
.section { margin-bottom: 56px; scroll-margin-top: 24px; }
.section-title {
font-size: 24px;
font-weight: 700;
margin-bottom: 24px;
padding-bottom: 12px;
border-bottom: 2px solid var(--foxglove-purple);
display: flex;
align-items: center;
gap: 12px;
}
.section-title .icon {
width: 32px;
height: 32px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
flex-shrink: 0;
}
/* Cards */
.card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 12px;
padding: 24px;
margin-bottom: 20px;
transition: border-color 0.2s;
}
.card:hover { border-color: var(--foxglove-purple); }
/* Event details card */
.event-card {
background: linear-gradient(135deg, rgba(124,58,237,0.08), rgba(249,115,22,0.06));
border: 1px solid var(--foxglove-purple);
}
.event-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
}
.event-grid .detail { display: flex; gap: 8px; }
.event-grid .detail-label { color: var(--text-muted); font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; min-width: 90px; }
.event-grid .detail-value { color: var(--text-primary); font-size: 14px; }
/* Agenda */
.agenda-item {
display: flex;
align-items: center;
gap: 16px;
padding: 12px 0;
border-bottom: 1px solid var(--border);
}
.agenda-item:last-child { border-bottom: none; }
.agenda-time {
font-family: "SF Mono", "Fira Code", monospace;
font-size: 13px;
color: var(--foxglove-purple-light);
font-weight: 600;
min-width: 100px;
}
.agenda-label { font-size: 14px; color: var(--text-primary); }
.agenda-item.highlight {
background: var(--foxglove-purple-dim);
border-radius: 8px;
padding: 12px 16px;
margin: 4px -16px;
border-bottom: none;
}
/* Badges / Pills */
.badge {
display: inline-flex;
align-items: center;
padding: 3px 10px;
border-radius: 100px;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
gap: 4px;
}
.badge-yt { background: rgba(239,68,68,0.15); color: #f87171; }
.badge-forum { background: rgba(59,130,246,0.15); color: #60a5fa; }
.badge-gh { background: rgba(34,197,94,0.15); color: #4ade80; }
.badge-expert { background: rgba(168,85,247,0.15); color: #c084fc; }
/* Progress bars */
.progress-bar-container {
display: flex;
align-items: center;
gap: 12px;
}
.progress-bar {
flex: 1;
height: 8px;
background: rgba(255,255,255,0.06);
border-radius: 100px;
overflow: hidden;
max-width: 200px;
}
.progress-bar-fill {
height: 100%;
border-radius: 100px;
transition: width 0.6s ease;
}
.progress-bar-fill.green { background: linear-gradient(90deg, #22c55e, #4ade80); }
.progress-bar-fill.amber { background: linear-gradient(90deg, #eab308, #facc15); }
.progress-label {
font-size: 14px;
font-weight: 700;
min-width: 42px;
}
.progress-label.green { color: var(--green); }
.progress-label.amber { color: var(--amber); }
/* Topic cards */
.topic-card {
position: relative;
overflow: hidden;
}
.topic-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 4px;
height: 100%;
border-radius: 12px 0 0 12px;
}
.topic-card.tier1::before { background: var(--green); }
.topic-card.tier2::before { background: var(--amber); }
.topic-rank {
position: absolute;
top: 20px;
right: 20px;
font-size: 48px;
font-weight: 800;
color: rgba(255,255,255,0.04);
line-height: 1;
}
.topic-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
margin-bottom: 16px;
flex-wrap: wrap;
}
.topic-title {
font-size: 18px;
font-weight: 700;
color: var(--text-primary);
}
.topic-subtitle {
font-size: 14px;
color: var(--text-secondary);
font-style: italic;
margin-top: 2px;
}
.topic-badges { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0; }
.topic-body p {
font-size: 14px;
color: var(--text-secondary);
margin-bottom: 12px;
}
.topic-body strong { color: var(--text-primary); }
details {
margin-top: 8px;
}
details summary {
cursor: pointer;
font-size: 13px;
font-weight: 600;
color: var(--foxglove-purple-light);
padding: 8px 12px;
background: var(--foxglove-purple-dim);
border-radius: 8px;
list-style: none;
display: flex;
align-items: center;
gap: 6px;
}
details summary::-webkit-details-marker { display: none; }
details summary::before { content: '\25B6'; font-size: 10px; transition: transform 0.2s; }
details[open] summary::before { transform: rotate(90deg); }
details .evidence-content {
padding: 12px 16px;
font-size: 13px;
color: var(--text-secondary);
line-height: 1.7;
background: rgba(124,58,237,0.05);
border-radius: 0 0 8px 8px;
border-left: 2px solid var(--foxglove-purple);
margin-top: 4px;
}
details .evidence-content em {
color: var(--px4-orange);
font-style: normal;
}
/* Tier headers */
.tier-header {
font-size: 16px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 2px;
margin: 40px 0 20px;
padding: 12px 20px;
border-radius: 8px;
}
.tier-header.tier1 {
background: var(--green-dim);
color: var(--green);
border-left: 4px solid var(--green);
}
.tier-header.tier2 {
background: var(--amber-dim);
color: var(--amber);
border-left: 4px solid var(--amber);
}
/* Matrix table */
.matrix-wrapper {
overflow-x: auto;
border-radius: 12px;
border: 1px solid var(--border);
}
.matrix-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}
.matrix-table th {
background: var(--bg-secondary);
padding: 12px 14px;
text-align: left;
font-weight: 700;
font-size: 11px;
text-transform: uppercase;
letter-spacing: 1px;
color: var(--text-muted);
border-bottom: 2px solid var(--border);
position: sticky;
top: 0;
}
.matrix-table td {
padding: 10px 14px;
border-bottom: 1px solid var(--border);
vertical-align: middle;
}
.matrix-table tr:hover td { background: var(--bg-card-hover); }
.matrix-table .signal-high { color: var(--green); font-weight: 600; }
.matrix-table .signal-med { color: var(--amber); font-weight: 600; }
.matrix-table .signal-low { color: var(--text-muted); }
.pct-cell {
font-weight: 700;
font-family: "SF Mono", monospace;
}
.pct-cell.green { color: var(--green); }
.pct-cell.amber { color: var(--amber); }
/* Methodology */
.method-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
.method-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 20px;
}
.method-card h4 {
font-size: 14px;
font-weight: 700;
margin-bottom: 12px;
color: var(--foxglove-purple-light);
}
.method-card ol {
padding-left: 20px;
}
.method-card li {
font-size: 13px;
color: var(--text-secondary);
margin-bottom: 8px;
line-height: 1.6;
}
.method-card li strong { color: var(--text-primary); }
/* Capabilities */
.capabilities-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 16px;
}
.cap-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 20px;
}
.cap-card h4 {
font-size: 14px;
font-weight: 700;
margin-bottom: 12px;
padding-bottom: 8px;
border-bottom: 1px solid var(--border);
}
.cap-card.works h4 { color: var(--green); }
.cap-card.feasible h4 { color: var(--amber); }
.cap-card.nope h4 { color: var(--red); }
.cap-card ul {
list-style: none;
padding: 0;
}
.cap-card li {
font-size: 13px;
color: var(--text-secondary);
padding: 4px 0;
padding-left: 18px;
position: relative;
}
.cap-card.works li::before { content: '\2713'; position: absolute; left: 0; color: var(--green); font-weight: 700; }
.cap-card.feasible li::before { content: '\25CB'; position: absolute; left: 0; color: var(--amber); }
.cap-card.nope li::before { content: '\2717'; position: absolute; left: 0; color: var(--red); }
/* Recommendation */
.reco-step {
display: flex;
gap: 20px;
margin-bottom: 20px;
padding: 20px;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 10px;
}
.reco-time {
font-family: "SF Mono", monospace;
font-size: 13px;
font-weight: 700;
color: var(--foxglove-purple-light);
background: var(--foxglove-purple-dim);
padding: 6px 12px;
border-radius: 6px;
height: fit-content;
white-space: nowrap;
}
.reco-body h4 { font-size: 16px; font-weight: 700; margin-bottom: 6px; }
.reco-body p { font-size: 14px; color: var(--text-secondary); }
/* Links grid */
.links-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
}
.link-item {
display: flex;
align-items: center;
gap: 10px;
padding: 12px 16px;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 8px;
font-size: 13px;
transition: border-color 0.2s;
}
.link-item:hover { border-color: var(--foxglove-purple); text-decoration: none; }
.link-item .link-label { color: var(--text-primary); font-weight: 600; }
.link-item .link-url { color: var(--text-muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Footer */
.footer {
margin-top: 64px;
padding: 32px 0;
border-top: 1px solid var(--border);
text-align: center;
}
.footer p {
font-size: 13px;
color: var(--text-muted);
margin-bottom: 6px;
}
/* Responsive */
@media (max-width: 1100px) {
.sidebar { display: none; }
.main { margin-left: 0; }
.capabilities-grid { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
.container { padding: 0 16px; }
.header h1 { font-size: 26px; }
.event-grid { grid-template-columns: 1fr; }
.method-grid { grid-template-columns: 1fr; }
.links-grid { grid-template-columns: 1fr; }
.topic-rank { display: none; }
}
/* Print */
@media print {
:root {
--bg-primary: #fff;
--bg-secondary: #f8f8f8;
--bg-card: #fafafa;
--bg-card-hover: #f5f5f5;
--border: #ddd;
--text-primary: #111;
--text-secondary: #444;
--text-muted: #888;
}
body { font-size: 11px; color: #111; background: #fff; }
.sidebar { display: none; }
.main { margin-left: 0; }
.header h1 { -webkit-text-fill-color: #111; background: none; font-size: 24px; }
.card, .topic-card, .reco-step, .method-card, .cap-card { break-inside: avoid; page-break-inside: avoid; box-shadow: none; border: 1px solid #ccc; }
.section { page-break-before: auto; }
details { open: true; }
details[open] .evidence-content { display: block; }
.progress-bar-fill.green, .progress-bar-fill.amber { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
a { color: #333; }
a[href]::after { content: none; }
}
</style>
</head>
<body>
<!-- Sidebar TOC -->
<aside class="sidebar">
<div class="sidebar-logo">Foxglove Research</div>
<nav>
<div class="toc-section">Overview</div>
<a href="#meetup-details">Meetup Details</a>
<a href="#agenda">Agenda</a>
<a href="#methodology">Research Methodology</a>
<a href="#capabilities">Foxglove Capabilities</a>
<div class="toc-section">Topics (Tier 1)</div>
<a href="#topic-1">1. Crash Forensics</a>
<a href="#topic-2">2. EKF Debugging</a>
<a href="#topic-3">3. 3D Log Replay</a>
<a href="#topic-4">4. ROS 2 + PX4</a>
<a href="#topic-5">5. VTOL Transitions</a>
<a href="#topic-6">6. GPS Failsafe</a>
<a href="#topic-7">7. Failsafe Replay</a>
<div class="toc-section">Topics (Tier 2)</div>
<a href="#topic-8">8. Mission vs Actual</a>
<a href="#topic-9">9. EKF Replay A/B</a>
<a href="#topic-10">10. PID Tuning</a>
<a href="#topic-11">11. Post-Flight Brief</a>
<a href="#topic-12">12. Multi-Source Altitude</a>
<a href="#topic-13">13. Vision/Perception</a>
<a href="#topic-14">14. SITL Visualization</a>
<a href="#topic-15">15. Vibration Analysis</a>
<a href="#topic-16">16. Compass Interference</a>
<a href="#topic-17">17. Airspeed Debugging</a>
<a href="#topic-18">18. FW Tuning</a>
<a href="#topic-19">19. Geofence Viz</a>
<a href="#topic-20">20. Tool Ecosystem Gap</a>
<div class="toc-section">Synthesis</div>
<a href="#quick-reference">Quick Reference Matrix</a>
<a href="#recommendation">Recommendation</a>
<a href="#links">Key Links</a>
</nav>
</aside>
<!-- Main Content -->
<div class="main">
<div class="container">
<!-- Header -->
<header class="header">
<h1>Foxglove @ PX4 San Diego Meetup<br>Talk Topic Research</h1>
<p class="subtitle">Research report for Foxglove CTO &bull; April 30, 2026 &bull; ModalAI, San Diego</p>
<p class="date">Generated March 16, 2026</p>
</header>
<!-- Meetup Details -->
<section id="meetup-details" class="section">
<h2 class="section-title"><span class="icon" style="background:var(--foxglove-purple-dim);">&#9733;</span> Meetup Details</h2>
<div class="card event-card">
<div class="event-grid">
<div class="detail"><span class="detail-label">Event</span><span class="detail-value">PX4 &amp; Foxglove San Diego Meetup hosted by ModalAI</span></div>
<div class="detail"><span class="detail-label">Date</span><span class="detail-value">April 30, 2026, 11:00 AM &ndash; 4:00 PM PT</span></div>
<div class="detail"><span class="detail-label">Location</span><span class="detail-value">8880 Rehco Rd, San Diego, CA 92121 (Sorrento Valley)</span></div>
<div class="detail"><span class="detail-label">Organizers</span><span class="detail-value">Ramon Roche and Michael Pehel</span></div>
<div class="detail"><span class="detail-label">Foxglove Slot</span><span class="detail-value" style="color:var(--foxglove-purple-light);font-weight:700;">1:30 PM &ndash; 2:00 PM (30 minutes)</span></div>
<div class="detail"><span class="detail-label">Capacity</span><span class="detail-value">50 spots</span></div>
<div class="detail"><span class="detail-label">Sponsors</span><span class="detail-value">Foxglove, ModalAI</span></div>
<div class="detail"><span class="detail-label">Link</span><span class="detail-value"><a href="https://luma.com/1yasqak0" target="_blank">luma.com/1yasqak0</a></span></div>
</div>
</div>
</section>
<!-- Agenda -->
<section id="agenda" class="section">
<h2 class="section-title"><span class="icon" style="background:var(--px4-orange-dim);">&#128197;</span> Event Agenda</h2>
<div class="card">
<div class="agenda-item"><span class="agenda-time">11:00 AM</span><span class="agenda-label">Registration</span></div>
<div class="agenda-item"><span class="agenda-time">11:30 AM</span><span class="agenda-label">Dronecode presentation</span></div>
<div class="agenda-item"><span class="agenda-time">12:00 PM</span><span class="agenda-label">Special guest talk (TBD)</span></div>
<div class="agenda-item"><span class="agenda-time">12:30 PM</span><span class="agenda-label">Lunch <span style="color:var(--foxglove-purple-light);font-weight:600;">(sponsored by Foxglove)</span></span></div>
<div class="agenda-item highlight"><span class="agenda-time">1:30 PM</span><span class="agenda-label"><strong>Foxglove presentation</strong></span></div>
<div class="agenda-item"><span class="agenda-time">2:00 PM</span><span class="agenda-label">ModalAI presentation</span></div>
<div class="agenda-item"><span class="agenda-time">2:30 PM</span><span class="agenda-label">Break</span></div>
<div class="agenda-item"><span class="agenda-time">2:45 PM</span><span class="agenda-label">Demos and networking</span></div>
<div class="agenda-item"><span class="agenda-time">4:00 PM</span><span class="agenda-label">Event concludes</span></div>
</div>
</section>
<!-- Methodology -->
<section id="methodology" class="section">
<h2 class="section-title"><span class="icon" style="background:var(--blue-dim);">&#128269;</span> Research Methodology</h2>
<p style="color:var(--text-secondary);margin-bottom:20px;font-size:14px;">Five expert agents were consulted in the first round for idea generation, followed by three data-driven research agents in a validation round. All topics were then filtered by a PX4 maintainer agent for technical feasibility against Foxglove's actual capabilities and rated 0&ndash;100% on likelihood Foxglove can help. Only topics scoring 80%+ are included.</p>
<div class="method-grid">
<div class="method-card">
<h4>Round 1 &mdash; Idea Generation</h4>
<ol>
<li><strong>PX4 Maintainer</strong> &mdash; researched Foxglove documentation, PX4 support, technical capabilities</li>
<li><strong>GNC Aerospace Engineer</strong> &mdash; analyzed the Flight Review codebase and PX4 log data</li>
<li><strong>Retired Aerospace Veteran</strong> &mdash; 30+ years flight test, avionics, military UAV experience</li>
<li><strong>X (Twitter) Drone Influencer</strong> &mdash; viral content, visual demos, social media engagement</li>
<li><strong>LinkedIn Drone Thought Leader</strong> &mdash; enterprise, business value, professional workflows</li>
</ol>
</div>
<div class="method-card">
<h4>Round 2 &mdash; Data-Driven Validation</h4>
<ol start="6">
<li><strong>PX4 YouTube Channel Analyst</strong> &mdash; reviewed 100+ videos across all PX4 Developer Summit playlists (2019&ndash;2025)</li>
<li><strong>PX4 Forum Researcher</strong> &mdash; searched discuss.px4.io for common issues, pain points, tool complaints</li>
<li><strong>PX4 GitHub Issues Analyst</strong> &mdash; searched PX4/PX4-Autopilot for debugging patterns, common bugs, maintainer workflows</li>
</ol>
</div>
</div>
</section>
<!-- Foxglove Capabilities -->
<section id="capabilities" class="section">
<h2 class="section-title"><span class="icon" style="background:var(--foxglove-purple-dim);">&#9881;</span> Foxglove Capabilities Summary</h2>
<div class="capabilities-grid">
<div class="cap-card works">
<h4>Works Today</h4>
<ul>
<li>Native ULog file support (drag-and-drop)</li>
<li>PX4 Converter extension (uORB to Foxglove schemas, frame transforms)</li>
<li>Map panel with GPS flight path on satellite/street tiles</li>
<li>3D panel with vehicle orientation, URDF models, point clouds, meshes on satellite imagery</li>
<li>Plot panel for any numeric field time-series</li>
<li>Raw Messages panel for all uORB topics</li>
<li>All panels time-synchronized with single scrubber</li>
<li>Official PX4 framework in Foxglove docs; PX4 docs link to Foxglove</li>
</ul>
</div>
<div class="cap-card feasible">
<h4>Feasible with Development</h4>
<ul>
<li>Live PX4 SITL via ROS 2 DDS bridge + Foxglove Bridge</li>
<li>Custom React panels via extension API (TypeScript)</li>
<li>ULog-to-MCAP conversion</li>
<li>Drone URDF in 3D panel</li>
<li>Custom data loader extensions (Rust/WASM)</li>
<li>Foxglove Data Platform for fleet log management</li>
</ul>
</div>
<div class="cap-card nope">
<h4>Not Feasible</h4>
<ul>
<li>No native MAVLink/.tlog support</li>
<li>Cannot replace Flight Review's public log sharing</li>
<li>Cannot send commands/act as GCS</li>
<li>No automated analysis/anomaly detection</li>
<li>No FFT/spectral analysis (needs custom extension)</li>
<li>No computation engine for statistical analysis</li>
</ul>
</div>
</div>
</section>
<!-- TOP 20 TALK TOPICS -->
<section id="topics" class="section">
<h2 class="section-title"><span class="icon" style="background:var(--green-dim);">&#127942;</span> Top 20 Talk Topics</h2>
<!-- TIER 1 -->
<div class="tier-header tier1">Tier 1 &mdash; Strongest Signal (90%+)</div>
<!-- Topic 1 -->
<div id="topic-1" class="card topic-card tier1" style="scroll-margin-top:24px;">
<span class="topic-rank">#1</span>
<div class="topic-header">
<div>
<div class="topic-title">1. &ldquo;Debug a Crash in 60 Seconds&rdquo;</div>
<div class="topic-subtitle">Live Crash Forensics</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill green" style="width:95%"></div></div>
<span class="progress-label green">95%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-forum">Forum</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-expert">All 5 Experts</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Audience participation &mdash; take a real .ulg, drag into Foxglove, diagnose with time-synced 3D + map + telemetry under a timer. Every PX4 developer has a crash they want explained.</p>
<p><strong>Value to PX4 devs:</strong> Replaces &ldquo;upload to Flight Review &rarr; post on forum &rarr; wait for expert&rdquo; with self-service diagnosis.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
Forum threads include <em>&ldquo;Crash investigation&rdquo;</em> (drone fell 5&ndash;7m), <em>&ldquo;Erratic Flight Height&rdquo;</em> (vibration-induced altitude failure), <em>&ldquo;3 Crashes With Three X6100 EFT frames&rdquo;</em> (mapping mission failures). User spent <em>&ldquo;3 years and $3k in props&rdquo;</em> before trying GPT-4 on Flight Review screenshots. Forum #1 category &mdash; 60&ndash;70% of Flight Testing threads are crash-related.
</div>
</details>
</div>
</div>
<!-- Topic 2 -->
<div id="topic-2" class="card topic-card tier1" style="scroll-margin-top:24px;">
<span class="topic-rank">#2</span>
<div class="topic-header">
<div>
<div class="topic-title">2. &ldquo;The EKF Whisperer&rdquo;</div>
<div class="topic-subtitle">State Estimation Debugging Dashboard</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill green" style="width:95%"></div></div>
<span class="progress-label green">95%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-forum">Forum</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-expert">GNC, Maintainer</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Pre-configured layout showing innovations, fusion flags, raw sensors, fused estimates &mdash; all time-synced. Demo real EKF bugs like the &ldquo;Multi EKF disaster&rdquo; where PX4 switched to a faulty instance estimating 180&deg; roll.</p>
<p><strong>Value to PX4 devs:</strong> The #1 thing maintainers do is ask for EKF plots. A standardized layout saves hours per bug report.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
<em>&ldquo;Multi EKF disaster&rdquo;</em> (discuss.px4.io), <em>&ldquo;Major EKF bug&rdquo;</em> (altitude diverging from GPS), <em>&ldquo;Height estimate not stable&rdquo;</em> (1.5m divergence before takeoff), <em>&ldquo;EKF2 Height Reset Snapping to Baro&rdquo;</em> (40m altitude difference). GitHub: #24653 (altitude estimation, 15 comments), #21504 (Optitrack not used, 21 comments). YouTube: 2025 keynote <em>&ldquo;Fuse, Reset, or Reject?&rdquo;</em> Most technically complex forum category. 20+ open GitHub issues.
</div>
</details>
</div>
</div>
<!-- Topic 3 -->
<div id="topic-3" class="card topic-card tier1" style="scroll-margin-top:24px;">
<span class="topic-rank">#3</span>
<div class="topic-header">
<div>
<div class="topic-title">3. &ldquo;Replay Any Flight Review Log in 3D &mdash; Instantly&rdquo;</div>
<div class="topic-subtitle">Instant 3D Log Replay</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill green" style="width:95%"></div></div>
<span class="progress-label green">95%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-expert">All 5 Experts</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Download .ulg from logs.px4.io, drag into Foxglove &rarr; 3D replay + map + synced plots. No server, no upload limits, handles 2GB+ files that crash PlotJuggler.</p>
<p><strong>Value to PX4 devs:</strong> Immediate practical value for every PX4 developer who uses Flight Review today.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
<em>&ldquo;How does people deal with large ULog file?&rdquo;</em> (2GB crashes PlotJuggler), <em>&ldquo;Flight Review site is down now&rdquo;</em> (504 timeout), <em>&ldquo;Flight Review down for 24 hours&rdquo;</em> (maintainers on holiday), <em>&ldquo;Mission Planner style log analysis&rdquo;</em> (user amazed at lack of simple viewer), <em>&ldquo;Flight Review Custom Parameter don't plotting&rdquo;</em> (only predefined data visible). YouTube: PlotJuggler creator keynote <em>&ldquo;You Should Log More.&rdquo;</em>
</div>
</details>
</div>
</div>
<!-- Topic 4 -->
<div id="topic-4" class="card topic-card tier1" style="scroll-margin-top:24px;">
<span class="topic-rank">#4</span>
<div class="topic-header">
<div>
<div class="topic-title">4. &ldquo;ROS 2 + PX4: See Both Worlds at Once&rdquo;</div>
<div class="topic-subtitle">Unified ROS 2 and PX4 Visualization</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill green" style="width:95%"></div></div>
<span class="progress-label green">95%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-expert">Maintainer</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Live demo &mdash; Foxglove connected to PX4 SITL via DDS bridge, showing ROS 2 topics and PX4 internals simultaneously. Offboard commands in, vehicle state out, one view.</p>
<p><strong>Value to PX4 devs:</strong> The only tool bridging ROS 2 topics and ULog data. Developers currently juggle separate tools.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
YouTube: <em>&ldquo;PX4 and ROS 2 Via Micro XRCE-DDS&rdquo;</em> (813 views), <em>&ldquo;Custom Flight Modes Using ROS2&rdquo;</em> (807 views), <em>&ldquo;A ROS 2 Library for External Flight Modes&rdquo;</em> (3,631 views). #1 recurring YouTube topic with 5+ summit talks. GitHub: #22288 (plane not following offboard, 27 comments), #22265 (multi-vehicle actuator targets, 15 comments). Forum: <em>&ldquo;ROS2 Offboard on Hardware,&rdquo;</em> <em>&ldquo;Offboard control using ROS2.&rdquo;</em>
</div>
</details>
</div>
</div>
<!-- Topic 5 -->
<div id="topic-5" class="card topic-card tier1" style="scroll-margin-top:24px;">
<span class="topic-rank">#5</span>
<div class="topic-header">
<div>
<div class="topic-title">5. &ldquo;VTOL Transition: The Scariest 5 Seconds, Frame by Frame&rdquo;</div>
<div class="topic-subtitle">VTOL Transition Debugging</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill green" style="width:90%"></div></div>
<span class="progress-label green">90%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-expert">GNC, X</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> 3D replay of transition &mdash; airspeed dropping, attitude shifting, MC motors fading, FW surfaces engaging, all synchronized. Show real near-misses.</p>
<p><strong>Value to PX4 devs:</strong> VTOL transition debugging requires correlating 6+ separate Flight Review plots. Foxglove does it in one view.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
Forum: <em>&ldquo;Tri-tiltrotor VTOL dive on transition&rdquo;</em> (stall without airspeed sensor), <em>&ldquo;VTOL Quad Tailsitter Transition Issues,&rdquo;</em> <em>&ldquo;Airspeed invalidated after transition.&rdquo;</em> GitHub: #14933 (dangerous back transition), #15155 (MC control not switching off, 20 comments), #11911 (28 comments). Most safety-critical category with 6+ issues up to 28 comments. 8+ forum transition crash threads.
</div>
</details>
</div>
</div>
<!-- Topic 6 -->
<div id="topic-6" class="card topic-card tier1" style="scroll-margin-top:24px;">
<span class="topic-rank">#6</span>
<div class="topic-header">
<div>
<div class="topic-title">6. &ldquo;GPS Lied, Then Foxglove Showed Me Where&rdquo;</div>
<div class="topic-subtitle">GPS &amp; Position Failsafe Investigation</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill green" style="width:90%"></div></div>
<span class="progress-label green">90%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-forum">Forum</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-expert">GNC</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Map panel with GPS quality color-coding on satellite view, synced with EKF fusion flags and innovation plots. Show the exact moment GPS failed.</p>
<p><strong>Value to PX4 devs:</strong> &ldquo;17 satellites and &lt;1m accuracy but still triggered failsafe&rdquo; is a real forum post. Foxglove shows exactly why.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
<em>&ldquo;GPS glitch with 2 healthy GPS&rdquo;</em> (discuss.px4.io), <em>&ldquo;Frequent local position loss despite good GPS&rdquo;</em> (speed accuracy exceeding 0.5 m/s threshold), <em>&ldquo;Lost global position in survey grid turns,&rdquo;</em> <em>&ldquo;No global position failsafe with GPS lock.&rdquo;</em> 6+ detailed forum threads. Dual GPS glitch GitHub issues. YouTube: GNSS resilience talks.
</div>
</details>
</div>
</div>
<!-- Topic 7 -->
<div id="topic-7" class="card topic-card tier1" style="scroll-margin-top:24px;">
<span class="topic-rank">#7</span>
<div class="topic-header">
<div>
<div class="topic-title">7. &ldquo;Failure Mode Replay: Reliving Failsafes in 3D&rdquo;</div>
<div class="topic-subtitle">Failsafe Event Visualization</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill green" style="width:90%"></div></div>
<span class="progress-label green">90%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-expert">Vet, GNC</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Replay failsafe trigger &mdash; geofence on map, mode timeline, vehicle response in 3D, sensor data, all synced.</p>
<p><strong>Value to PX4 devs:</strong> Failsafe debugging is currently &ldquo;read log text and guess.&rdquo; Spatial + temporal replay makes the chain of events obvious.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
GitHub: #4876 (data link loss failsafe broken, 25 comments), #10297 (takeoff near geofence causes flyaway, 10 comments), #15775 (UAV kept following mission after RC loss, 14 comments). Forum: <em>&ldquo;Automated flight lose control geofence violation and crash,&rdquo;</em> <em>&ldquo;Plane Flyaway recovery: RTL loiter then flew away.&rdquo;</em>
</div>
</details>
</div>
</div>
<!-- TIER 2 -->
<div class="tier-header tier2">Tier 2 &mdash; Strong Signal (80&ndash;89%)</div>
<!-- Topic 8 -->
<div id="topic-8" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#8</span>
<div class="topic-header">
<div>
<div class="topic-title">8. &ldquo;Mission Planned vs. Mission Flown&rdquo;</div>
<div class="topic-subtitle">Mission Deviation Analysis</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:88%"></div></div>
<span class="progress-label amber">88%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-expert">LinkedIn</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Map showing planned waypoints overlaid with actual GPS track, colored by active mission item. Time-synced with navigator state.</p>
<p><strong>Value to PX4 devs:</strong> Directly answers &ldquo;why didn't my drone follow the mission?&rdquo; &mdash; one of the most common support requests.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
GitHub: #13536 (navigator erratic, 24 comments), #25711 (loiter radius ignored, 12 comments), #14350 (steep altitude change on mission switch, 11 comments). 15&ndash;20 related GitHub issues total. Forum waypoint complaint threads.
</div>
</details>
</div>
</div>
<!-- Topic 9 -->
<div id="topic-9" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#9</span>
<div class="topic-header">
<div>
<div class="topic-title">9. &ldquo;EKF Replay A/B Testing&rdquo;</div>
<div class="topic-subtitle">Side-by-Side Estimation Comparison</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:88%"></div></div>
<span class="progress-label amber">88%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-expert">Maintainer</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Load original + replay logs, view in synchronized panels, see exactly how parameter changes affect estimation. No other PX4 tool supports this.</p>
<p><strong>Value to PX4 devs:</strong> This is what PX4's EKF maintainer does manually with screenshots. Foxglove automates visual comparison.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
GitHub: #20229 (EKF2 replay make file, 13 comments), #24653 (uses replay for altitude debugging). Referenced in v1.14 testing (148 comments) and v1.17 testing (19 comments). Core maintainer workflow used in every release test cycle.
</div>
</details>
</div>
</div>
<!-- Topic 10 -->
<div id="topic-10" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#10</span>
<div class="topic-header">
<div>
<div class="topic-title">10. &ldquo;PID Tuning Dashboard: All Loops at Once&rdquo;</div>
<div class="topic-subtitle">Control Loop Visualization</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:85%"></div></div>
<span class="progress-label amber">85%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-expert">GNC, Vet</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Setpoint vs actual overlays for rate, attitude, position loops simultaneously. Compare before/after by loading two logs. Pre-built &ldquo;tuning review&rdquo; layout.</p>
<p><strong>Value to PX4 devs:</strong> Replaces manually overlaying curves in PlotJuggler or squinting at Flight Review's fixed layouts.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
Forum: <em>&ldquo;PID tuning for small Flying Wing&rdquo;</em> (5Hz oscillations), <em>&ldquo;PID tunning for heavy drone&rdquo;</em> (50kg), <em>&ldquo;PID Tuning Issues - Defaults Too Aggressive.&rdquo;</em> #2 help category on forums. YouTube: <em>&ldquo;Controllers Auto-tuning&rdquo;</em> (3,163 views), <em>&ldquo;Taming the Wing&rdquo;</em> (661 views), <em>&ldquo;Design MC Gains From First Principles&rdquo;</em> (373 views). Tuning issues across vehicle types on GitHub.
</div>
</details>
</div>
</div>
<!-- Topic 11 -->
<div id="topic-11" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#11</span>
<div class="topic-header">
<div>
<div class="topic-title">11. &ldquo;The 5-Minute Post-Flight Brief&rdquo;</div>
<div class="topic-subtitle">Standardized Debrief Workflow</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:85%"></div></div>
<span class="progress-label amber">85%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-expert">Vet</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Saved layout answering &ldquo;did the flight go well?&rdquo; &mdash; map, 3D, key metrics, mode timeline. Open ULog &rarr; load layout &rarr; brief.</p>
<p><strong>Value to PX4 devs:</strong> Turns ad-hoc log browsing into repeatable professional workflow.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
PlotJuggler keynote <em>&ldquo;You Should Log More&rdquo;</em> identified this exact gap. Forum: user spent <em>&ldquo;almost 3 years&rdquo;</em> tuning, <em>&ldquo;10 crashes and $3k worth of props&rdquo;</em> before trying GPT-4. PlotJuggler experience thread: <em>&ldquo;weak correlation analysis&rdquo;</em> and <em>&ldquo;poor dynamic process reconstruction&rdquo;</em> as pain points.
</div>
</details>
</div>
</div>
<!-- Topic 12 -->
<div id="topic-12" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#12</span>
<div class="topic-header">
<div>
<div class="topic-title">12. &ldquo;Altitude: Who Do You Trust?&rdquo;</div>
<div class="topic-subtitle">Multi-Source Altitude Debugging</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:85%"></div></div>
<span class="progress-label amber">85%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-forum">Forum</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-expert">GNC</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Overlay baro, GPS, rangefinder, EKF fused altitude synced with height source selection flags and 3D altitude replay.</p>
<p><strong>Value to PX4 devs:</strong> &ldquo;GPS and barometer altitudes very different&rdquo; &mdash; 41% discrepancy in a real forum post. Seeing all sources at once makes the problem obvious.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
Forum: <em>&ldquo;Altitude drift when range sensor enabled&rdquo;</em> (18cm drift), <em>&ldquo;Drift problem in altitude hold&rdquo;</em> (-2m to -5m), <em>&ldquo;GPS and barometer altitudes very different&rdquo;</em> (41% discrepancy), <em>&ldquo;Barometer and Actual Altitude Very Different.&rdquo;</em> 6+ threads. Baro-GPS disagreement GitHub issues.
</div>
</details>
</div>
</div>
<!-- Topic 13 -->
<div id="topic-13" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#13</span>
<div class="topic-header">
<div>
<div class="topic-title">13. &ldquo;See What the Robot Sees&rdquo;</div>
<div class="topic-subtitle">Vision &amp; Perception Debugging</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:85%"></div></div>
<span class="progress-label amber">85%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-expert">X, Maintainer</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Camera feed + 3D point cloud + detection overlays + vehicle state, all time-synced. Show precision landing with ArUco detection alongside approach trajectory.</p>
<p><strong>Value to PX4 devs:</strong> Vision system debugging requires seeing camera, algorithm output, and vehicle response simultaneously. No other PX4 tool does this.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
YouTube: <em>&ldquo;From Pixels to Propellers&rdquo;</em> (1,005 views), <em>&ldquo;SAVLoc: Visual Localization in Warehouses&rdquo;</em> (375 views), <em>&ldquo;Precision Landing with ArUco Markers&rdquo;</em> (817 views), <em>&ldquo;Attachable Vision Based Piloting&rdquo;</em> (1,976 views). Fastest-growing YouTube topic with 5+ summit talks. Forum: <em>&ldquo;Drone keeps moving left with optical flow,&rdquo;</em> <em>&ldquo;UAV drifts away hovering with optical flow.&rdquo;</em> VIO/optical flow GitHub issues.
</div>
</details>
</div>
</div>
<!-- Topic 14 -->
<div id="topic-14" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#14</span>
<div class="topic-header">
<div>
<div class="topic-title">14. &ldquo;SITL Without the Terminal Salad&rdquo;</div>
<div class="topic-subtitle">Clean SITL Visualization</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:85%"></div></div>
<span class="progress-label amber">85%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-expert">X, Maintainer</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Connect Foxglove to SITL via ROS 2 bridge &mdash; live 3D, map, telemetry. Lighter than Gazebo for visualization.</p>
<p><strong>Value to PX4 devs:</strong> Every PX4 dev uses SITL. A cleaner visualization workflow has universal appeal.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
YouTube: <em>&ldquo;HITL and SITL Testing for PX4&rdquo;</em> (5,951 views). GitHub: #25143 (Gazebo as visualizer, 17 comments), #14835 (SITL failures, 57 comments). 15&ndash;20 SITL-related GitHub issues. Forum: <em>&ldquo;PX4 SITL Multi-Vehicle Gazebo VTOL ROS2.&rdquo;</em>
</div>
</details>
</div>
</div>
<!-- Topic 15 -->
<div id="topic-15" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#15</span>
<div class="topic-header">
<div>
<div class="topic-title">15. &ldquo;Vibration Forensics&rdquo;</div>
<div class="topic-subtitle">IMU Vibration &amp; Clipping Analysis</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:85%"></div></div>
<span class="progress-label amber">85%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-forum">Forum</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-expert">GNC, Vet</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Raw IMU across all instances, clipping markers, motor RPM overlay. Compare pre/post damping fix. (FFT needs custom extension, but time-domain works today.)</p>
<p><strong>Value to PX4 devs:</strong> Vibration is #1 mechanical failure precursor. Multi-IMU comparison in Foxglove beats current tools.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
Forum: <em>&ldquo;High vibration in Cube Orange+&rdquo;</em> (multi-year thread), <em>&ldquo;Large drone, vibrations and yaw instability&rdquo;</em> (resonance at 25&ndash;35Hz), <em>&ldquo;Clipping Issue in Flight Logs.&rdquo;</em> GitHub: #21802 (high acceleration, 24 comments), #5060 (unstable MC, 71 comments). Summit coverage.
</div>
</details>
</div>
</div>
<!-- Topic 16 -->
<div id="topic-16" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#16</span>
<div class="topic-header">
<div>
<div class="topic-title">16. &ldquo;Compass Chaos: Motor Interference in Living Color&rdquo;</div>
<div class="topic-subtitle">Magnetometer Interference Diagnosis</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:80%"></div></div>
<span class="progress-label amber">80%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-forum">Forum</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-expert">GNC</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Mag field norm vs motor RPM, map with heading error geospatially, 3D heading vs trajectory.</p>
<p><strong>Value to PX4 devs:</strong> &ldquo;Compass inconsistent&rdquo; is one of the most common pre-flight failures. Showing motor correlation makes root cause undeniable.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
Forum: <em>&ldquo;Pixhawk 6c Strong Magnetic Interference,&rdquo;</em> <em>&ldquo;Compass inconsistent,&rdquo;</em> <em>&ldquo;Cannot use Position control - heading 180 degree wrong.&rdquo;</em> 7+ threads. GitHub: #10621 (mag calibration CAN, 36 comments), #15312 (compass inconsistency, 11 comments).
</div>
</details>
</div>
</div>
<!-- Topic 17 -->
<div id="topic-17" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#17</span>
<div class="topic-header">
<div>
<div class="topic-title">17. &ldquo;Airspeed Trust Issues: When Your Pitot Tube Lies&rdquo;</div>
<div class="topic-subtitle">Airspeed Sensor Validation</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:82%"></div></div>
<span class="progress-label amber">82%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-expert">GNC</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> IAS vs TAS vs estimated airspeed with wind estimate, throttle, pitch. Show real airspeed failure scenarios.</p>
<p><strong>Value to PX4 devs:</strong> Critical safety sensor for FW/VTOL. Visualizing the validation pipeline builds understanding and trust.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
Forum: <em>&ldquo;Airspeed Sensor is off by ~9m/s,&rdquo;</em> <em>&ldquo;Airspeed sensor failure detected in VTOL,&rdquo;</em> <em>&ldquo;True airspeed offset in flight.&rdquo;</em> 6+ threads. GitHub: #10733 (robustness to bad airspeed, 31 comments), #12353 (airspeed validation, 25 comments).
</div>
</details>
</div>
</div>
<!-- Topic 18 -->
<div id="topic-18" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#18</span>
<div class="topic-header">
<div>
<div class="topic-title">18. &ldquo;Fixed-Wing Tuning: Rate Response to TECS&rdquo;</div>
<div class="topic-subtitle">Full FW Control Loop Dashboard</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:80%"></div></div>
<span class="progress-label amber">80%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-expert">GNC</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Layout for full FW tuning: rate response, TECS energy balance, airspeed tracking, altitude tracking. Inner to outer loop.</p>
<p><strong>Value to PX4 devs:</strong> FW tuning is harder than MC and lacks good tooling. Structured Foxglove workflow makes it accessible.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
YouTube: <em>&ldquo;Taming the Wing: Standardized Workflow for PX4 Fixed-Wing Tuning&rdquo;</em> (2025 summit, 661 views). GitHub: #24056 (FW high level control rework, 14 comments), #22091 (performance model, 22 comments). Forum: FW tuning threads.
</div>
</details>
</div>
</div>
<!-- Topic 19 -->
<div id="topic-19" class="card topic-card tier2" style="scroll-margin-top:24px;">
<span class="topic-rank">#19</span>
<div class="topic-header">
<div>
<div class="topic-title">19. &ldquo;Geofence on the Map&rdquo;</div>
<div class="topic-subtitle">Geofence Boundary Visualization</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill amber" style="width:85%"></div></div>
<span class="progress-label amber">85%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-forum">Forum</span>
<span class="badge badge-gh">GitHub</span>
<span class="badge badge-expert">Vet, LinkedIn</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Map rendering geofence boundaries on flight path. See when vehicle approached/crossed and what failsafe did.</p>
<p><strong>Value to PX4 devs:</strong> Geofence behavior is invisible in Flight Review. Map overlay makes it obvious.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
Forum: <em>&ldquo;Automated flight lose control geofence violation and crash.&rdquo;</em> GitHub: #10297 (takeoff near geofence causes flyaway), #7320 (MC geofence violation hard to resolve). Geofence violation threads.
</div>
</details>
</div>
</div>
<!-- Topic 20 -->
<div id="topic-20" class="card topic-card tier1" style="scroll-margin-top:24px;">
<span class="topic-rank">#20</span>
<div class="topic-header">
<div>
<div class="topic-title">20. &ldquo;The Tool Gap: Why PX4 Needs Foxglove&rdquo;</div>
<div class="topic-subtitle">Ecosystem Pain Points &amp; Foxglove Solutions</div>
</div>
<div class="progress-bar-container">
<div class="progress-bar"><div class="progress-bar-fill green" style="width:95%"></div></div>
<span class="progress-label green">95%</span>
</div>
</div>
<div class="topic-badges">
<span class="badge badge-yt">YouTube</span>
<span class="badge badge-forum">Forum</span>
<span class="badge badge-expert">All 5 Experts</span>
</div>
<div class="topic-body">
<p><strong>Why it's cool:</strong> Present actual community pain points (with receipts) and demo how Foxglove addresses each one. The meta-talk.</p>
<p><strong>Value to PX4 devs:</strong> Directly addresses years of tooling frustration. This is the narrative frame the other demos fit inside.</p>
<details>
<summary>Community Evidence</summary>
<div class="evidence-content">
Forum: <em>&ldquo;Flight Review site is down now&rdquo;</em> (504), <em>&ldquo;Flight Review down for 24 hours,&rdquo;</em> <em>&ldquo;How does people deal with large ULog file?&rdquo;</em> (2GB crashes PlotJuggler), <em>&ldquo;Mission Planner style log analysis&rdquo;</em> (amazed at lack of viewer). PlotJuggler keynote <em>&ldquo;You Should Log More&rdquo;</em> (639 views). PlotJuggler experience thread: <em>&ldquo;data volume, weak correlation analysis, poor dynamic process reconstruction.&rdquo;</em>
</div>
</details>
</div>
</div>
</section>
<!-- Quick Reference Matrix -->
<section id="quick-reference" class="section">
<h2 class="section-title"><span class="icon" style="background:var(--blue-dim);">&#128202;</span> Quick Reference Matrix</h2>
<div class="matrix-wrapper">
<table class="matrix-table">
<thead>
<tr>
<th>#</th>
<th>Topic</th>
<th>YT Signal</th>
<th>Forum Signal</th>
<th>GH Signal</th>
<th>Expert Panel</th>
<th>Foxglove %</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Crash forensics</td>
<td class="signal-high">High views</td>
<td class="signal-high">#1 category</td>
<td class="signal-high">Common</td>
<td class="signal-high">All 5</td>
<td class="pct-cell green">95%</td>
</tr>
<tr>
<td>2</td>
<td>EKF debugging</td>
<td class="signal-high">Summit keynote</td>
<td class="signal-high">High</td>
<td class="signal-high">20+ issues</td>
<td class="signal-med">GNC, Maintainer</td>
<td class="pct-cell green">95%</td>
</tr>
<tr>
<td>3</td>
<td>3D log replay</td>
<td class="signal-high">Keynote (tooling gap)</td>
<td class="signal-high">Tool complaints</td>
<td class="signal-low">&mdash;</td>
<td class="signal-high">All 5</td>
<td class="pct-cell green">95%</td>
</tr>
<tr>
<td>4</td>
<td>ROS 2 + PX4</td>
<td class="signal-high">#1 topic (5+ talks)</td>
<td class="signal-med">Growing</td>
<td class="signal-high">27-comment</td>
<td class="signal-med">Maintainer</td>
<td class="pct-cell green">95%</td>
</tr>
<tr>
<td>5</td>
<td>VTOL transitions</td>
<td class="signal-med">Summit talks</td>
<td class="signal-high">8+ threads</td>
<td class="signal-high">Safety-critical</td>
<td class="signal-med">GNC, X</td>
<td class="pct-cell green">90%</td>
</tr>
<tr>
<td>6</td>
<td>GPS/position failsafe</td>
<td class="signal-med">GNSS talks</td>
<td class="signal-high">6+ threads</td>
<td class="signal-high">Dual GPS bugs</td>
<td class="signal-med">GNC</td>
<td class="pct-cell green">90%</td>
</tr>
<tr>
<td>7</td>
<td>Failsafe replay</td>
<td class="signal-low">&mdash;</td>
<td class="signal-high">Geofence/RTL</td>
<td class="signal-high">25-comment</td>
<td class="signal-med">Vet, GNC</td>
<td class="pct-cell green">90%</td>
</tr>
<tr>
<td>8</td>
<td>Mission vs actual</td>
<td class="signal-low">&mdash;</td>
<td class="signal-high">Waypoint issues</td>
<td class="signal-high">24-comment</td>
<td class="signal-med">LinkedIn</td>
<td class="pct-cell amber">88%</td>
</tr>
<tr>
<td>9</td>
<td>EKF replay A/B</td>
<td class="signal-low">&mdash;</td>
<td class="signal-low">&mdash;</td>
<td class="signal-high">Core workflow</td>
<td class="signal-med">Maintainer</td>
<td class="pct-cell amber">88%</td>
</tr>
<tr>
<td>10</td>
<td>PID tuning</td>
<td class="signal-high">3.1k views</td>
<td class="signal-high">#2 help category</td>
<td class="signal-med">Tuning issues</td>
<td class="signal-med">GNC, Vet</td>
<td class="pct-cell amber">85%</td>
</tr>
<tr>
<td>11</td>
<td>Post-flight brief</td>
<td class="signal-med">Keynote ref</td>
<td class="signal-high">GPT-4 desperation</td>
<td class="signal-low">&mdash;</td>
<td class="signal-med">Vet</td>
<td class="pct-cell amber">85%</td>
</tr>
<tr>
<td>12</td>
<td>Multi-source altitude</td>
<td class="signal-low">&mdash;</td>
<td class="signal-high">6+ threads</td>
<td class="signal-med">Baro/GPS</td>
<td class="signal-med">GNC</td>
<td class="pct-cell amber">85%</td>
</tr>
<tr>
<td>13</td>
<td>Vision/perception</td>
<td class="signal-high">5+ talks</td>
<td class="signal-med">Optical flow</td>
<td class="signal-med">VIO issues</td>
<td class="signal-med">X, Maintainer</td>
<td class="pct-cell amber">85%</td>
</tr>
<tr>
<td>14</td>
<td>SITL visualization</td>
<td class="signal-high">5.9k views</td>
<td class="signal-med">Active</td>
<td class="signal-high">&ldquo;Gazebo as viz&rdquo;</td>
<td class="signal-med">X, Maintainer</td>
<td class="pct-cell amber">85%</td>
</tr>
<tr>
<td>15</td>
<td>Vibration analysis</td>
<td class="signal-med">Summit talks</td>
<td class="signal-high">Multi-year threads</td>
<td class="signal-high">24-comment</td>
<td class="signal-med">GNC, Vet</td>
<td class="pct-cell amber">85%</td>
</tr>
<tr>
<td>16</td>
<td>Compass interference</td>
<td class="signal-low">&mdash;</td>
<td class="signal-high">7+ threads</td>
<td class="signal-high">36-comment</td>
<td class="signal-med">GNC</td>
<td class="pct-cell amber">80%</td>
</tr>
<tr>
<td>17</td>
<td>Airspeed debugging</td>
<td class="signal-low">&mdash;</td>
<td class="signal-high">6+ threads</td>
<td class="signal-high">31-comment</td>
<td class="signal-med">GNC</td>
<td class="pct-cell amber">82%</td>
</tr>
<tr>
<td>18</td>
<td>FW tuning</td>
<td class="signal-med">661 views</td>
<td class="signal-med">FW threads</td>
<td class="signal-med">TECS issues</td>
<td class="signal-med">GNC</td>
<td class="pct-cell amber">80%</td>
</tr>
<tr>
<td>19</td>
<td>Geofence viz</td>
<td class="signal-low">&mdash;</td>
<td class="signal-high">Violations</td>
<td class="signal-med">Flyaway issues</td>
<td class="signal-med">Vet, LinkedIn</td>
<td class="pct-cell amber">85%</td>
</tr>
<tr>
<td>20</td>
<td>Tool ecosystem gap</td>
<td class="signal-high">Keynote</td>
<td class="signal-high">FR down, PlotJuggler OOM</td>
<td class="signal-low">&mdash;</td>
<td class="signal-high">All 5</td>
<td class="pct-cell green">95%</td>
</tr>
</tbody>
</table>
</div>
</section>
<!-- Recommendation -->
<section id="recommendation" class="section">
<h2 class="section-title"><span class="icon" style="background:var(--foxglove-purple-dim);">&#127919;</span> Recommended Talk Structure (30 min)</h2>
<div class="reco-step">
<span class="reco-time">Narrative Frame</span>
<div class="reco-body">
<h4>&ldquo;The Tool Gap&rdquo; (#20)</h4>
<p>Open with the community's own words about tooling frustration: forum quotes about Flight Review downtime, the GPT-4 screenshot incident (user spent 3 years and $3k in props before feeding Flight Review screenshots to GPT-4), PlotJuggler OOM on 2GB files. Establish empathy and credibility.</p>
</div>
</div>
<div class="reco-step">
<span class="reco-time">Demo 1 &bull; 8 min</span>
<div class="reco-body">
<h4>&ldquo;Replay Any Log in 3D&rdquo; (#3) &mdash; The &ldquo;Aha&rdquo; Moment</h4>
<p>Download a .ulg from logs.px4.io live, drag into Foxglove, show the 3D replay. Establish that everything the audience knows from Flight Review is available plus 3D visualization, map, and time-synced panels.</p>
</div>
</div>
<div class="reco-step">
<span class="reco-time">Demo 2 &bull; 8 min</span>
<div class="reco-body">
<h4>&ldquo;Debug a Crash in 60 Seconds&rdquo; (#1) &mdash; The Crowd-Pleaser</h4>
<p>Use a pre-screened crash log (with backup). Show the diagnosis workflow using the EKF debug layout. Demonstrates the time-synced multi-panel power of Foxglove for real forensic work.</p>
</div>
</div>
<div class="reco-step">
<span class="reco-time">Demo 3 &bull; 8 min</span>
<div class="reco-body">
<h4>&ldquo;ROS 2 + PX4 Live&rdquo; (#4) &mdash; The Future</h4>
<p>Show Foxglove connected to PX4 SITL via DDS bridge with live 3D, map, and plots. This is the capability no other tool has &mdash; bridging ROS 2 and PX4 in a single view.</p>
</div>
</div>
<div class="reco-step">
<span class="reco-time">Close &bull; 4 min</span>
<div class="reco-body">
<h4>Extension API &amp; Next Steps</h4>
<p>Show the extension API briefly (custom panels in TypeScript), mention the PX4 Converter extension, point to Foxglove's PX4 docs page, and invite the audience to the demo/networking session at 2:45 PM.</p>
</div>
</div>
<div class="card" style="margin-top:24px;border-left:4px solid var(--px4-orange);">
<h4 style="color:var(--px4-orange);margin-bottom:8px;">Backup Demos (for 2:45 PM session)</h4>
<p style="font-size:14px;color:var(--text-secondary);">VTOL transition replay (#5), GPS failsafe investigation (#6), PID tuning dashboard (#10) &mdash; prepared and ready if the audience wants to see more during the networking / demo session.</p>
</div>
</section>
<!-- Key Links -->
<section id="links" class="section">
<h2 class="section-title"><span class="icon" style="background:var(--foxglove-purple-dim);">&#128279;</span> Foxglove Key Links</h2>
<div class="links-grid">
<a class="link-item" href="https://docs.foxglove.dev/docs/getting-started/frameworks/px4" target="_blank">
<div><div class="link-label">Foxglove PX4 Docs</div><div class="link-url">docs.foxglove.dev/docs/getting-started/frameworks/px4</div></div>
</a>
<a class="link-item" href="https://github.com/foxglove/px4_converter" target="_blank">
<div><div class="link-label">PX4 Converter Extension</div><div class="link-url">github.com/foxglove/px4_converter</div></div>
</a>
<a class="link-item" href="https://github.com/foxglove/ulog" target="_blank">
<div><div class="link-label">ULog Parser Library</div><div class="link-url">github.com/foxglove/ulog</div></div>
</a>
<a class="link-item" href="https://github.com/foxglove/foxglove-sdk" target="_blank">
<div><div class="link-label">Foxglove SDK (Rust/Python/C++)</div><div class="link-url">github.com/foxglove/foxglove-sdk</div></div>
</a>
<a class="link-item" href="https://github.com/foxglove/ws-protocol" target="_blank">
<div><div class="link-label">WebSocket Protocol</div><div class="link-url">github.com/foxglove/ws-protocol</div></div>
</a>
<a class="link-item" href="https://mcap.dev" target="_blank">
<div><div class="link-label">MCAP Format</div><div class="link-url">mcap.dev</div></div>
</a>
<a class="link-item" href="https://foxglove.dev/solutions/drone" target="_blank">
<div><div class="link-label">Drone Solutions Page</div><div class="link-url">foxglove.dev/solutions/drone</div></div>
</a>
<a class="link-item" href="https://docs.foxglove.dev/docs/extensions" target="_blank">
<div><div class="link-label">Extension Development</div><div class="link-url">docs.foxglove.dev/docs/extensions</div></div>
</a>
<a class="link-item" href="https://luma.com/1yasqak0" target="_blank">
<div><div class="link-label">Meetup Registration</div><div class="link-url">luma.com/1yasqak0</div></div>
</a>
</div>
</section>
<!-- Footer -->
<footer class="footer">
<p>Research compiled by Dronecode Foundation for Foxglove &bull; March 2026</p>
<p>Data sources: PX4 YouTube (100+ videos), discuss.px4.io forums, PX4/PX4-Autopilot GitHub issues, Flight Review codebase analysis, Foxglove documentation</p>
</footer>
</div>
</div>
</body>
</html>

Foxglove Talk Proposals for PX4 San Diego Meetup

Event: PX4 & Foxglove San Diego Meetup, April 30, 2026 Slot: 1:30 PM, 30 minutes Audience: Mostly developers and founders


Crash forensics

Crash investigation is one of the most common help requests on the PX4 forums, appearing across the Flight Testing & Log Analysis and general PX4 Autopilot categories. The typical pattern is a developer uploading a log to Flight Review, posting the link, and waiting for someone experienced enough to interpret it. That back-and-forth can stretch weeks. The gap between "something went wrong" and "here's why" is where a lot of the frustration lives, and it's an area where tooling improvements would likely resonate with this audience.

Live ROS 2 + PX4

ROS 2 integration via micro-XRCE-DDS is one of the most active topics in the PX4 ecosystem. It's appeared in over ten developer summit talks across multiple years, and an increasing number of commercial teams are building their autonomy stacks on it. A common development challenge is correlating what's happening on the ROS 2 side with what PX4 is doing internally, often across separate tools. This audience will include developers and founders building on ROS 2, so anything that closes that gap is relevant.

PX4 tuning workflows

Tuning is one of the most common help requests on the forums, across every vehicle type. The 2025 developer summit had two separate talks on tuning workflows ("Taming the Wing" for fixed-wing and "F-16 Simulation and Tuning"), and an auto-tuning talk from 2021 remains one of the more popular videos on the PX4 channel. Teams bringing up new vehicles or scaling across airframes often face tuning as a significant development hurdle. The current workflow typically involves Flight Review for a quick overview and PlotJuggler for detailed analysis, sometimes supplemented with MATLAB. While PlotJuggler can display all control loops together, streamlined before-and-after comparison across flights remains a gap in the available tooling.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment