<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[vertex]]></title><description><![CDATA[progress, thoughts, and feelings]]></description><link>https://lab.ridevertex.com</link><image><url>https://substackcdn.com/image/fetch/$s_!LXf8!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eab181b-2922-416d-80c4-18b34a343b56_550x550.png</url><title>vertex</title><link>https://lab.ridevertex.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 04 May 2026 11:26:07 GMT</lastBuildDate><atom:link href="https://lab.ridevertex.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ben Hawthorne]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[hawthorneben@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[hawthorneben@substack.com]]></itunes:email><itunes:name><![CDATA[Ben Hawthorne]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ben Hawthorne]]></itunes:author><googleplay:owner><![CDATA[hawthorneben@substack.com]]></googleplay:owner><googleplay:email><![CDATA[hawthorneben@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ben Hawthorne]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Data without context is just high fidelity trivia]]></title><description><![CDATA[It&#8217;s all relative anyways]]></description><link>https://lab.ridevertex.com/p/data-without-context-is-just-high</link><guid isPermaLink="false">https://lab.ridevertex.com/p/data-without-context-is-just-high</guid><dc:creator><![CDATA[Ben Hawthorne]]></dc:creator><pubDate>Wed, 14 Jan 2026 17:17:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fae4e50a-09d7-4f06-a002-8449c609d5a9_2688x1602.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>It&#8217;s all relative anyways</strong></p><p>I&#8217;m willing to bet if you walked outside you couldn&#8217;t tell me the temperature to within 5 degrees. Our bodies are built to detect change<em>, </em>not state; we don&#8217;t know the temperature of the room, only that it&#8217;s warmer than the hallway. You can feel the elevator accelerate, but once it&#8217;s moving you have no idea how fast you&#8217;re actually going. We&#8217;re not adapted to step out and say &#8216;Oh, it&#8217;s 36.7 degrees, I should go back and grab a coat&#8217;. Instead you open the door, sense a rapid heat transfer from your skin and lungs, and your body signals a critical thermal gradient. Panic. This fact may be intuitive, but it conflicts with the instinct of the engineer who seeks to objectively quantify everything.</p><p>This reality is currently ruining <a href="https://lab.ridevertex.com/p/im-building-a-physics-engine-for">my bike physics modeling project</a>. I have reached the &#8216;valley of death&#8217; for hardware projects: I can measure everything, but I understand nothing. When I first strapped an IMU (inertial measurement unit) to my bike, the telemetry looked like garbage. The raw acceleration and gyroscope charts looked like fuzzy caterpillars with wild, rapid oscillations on all axes drowning out any visible signal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pJUo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pJUo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png 424w, https://substackcdn.com/image/fetch/$s_!pJUo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png 848w, https://substackcdn.com/image/fetch/$s_!pJUo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!pJUo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pJUo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png" width="1456" height="835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:835,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pJUo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png 424w, https://substackcdn.com/image/fetch/$s_!pJUo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png 848w, https://substackcdn.com/image/fetch/$s_!pJUo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!pJUo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d4f8113-e5dc-47a1-8ee9-500fd0995c51_1910x1096.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>raw accelerometer data from an early run, should be a line graph</em></figcaption></figure></div><p>The consumer grade chip I&#8217;m using has built in sensor fusion, giving me a calculated &#8220;orientation&#8221; output that <em>should</em> represent the roll/pitch/yaw of the bike at any given point in time. It looks right initially, it can track turns and leans, however after 10 minutes of flat riding it was telling me the bike was climbing an SF steep street. This chip is designed for smartphones or VR headsets, and I&#8217;m asking a lot of it by trying to discern high frequency road noise from steering corrections.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wmNt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wmNt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png 424w, https://substackcdn.com/image/fetch/$s_!wmNt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png 848w, https://substackcdn.com/image/fetch/$s_!wmNt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!wmNt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wmNt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png" width="1456" height="840" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:840,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wmNt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png 424w, https://substackcdn.com/image/fetch/$s_!wmNt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png 848w, https://substackcdn.com/image/fetch/$s_!wmNt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!wmNt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df38885-85ba-4d65-b55b-46d5044936c4_1900x1096.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>roll and pitch charts while crossing the golden gate bridge, events visible but baseline drift is obvious</em></figcaption></figure></div><p><strong>Fix it in post</strong></p><p>The engineering instinct is to chase objective ground truth. The data was incredibly noisy with a weak signal buried deep, the obvious solution was to reduce the noise floor with vibration damping to tease out the signal better. This is directionally correct, but it became a rabbit hole. I tried Sorbothane rubber damping. I tried software low-pass filters. I even designed and ordered some custom machined brass counterweights to mass-load the sensor, hoping to mechanically filter the vibrations. While the damping smoothed out the fuzzy &#8216;caterpillars&#8217; (high-frequency noise), it was powerless against the silent, accumulating drift (bias instability) that gradually convinced the sensor that &#8216;down&#8217; was &#8216;forward&#8217;. I spent weeks engineering workarounds to save a $30 chip from itself. It helped, but there was no magic bullet.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GIT_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GIT_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GIT_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GIT_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GIT_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GIT_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg" width="1456" height="1096" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1096,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GIT_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GIT_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GIT_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GIT_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F634d5af0-6ba5-4502-a544-214ccac5d4cc_2048x1542.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>custom brass counterweights of varying thicknesses</em></figcaption></figure></div><p>The term &#8220;sensor fusion&#8221; can mean any number of trivial or impossible problem sets. It could mean a simple overlay of your speed on the elevation graph (like strava does), or it can mean graduate level data processing pipelines that dynamically compute &#8216;trust&#8217; of each input based on world modeling and recursive looping. I realized I wasn&#8217;t going to beat the hardware engineers at Bosch who have been tuning this chip for decades without turning this side quest into a PhD thesis.</p><p>The challenge now is how to evaluate the data. I see a sustained drop in the &#8220;roll&#8221; axis right before a corner (that&#8217;s a lean event!), but there&#8217;s a corresponding increase in the pitch axis data because I was going downhill when I did it. So how much did I actually lean the bike? Do I sum or subtract them, what about lateral g forces? This is all &#8216;correct and objective&#8217; truth, but it&#8217;s a fundamentally flawed approach. Orientation lies because I&#8217;m asking a cheap piece of silicon to find &#8220;down&#8221; while I&#8217;m subjecting it to cornering forces that pull &#8220;down&#8221; sideways.</p><p>I&#8217;m asking someone to walk in a straight line on the deck of a ship in a storm. Eventually, they&#8217;re going to stumble, and what does &#8216;straight&#8217; mean anyways?</p><p><strong>Data without context is just high fidelity trivia</strong></p><p>I have a highly optimized, fully indexed database containing half a million samples of noise. So what? Physical damping raised the signal floor, but a carbon road bike at 30mph is essentially a tuning fork. I can stare at my &#8216;roll&#8217; chart and see each lean, the data is there. However, if I create a basic turn detector algorithm (rate of change of roll &gt; x), it will give me countless false positives when I hesitate or correct. Also, if I want to know how much I leaned then I have to compare the peak against a baseline, but my baseline is drifting because the sensor is confused.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T48z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T48z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png 424w, https://substackcdn.com/image/fetch/$s_!T48z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png 848w, https://substackcdn.com/image/fetch/$s_!T48z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png 1272w, https://substackcdn.com/image/fetch/$s_!T48z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T48z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png" width="1456" height="1429" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1429,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T48z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png 424w, https://substackcdn.com/image/fetch/$s_!T48z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png 848w, https://substackcdn.com/image/fetch/$s_!T48z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png 1272w, https://substackcdn.com/image/fetch/$s_!T48z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea77bb9-f8aa-4b40-aaf7-4a166b3c67c9_2030x1992.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>I can compare IMU data to GPS location, so what?</em></figcaption></figure></div><p>I will continue to improve the hardware, but when I think about the value here, it&#8217;s not whether I &#8220;leaned 37 degrees at the apex&#8221;, it&#8217;s if I &#8220;leaned more than yesterday&#8221;, or if I &#8216;let off the brakes at the same point as my racer friend&#8217;. This takes me back to my discussion of temperature, I&#8217;ve realized I don&#8217;t need to build a thermometer. I don&#8217;t need to know the precise value to know I&#8217;m chickening out from taking the fastest line, I just need a better reference frame.</p><p>I&#8217;ve been trying to grade my own homework, staring at the data in a vacuum and trying to intuit &#8220;good riding&#8221; from noisy gyroscopes. A 0.4g braking event is just a number; it implies force, but it doesn&#8217;t imply intent, and it certainly doesn&#8217;t tell me if that force was necessary. I need to zoom out and change the reference frame, instead of chasing the delusion of absolute truth in my Euler angles, instead I plan to chase better.</p><p>For example, if I want to improve my descending performance, the most valuable data point isn&#8217;t the turn itself, it&#8217;s the silence before it. I expect the drift to ruin the absolute cornering data, but the accelerometer is perfect at detecting the &#8220;coasting gap&#8221;, or the hesitation time between letting off the brakes and initiating the turn. That 0.5 second gap is pure fear, and no amount of sensor drift can hide it.</p><p>All of that to say: I&#8217;m planning to strap a unit to one of my much more experienced friends, someone significantly faster and smoother than me, and we&#8217;re going to ride the same descent, on the same hardware, seconds apart. The only way to turn noise into insight is to overlay my hesitation against their confidence, and see exactly where the gap lies.</p><p>Ben</p>]]></content:encoded></item><item><title><![CDATA[I'm building a physics engine for my bike because Strava treats me like a point mass]]></title><description><![CDATA[In the pursuit of less power]]></description><link>https://lab.ridevertex.com/p/im-building-a-physics-engine-for</link><guid isPermaLink="false">https://lab.ridevertex.com/p/im-building-a-physics-engine-for</guid><dc:creator><![CDATA[Ben Hawthorne]]></dc:creator><pubDate>Mon, 24 Nov 2025 17:10:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WJBN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>In the pursuit of less power</strong></p><p>Why didn&#8217;t evolution invent wheels? We could talk about how an axle fundamentally doesn&#8217;t work within a circulatory system, or the lack of useful intermediates, and these are great (correct) reasons that it didn&#8217;t; but it should&#8217;ve. Evolution is an efficiency optimization engine, and wheels are the most efficient means of motion. The human body at rest runs on a (relatively) minuscule 100 watts, survival of the &#8216;fittest&#8217; usually selects those who can perform the most work for the least input, and humans excel at efficiency even <a href="https://www.scientificamerican.com/article/a-human-on-a-bicycle-is-among-the-most-efficient-forms-of-travel-in-the/">compared to other mammals</a>. The machines we invent don&#8217;t even come close to the energy efficiency of human metabolism, save for one! The bicycle, as conceived in the early 19th century (tubular frame, two wheels, chain/direct drive from the feet), unlocked transportation efficiency never seen before. It certainly varies by bike and individual, but bicycles are widely considered the <em>most </em>efficient means of transportation, converting roughly 97-99% of the human energy output at the feet into linear motion.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WJBN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WJBN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WJBN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WJBN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WJBN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WJBN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg" width="1300" height="1019" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1019,&quot;width&quot;:1300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WJBN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WJBN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WJBN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WJBN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feecaeed2-5c83-41b1-9826-80eda455d30d_1300x1019.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Flying blind</strong></p><p>As an engineer (swe, so take it how you will) I&#8217;ve fixated on efficiency in every aspect of my life, and cycling enables me to take that to an unhealthy degree. I&#8217;ve got the GPS, I&#8217;ve got the power meter, I&#8217;ve got the optimal glucose/fructose/sodium ratio in my bottle, but I still don&#8217;t feel like I have visibility into how <em>well</em> I&#8217;m riding. The descent down the back side of Hawk Hill still terrifies me, the grades and corners are well within my ability, but the exposure of the Pacific Ocean on the other side of the road turns me into a senior citizen trying to make an unprotected left. Descending is ultimately a confidence game, and that comes with putting in the reps, but it also comes with understanding your <em>limits</em>.</p><p>I obsess over the data that&#8217;s already available to me, real time metrics help me gauge effort at the start of the climb, post ride analysis helps my recovery and level sets my goals. I also love the data free rides, enjoying the sun, feeling the wind, and chatting with friends. However, I see a very large, specific, gap in how cyclists are understanding their ride performance. Imagine an F1 team that knows exactly the horsepower of their car and precise lap times, but no visibility into suspension performance, cornering Gs, or braking; if all teams had the same data it would be the same (slower) league, but if one team had that extra information, they would optimize very differently, train differently, and ultimately go faster. Cycling computers (and Strava et al by proxy) simply treat the rider + bike as a point mass, taking one or more inputs (power, HR, cadence) and delivering one single output (GPS location: speed). What happens in between? Could you tell me why one descent is faster than another, or why I put out the same power output on that climb but went 15s faster the second time? There is a trove of complicated, fascinating, and understudied physics going on here.</p><p><strong>Do it the hard way</strong></p><p>I&#8217;m seeking to understand this missing physics, in part to get faster while avoiding improving my FTP, but fundamentally because I find it interesting. My first goal was to get real time grade (slope %) on my head unit as as the grade number you get from GPS is famously laggy. Grade is derived from vertical velocity over time, using a barometer but usually heavily smoothed to reduce noise. By the time the algorithm decides you are on a 10% grade, you are already 50 meters up the wall.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Alvg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Alvg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Alvg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Alvg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Alvg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Alvg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg" width="728" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1205,&quot;width&quot;:1205,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:355482,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Alvg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Alvg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Alvg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Alvg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b110e6-a21b-4181-9a67-2844b3e3cb86_1205x1205.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The obvious answer (attach a basic IMU to the frame, stream to head unit over Bluetooth) was a non-starter: the protocols are locked down and &#8216;grade&#8217; isn&#8217;t a standard profile. So I had to do it the hard way.. I got to thinking, a standard IMU has 9 degrees of freedom (3 for acceleration, gyroscope, and magnetometer), and the hobby boards even have built in sensor fusion! There is far more data here than grade, I could see braking smoothness, body position stability, traction limits, and (infinitely) more if I were to combine it with the existing data. So I just said to myself: if I buy a 3D printer, learn CAD, learn to solder, write some firmware, write an android app, build async cloud processing, understand sensor fusion and signal processing, all while maintaining my day job, then I might be able to fixate on more numbers that tell me I&#8217;m slow, or maybe, finally tell me <em>why</em>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rFRd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rFRd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rFRd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rFRd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rFRd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rFRd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg" width="728" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1415,&quot;width&quot;:1415,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:267590,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rFRd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rFRd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rFRd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rFRd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd33d2e68-f8ab-4d1b-be64-018845548679_1415x1415.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So I&#8217;m here building, debugging, burning myself, short circuiting boards I don&#8217;t understand, and leveraging AI to help me do the busy work (this blog will be entirely my own voice, excessive colons and parentheticals included). As of lately, vibration damping is the hard problem of the hour. Early data showed overwhelming noise from road vibrations and subsequent gyroscope saturation (making fusion pointless), so I&#8217;m testing various materials (sorbothane, Kyosho Zeal) to address the noise at the road frequency band (40-100hz). If you&#8217;ve dealt with a similar problem, or have any suggestions, I&#8217;d love to hear about it.</p><p>I&#8217;m an engineer, not a writer. I&#8217;m building this in the open because I want to create something, find the data, fail fast, and have fun along the way. If you&#8217;re interested in the physics of why we stay upright and how to go faster, follow along.</p><p>Ben</p>]]></content:encoded></item></channel></rss>