This robot is designed to be a warm, furry companion through the winter months (and beyond). Using some LOOMIA components, along with my Companion Core "robot heart" PCB and Purr Module, this little beast will provide heat and comforting purrs to keep me company.
I've been wanting to build a robot with a black rabbit fur I've had for years. However, since bringing a prototype to a party last year, I'm going with a more durable faux-fur option for this particular friend.
I've also 3D-printed some semi-flexible parts, including paws that will curl up via servos and fishing line!
Character design & featuresI was going to make a black cat robot for Halloween season, but after running across a couple of extremely charismatic raccoons, I decided I'd better go with that long-running idea instead. :) The raccoon face will also have a bit more contrast; since the robot is furry, it sucks down a lot of light.
I also planned to have it be another shoulder robot, leading to the internal curved skeleton design. But at least initially, I'd like to hold it in my lap: while my shoulder bots are great for events, in a real-world companion bot scenario, I don't want to have to mess around with harnesses or magnets to put on a sweater. It does eventually hurt to hold myself still enough to keep the robot happy, and the heating function will work best if I can hold it on my lap :)
Here's the initial face design:
However, I later found THIS amazing Loomia piece – perfect for a raccoon face! So, the new version uses that, which is a very flexible, rubber-esque piece with sticky backing. I've attached it to the top of a soy milk bottle and added some 3D-printed accents (which I'll cover later).
I also designed some prehensile paws and 3D-printed them with flexible filament:
These are attached to the main body, with fishing line running through them, anchored to the paws by pieces of wire running crosswise. That allows me to pull on the fishing line to make them grab stuff! This part isn't implemented yet, but hopefully will be soon.
SkeletonI started out with a cool modular, robust "skeleton" system using 3D-printed "ribs", big zip ties to connect them, and heat-shrink tubing as spacers. Each rib has a Velcro dot to attach it to a strip of Velcro on the underside of the fur.
However, later when I wanted to get the robot ready in a hurry for Supercon 2022 (see photos below!), I switched to a hollow body made from plastic soy milk bottles. Two of them are nested to create the general body shape – which contains the brain, Purr Module, and 5V heater – and I used the top of one bottle for the base of the head.
I ended up switching to faux fur for the body, after taking an early version to an event and noticing how roughly people treated the fur. I didn't want to wreck the rabbit fur, so instead, I used a cheap furry scarf from Walgreens.
Blending the fur into the face has been a thorny problem, so I cut up a Hackster-branded beanie from a few years ago and made a mini version for the raccoon. I used another piece to add a little Open Hardware logo scarf. Since it's a winter companion, it gets to stay warm too! :) (In case you're new here, I'm a big fan of hats on companion bots...)
FunctionalityRoko's brain will run Edge Impulse AI! For now, I want the bot to respond to an ocarina – and I might end up being able to use perfect pitch to hum or whistle. I've got do, re, mi, and fa working at the moment :)
I'd like to create a custom ocarina for this! Following this article from Prusa, I think I'll design something raccoon-like in OnShape, and mash it up with this Thingiverse model using Tinkercad.
Selecting a brainI was going to base it on the Micro:bit, which tends to be beginner-friendly because of the drag-and-drop programming interface that can easily be switched over to JavaScript and Python in the same environment. But I realized that to use Edge Impulse on that platform (such as the voice-activated Micro:bit project), I'd have to do a bunch of futzing with the command line – and learn to program it in C++. Since this removes a lot of the "beginner-friendly" allure of the board, and I wasn't planning to use the LED grid anyway (because of issues photographing/videoing it), I opted to switch over to the Arduino Nano 33 BLE Sense.
I'm excited to discover that the BLE Sense now supports the Servo library! That wasn't the case when I built F3NR1R, and it makes things rather simpler. :)
CodeFor now, the robot simply purrs and occasionally twitches its ears. The heater will be added later, as will some code to curl the paws, and controls linked to the buttons. See the Code section below for the current system :)
Like I mentioned, I'm also working on training a model that will respond to different notes blown on an ocarina, which will run on Edge Impulse: https://docs.edgeimpulse.com/docs/arduino-nano-33-ble-sense
I ordered three types of servos from SparkFun and tested them, mostly for noise:
I've chosen the one at far right, because it's the quietest. For context, they won't be carrying much weight, so power/torque doesn't really matter. And for companion bots, I generally want slower, less jerky motions, so speed isn't a huge issue either. Plus, I'll be powering them off their own USB plug, whether at my desk or on the go (with a battery), so power draw isn't my top priority either.
- Left: Generic Sub-Micro Servo
- Middle: Generic Metal Gear Micro Servo
- Right: HiTec HS-85MG Micro Servo
I'm controlling them with my custom Companion Core circuit board – a sort of heart for companion bots.
Next stepsHere's what comes next:
- Update with photos of the interior! (The ear mechanism is pretty fun.)
- Sew up the outer fur layer, so it isn't as long and floppy
- Add the ocarina-responsive code
- Enable buttons and touch sensors
Comments