698 lines
56 KiB
HTML
698 lines
56 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html class="dark" lang="en"><head><meta charset="utf-8"/><meta content="width=device-width, initial-scale=1.0" name="viewport"/><meta content="web_standard" name="shell-type"/><title>MotorSignal Telemetry</title><link href="https://fonts.googleapis.com" rel="preconnect"/><link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@500;600;700&family=Space+Grotesk:wght@600;700&display=swap" rel="stylesheet"/><link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet"/>
|
||
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/><style>@layer base { html, body { margin: 0; padding: 0; } body { overscroll-behavior: none; } main > :first-child { margin-top: 0 !important; } main > :last-child { margin-bottom: 0 !important; } } ::-webkit-scrollbar { display: none; }</style><script src="https://cdn.tailwindcss.com"></script><script id="tailwind-config">tailwind.config = { darkMode: "class", theme: { extend: { "colors": { "on-tertiary": "#3c0091", "on-primary": "#00363d", "error-container": "#93000a", "on-secondary": "#002a78", "inverse-on-surface": "#2d3036", "on-error-container": "#ffdad6", "secondary-fixed": "#dbe1ff", "surface-container-low": "#181c21", "outline-variant": "#3b494c", "surface-variant": "#32353b", "background": "#101419", "on-surface-variant": "#bac9cc", "on-surface": "#e0e2ea", "on-background": "#e0e2ea", "on-primary-container": "#00626e", "on-secondary-container": "#cdd7ff", "primary-container": "#00e5ff", "primary": "#c3f5ff", "on-primary-fixed-variant": "#004f58", "on-primary-fixed": "#001f24", "tertiary": "#f2e9ff", "on-tertiary-fixed-variant": "#5516be", "surface-container-high": "#272a30", "surface-dim": "#101419", "primary-fixed": "#9cf0ff", "tertiary-fixed": "#e9ddff", "on-secondary-fixed": "#00174b", "error": "#ffb4ab", "on-secondary-fixed-variant": "#003ea8", "on-error": "#690005", "inverse-primary": "#006875", "inverse-surface": "#e0e2ea", "surface-container-highest": "#32353b", "secondary": "#b4c5ff", "surface": "#101419", "tertiary-container": "#d9c8ff", "surface-bright": "#36393f", "secondary-container": "#0053db", "on-tertiary-fixed": "#23005c", "surface-container": "#1d2025", "surface-container-lowest": "#0b0e13", "on-tertiary-container": "#6834d1", "secondary-fixed-dim": "#b4c5ff", "outline": "#849396", "surface-tint": "#00daf3", "primary-fixed-dim": "#00daf3", "tertiary-fixed-dim": "#d0bcff" }, "borderRadius": { "DEFAULT": "0.25rem", "lg": "0.5rem", "xl": "0.75rem", "full": "9999px" }, "spacing": { "margin": "1rem", "gutter-lg": "1.5rem", "space-md": "1rem", "space-xs": "0.25rem", "space-lg": "1.5rem", "space-xl": "2rem", "space-sm": "0.5rem", "margin-lg": "2rem", "gutter": "1rem" }, "fontFamily": { "body-md": ["Inter"], "display-hero": ["Space Grotesk"], "label-data": ["JetBrains Mono"], "telemetry-metric-lg-mobile": ["JetBrains Mono"], "headline-lg": ["Space Grotesk"], "telemetry-metric-lg": ["JetBrains Mono"], "label-caption": ["Inter"], "headline-sm": ["Space Grotesk"], "headline-md": ["Space Grotesk"], "body-lg": ["Inter"], "telemetry-metric-md": ["JetBrains Mono"], "display-hero-mobile": ["Space Grotesk"] }, "fontSize": { "body-md": ["14px", { "lineHeight": "20px", "fontWeight": "400" }], "display-hero": ["56px", { "lineHeight": "60px", "letterSpacing": "-0.03em", "fontWeight": "700" }], "label-data": ["12px", { "lineHeight": "16px", "letterSpacing": "0.08em", "fontWeight": "600" }], "telemetry-metric-lg-mobile": ["36px", { "lineHeight": "36px", "letterSpacing": "-0.03em", "fontWeight": "700" }], "headline-lg": ["32px", { "lineHeight": "40px", "letterSpacing": "-0.02em", "fontWeight": "700" }], "telemetry-metric-lg": ["48px", { "lineHeight": "48px", "letterSpacing": "-0.04em", "fontWeight": "700" }], "label-caption": ["11px", { "lineHeight": "14px", "letterSpacing": "0.05em", "fontWeight": "600" }], "headline-sm": ["20px", { "lineHeight": "28px", "fontWeight": "600" }], "headline-md": ["24px", { "lineHeight": "32px", "letterSpacing": "-0.01em", "fontWeight": "600" }], "body-lg": ["16px", { "lineHeight": "24px", "fontWeight": "500" }], "telemetry-metric-md": ["28px", { "lineHeight": "32px", "letterSpacing": "-0.02em", "fontWeight": "600" }], "display-hero-mobile": ["40px", { "lineHeight": "44px", "letterSpacing": "-0.02em", "fontWeight": "700" }] } } } };</script></head><body class="bg-surface text-on-surface font-body-md antialiased selection:bg-primary-container selection:text-on-primary"><header class="fixed top-0 left-0 right-0 z-50 bg-surface/90 backdrop-blur-xl shadow-[0_1px_8px_rgba(0,0,0,0.4)]"><div class="h-20 w-full px-gutter-lg flex items-center justify-between gap-space-md"><div class="flex items-center gap-space-lg"><a class="flex items-center gap-space-sm group" href="#"><img alt="Brand logo. - Primary color: #00e5ff
|
||
- Font: spaceGrotesk
|
||
- Mode: dark
|
||
- Roundness: rounded-md
|
||
" class="h-8 w-auto object-contain" src="https://lh3.googleusercontent.com/aida/AEtjO1UTw8rBQQ-sNGfIk81zYX1u7rT7_IcgGT6GjJCfVJDKecDfGr1MrPEVgjII5_MK3wj6tO6Qw2ZfHhqwrKxHdNrJUGxFOlXalVgFnDtgpjoNDSFtltDk6syCaK_mTdC1xPJqngCTTc2T43fBqyYBnwQANHFTwwGJ646jmbPtJavdn15iGT6wqfLaoJpDew60SUt_hG1nouBFUYDMxOiNIIgnWfkgJ04aTmmTNXr6Ca7776OBqr3haTpFHQ"/><span class="font-headline-sm text-headline-sm uppercase tracking-wider text-primary group-hover:text-primary-container transition-colors">MotorSignal</span></a><nav class="hidden xl:flex items-center gap-space-md" data-active-classes="text-primary-container font-headline-sm"><a aria-current="page" class="uppercase tracking-wider transition-colors px-space-xs py-space-xs text-primary-container font-headline-sm" data-path="features" href="#">Features</a><a class="text-on-surface-variant font-label-data text-label-data uppercase tracking-wider hover:text-on-surface transition-colors px-space-xs py-space-xs" data-path="group-rides" href="#">Group Rides</a><a class="text-on-surface-variant font-label-data text-label-data uppercase tracking-wider hover:text-on-surface transition-colors px-space-xs py-space-xs" data-path="clubs" href="#">Clubs</a><a class="text-on-surface-variant font-label-data text-label-data uppercase tracking-wider hover:text-on-surface transition-colors px-space-xs py-space-xs" data-path="pricing" href="#">Pricing</a><a class="text-on-surface-variant font-label-data text-label-data uppercase tracking-wider hover:text-on-surface transition-colors px-space-xs py-space-xs" data-path="download" href="#">Download</a><a class="text-on-surface-variant font-label-data text-label-data uppercase tracking-wider hover:text-on-surface transition-colors px-space-xs py-space-xs" data-path="support" href="#">Support</a><a class="text-on-surface-variant font-label-data text-label-data uppercase tracking-wider hover:text-on-surface transition-colors px-space-xs py-space-xs" data-path="admin-console" href="#">Admin Console</a></nav></div><div class="flex items-center gap-space-md"><div class="hidden md:flex items-center gap-space-xs px-space-sm py-space-xs rounded-full bg-surface-container-low shadow-[0_0_12px_rgba(0,229,255,0.15)]"><span class="w-2 h-2 rounded-full bg-primary-container animate-pulse"></span><span class="font-label-data text-label-data text-primary uppercase">20Hz Kalman Online</span></div><a class="inline-flex items-center justify-center h-12 px-space-md rounded-lg bg-primary-container text-on-primary font-label-data text-label-data uppercase tracking-wider shadow-[0_0_16px_rgba(0,229,255,0.35)] hover:bg-primary hover:text-on-primary transition-all duration-200 active:scale-[0.98]" href="#">Download App</a><div class="flex items-center gap-space-xs pl-space-xs"><img alt="Profile" class="w-8 h-8 rounded-full object-cover ring-2 ring-surface-container-high" src="https://lh3.googleusercontent.com/aida/AEtjO1XyAAxLiegDwfGfDOfnmd9desjMVj3kxU_bPrvNgMXtcbq65IhKW7uieorRmFWWL7_4VvnpTq8N2pToWOm8TSGRSiftlbFyjQPawmL20y9w0BQJjvgVum3Q8IdqGLli9RZ-16Yv2wJ36FHEwrk4T1IQTob8mc_BjN7g9c3Ic_Xz0pzHgZVxjjahryKv77ULhtLXK5wYZadicArshGkykAEqRbTPZfDNZ-YNLSAN51PoR4wbt46K46HLSvs"/></div></div></div></header><main class="w-full pt-20 bg-surface min-h-[calc(100vh-80px)]"><div class="flex flex-col w-full">
|
||
<!-- Top Technical Header -->
|
||
<section class="relative w-full px-gutter-lg py-space-xl overflow-hidden bg-surface-container-lowest">
|
||
<div class="absolute inset-0 bg-gradient-to-r from-primary-container/5 via-transparent to-secondary-container/10 pointer-events-none"></div>
|
||
<div class="max-w-7xl mx-auto flex flex-col gap-space-md relative z-10">
|
||
<div class="flex flex-wrap items-center gap-space-sm">
|
||
<span class="inline-flex items-center gap-1.5 px-3 py-1 rounded bg-surface-container-high text-primary-container font-label-data text-label-data tracking-wider uppercase shadow-inner">
|
||
<span class="w-1.5 h-1.5 rounded-full bg-primary-container animate-ping"></span>
|
||
AEROSPACE-GRADE SENSOR FUSION & ARCHITECTURE
|
||
</span>
|
||
<span class="font-label-caption text-label-caption text-on-surface-variant uppercase tracking-widest hidden sm:inline">
|
||
SPEC REF: MS-ENG-REV4.8
|
||
</span>
|
||
</div>
|
||
<div class="flex flex-col lg:flex-row lg:items-end justify-between gap-space-lg">
|
||
<div class="max-w-3xl flex flex-col gap-space-xs">
|
||
<h1 class="font-headline-lg text-headline-lg text-on-surface uppercase tracking-tight">
|
||
High-Density Telemetry Engineering
|
||
</h1>
|
||
<p class="font-body-lg text-body-lg text-on-surface-variant">
|
||
Sub-second corner forensics, gyroscopic lean mathematics, and fail-safe canyon synchronization engineered for extreme lean thresholds and zero cognitive diversion.
|
||
</p>
|
||
</div>
|
||
<div class="flex flex-wrap items-center gap-space-sm shrink-0">
|
||
<a class="h-12 px-space-md rounded bg-surface-container-high hover:bg-surface-container text-on-surface font-label-data text-label-data uppercase tracking-wider inline-flex items-center gap-2 transition-all" href="#benchmark">
|
||
<span class="material-symbols-outlined text-primary text-base">table_chart</span>
|
||
Hardware Matrix
|
||
</a>
|
||
<button class="h-12 px-space-md rounded bg-primary-container text-on-primary font-label-data text-label-data uppercase tracking-wider shadow-[0_0_16px_rgba(0,229,255,0.35)] hover:bg-primary hover:text-on-primary inline-flex items-center gap-2 transition-all active:scale-95" id="btn-download-whitepaper">
|
||
<span class="material-symbols-outlined text-base">download</span>
|
||
Download Technical Whitepaper (PDF)
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<!-- Quick Metrics Bar -->
|
||
<div class="grid grid-cols-2 md:grid-cols-4 gap-space-sm pt-space-md">
|
||
<div class="p-space-sm rounded bg-surface-container-low flex flex-col">
|
||
<span class="font-label-caption text-label-caption text-outline uppercase tracking-wider">IMU Sampling Rate</span>
|
||
<span class="font-telemetry-metric-md text-telemetry-metric-md text-primary font-bold">200 Hz</span>
|
||
<span class="font-label-caption text-label-caption text-on-surface-variant">Dual InvenSense MPU-6050 filter</span>
|
||
</div>
|
||
<div class="p-space-sm rounded bg-surface-container-low flex flex-col">
|
||
<span class="font-label-caption text-label-caption text-outline uppercase tracking-wider">Kalman GPS Mesh</span>
|
||
<span class="font-telemetry-metric-md text-telemetry-metric-md text-primary-container font-bold">20 Hz</span>
|
||
<span class="font-label-caption text-label-caption text-on-surface-variant">10x resolution vs standard GNSS</span>
|
||
</div>
|
||
<div class="p-space-sm rounded bg-surface-container-low flex flex-col">
|
||
<span class="font-label-caption text-label-caption text-outline uppercase tracking-wider">Lean Angle Precision</span>
|
||
<span class="font-telemetry-metric-md text-telemetry-metric-md text-secondary font-bold">±0.25°</span>
|
||
<span class="font-label-caption text-label-caption text-on-surface-variant">Dynamic roll center auto-zero</span>
|
||
</div>
|
||
<div class="p-space-sm rounded bg-surface-container-low flex flex-col">
|
||
<span class="font-label-caption text-label-caption text-outline uppercase tracking-wider">Offline Sync Quorum</span>
|
||
<span class="font-telemetry-metric-md text-telemetry-metric-md text-tertiary-container font-bold">100%</span>
|
||
<span class="font-label-caption text-label-caption text-on-surface-variant">Zero packet loss SQLite journal</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- 4 Deep-Dive Alternating Engineering Sections -->
|
||
<div class="w-full max-w-7xl mx-auto px-gutter-lg py-space-xl flex flex-col gap-24">
|
||
<!-- MODULE 01: 20 Hz Kalman Sensor Fusion Engine -->
|
||
<section class="grid grid-cols-1 lg:grid-cols-12 gap-space-lg items-center">
|
||
<div class="lg:col-span-6 flex flex-col gap-space-md order-2 lg:order-1">
|
||
<div class="flex items-center gap-2">
|
||
<span class="px-2 py-0.5 rounded bg-surface-container text-primary-container font-label-data text-label-data tracking-wider uppercase">ARCH 01 // FUSION</span>
|
||
<span class="font-label-caption text-label-caption text-outline uppercase">Sub-Decimeter Spatial Integrity</span>
|
||
</div>
|
||
<h2 class="font-headline-lg text-headline-lg text-on-surface uppercase tracking-tight">
|
||
20 Hz Kalman Sensor Fusion Engine
|
||
</h2>
|
||
<p class="font-body-md text-body-md text-on-surface-variant leading-relaxed">
|
||
Standard consumer smartphones restrict raw GNSS updates to a staggered 1 Hz heartbeat. At 140 km/h on a technical downhill corner, a bike covers nearly 39 meters between GPS stamps, slicing apex points completely in half and smoothing out trail braking signatures.
|
||
</p>
|
||
<p class="font-body-md text-body-md text-on-surface-variant leading-relaxed">
|
||
MotorSignal executes an Extended Kalman Filter (EKF) combining phone multi-frequency GNSS (L1+L5) with a 200 Hz 6-axis IMU accelerometer and gyroscopic stream. The result is a synthesized 20 Hz spatial vector that resolves steering angle adjustments, apex clipping points, and subtle countersteering impulses in razor-sharp resolution.
|
||
</p>
|
||
<div class="grid grid-cols-2 gap-space-sm pt-space-xs">
|
||
<div class="p-space-sm rounded bg-surface-container-low">
|
||
<span class="font-label-caption text-label-caption text-error uppercase font-semibold">1 Hz Legacy GPS Trap</span>
|
||
<p class="font-body-md text-body-md text-on-surface-variant mt-1">
|
||
Misses apex clipping point by up to 28 meters. Chops out mid-corner trajectory oscillations.
|
||
</p>
|
||
</div>
|
||
<div class="p-space-sm rounded bg-surface-container-low">
|
||
<span class="font-label-caption text-label-caption text-primary-container uppercase font-semibold">MotorSignal 20 Hz EKF</span>
|
||
<p class="font-body-md text-body-md text-on-surface-variant mt-1">
|
||
Tracks sub-degree trail-braking transitions and micro-throttle slides at apex center.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- Vector Visual / Comparison Chart -->
|
||
<div class="lg:col-span-6 order-1 lg:order-2">
|
||
<div class="p-space-md rounded-xl bg-surface-container-low shadow-[0_0_24px_rgba(0,0,0,0.5)] flex flex-col gap-space-sm">
|
||
<div class="flex items-center justify-between pb-space-xs">
|
||
<div class="flex items-center gap-2">
|
||
<span class="w-2.5 h-2.5 rounded-full bg-primary-container animate-pulse"></span>
|
||
<span class="font-label-data text-label-data text-on-surface uppercase tracking-wider">APEX TRAJECTORY FORENSICS (HAIRPIN T6)</span>
|
||
</div>
|
||
<span class="font-label-caption text-label-caption text-outline uppercase font-mono">DELTA: +19.4m ACCURACY</span>
|
||
</div>
|
||
<!-- Trajectory SVG Visualizer -->
|
||
<div class="relative w-full h-72 bg-surface-container-lowest rounded-lg p-space-sm flex items-center justify-center overflow-hidden">
|
||
<svg class="w-full h-full" fill="none" viewbox="0 0 600 300" xmlns="http://www.w3.org/2000/svg">
|
||
<!-- Grid Backdrop -->
|
||
<defs>
|
||
<pattern height="30" id="grid" patternunits="userSpaceOnUse" width="30">
|
||
<path d="M 30 0 L 0 0 0 30" fill="none" stroke="#1d2025" stroke-width="0.8"></path>
|
||
</pattern>
|
||
<lineargradient id="kalmanGlow" x1="0%" x2="100%" y1="0%" y2="100%">
|
||
<stop offset="0%" stop-color="#00e5ff" stop-opacity="0.8"></stop>
|
||
<stop offset="50%" stop-color="#c3f5ff" stop-opacity="1"></stop>
|
||
<stop offset="100%" stop-color="#0053db" stop-opacity="0.7"></stop>
|
||
</lineargradient>
|
||
</defs>
|
||
<rect fill="url(#grid)" height="100%" width="100%"></rect>
|
||
<!-- Tarmac Track Outline -->
|
||
<path d="M 40 260 C 180 250 260 220 320 140 C 370 70 470 50 560 60" stroke="#272a30" stroke-linecap="round" stroke-width="34"></path>
|
||
<path d="M 40 260 C 180 250 260 220 320 140 C 370 70 470 50 560 60" stroke="#101419" stroke-linecap="round" stroke-width="26"></path>
|
||
<!-- Apex Marker -->
|
||
<circle cx="342" cy="115" fill="#00e5ff" r="4"></circle>
|
||
<circle cx="342" cy="115" r="12" stroke="#00e5ff" stroke-opacity="0.4" stroke-width="1.5"></circle>
|
||
<text class="font-label-caption text-label-caption" fill="#c3f5ff" font-size="10" x="360" y="118">TRUE CORNER APEX</text>
|
||
<!-- JAGGED 1 Hz PHONE GPS (Stepwise error) -->
|
||
<path d="M 50 260 L 160 240 L 270 190 L 400 90 L 550 60" fill="none" stroke="#ffb4ab" stroke-dasharray="4 4" stroke-width="2"></path>
|
||
<!-- Staggered data points -->
|
||
<circle cx="50" cy="260" fill="#ffb4ab" r="3"></circle>
|
||
<circle cx="160" cy="240" fill="#ffb4ab" r="3"></circle>
|
||
<circle cx="270" cy="190" fill="#ffb4ab" r="3"></circle>
|
||
<circle cx="400" cy="90" fill="#ffb4ab" r="3"></circle>
|
||
<circle cx="550" cy="60" fill="#ffb4ab" r="3"></circle>
|
||
<!-- MOTOR SIGNAL 20 Hz KALMAN FILTERED SMOOTH PATH -->
|
||
<path d="M 50 260 C 190 250 270 210 338 120 C 370 76 460 55 550 60" fill="none" stroke="url(#kalmanGlow)" stroke-linecap="round" stroke-width="3.5"></path>
|
||
<!-- Micro-corrections along the line -->
|
||
<g fill="#00e5ff">
|
||
<circle cx="210" cy="242" r="1.5"></circle>
|
||
<circle cx="230" cy="235" r="1.5"></circle>
|
||
<circle cx="250" cy="223" r="1.5"></circle>
|
||
<circle cx="270" cy="205" r="1.5"></circle>
|
||
<circle cx="290" cy="180" r="1.5"></circle>
|
||
<circle cx="310" cy="155" r="1.5"></circle>
|
||
<circle cx="330" cy="130" r="1.5"></circle>
|
||
<circle cx="355" cy="100" r="1.5"></circle>
|
||
<circle cx="380" cy="85" r="1.5"></circle>
|
||
<circle cx="410" cy="72" r="1.5"></circle>
|
||
<circle cx="440" cy="64" r="1.5"></circle>
|
||
<circle cx="475" cy="60" r="1.5"></circle>
|
||
<circle cx="510" cy="59" r="1.5"></circle>
|
||
</g>
|
||
<!-- Annotation box -->
|
||
<rect fill="#181c21" fill-opacity="0.9" height="54" rx="4" width="200" x="70" y="30"></rect>
|
||
<text class="font-label-caption text-label-caption" fill="#ffb4ab" font-size="9" x="80" y="48">-- 1 Hz Baseline: Truncates Apex (-19m)</text>
|
||
<text class="font-label-data text-label-data" fill="#00e5ff" font-size="10" x="80" y="64">__ 20 Hz Kalman: Continuous Arc</text>
|
||
<text class="font-label-caption text-label-caption" fill="#bac9cc" font-size="8" x="80" y="76">Trail braking & throttle micro-wiggles retained</text>
|
||
</svg>
|
||
</div>
|
||
<div class="flex items-center justify-between text-on-surface-variant font-label-data text-label-data px-1">
|
||
<span class="text-error flex items-center gap-1.5">
|
||
<span class="inline-block w-2.5 h-0.5 bg-error"></span> 1 Hz Standard Phone GNSS
|
||
</span>
|
||
<span class="text-primary-container flex items-center gap-1.5">
|
||
<span class="inline-block w-2.5 h-1 bg-primary-container rounded"></span> MotorSignal 20 Hz Kalman Fusion
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- MODULE 02: Gyroscopic Lean Angle Physics & Kinematics -->
|
||
<section class="grid grid-cols-1 lg:grid-cols-12 gap-space-lg items-center">
|
||
<!-- Diagram / Vector Graphics Canvas -->
|
||
<div class="lg:col-span-6">
|
||
<div class="p-space-md rounded-xl bg-surface-container-low shadow-[0_0_24px_rgba(0,0,0,0.5)] flex flex-col gap-space-sm">
|
||
<div class="flex items-center justify-between pb-space-xs">
|
||
<div class="flex items-center gap-2">
|
||
<span class="material-symbols-outlined text-primary-container text-base">screen_rotation</span>
|
||
<span class="font-label-data text-label-data text-on-surface uppercase tracking-wider">3-AXIS GYRO & ROLL-CENTER VECTOR</span>
|
||
</div>
|
||
<span class="font-label-caption text-label-caption text-secondary uppercase font-mono">θ = 51.4° MAX LEAN</span>
|
||
</div>
|
||
<div class="relative w-full h-80 bg-surface-container-lowest rounded-lg p-space-sm flex items-center justify-center overflow-hidden">
|
||
<svg class="w-full h-full" fill="none" viewbox="0 0 500 320" xmlns="http://www.w3.org/2000/svg">
|
||
<!-- Ground Plane -->
|
||
<line stroke="#3b494c" stroke-width="2" x1="20" x2="480" y1="270" y2="270"></line>
|
||
<text class="font-label-caption text-label-caption" fill="#849396" font-size="10" x="30" y="290">GROUND LEVEL (TARMAC HORIZON)</text>
|
||
<!-- Center Vertical Reference -->
|
||
<line stroke="#3b494c" stroke-dasharray="3 3" stroke-width="1.5" x1="250" x2="250" y1="30" y2="270"></line>
|
||
<text class="font-label-caption text-label-caption" fill="#849396" font-size="9" x="255" y="45">TRUE VERTICAL (GRAVITY VECTOR)</text>
|
||
<!-- Motorcycle Lean Axis (52 degrees) -->
|
||
<!-- Pivot point Contact patch at (250, 270) -->
|
||
<g transform="rotate(-48, 250, 270)">
|
||
<!-- Motorcycle Chasis Beam Line -->
|
||
<line stroke="#00e5ff" stroke-width="3" x1="250" x2="250" y1="270" y2="70"></line>
|
||
<!-- Virtual Center of Mass (CoM) -->
|
||
<circle cx="250" cy="140" fill="#0053db" fill-opacity="0.8" r="14" stroke="#00e5ff" stroke-width="2"></circle>
|
||
<text class="font-label-data text-label-data" fill="#c3f5ff" font-size="10" x="270" y="145">CoM (BIKE + RIDER)</text>
|
||
<!-- Phone Mounting Node Off-Center -->
|
||
<rect fill="#181c21" height="24" rx="2" stroke="#00e5ff" stroke-width="1.5" width="16" x="242" y="80"></rect>
|
||
<text class="font-label-caption text-label-caption" fill="#c3f5ff" font-size="8" x="264" y="94">MOUNT NODE (x, y, z)</text>
|
||
<!-- Tire Contact Patch Oval -->
|
||
<ellipse cx="250" cy="270" fill="#00e5ff" fill-opacity="0.6" rx="9" ry="5"></ellipse>
|
||
</g>
|
||
<!-- Lean Angle Arc -->
|
||
<path d="M 250 170 A 100 100 0 0 0 176 195" fill="none" stroke="#00e5ff" stroke-dasharray="2 2" stroke-width="2"></path>
|
||
<text class="font-telemetry-metric-md text-headline-sm font-bold" fill="#00e5ff" x="180" y="160">51.4°</text>
|
||
<text class="font-label-caption text-label-caption" fill="#bac9cc" font-size="8" x="180" y="174">ROLL ANGLE (θ)</text>
|
||
<!-- Radial acceleration vector -->
|
||
<line marker-end="url(#arrow)" stroke="#ffb4ab" stroke-width="2" x1="165" x2="90" y1="180" y2="180"></line>
|
||
<text class="font-label-data text-label-data" fill="#ffb4ab" font-size="9" x="65" y="172">CENTRIPETAL FORCE (1.42G)</text>
|
||
<!-- Dynamic Contact Patch Offset shift -->
|
||
<circle cx="238" cy="270" fill="#00daf3" r="4"></circle>
|
||
<line stroke="#00daf3" stroke-width="2" x1="250" x2="238" y1="270" y2="270"></line>
|
||
<text class="font-label-caption text-label-caption" fill="#00daf3" font-size="8" x="150" y="260">PATCH CAMBER DISPLACEMENT (-12mm)</text>
|
||
</svg>
|
||
</div>
|
||
<div class="grid grid-cols-3 gap-space-xs text-center pt-space-xs">
|
||
<div class="p-space-xs rounded bg-surface-container">
|
||
<span class="font-label-caption text-label-caption text-outline uppercase block">Roll Axis</span>
|
||
<span class="font-label-data text-label-data text-primary">Dynamic Offset</span>
|
||
</div>
|
||
<div class="p-space-xs rounded bg-surface-container">
|
||
<span class="font-label-caption text-label-caption text-outline uppercase block">Pitch (Stoppie)</span>
|
||
<span class="font-label-data text-label-data text-primary">Decel Compensated</span>
|
||
</div>
|
||
<div class="p-space-xs rounded bg-surface-container">
|
||
<span class="font-label-caption text-label-caption text-outline uppercase block">Yaw Slip</span>
|
||
<span class="font-label-data text-label-data text-primary">CAN-Bus Sync</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="lg:col-span-6 flex flex-col gap-space-md">
|
||
<div class="flex items-center gap-2">
|
||
<span class="px-2 py-0.5 rounded bg-surface-container text-primary-container font-label-data text-label-data tracking-wider uppercase">ARCH 02 // KINEMATICS</span>
|
||
<span class="font-label-caption text-label-caption text-outline uppercase">Quaternions & Rigid Body Centroids</span>
|
||
</div>
|
||
<h2 class="font-headline-lg text-headline-lg text-on-surface uppercase tracking-tight">
|
||
Gyroscopic Lean Angle Physics & Kinematics
|
||
</h2>
|
||
<p class="font-body-md text-body-md text-on-surface-variant leading-relaxed">
|
||
Measuring the lean of a two-wheeled vehicle is inherently non-linear. As a motorcycle tips into a fast sweeper, the tire contact patch migrates laterally across the tire profile by up to 25mm, altering the instantaneous roll center and inducing heavy lateral G-forces that falsely trick naive accelerometer tilt algorithms.
|
||
</p>
|
||
<p class="font-body-md text-body-md text-on-surface-variant leading-relaxed">
|
||
MotorSignal solves this via continuous coordinate frame transformations. You can mount your phone anywhere: sideways on a clip-on, flat on the tank, or tucked behind a race fairing. Our 30-second initial roll calibration computes the transformation matrix between device axes and chassis ground vectors, filtering out engine vibration frequencies (70–160 Hz) through a low-pass Butterworth filter.
|
||
</p>
|
||
<div class="p-space-sm rounded bg-surface-container-low flex flex-col gap-1">
|
||
<span class="font-label-data text-label-data text-primary-container uppercase">Zero-Mount Calibration Algorithm</span>
|
||
<p class="font-body-md text-body-md text-on-surface-variant">
|
||
Roll, pitch, and yaw are resolved using non-gimbal lock unit quaternions <span class="font-label-data text-label-data text-primary">q = [w, x, y, z]</span>. No matter how crooked your handlebar bracket sits, true chassis lean remains isolated within ±0.25° precision.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- MODULE 03: Safety Lean-Angle Interlock (G-Guard) -->
|
||
<section class="grid grid-cols-1 lg:grid-cols-12 gap-space-lg items-center">
|
||
<div class="lg:col-span-6 flex flex-col gap-space-md order-2 lg:order-1">
|
||
<div class="flex items-center gap-2">
|
||
<span class="px-2 py-0.5 rounded bg-surface-container text-error font-label-data text-label-data tracking-wider uppercase">ARCH 03 // SAFETY HUD</span>
|
||
<span class="font-label-caption text-label-caption text-outline uppercase">Zero-Cognitive Diversion</span>
|
||
</div>
|
||
<h2 class="font-headline-lg text-headline-lg text-on-surface uppercase tracking-tight">
|
||
Safety Lean-Angle Interlock (G-Guard)
|
||
</h2>
|
||
<p class="font-body-md text-body-md text-on-surface-variant leading-relaxed">
|
||
At full lean inside a 50° blind apex, an unexpected radar ping, navigation reroute, or group rider chime can distract the rider, inducing target fixation or an accidental panic brake grab.
|
||
</p>
|
||
<p class="font-body-md text-body-md text-on-surface-variant leading-relaxed">
|
||
MotorSignal's patent-pending <strong>G-Guard State Machine</strong> dynamically locks out non-critical alerts whenever the roll angle exceeds <strong>15°</strong>. Visual banners are silenced, screen contrast transitions to an ultra-clean high-contrast HUD, and audio cues are buffered into an emergency FIFO stack.
|
||
</p>
|
||
<div class="p-space-sm rounded bg-surface-container-low flex flex-col gap-2">
|
||
<div class="flex items-center justify-between">
|
||
<span class="font-label-data text-label-data text-primary uppercase">Interlock Release Hysteresis</span>
|
||
<span class="font-label-data text-label-data text-primary-container">1,500ms Delay Window</span>
|
||
</div>
|
||
<p class="font-body-md text-body-md text-on-surface-variant">
|
||
Alerts remain held until the chassis straightens under <strong>10°</strong> and holds upright stability for a minimum of 1.5 seconds. Only then are low-priority warnings delivered softly into helmet intercoms.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<!-- State Machine Diagram Component -->
|
||
<div class="lg:col-span-6 order-1 lg:order-2">
|
||
<div class="p-space-md rounded-xl bg-surface-container-low shadow-[0_0_24px_rgba(0,0,0,0.5)] flex flex-col gap-space-sm">
|
||
<div class="flex items-center justify-between pb-space-xs">
|
||
<div class="flex items-center gap-2">
|
||
<span class="w-2.5 h-2.5 rounded-full bg-error animate-pulse"></span>
|
||
<span class="font-label-data text-label-data text-on-surface uppercase tracking-wider">G-GUARD FINITE STATE MACHINE (FSM)</span>
|
||
</div>
|
||
<span class="font-label-caption text-label-caption text-outline uppercase font-mono">STATUS: ACTIVE BUFFER</span>
|
||
</div>
|
||
<div class="relative w-full h-80 bg-surface-container-lowest rounded-lg p-space-sm flex flex-col justify-between overflow-hidden">
|
||
<!-- State 1: Upright -->
|
||
<div class="flex items-center justify-between p-3 rounded bg-surface-container border-l-4 border-l-primary-container">
|
||
<div>
|
||
<div class="flex items-center gap-2">
|
||
<span class="font-label-data text-label-data text-primary-container font-bold">STATE A: STRAIGHT & LEVEL</span>
|
||
<span class="px-1.5 py-0.5 rounded text-[10px] bg-primary-container/20 text-primary-container font-mono">ROLL < 15°</span>
|
||
</div>
|
||
<p class="font-label-caption text-label-caption text-on-surface-variant mt-1">Normal HUD updates active. Radar, pack radar, and voice guidance deliver at 100% gain.</p>
|
||
</div>
|
||
<span class="material-symbols-outlined text-primary-container text-2xl">volume_up</span>
|
||
</div>
|
||
<!-- Transition Arrow Down -->
|
||
<div class="flex items-center justify-center gap-3 text-outline">
|
||
<span class="font-label-caption text-label-caption text-error font-mono font-bold tracking-wider">ROLL > 15° TRIGGER [SILENCE ENGAGED]</span>
|
||
<span class="material-symbols-outlined text-error">arrow_downward</span>
|
||
</div>
|
||
<!-- State 2: High Lean Lockout -->
|
||
<div class="flex items-center justify-between p-3 rounded bg-error-container/20 border-l-4 border-l-error">
|
||
<div>
|
||
<div class="flex items-center gap-2">
|
||
<span class="font-label-data text-label-data text-error font-bold">STATE B: APEX INTERLOCK ACTIVE</span>
|
||
<span class="px-1.5 py-0.5 rounded text-[10px] bg-error/20 text-error font-mono">LEAN LOCKED</span>
|
||
</div>
|
||
<p class="font-label-caption text-label-caption text-on-surface-variant mt-1">
|
||
Audio suppressed immediately. Visual clutter pruned. Pending notifications queued in volatile RAM FIFO stack.
|
||
</p>
|
||
</div>
|
||
<span class="material-symbols-outlined text-error text-2xl animate-pulse">volume_off</span>
|
||
</div>
|
||
<!-- Transition Arrow Up -->
|
||
<div class="flex items-center justify-center gap-3 text-outline">
|
||
<span class="material-symbols-outlined text-primary">arrow_upward</span>
|
||
<span class="font-label-caption text-label-caption text-primary font-mono font-bold tracking-wider">ROLL < 10° FOR > 1.5s [HYSTERESIS RELEASE]</span>
|
||
</div>
|
||
<!-- State 3: Buffer Drain -->
|
||
<div class="flex items-center justify-between p-2.5 rounded bg-surface-container-high">
|
||
<div class="flex items-center gap-2">
|
||
<span class="material-symbols-outlined text-secondary text-base">restore</span>
|
||
<span class="font-label-caption text-label-caption text-on-surface">Buffer Flush: Priority alerts delivered chronologically.</span>
|
||
</div>
|
||
<span class="font-label-data text-label-data text-secondary">0 Drops</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex items-center justify-between text-on-surface-variant font-label-data text-label-data px-1">
|
||
<span>Critical Crash SOS is exempt from suppression.</span>
|
||
<span class="text-primary-container">ISO 26262 ASIL-B Validated</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- MODULE 04: Dual Storage & Offline Canyon Sync -->
|
||
<section class="grid grid-cols-1 lg:grid-cols-12 gap-space-lg items-center">
|
||
<!-- Architecture Graphic -->
|
||
<div class="lg:col-span-6">
|
||
<div class="p-space-md rounded-xl bg-surface-container-low shadow-[0_0_24px_rgba(0,0,0,0.5)] flex flex-col gap-space-sm">
|
||
<div class="flex items-center justify-between pb-space-xs">
|
||
<div class="flex items-center gap-2">
|
||
<span class="material-symbols-outlined text-tertiary-container text-base">cloud_sync</span>
|
||
<span class="font-label-data text-label-data text-on-surface uppercase tracking-wider">OFFLINE CANYON JOURNAL (SCHEMA 7)</span>
|
||
</div>
|
||
<span class="font-label-caption text-label-caption text-outline uppercase font-mono">ZERO DROP GUARANTEE</span>
|
||
</div>
|
||
<!-- Flow Chart Diagram -->
|
||
<div class="relative w-full h-80 bg-surface-container-lowest rounded-lg p-space-sm flex flex-col justify-around overflow-hidden">
|
||
<!-- Node 1: IMU/GPS Stream -->
|
||
<div class="flex items-center gap-3 p-2.5 rounded bg-surface-container">
|
||
<span class="material-symbols-outlined text-primary text-xl">sensors</span>
|
||
<div class="flex-1 min-w-0">
|
||
<div class="flex items-center justify-between">
|
||
<span class="font-label-data text-label-data text-on-surface font-semibold">200 Hz IMU + 20 Hz GPS Stream</span>
|
||
<span class="font-label-caption text-label-caption text-primary">In-Memory Ring Buffer</span>
|
||
</div>
|
||
<div class="w-full bg-surface-container-highest h-1 rounded-full mt-1.5 overflow-hidden">
|
||
<div class="bg-primary h-full w-4/5 animate-pulse"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- Arrow -->
|
||
<div class="flex justify-center text-outline">
|
||
<span class="material-symbols-outlined text-sm">south</span>
|
||
</div>
|
||
<!-- Node 2: SQLite Drift Schema 7 -->
|
||
<div class="flex items-center gap-3 p-2.5 rounded bg-surface-container border-l-4 border-l-tertiary-container">
|
||
<span class="material-symbols-outlined text-tertiary-container text-xl">database</span>
|
||
<div class="flex-1 min-w-0">
|
||
<div class="flex items-center justify-between">
|
||
<span class="font-label-data text-label-data text-tertiary-container font-semibold">SQLite Drift WAL Engine (Schema 7)</span>
|
||
<span class="font-label-caption text-label-caption text-on-surface-variant font-mono">Local NVMe Storage</span>
|
||
</div>
|
||
<p class="font-label-caption text-label-caption text-on-surface-variant mt-0.5">
|
||
Sub-millisecond writes via Write-Ahead Logging (WAL). 0% frame loss even in unexpected crash shutdown.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<!-- Split Flow: Sync Outbox -->
|
||
<div class="flex justify-center text-outline">
|
||
<span class="material-symbols-outlined text-sm">fork_right</span>
|
||
</div>
|
||
<div class="grid grid-cols-2 gap-space-xs">
|
||
<div class="p-2 rounded bg-surface-container-high flex flex-col">
|
||
<div class="flex items-center gap-1.5 text-error">
|
||
<span class="material-symbols-outlined text-sm">signal_cellular_connected_no_internet_0_bar</span>
|
||
<span class="font-label-caption text-label-caption font-bold">DEAD CANYON ZONE</span>
|
||
</div>
|
||
<p class="font-label-caption text-label-caption text-on-surface-variant mt-1">
|
||
Batches records into `SyncOutboxQueue`. Exponential backoff heartbeat.
|
||
</p>
|
||
</div>
|
||
<div class="p-2 rounded bg-surface-container-high flex flex-col">
|
||
<div class="flex items-center gap-1.5 text-primary-container">
|
||
<span class="material-symbols-outlined text-sm">wifi</span>
|
||
<span class="font-label-caption text-label-caption font-bold">CELL TOWER LOCK</span>
|
||
</div>
|
||
<p class="font-label-caption text-label-caption text-on-surface-variant mt-1">
|
||
Protobuf payload replication directly to Cloudflare R2 binary storage buckets.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="flex items-center justify-between text-on-surface-variant font-label-data text-label-data px-1">
|
||
<span>Protobuf compression ratio: 8.4:1</span>
|
||
<span class="text-tertiary-container">< 3.2MB per 100km run</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="lg:col-span-6 flex flex-col gap-space-md">
|
||
<div class="flex items-center gap-2">
|
||
<span class="px-2 py-0.5 rounded bg-surface-container text-tertiary-container font-label-data text-label-data tracking-wider uppercase">ARCH 04 // STORAGE</span>
|
||
<span class="font-label-caption text-label-caption text-outline uppercase">Resilient Sync Mesh</span>
|
||
</div>
|
||
<h2 class="font-headline-lg text-headline-lg text-on-surface uppercase tracking-tight">
|
||
Dual Storage & Offline Canyon Sync
|
||
</h2>
|
||
<p class="font-body-md text-body-md text-on-surface-variant leading-relaxed">
|
||
The best motorcycle passes—the Tail of the Dragon, Stelvio Pass, and Angeles Crest—are notorious cellular blackouts. Telemetry systems reliant on cloud connections frequently stall, discard corner records, or crash rider sessions completely.
|
||
</p>
|
||
<p class="font-body-md text-body-md text-on-surface-variant leading-relaxed">
|
||
MotorSignal decouples telemetry recording from network state. Sessions commit directly to an embedded <strong>SQLite Drift Schema 7</strong> write-ahead log. When connectivity evaporates, your high-resolution telemetry queues seamlessly in the local SyncOutbox. Once a cellular or Wi-Fi handshake is achieved, compressed binary Protobuf streams sync directly to Cloudflare R2 bucket clusters with sha256 checksum validation.
|
||
</p>
|
||
<div class="grid grid-cols-2 gap-space-sm pt-space-xs">
|
||
<div class="p-space-sm rounded bg-surface-container-low">
|
||
<span class="font-label-data text-label-data text-on-surface font-semibold">Zero Memory Leaks</span>
|
||
<p class="font-body-md text-body-md text-on-surface-variant mt-1">
|
||
Fixed memory footprint (< 85MB RAM) prevents app background termination during 10-hour rides.
|
||
</p>
|
||
</div>
|
||
<div class="p-space-sm rounded bg-surface-container-low">
|
||
<span class="font-label-data text-label-data text-on-surface font-semibold">R2 Binary Snapshots</span>
|
||
<p class="font-body-md text-body-md text-on-surface-variant mt-1">
|
||
Full 4K-resolution GPS & G-force trajectory replays exportable instantly as CSV, GPX, or JSON.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<!-- Hardware & Sensor Comparative Benchmark Matrix -->
|
||
<section class="w-full bg-surface-container-lowest py-space-xl px-gutter-lg" id="benchmark">
|
||
<div class="max-w-7xl mx-auto flex flex-col gap-space-lg">
|
||
<div class="flex flex-col gap-space-xs">
|
||
<span class="font-label-data text-label-data text-primary uppercase tracking-wider">BENCHMARK LAB AUDIT</span>
|
||
<h2 class="font-headline-lg text-headline-lg text-on-surface uppercase tracking-tight">
|
||
Hardware & Sensor Comparative Matrix
|
||
</h2>
|
||
<p class="font-body-md text-body-md text-on-surface-variant max-w-2xl">
|
||
Empirical testing conducted on Laguna Seca and Mulholland Highway comparing standard consumer navigation software, dedicated motorsport hardware, and the MotorSignal Pro fusion core.
|
||
</p>
|
||
</div>
|
||
<!-- Comparative Table Container -->
|
||
<div class="w-full overflow-x-auto rounded-xl bg-surface-container-low shadow-[0_0_24px_rgba(0,0,0,0.4)]">
|
||
<table class="w-full text-left font-body-md text-body-md border-collapse min-w-[720px]">
|
||
<thead>
|
||
<tr class="bg-surface-container-high text-on-surface font-label-data text-label-data uppercase tracking-wider">
|
||
<th class="p-4 pl-6 text-on-surface">Architectural Metric</th>
|
||
<th class="p-4 text-on-surface-variant">Standard Phone GPS Apps</th>
|
||
<th class="p-4 text-on-surface-variant">Dedicated Track Hardware ($800+)</th>
|
||
<th class="p-4 pr-6 text-primary-container bg-surface-container-highest">MotorSignal Pro Core</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody class="divide-y-0">
|
||
<!-- Row 1 -->
|
||
<tr class="hover:bg-surface-container/50 transition-colors">
|
||
<td class="p-4 pl-6 font-label-data text-label-data text-on-surface font-semibold flex items-center gap-2">
|
||
<span class="material-symbols-outlined text-primary text-base">speed</span>
|
||
Sampling Rate (GPS / IMU)
|
||
</td>
|
||
<td class="p-4 text-on-surface-variant font-mono">1 Hz (GPS only)</td>
|
||
<td class="p-4 text-on-surface-variant font-mono">10 Hz – 25 Hz</td>
|
||
<td class="p-4 pr-6 text-primary-container font-mono font-bold bg-surface-container-highest/40">20 Hz EKF / 200 Hz IMU</td>
|
||
</tr>
|
||
<!-- Row 2 -->
|
||
<tr class="hover:bg-surface-container/50 transition-colors bg-surface-container-low/50">
|
||
<td class="p-4 pl-6 font-label-data text-label-data text-on-surface font-semibold flex items-center gap-2">
|
||
<span class="material-symbols-outlined text-primary text-base">architecture</span>
|
||
Lean Angle Precision
|
||
</td>
|
||
<td class="p-4 text-error font-mono">± 8.0° (Estimated)</td>
|
||
<td class="p-4 text-on-surface-variant font-mono">± 0.5° (Requires gyro box)</td>
|
||
<td class="p-4 pr-6 text-primary-container font-mono font-bold bg-surface-container-highest/40">± 0.25° (Self-Calibrating)</td>
|
||
</tr>
|
||
<!-- Row 3 -->
|
||
<tr class="hover:bg-surface-container/50 transition-colors">
|
||
<td class="p-4 pl-6 font-label-data text-label-data text-on-surface font-semibold flex items-center gap-2">
|
||
<span class="material-symbols-outlined text-primary text-base">map</span>
|
||
Offline Vector Cache
|
||
</td>
|
||
<td class="p-4 text-error">Limited / Requires Manual Download</td>
|
||
<td class="p-4 text-on-surface-variant">Track Maps Only (No Street Routing)</td>
|
||
<td class="p-4 pr-6 text-primary-container font-semibold bg-surface-container-highest/40">Automated Regional Vector Grid</td>
|
||
</tr>
|
||
<!-- Row 4 -->
|
||
<tr class="hover:bg-surface-container/50 transition-colors bg-surface-container-low/50">
|
||
<td class="p-4 pl-6 font-label-data text-label-data text-on-surface font-semibold flex items-center gap-2">
|
||
<span class="material-symbols-outlined text-primary text-base">radar</span>
|
||
Police & Hazard Alert Latency
|
||
</td>
|
||
<td class="p-4 text-on-surface-variant font-mono">1,800ms – 4,500ms</td>
|
||
<td class="p-4 text-error font-mono">N/A (No Network/Radar Link)</td>
|
||
<td class="p-4 pr-6 text-primary-container font-mono font-bold bg-surface-container-highest/40">< 340ms (Mesh Broadcast)</td>
|
||
</tr>
|
||
<!-- Row 5 -->
|
||
<tr class="hover:bg-surface-container/50 transition-colors">
|
||
<td class="p-4 pl-6 font-label-data text-label-data text-on-surface font-semibold flex items-center gap-2">
|
||
<span class="material-symbols-outlined text-primary text-base">battery_charging_full</span>
|
||
Battery Consumption Rate
|
||
</td>
|
||
<td class="p-4 text-on-surface-variant font-mono">18% – 24% per hour</td>
|
||
<td class="p-4 text-on-surface-variant font-mono">Dedicated 12V Bike Tap</td>
|
||
<td class="p-4 pr-6 text-primary-container font-mono font-bold bg-surface-container-highest/40">7.2% per hour (Vulkan Optimized)</td>
|
||
</tr>
|
||
<!-- Row 6 -->
|
||
<tr class="hover:bg-surface-container/50 transition-colors bg-surface-container-low/50">
|
||
<td class="p-4 pl-6 font-label-data text-label-data text-on-surface font-semibold flex items-center gap-2">
|
||
<span class="material-symbols-outlined text-primary text-base">cable</span>
|
||
CAN-Bus OBD-II Link
|
||
</td>
|
||
<td class="p-4 text-error">Unsupported</td>
|
||
<td class="p-4 text-on-surface-variant">Proprietary harness only ($250+)</td>
|
||
<td class="p-4 pr-6 text-primary-container font-semibold bg-surface-container-highest/40">Universal BLE 5.3 CAN & Kline</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="flex flex-col sm:flex-row items-center justify-between gap-space-sm font-label-caption text-label-caption text-outline">
|
||
<span>Tested on iPhone 15 Pro / Galaxy S24 Ultra running iOS 17.5 & Android 14 with dual-band GNSS enabled.</span>
|
||
<span class="text-primary">Independently verified by CalTelemetry Labs</span>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- Technical FAQ Accordion Section -->
|
||
<section class="w-full max-w-5xl mx-auto px-gutter-lg py-space-xl">
|
||
<div class="flex flex-col gap-space-lg">
|
||
<div class="text-center flex flex-col gap-space-xs items-center">
|
||
<span class="font-label-data text-label-data text-primary-container uppercase tracking-wider">ENGINEERING INQUIRIES</span>
|
||
<h2 class="font-headline-lg text-headline-lg text-on-surface uppercase tracking-tight">
|
||
Frequently Answered Technical Questions
|
||
</h2>
|
||
<p class="font-body-md text-body-md text-on-surface-variant max-w-xl">
|
||
Everything you need to know about calibration procedures, handlebar mount vibrations, and satellite constellation integrity.
|
||
</p>
|
||
</div>
|
||
<!-- Accordions Container -->
|
||
<div class="flex flex-col gap-space-sm" id="technical-faq-group">
|
||
<!-- FAQ Item 1 -->
|
||
<div class="faq-item rounded-lg bg-surface-container-low overflow-hidden transition-all duration-200">
|
||
<button aria-expanded="false" class="faq-trigger w-full p-space-md flex items-center justify-between text-left hover:bg-surface-container transition-colors" type="button">
|
||
<span class="font-headline-sm text-headline-sm text-on-surface text-base sm:text-lg">
|
||
1. How does MotorSignal calibrate mount orientation if my phone is mounted at an odd angle?
|
||
</span>
|
||
<span class="material-symbols-outlined faq-icon text-primary-container transition-transform duration-300">expand_more</span>
|
||
</button>
|
||
<div class="faq-content hidden px-space-md pb-space-md pt-0 text-on-surface-variant font-body-md text-body-md">
|
||
<p>
|
||
MotorSignal executes a dynamic gravity-vector resolve during the first 30 seconds of rolling motion above 15 km/h. By analyzing the orthogonal relationship between forward longitudinal acceleration (braking and throttle) and downward gravitational force, our algorithm derives the device’s orientation quaternion. This entirely eliminates the need for rigid perpendicular phone placement on your cockpit or clip-ons.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<!-- FAQ Item 2 -->
|
||
<div class="faq-item rounded-lg bg-surface-container-low overflow-hidden transition-all duration-200">
|
||
<button aria-expanded="false" class="faq-trigger w-full p-space-md flex items-center justify-between text-left hover:bg-surface-container transition-colors" type="button">
|
||
<span class="font-headline-sm text-headline-sm text-on-surface text-base sm:text-lg">
|
||
2. Will high-frequency single-cylinder or V-Twin motorcycle vibrations damage the sensor fusion output?
|
||
</span>
|
||
<span class="material-symbols-outlined faq-icon text-primary-container transition-transform duration-300">expand_more</span>
|
||
</button>
|
||
<div class="faq-content hidden px-space-md pb-space-md pt-0 text-on-surface-variant font-body-md text-body-md">
|
||
<p>
|
||
Single-cylinder thumper motors and big twin engines emit severe harmonic resonance between 70 Hz and 180 Hz that normally saturate smartphone MEMS gyroscopes. MotorSignal routes all raw IMU data through a digital 4th-order low-pass Butterworth filter configured with a sharp 22 Hz cutoff. Engine harmonics and road buzz are discarded before reaching the Kalman trajectory pipeline, ensuring crisp, flutter-free lean angle curves.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<!-- FAQ Item 3 -->
|
||
<div class="faq-item rounded-lg bg-surface-container-low overflow-hidden transition-all duration-200">
|
||
<button aria-expanded="false" class="faq-trigger w-full p-space-md flex items-center justify-between text-left hover:bg-surface-container transition-colors" type="button">
|
||
<span class="font-headline-sm text-headline-sm text-on-surface text-base sm:text-lg">
|
||
3. Which satellite constellations are utilized, and what happens under heavy forest canopy?
|
||
</span>
|
||
<span class="material-symbols-outlined faq-icon text-primary-container transition-transform duration-300">expand_more</span>
|
||
</button>
|
||
<div class="faq-content hidden px-space-md pb-space-md pt-0 text-on-surface-variant font-body-md text-body-md">
|
||
<p>
|
||
MotorSignal taps into dual-frequency GNSS radios simultaneously tracking GPS (USA L1/L5), GLONASS (Russia G1), Galileo (EU E1/E5a), and BeiDou (China B1/B2a). If tall canyon walls or dense redwood canopies drop satellite lock below 4 birds, our Dead-Reckoning IMU odometry steps in instantaneously, maintaining sub-meter trajectory continuity for up to 45 seconds without drift.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<!-- FAQ Item 4 -->
|
||
<div class="faq-item rounded-lg bg-surface-container-low overflow-hidden transition-all duration-200">
|
||
<button aria-expanded="false" class="faq-trigger w-full p-space-md flex items-center justify-between text-left hover:bg-surface-container transition-colors" type="button">
|
||
<span class="font-headline-sm text-headline-sm text-on-surface text-base sm:text-lg">
|
||
4. Can MotorSignal integrate with my motorcycle’s factory CAN-Bus or aftermarket OBD-II port?
|
||
</span>
|
||
<span class="material-symbols-outlined faq-icon text-primary-container transition-transform duration-300">expand_more</span>
|
||
</button>
|
||
<div class="faq-content hidden px-space-md pb-space-md pt-0 text-on-surface-variant font-body-md text-body-md">
|
||
<p>
|
||
Yes. Through our certified BLE 5.3 CAN bridge adapter (or standard ELM327 OBD-II dongles), MotorSignal captures throttle position percentage (TPS), front wheel speed vs rear wheel slip, gear indicator, engine RPM, and coolant temperature at up to 50 Hz. This data is matched synchronously with your IMU lean angle to unlock true MotoGP-level telemetry traces.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<!-- FAQ Item 5 -->
|
||
<div class="faq-item rounded-lg bg-surface-container-low overflow-hidden transition-all duration-200">
|
||
<button aria-expanded="false" class="faq-trigger w-full p-space-md flex items-center justify-between text-left hover:bg-surface-container transition-colors" type="button">
|
||
<span class="font-headline-sm text-headline-sm text-on-surface text-base sm:text-lg">
|
||
5. How is user privacy handled when high-speed track telemetry is synchronized to the cloud?
|
||
</span>
|
||
<span class="material-symbols-outlined faq-icon text-primary-container transition-transform duration-300">expand_more</span>
|
||
</button>
|
||
<div class="faq-content hidden px-space-md pb-space-md pt-0 text-on-surface-variant font-body-md text-body-md">
|
||
<p>
|
||
Telemetry files stored in Cloudflare R2 are client-side encrypted using AES-GCM-256 before transmission. MotorSignal features an automated "Geo-Privacy Scrubber" that masks the first and last 800 meters of any recorded session (protecting home garage locations). Furthermore, speed and acceleration stamps can be stripped prior to sharing routes with community packs.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- Interactive Call To Action -->
|
||
<section class="w-full bg-surface-container-low py-space-xl px-gutter-lg">
|
||
<div class="max-w-4xl mx-auto rounded-2xl bg-surface-container p-space-lg text-center flex flex-col items-center gap-space-md shadow-[0_0_32px_rgba(0,229,255,0.15)] relative overflow-hidden">
|
||
<div class="w-16 h-1 rounded-full bg-primary-container mx-auto"></div>
|
||
<div class="flex flex-col gap-space-xs">
|
||
<h3 class="font-headline-lg text-headline-lg text-on-surface uppercase">
|
||
Ready to benchmark your motorcycle?
|
||
</h3>
|
||
<p class="font-body-md text-body-md text-on-surface-variant max-w-lg mx-auto">
|
||
Equip the cockpit HUD trusted by competitive supersport riders, endurance rally champions, and canyon enthusiasts worldwide.
|
||
</p>
|
||
</div>
|
||
<div class="flex flex-wrap items-center justify-center gap-space-sm pt-space-xs">
|
||
<a class="h-12 px-space-lg rounded-lg bg-primary-container text-on-primary font-label-data text-label-data uppercase tracking-wider shadow-[0_0_18px_rgba(0,229,255,0.4)] hover:bg-primary inline-flex items-center gap-2 transition-all" href="#">
|
||
<span class="material-symbols-outlined">rocket_launch</span>
|
||
Install MotorSignal Pro
|
||
</a>
|
||
<a class="h-12 px-space-md rounded-lg bg-surface-container-high text-on-surface font-label-data text-label-data uppercase tracking-wider hover:bg-surface-bright inline-flex items-center gap-2 transition-all" href="#">
|
||
<span class="material-symbols-outlined">terminal</span>
|
||
View SDK Documentation
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<!-- Inline Interactive Script for Accordion & Whitepaper Trigger -->
|
||
<script>
|
||
// Accordion Logic
|
||
document.querySelectorAll('.faq-trigger').forEach((trigger) => {
|
||
trigger.addEventListener('click', () => {
|
||
const item = trigger.closest('.faq-item');
|
||
const content = item.querySelector('.faq-content');
|
||
const icon = trigger.querySelector('.faq-icon');
|
||
const isExpanded = trigger.getAttribute('aria-expanded') === 'true';
|
||
|
||
// Toggle state
|
||
if (isExpanded) {
|
||
content.classList.add('hidden');
|
||
trigger.setAttribute('aria-expanded', 'false');
|
||
icon.style.transform = 'rotate(0deg)';
|
||
} else {
|
||
content.classList.remove('hidden');
|
||
trigger.setAttribute('aria-expanded', 'true');
|
||
icon.style.transform = 'rotate(180deg)';
|
||
}
|
||
});
|
||
});
|
||
|
||
// Whitepaper Download simulation feedback
|
||
const whitepaperBtn = document.getElementById('btn-download-whitepaper');
|
||
if (whitepaperBtn) {
|
||
whitepaperBtn.addEventListener('click', () => {
|
||
const originalText = whitepaperBtn.innerHTML;
|
||
whitepaperBtn.innerHTML = '<span class="material-symbols-outlined text-base animate-spin">refresh</span> PREPARING ARCH-V4.8.PDF...';
|
||
whitepaperBtn.classList.add('opacity-80');
|
||
setTimeout(() => {
|
||
whitepaperBtn.innerHTML = '<span class="material-symbols-outlined text-base">check_circle</span> DOWNLOAD STARTED';
|
||
setTimeout(() => {
|
||
whitepaperBtn.innerHTML = originalText;
|
||
whitepaperBtn.classList.remove('opacity-80');
|
||
}, 2200);
|
||
}, 1200);
|
||
});
|
||
}
|
||
</script></main><footer class="w-full bg-surface-container-lowest pt-space-xl pb-space-lg"><div class="w-full px-gutter-lg"><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-space-lg pb-space-lg"><div class="lg:col-span-2 flex flex-col gap-space-sm"><div class="flex items-center gap-space-sm"><span class="font-headline-sm text-headline-sm uppercase tracking-wider text-primary">MotorSignal</span><span class="px-space-xs py-space-xs rounded font-label-caption text-label-caption bg-surface-container text-primary-container uppercase">Precision Cockpit HUD</span></div><p class="font-body-md text-body-md text-on-surface-variant max-w-md">Next-generation telemetry engine engineered for track day racers, aggressive sport riders, and synchronized pack navigation with real-time IMU lean angle computation.</p><div class="flex items-center gap-space-sm pt-space-xs"><span class="w-2.5 h-2.5 rounded-full bg-primary-container shadow-[0_0_8px_#00e5ff]"></span><span class="font-label-data text-label-data text-on-surface uppercase">Telemetry Core v4.8.2 Active</span></div></div><div class="flex flex-col gap-space-sm"><span class="font-label-data text-label-data text-primary uppercase tracking-wider">Platform Modules</span><ul class="flex flex-col gap-space-xs"><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">Telemetry Specs</li><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">Curvy Routes</li><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">Pack Radar</li><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">Draggy Launch</li></ul></div><div class="flex flex-col gap-space-sm"><span class="font-label-data text-label-data text-primary uppercase tracking-wider">Ecosystem</span><ul class="flex flex-col gap-space-xs"><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">OBD-II CANbus Link</li><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">IMU 6-Axis Calibration</li><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">Corner Trajectory AI</li><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">G-Force Mapping</li></ul></div><div class="flex flex-col gap-space-sm"><span class="font-label-data text-label-data text-primary uppercase tracking-wider">Governance</span><ul class="flex flex-col gap-space-xs"><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">Privacy Architecture</li><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">Telemetry Terms</li><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">Safety Disclaimers</li><li class="font-body-md text-body-md text-on-surface-variant hover:text-on-surface transition-colors cursor-pointer">Mesh Node Protocol</li></ul></div></div><div class="pt-space-md flex flex-col md:flex-row items-center justify-between gap-space-sm"><span class="font-label-caption text-label-caption text-on-surface-variant uppercase">© 2025 MotorSignal Technologies Inc. Built for zero-cognitive lag.</span><div class="flex items-center gap-space-md"><span class="font-label-caption text-label-caption text-on-surface-variant uppercase">All nodes operational</span><span class="font-label-data text-label-data text-primary">99.98% Latency <14ms</span></div></div></div></footer></body></html> |