<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sensor Fusion &amp; Filtering on Embedded Systems Development</title><link>https://applied-ee.github.io/embedded/docs/sensor-integration/sensor-fusion-and-filtering/</link><description>Recent content in Sensor Fusion &amp; Filtering on Embedded Systems Development</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://applied-ee.github.io/embedded/docs/sensor-integration/sensor-fusion-and-filtering/index.xml" rel="self" type="application/rss+xml"/><item><title>Digital Filtering Basics (Moving Average, IIR, FIR)</title><link>https://applied-ee.github.io/embedded/docs/sensor-integration/sensor-fusion-and-filtering/digital-filtering-basics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/sensor-integration/sensor-fusion-and-filtering/digital-filtering-basics/</guid><description>&lt;h1 id="digital-filtering-basics-moving-average-iir-fir"&gt;Digital Filtering Basics (Moving Average, IIR, FIR)&lt;a class="anchor" href="#digital-filtering-basics-moving-average-iir-fir"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Raw sensor readings from ADCs, accelerometers, temperature sensors, and other peripherals contain noise — thermal noise from the sensor element, quantization noise from the ADC, electrical interference from switching regulators, and mechanical vibration coupling through the PCB. Digital filtering removes or attenuates this noise in firmware before the data reaches higher-level algorithms like sensor fusion or control loops. The choice of filter type determines the tradeoff between noise rejection, latency, memory usage, and computational cost — all of which matter on resource-constrained microcontrollers.&lt;/p&gt;</description></item><item><title>Complementary Filters</title><link>https://applied-ee.github.io/embedded/docs/sensor-integration/sensor-fusion-and-filtering/complementary-filters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/sensor-integration/sensor-fusion-and-filtering/complementary-filters/</guid><description>&lt;h1 id="complementary-filters"&gt;Complementary Filters&lt;a class="anchor" href="#complementary-filters"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A complementary filter fuses two sensor measurements of the same physical quantity by trusting each sensor in its reliable frequency band. The classic application is tilt estimation from a gyroscope and accelerometer: the gyroscope provides accurate short-term angle changes but drifts over time (low-frequency error), while the accelerometer provides a stable long-term gravity reference but is corrupted by vibration and linear acceleration (high-frequency error). Passing the gyroscope through a high-pass filter and the accelerometer through a low-pass filter, with the two filters summing to unity at all frequencies, produces an estimate that rejects both drift and vibration noise. The result is surprisingly effective for a filter that requires only a single tuning parameter.&lt;/p&gt;</description></item><item><title>Kalman Filtering for Embedded Systems</title><link>https://applied-ee.github.io/embedded/docs/sensor-integration/sensor-fusion-and-filtering/kalman-filtering/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/sensor-integration/sensor-fusion-and-filtering/kalman-filtering/</guid><description>&lt;h1 id="kalman-filtering-for-embedded-systems"&gt;Kalman Filtering for Embedded Systems&lt;a class="anchor" href="#kalman-filtering-for-embedded-systems"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The Kalman filter is an optimal recursive estimator that fuses a process model (how the system evolves over time) with noisy measurements to produce an estimate that is statistically better than either source alone. Unlike the complementary filter, which uses a fixed blending ratio, the Kalman filter dynamically adjusts how much it trusts the model versus the measurement based on the estimated uncertainty of each. This adaptive behavior makes it more accurate but also more complex to implement and tune.&lt;/p&gt;</description></item><item><title>AHRS &amp; Multi-Sensor Fusion</title><link>https://applied-ee.github.io/embedded/docs/sensor-integration/sensor-fusion-and-filtering/ahrs-and-multi-sensor-fusion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/sensor-integration/sensor-fusion-and-filtering/ahrs-and-multi-sensor-fusion/</guid><description>&lt;h1 id="ahrs--multi-sensor-fusion"&gt;AHRS &amp;amp; Multi-Sensor Fusion&lt;a class="anchor" href="#ahrs--multi-sensor-fusion"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;An AHRS (Attitude and Heading Reference System) fuses accelerometer, gyroscope, and magnetometer data to produce a continuous, drift-free estimate of 3D orientation — pitch, roll, and yaw. While complementary and Kalman filters handle one or two axes well, full 3D orientation requires algorithms that operate on quaternion representations to avoid the singularities (gimbal lock) inherent in Euler angles. The two most widely used open-source AHRS algorithms for embedded systems are the Madgwick filter and the Mahony filter, both designed to run efficiently on Cortex-M microcontrollers.&lt;/p&gt;</description></item></channel></rss>