**[REVISITED] This robot identifies terrain by listening to its own vibrations (and itβs a beautiful use case for ML)**
You guys β I keep coming back to this one because it shows exactly where machine learning shines brightest, and the hardware setup is so elegant. Think about how you'd react if your car didn't know whether it was on snow or gravel; you'd have to manually set traction modes, which can be a safety issue at speed. Dan Velarde built GRIP (Ground Recognition Intelligence Platform) to automate this for robots β not with expensive sensors but with an IMU and microphone! It classifies four surfaces: normal flat ground, snow, gravel, and grass, then adjusts motor output on the fly. The mechanism is brilliantly simple in concept: it reads chassis vibration and acoustic signatures through a microphone, feeds them into an Arduino UNO Q, and lets the board decide what's under the wheels so you don't have to manually toggle settings during operation.
The reason this is such a smart approach instead of just writing code for each surface is that sensor data on these surfaces is messy β there are no clean thresholds between 'muddy grass' and 'dirty gravel' that you can hand-code, which is precisely the kind of problem machine learning was designed to solve. Velarde used Edge Impulse to build a classifier; he rode around over snow, gravel, grass, and flat ground while recording IMU readings and audio at each, creating the training set by capturing actual real-world variability rather than idealized models. The deployed model then compares incoming live data against those learned signatures in near realtime on the UNO Q. It's one of those cases where picking the right problem for a neural network makes everything click β unstructured sensor patterns that are hard to describe with rules but easy for a classifier to separate.
And the numbers tell the story well. Snow classification hit 91.4% accuracy, which is fantastic because snow has very distinct acoustic and vibrational signatures on an IMU. Gravel was tougher at 73.8%, still solid but showing that less-defined boundaries make it harder for any model β even a trained one. That's not a failure though; 74% is plenty of signal to tell the robot, 'Hey, this isn't flat ground,' so you can ramp up torque accordingly and keep moving safely instead of spinning out. I love that GRIP doesn't need high-end LIDAR or vision β just sound and vibration, feeding into a tiny microcontroller with Edge Impulse doing the heavy lifting. It turns an ambiguous sensor mess into actionable control decisions without overcomplicating the hardware stack.
Source: https://blog.arduino.cc/2026/06/09/this-robot-can-identify-terrain-based-on-the-vibrations-its-causes/
You guys β I keep coming back to this one because it shows exactly where machine learning shines brightest, and the hardware setup is so elegant. Think about how you'd react if your car didn't know whether it was on snow or gravel; you'd have to manually set traction modes, which can be a safety issue at speed. Dan Velarde built GRIP (Ground Recognition Intelligence Platform) to automate this for robots β not with expensive sensors but with an IMU and microphone! It classifies four surfaces: normal flat ground, snow, gravel, and grass, then adjusts motor output on the fly. The mechanism is brilliantly simple in concept: it reads chassis vibration and acoustic signatures through a microphone, feeds them into an Arduino UNO Q, and lets the board decide what's under the wheels so you don't have to manually toggle settings during operation.
The reason this is such a smart approach instead of just writing code for each surface is that sensor data on these surfaces is messy β there are no clean thresholds between 'muddy grass' and 'dirty gravel' that you can hand-code, which is precisely the kind of problem machine learning was designed to solve. Velarde used Edge Impulse to build a classifier; he rode around over snow, gravel, grass, and flat ground while recording IMU readings and audio at each, creating the training set by capturing actual real-world variability rather than idealized models. The deployed model then compares incoming live data against those learned signatures in near realtime on the UNO Q. It's one of those cases where picking the right problem for a neural network makes everything click β unstructured sensor patterns that are hard to describe with rules but easy for a classifier to separate.
And the numbers tell the story well. Snow classification hit 91.4% accuracy, which is fantastic because snow has very distinct acoustic and vibrational signatures on an IMU. Gravel was tougher at 73.8%, still solid but showing that less-defined boundaries make it harder for any model β even a trained one. That's not a failure though; 74% is plenty of signal to tell the robot, 'Hey, this isn't flat ground,' so you can ramp up torque accordingly and keep moving safely instead of spinning out. I love that GRIP doesn't need high-end LIDAR or vision β just sound and vibration, feeding into a tiny microcontroller with Edge Impulse doing the heavy lifting. It turns an ambiguous sensor mess into actionable control decisions without overcomplicating the hardware stack.
Source: https://blog.arduino.cc/2026/06/09/this-robot-can-identify-terrain-based-on-the-vibrations-its-causes/