|
<!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 • April 30, 2026 • 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);">★</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 & 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 – 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 – 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);">📅</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);">🔍</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–100% on likelihood Foxglove can help. Only topics scoring 80%+ are included.</p> |
|
<div class="method-grid"> |
|
<div class="method-card"> |
|
<h4>Round 1 — Idea Generation</h4> |
|
<ol> |
|
<li><strong>PX4 Maintainer</strong> — researched Foxglove documentation, PX4 support, technical capabilities</li> |
|
<li><strong>GNC Aerospace Engineer</strong> — analyzed the Flight Review codebase and PX4 log data</li> |
|
<li><strong>Retired Aerospace Veteran</strong> — 30+ years flight test, avionics, military UAV experience</li> |
|
<li><strong>X (Twitter) Drone Influencer</strong> — viral content, visual demos, social media engagement</li> |
|
<li><strong>LinkedIn Drone Thought Leader</strong> — enterprise, business value, professional workflows</li> |
|
</ol> |
|
</div> |
|
<div class="method-card"> |
|
<h4>Round 2 — Data-Driven Validation</h4> |
|
<ol start="6"> |
|
<li><strong>PX4 YouTube Channel Analyst</strong> — reviewed 100+ videos across all PX4 Developer Summit playlists (2019–2025)</li> |
|
<li><strong>PX4 Forum Researcher</strong> — searched discuss.px4.io for common issues, pain points, tool complaints</li> |
|
<li><strong>PX4 GitHub Issues Analyst</strong> — 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);">⚙</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);">🏆</span> Top 20 Talk Topics</h2> |
|
|
|
<!-- TIER 1 --> |
|
<div class="tier-header tier1">Tier 1 — 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. “Debug a Crash in 60 Seconds”</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 — 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 “upload to Flight Review → post on forum → wait for expert” with self-service diagnosis.</p> |
|
<details> |
|
<summary>Community Evidence</summary> |
|
<div class="evidence-content"> |
|
Forum threads include <em>“Crash investigation”</em> (drone fell 5–7m), <em>“Erratic Flight Height”</em> (vibration-induced altitude failure), <em>“3 Crashes With Three X6100 EFT frames”</em> (mapping mission failures). User spent <em>“3 years and $3k in props”</em> before trying GPT-4 on Flight Review screenshots. Forum #1 category — 60–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. “The EKF Whisperer”</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 — all time-synced. Demo real EKF bugs like the “Multi EKF disaster” where PX4 switched to a faulty instance estimating 180° 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>“Multi EKF disaster”</em> (discuss.px4.io), <em>“Major EKF bug”</em> (altitude diverging from GPS), <em>“Height estimate not stable”</em> (1.5m divergence before takeoff), <em>“EKF2 Height Reset Snapping to Baro”</em> (40m altitude difference). GitHub: #24653 (altitude estimation, 15 comments), #21504 (Optitrack not used, 21 comments). YouTube: 2025 keynote <em>“Fuse, Reset, or Reject?”</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. “Replay Any Flight Review Log in 3D — Instantly”</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 → 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>“How does people deal with large ULog file?”</em> (2GB crashes PlotJuggler), <em>“Flight Review site is down now”</em> (504 timeout), <em>“Flight Review down for 24 hours”</em> (maintainers on holiday), <em>“Mission Planner style log analysis”</em> (user amazed at lack of simple viewer), <em>“Flight Review Custom Parameter don't plotting”</em> (only predefined data visible). YouTube: PlotJuggler creator keynote <em>“You Should Log More.”</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. “ROS 2 + PX4: See Both Worlds at Once”</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 — 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>“PX4 and ROS 2 Via Micro XRCE-DDS”</em> (813 views), <em>“Custom Flight Modes Using ROS2”</em> (807 views), <em>“A ROS 2 Library for External Flight Modes”</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>“ROS2 Offboard on Hardware,”</em> <em>“Offboard control using ROS2.”</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. “VTOL Transition: The Scariest 5 Seconds, Frame by Frame”</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 — 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>“Tri-tiltrotor VTOL dive on transition”</em> (stall without airspeed sensor), <em>“VTOL Quad Tailsitter Transition Issues,”</em> <em>“Airspeed invalidated after transition.”</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. “GPS Lied, Then Foxglove Showed Me Where”</div> |
|
<div class="topic-subtitle">GPS & 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> “17 satellites and <1m accuracy but still triggered failsafe” is a real forum post. Foxglove shows exactly why.</p> |
|
<details> |
|
<summary>Community Evidence</summary> |
|
<div class="evidence-content"> |
|
<em>“GPS glitch with 2 healthy GPS”</em> (discuss.px4.io), <em>“Frequent local position loss despite good GPS”</em> (speed accuracy exceeding 0.5 m/s threshold), <em>“Lost global position in survey grid turns,”</em> <em>“No global position failsafe with GPS lock.”</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. “Failure Mode Replay: Reliving Failsafes in 3D”</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 — 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 “read log text and guess.” 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>“Automated flight lose control geofence violation and crash,”</em> <em>“Plane Flyaway recovery: RTL loiter then flew away.”</em> |
|
</div> |
|
</details> |
|
</div> |
|
</div> |
|
|
|
<!-- TIER 2 --> |
|
<div class="tier-header tier2">Tier 2 — Strong Signal (80–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. “Mission Planned vs. Mission Flown”</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 “why didn't my drone follow the mission?” — 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–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. “EKF Replay A/B Testing”</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. “PID Tuning Dashboard: All Loops at Once”</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 “tuning review” 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>“PID tuning for small Flying Wing”</em> (5Hz oscillations), <em>“PID tunning for heavy drone”</em> (50kg), <em>“PID Tuning Issues - Defaults Too Aggressive.”</em> #2 help category on forums. YouTube: <em>“Controllers Auto-tuning”</em> (3,163 views), <em>“Taming the Wing”</em> (661 views), <em>“Design MC Gains From First Principles”</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. “The 5-Minute Post-Flight Brief”</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 “did the flight go well?” — map, 3D, key metrics, mode timeline. Open ULog → load layout → 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>“You Should Log More”</em> identified this exact gap. Forum: user spent <em>“almost 3 years”</em> tuning, <em>“10 crashes and $3k worth of props”</em> before trying GPT-4. PlotJuggler experience thread: <em>“weak correlation analysis”</em> and <em>“poor dynamic process reconstruction”</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. “Altitude: Who Do You Trust?”</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> “GPS and barometer altitudes very different” — 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>“Altitude drift when range sensor enabled”</em> (18cm drift), <em>“Drift problem in altitude hold”</em> (-2m to -5m), <em>“GPS and barometer altitudes very different”</em> (41% discrepancy), <em>“Barometer and Actual Altitude Very Different.”</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. “See What the Robot Sees”</div> |
|
<div class="topic-subtitle">Vision & 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>“From Pixels to Propellers”</em> (1,005 views), <em>“SAVLoc: Visual Localization in Warehouses”</em> (375 views), <em>“Precision Landing with ArUco Markers”</em> (817 views), <em>“Attachable Vision Based Piloting”</em> (1,976 views). Fastest-growing YouTube topic with 5+ summit talks. Forum: <em>“Drone keeps moving left with optical flow,”</em> <em>“UAV drifts away hovering with optical flow.”</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. “SITL Without the Terminal Salad”</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 — 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>“HITL and SITL Testing for PX4”</em> (5,951 views). GitHub: #25143 (Gazebo as visualizer, 17 comments), #14835 (SITL failures, 57 comments). 15–20 SITL-related GitHub issues. Forum: <em>“PX4 SITL Multi-Vehicle Gazebo VTOL ROS2.”</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. “Vibration Forensics”</div> |
|
<div class="topic-subtitle">IMU Vibration & 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>“High vibration in Cube Orange+”</em> (multi-year thread), <em>“Large drone, vibrations and yaw instability”</em> (resonance at 25–35Hz), <em>“Clipping Issue in Flight Logs.”</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. “Compass Chaos: Motor Interference in Living Color”</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> “Compass inconsistent” 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>“Pixhawk 6c Strong Magnetic Interference,”</em> <em>“Compass inconsistent,”</em> <em>“Cannot use Position control - heading 180 degree wrong.”</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. “Airspeed Trust Issues: When Your Pitot Tube Lies”</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>“Airspeed Sensor is off by ~9m/s,”</em> <em>“Airspeed sensor failure detected in VTOL,”</em> <em>“True airspeed offset in flight.”</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. “Fixed-Wing Tuning: Rate Response to TECS”</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>“Taming the Wing: Standardized Workflow for PX4 Fixed-Wing Tuning”</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. “Geofence on the Map”</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>“Automated flight lose control geofence violation and crash.”</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. “The Tool Gap: Why PX4 Needs Foxglove”</div> |
|
<div class="topic-subtitle">Ecosystem Pain Points & 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>“Flight Review site is down now”</em> (504), <em>“Flight Review down for 24 hours,”</em> <em>“How does people deal with large ULog file?”</em> (2GB crashes PlotJuggler), <em>“Mission Planner style log analysis”</em> (amazed at lack of viewer). PlotJuggler keynote <em>“You Should Log More”</em> (639 views). PlotJuggler experience thread: <em>“data volume, weak correlation analysis, poor dynamic process reconstruction.”</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);">📊</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">—</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">—</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">—</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">—</td> |
|
<td class="signal-low">—</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">—</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">—</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">“Gazebo as viz”</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">—</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">—</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">—</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">—</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);">🎯</span> Recommended Talk Structure (30 min)</h2> |
|
|
|
<div class="reco-step"> |
|
<span class="reco-time">Narrative Frame</span> |
|
<div class="reco-body"> |
|
<h4>“The Tool Gap” (#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 • 8 min</span> |
|
<div class="reco-body"> |
|
<h4>“Replay Any Log in 3D” (#3) — The “Aha” 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 • 8 min</span> |
|
<div class="reco-body"> |
|
<h4>“Debug a Crash in 60 Seconds” (#1) — 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 • 8 min</span> |
|
<div class="reco-body"> |
|
<h4>“ROS 2 + PX4 Live” (#4) — 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 — bridging ROS 2 and PX4 in a single view.</p> |
|
</div> |
|
</div> |
|
|
|
<div class="reco-step"> |
|
<span class="reco-time">Close • 4 min</span> |
|
<div class="reco-body"> |
|
<h4>Extension API & 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) — 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);">🔗</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 • 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> |