{"slug": "i-built-a-mmwave-material-classification-radar", "title": "I built a mmWave material classification radar", "summary": "A recent engineering graduate built a millimeter-wave radar prototype that uses FMCW technology and a neural network to classify building materials, specifically targeting asbestos detection. The project, which took six months, combined custom DSP algorithms with a CNN to analyze electromagnetic signatures, but failed to secure funding for commercialization.", "body_md": "2025 · [radar, rf, dsp, embedded, beamforming, startup]\n\nSoftware is now a commodity thanks to Claude Code. So the next step is obviously hardware. I spent the last 6 months on building a hardware startup, which was fucking hard.\n\nI made a radar that could classify materials, and this is the story of how I did it as my \"end of studies\" project. By the way, the project never ended (as you will see down this article, because of a lack of funding)\n\nI live in Europe, where asbestos is a huge and common pain across every country here. That stuff fills walls, and requires people to come at your place to tell you if you have asbestos contaminated materials in your building. If so, you might have been breathing poison since you were a kid. Asbestos gives you cancer, and can fuck you up pretty bad.\n\nThe traditional ways of detecting it, is basically to pick a wall sample, send it to a lab, and they tell you if you have asbestos in your walls. Of course, there a lot of intermediaries that come into place to catch a good amount of money based on regulations and your fear of getting poisoned. So a 1$ analysis becomes a 60$ one to the end payer, and when you have to make tens of them, price skyrockets.\n\nSo my project was to build a radar that detects asbestos for you. It's based of material sciences, and wave physics, which happens to be my areas of expertise (recent eng grad). There I had my device plan : make an asbestos sensing radar.\n\nThen, I had to design electronics, so because I am not a bozo, and I hope you are not one either, I ordered dev boards to quickly prototype. In my case : a Texas instrument IWRL6432 BOOST, and an ESP32 dev kit. Assembled them, and started tinkering with DSP algorithms to detect materials.\n\nBuilt this test bench to test out the electromagnetic response of materials to my special material radar. I could hot swap materials and tighten materials to test out my device.\n\ntraining the classifier\n\nI finalised my approach with capon beamforming to get a density spectre, which I fed out to a neural network. And this allowed me to classify material surfaces, which under the \"same surface, same layer\" material hypothesis and \"material change is sudden and discontinuous\", would then allow me to say \"hey this entire layer is made out of x,y,z material.\"\n\nThe radar is FMCW : it doesn't emit a single tone, it sweeps its frequency upward over time (chirp). The whole job of the DSP chain is to turn the echoes of those chirps into a material signature. Here is how it works :\n\nThe output of all this is a per-range, per-angle density \"spectre\" the electromagnetic fingerprint of whatever surface sits in front of the radar. That spectre is exactly the tensor I fed to the neural network to classify the material.\n\nscanning a surface with the radar — the density spectre, before the AI step\n\nI spent two months on this, getting the toolchain right, and on the infamous compile flash debug loop of embedded firmware.\n\nSince everyone is using AI right now, might as well put some AI in your invention to put new capabilities that you could never before. So what we did is put neural network that ingests the output of the DSP chain, and outputs a class of material.\n\nThis model actually \"learns\" the electromagnetic properties of materials (epsilon' and epsilon''), it's just a classic CNN.\n\nThen, came the mechanical casings, started making a look-a-like, when I finally came to the conclusion that designing around the devboards was a way better approach.\n\nproducing the mechanical casing\n\nI also went into the rabbit hole of RF prototyping. Ask anyone, they will tell you that RF is straight up black magic. PDEs, Physics, and Chaotic systems, all packed in a single field. So I started modeling my antennas to capture what was happening in my circuit to reverse engineer it.\n\nHere is how I optimized the antenna shapes so that they would have the same characteristics as the ones in the Texas Instrument's one.\n\nHad a parametric simulation I coded inside OpenEMS, which calculated the antenna's characteristics, and then, by extrapolating the transfer functions from TX to RX (Mimo array), I could use convolution operations to simulate how my chirps were emitted, reflected on the surface, and received by the antennas.\n\nfull chirp emission / reflection / reception simulation\n\nport voltages over time, simulated\n\nI managed to get simulated signatures that were close enough to real measured outputs. And then, it was just a question of getting my hands on materials that contained asbestos.\n\nFirstly, I used openEMS, an open source alternative to Ansys HFSS (which costs basically a whole kidney to get a license). It uses FDTD simulation to model how the Maxwell equations propagate in materials.\n\nMore info about FDTD here : [en.wikipedia.org/wiki/Finite-difference_time-domain_method](https://en.wikipedia.org/wiki/Finite-difference_time-domain_method) (I used the Yee method).\n\nHowever, the problem of openEMS is that it doesn't run on GPUs, so you better reduce the size of your simulation (both in the time and space domain) to get results fast, and iterate on it (notably if you are doing a parametric optimization to find the dimensions of your antennas :) ).\n\nSo how did I make fast simulations ? I \"cheated a bit\" : I only calculated the transfer function from TX to RX, and then I used convolution operations to simulate how the simulation would behave if I emitted a chirp, reflected it on a surface, and received it back. This way, I could reduce the simulation time from 1h to 2 minutes on my PC.\n\nA little \"Gotcha\" : when you want to get the transfer function (this is good signal theory), send a dirac pulse, and you should get the transfer function of the system you are trying to identify. However, a dirac pulse makes the sim go unstable (it just can't converge), therefore, instead of sending a dirac pulse, send a gaussian pulse, and then, in the frequency domain, divide the output by the input to get the transfer function. (works in a funny way with MIMO because it's some sort of matricial division, but it works).\n\nAnd so, at first I sent out gaussian pulses, and if you did signal theory you know that the fourier transform of a gaussian is a gaussian, but when looking at the output of the simulation, I was getting these weird sinusoidal shapes. Well, also according to signal theory, if the gaussian is NOT centered on zero, you actually get a sinusoidal shape, and the gaussian is just the envelope of that sinusoid.\n\nUsed the bode diagram to then convolve the chirp with the transfer function, and get a simulated received signal.\n\nLooking at the results :\n\nAsbestos is not really a material as a whole, it is a mineral that looks like a fiber, which is tough to define because there is multiple families of asbestos. The essential part to understand is that it is made out of tiny shards that if breathed can cause severe inflammations in your lungs, and damages it very fast.\n\nMore info in this video:\n\n[https://www.youtube.com/watch?v=cMx139eTxoc&t=4s](https://www.youtube.com/watch?v=cMx139eTxoc&t=4s)\n\nWhen asbestos is present in a material, it changes it's electromagnetic properties (it's epsilon' and epsilon''), however the big question to answer was : is the radar sensitive enough to tell the difference consistently between a material, and it's same counterpart with asbestos shards and at what concentration ?\n\nWe showed a POC of the material sensing radar, here is the video :\n\nThe classifier was trained on the beamforming signatures. Here's how accuracy held up across multiple material layers:\n\nHere is the dict that states which materials are classified : class_dict = { \"wood_alu\":0, \"wood_book\":1, \"wood_stone\":2, \"wood_plastique\":3, \"stone_alu\":4, \"stone_wood\":5, \"stone_book\":6, \"stone_plastique\":7, \"stone_plexiglas\":8, }\n\nSize of the dataset : 500 Kb of Spectral data in each class, in different environments and orientations.\n\nUnfortunately, due to a lack of funding, we stopped the project there. The details of the story, when I finally had demonstrated a POC, I went up to see customers, but I had a very hard time finding customers that believed in us, they didn't want to sign any LOI before they could get the product in their hands. They also wanted a product that had all European regulation clearances (yes my users were very skeptical). The fact that I had the POC didn't help that much.\n\nHowever, we achieved a lot of things : making the actual radar work on basic materials (wood, copper, aluminum, plastic, etc), and I also learned a lot about embedded firmware programming, designing a product, and trying to build a hardware startup.", "url": "https://wpnews.pro/news/i-built-a-mmwave-material-classification-radar", "canonical_source": "https://gauthier-lechevalier.com/radar", "published_at": "2026-06-30 17:29:36+00:00", "updated_at": "2026-06-30 17:50:53.569639+00:00", "lang": "en", "topics": ["machine-learning", "neural-networks"], "entities": ["Texas Instruments", "IWRL6432 BOOST", "ESP32", "Claude Code"], "alternates": {"html": "https://wpnews.pro/news/i-built-a-mmwave-material-classification-radar", "markdown": "https://wpnews.pro/news/i-built-a-mmwave-material-classification-radar.md", "text": "https://wpnews.pro/news/i-built-a-mmwave-material-classification-radar.txt", "jsonld": "https://wpnews.pro/news/i-built-a-mmwave-material-classification-radar.jsonld"}}