So instead of feeding my cat, I hide these balls around the house…
This all started after I read an explanation of why cats go about repeatedly exploring the same areas: it’s partly to establish and survey their territory, but they’re also practicing ‘mobile’ hunting: moving about, being curious, and poking their noses around in the hopes of upsetting potential prey and finding a meal.
So what if my cat, while out on patrol, actually found its prey? Surely this would bring him one step closer towards a more fulfilled and self-actualized indoor kitty existence.
I imagined hiding little bowls of food around the house… then I imagined me actually refilling these bowls. Then I imagined having to move them around to different hiding spots, spilling, forgetting, and every so often, perhaps only after following a trail of ants, finding one undiscovered and rancid. Hmmm, maybe there’s a way to hide something else, a way to hide something other than food, a way to make something not-food = food…
Want to Give it a Try?
I’ve received a few questions from people interested in building something similar, so the rest of this post has some tips.
Train First, Build Later
Before you invest in building a feeder, I recommend you first train your cat.
Monkey was trained using ‘clicker’ training, with methods called ‘shaping’ or ‘forward chaining’ – Google “clicker training cats” or here’s a pretty good video that covers some basics:
After you’ve got a handle on clicker training, the key is to break down the desired behavior into very very elemental sub-behaviors.
This is roughly the sequence of sub-behaviors I trained, to build the final behavior:
Behavior Sequence 1
- Cat looks at ball – *click* (repeat until cat is performing consistently)
- Cat approaches ball – *click* (repeat etc.)
- Cat sniffs ball
- Cat bites ball
- Cat bites ball and lifts up
- Cat bites ball, lifts up and holds for a few seconds
Start training the first behavior in this sequence until the cat can do it consistently, then stop rewarding them, and only resume the reward when they perform the second behavior. Then repeat, moving down the list to the next behavior, gradually building and shaping towards the final behavior.
Behavior Sequence 2
This is a separate behavior sequence, trained independently, and requires a target where you want the cat to drop the ball (I used the blue bowl and feeder cover shown in the video).
Place the target somewhere and follow this sequence:
- Cat looks at target area
- Cat approaches target area
- Cat sniffs target area
Behavior Sequence 3
Now comes the hard part… this took some luck, and is better described than listed.
You’re going to place the ball near the target (but not too close), and your goal is to combine the two sequences described above, so that the cat only gets a reward when they first pick up and hold the ball and moves towards the target area.
Basically, I think, hoping the cat’s brain crosses its wires when presented with the two stimulus, the ball and target area, and the cat chooses to pick up the ball and move towards the target — *click*.
This takes finesse, and timing, and luck, because if you stop rewarding the behaviors from Sequence 1 & 2, you risk “extinguishing” those behaviors, and the cat will stop doing them. If you have a training session and you can’t get the cat to combine the two behaviors into Sequence 3, stop the session, and next session start back at reinforcing Sequences 1 & 2.
If you’re successful training and you choose to build a feeder, here are a few suggestions, along with a parts list.
The feeder is a Super Feed brand (I can’t recommend them enough – for basic hackability and general quality).
One note when working with Super Feeders, they’re activated by closing a circuit to feed for any length of time, but after feeding they have a several minute reset interval, or refractory period, designed to avoid back-to-back feedings; fortunately they also have a push-button reset switch, which the Arduino can close to allow immediate re-feeding (helpful for training, and for repeated feedings via the keyfob remote when in a hurry).
There’s More Than One Way to Feed a Cat
I am far from an engineer, and a novice ‘maker’, so there are very likely better solutions to the ball receptacle/Arduino set-up needed to trigger the feeder.
Here’s a pic of my approach:
I used an Adafruit RFID reader to detect RFID tags embedded in the wiffle balls: the balls are cut slightly, enough to slip in an RFID tag; when the ball drops it rolls down an incline and passes the RFID reader, which reads the tag and initiates the Arduino’s feeding program. The Arduino switches on the relay that closes the feeder’s power circuit, and voila, food.
I also added a keyfob remote, to trigger the feeder on days when Dad is too busy to go around hiding balls.
Here’s a list of the components:
- Super Feed feeder
- Arduino Uno
- Adafruit Arduino RFID Shield (reader)
- Dual SSR Relay Board
- RF M4 Receiver – 315MHz Momentary Type
- Keyfob 4-Button RF Remote Control – 315MHz
- MiFare Classic (13.56MHz RFID/NFC) Clear Keychain Fob
A few design flaws that could be improved:
Sometimes the ball rolls too fast, and the RFID reader fails to register the tag inside the ball. (This might also be a feature (I tell myself), because it creates a variable reinforcement schedule, but it would be better to have a consistent feeder, and program any kind of desired reinforcement schedule into the Arduino.)
There’s only room for 3 or 4 balls – in this design the balls are cleared only by their momentum, rolling down a slight incline, and they can pile up. Very very rarely this leads to a ball getting stuck, and the feeder will get overrun spitting out food endlessly… this can be solved with a better design, or programmatically in the Arduino (e.g. storing the RFID tag ID and disallowing consecutive feeds from the same tag), but since I work from home I’m around enough that I’ve just taken care not to leave hidden balls around while I’m out (Monkey usually finds them pretty quick, too).
Thank you to Monkey for putting up with my experiments and being an all-around cat.
Also thanks to my dad, Jim Millam, for helping me build the components box, and for coming up with the solution of an incline plane for passing the balls by the RFID reader.
I’ve got a few more cat geek posts in the works, so feel free to subscribe (this blog is an ‘every once in a while’ project, so it won’t clog your Inbox, and subscriptions are managed through WordPress, so it’s easy to unsubscribe).
Thanks for reading!
I also posted a bloopers video (it’s also running ads to fund my next cat geek project, but you can skip them).
Unfortunately I didn’t document the original training, but these bloopers are from the early days when Monkey was just getting used to the bowl, and to filming, and when he had his kitten pep going in full gear!