-
Teaching it your touch (and giving the first one away)
06/15/2026 at 04:09 • 0 commentsWhen I first built the touch classifier, I trained the kNN on data recorded from the very first device. It worked well on that one unit.
Then I started building the others, in different housings, and the model fell apart. It took me a while to see why. The touch area is copper tape, and on every build the tape ends up sitting a little differently. Slightly different placement, slightly different contact, and the capacitance signal shifts just enough that the data from the first device doesn't hold for the next one.
I can't sit with every unit, hook it to a laptop, and recollect and retrain by hand. That doesn't scale, and it isn't how I wanted this to work anyway.
So the last thing I built for this version is on-device touch tuning. You record a few of your own sample touches right on the device, and the kNN improves from them. No laptop, no reflashing. Each MiniSoul calibrates to its own hardware, and to the hand that holds it.
It felt like the right note to finish on. The behaviour engine already lets each unit drift into its own personality over time. Now even the sensing starts fresh on every one and learns its owner from the first touch.
I also built it in all the colours now. Seeing the green, yellow and pink ones lined up together and finished, it finally looks like the thing I had in my head four months ago.
![]()
And that's where this version ends. The first MiniSoul goes to my sister, the way I planned from the start. This whole project began with a cat in my hostel that decided, for no reason I could name, to form a connection with me.
Check more here: https://minisoul.thesoulbot.com
Here's the 4 months put into 40 seconds
-
Making the updates over the air (OTA)
06/03/2026 at 15:24 • 0 commentsI've been working on MiniSoul with a deadline 10 days out, and I'm falling behind since I'm not getting enough time for it. Every small window of free time, I'm putting toward it.
Once I hand MiniSoul over, I can't change the hardware, but I can always update the software, as long as I build in the ability to update the firmware. That's what I focused on over the last week.
I know I won't catch every bug at once, and I might not ship every improvement I want. But this gives me peace of mind.If something breaks, I can fix it with a new release.
Here's a small visualization of how the flow works, made with Claude which gives a pretty good picture.
![]()
Check how it looks in action. -
Fitting everything into casing for the first time
05/20/2026 at 03:29 • 0 commentsIn my head the idea of fitting component into casing seems one of the easiest compared to other steps and I was horribly wromg with this.
This definitely was not the easiest step but the delusion of considering it the easiest made it less frustrating when I have to do multiple iterations.
![]()
But finally after like what it felt to be millionth attempt of redisigning saving on spaces, creating space for other electronics -
Sensing classifier with single input
05/12/2026 at 17:56 • 0 commentsAggressive tapping, a gentle caress, a deliberate tap. These are emotionally distinct interactions and I wanted the robot to respond to them differently.
The question was: how much hardware does that actually require?
I started with the simplest possible input, a single capacitive touch sensor. One sensing point. One time series of capacitance values.
Then I extracted basic features from each touch event: duration, peak value, mean, minimum, rise rate, fall rate, and area under the curve.
What I didn't expect was this
![]()
The three touch classes aggressive, caress, tap, separate cleanly in feature space. Especially on rise_rate and fall_rate (log scale). The information was always encoded in the shape of the signal. How fast the capacitance climbs. How fast it falls. How long it lingers.
A caress is slow in both directions. An aggressive touch hits hard and releases sharply. A tap is brief and decisive.
![]()
Needed such happiness for the recent hard days
-
Behavioural Engine Algo design
05/09/2026 at 07:01 • 0 commentsDefined how the behaviour should affect the personality factors and how the mood would be changed
![]()
Interaction definition affecting personality factors
For tap![]()
For Affection
![]()
For Aggression
![]()
Next thing to work on is classifying interaction using KNN along with some refactoring.
Sritabh Priyadarshi







