SmallKat: An adorable dynamics oriented robot cat

A dynamics oriented quadruped for research and education. Smallkat comes with 2 different control options.

Public Chat
Similar projects worth following
Starting from
madhephaestus has 3 orders / 0 reviews
Ships from Worcester, US
The SmallKat project is a 16 DOF low cost, opensource, 3D printed quadrupedal platform designed and made by 2 WPI students (Keion Bisland and Xavier Little) along with framework code prepared by Kevin Harrington. The intention of the platform was to make a fully open source dynamics quadruped for the education/research and high-end toy markets. Using hobby servos and common electronics allows the overall price point to remain very low in comparison to its competitors.

SmallKat is availible in 2 different electronics solutions. One is easy to set up and easy to develop for, but depends on stable wifi. The other is self contained and requires a bit more setup, but will be stable in any environment.

In addition to performance and ease of use, adorability is a high priority.

Here is Grace the SmallKat! 

These two videos show the 2 electronics configurations on the Small sized SmallKat. 

The simple electronics platform is a single ESP32, 16 servos, 3 switch mode BEC's and a BNO055 IMU.  This platform is easiest to source assemble using of OTS parts plus printed pieces. This platform streams sensor data up, and servo positions down, using the WiFi built into the ESP32. This configuration is easy to develop for because the code kinematics/walking gait code runs on a nearby PC. Kinematics and walking gait/body controllers can be swapped out on-the-fly without restarting SmallKats controller making development fast. Once algorithms are finalized and published to Git, they can be loaded by the second configuration and run in a tight real-time loop with the hardware. A downside to this configuration is that it is only as stable as your WiFi signal in the room. 

The advanced configuration uses the same control code as the Wifi version, except it loads a headless kernel and runs it  on a RasPi onboard of the robot. This configuration uses an STM32 to connect to the BNO055 and servos, and bridge them directly to the onboard RasPi over HID.  The first variant used a Teensy, but we wish for the full stack to be fully open source and so are switching to a custom STM32 board.  This solution will be more expensive, and development loops will include pushing to a git server and re-starting the robots control stack to load new code. These trade offs suggest that both electronics solutions ought to exist as options, and researchers might want both in a given lab. Toy markets would only be interested in this type of fully stand-alone electronics, since it requires no setup to start the robot running. 

Here is a video of the SmallKat in slo-mo

Here is a video demonstrating the dynamics loop. The IMU produces a gravity vector that is then used to compute if the SmallKat is tipping over. To the degree that it is tipped off its axis, the dynamics controller applies a counter Coriolis force by spinning the head and tail counter to the tipping direction. 

Zip Archive - 786.72 kB - 04/15/2019 at 16:22


Adobe Portable Document Format - 15.35 kB - 04/11/2019 at 18:49


Adobe Portable Document Format - 14.22 kB - 04/11/2019 at 18:49


View all 14 components

  • A friendly user helped out with a wiring diagram!

    Kevin Harrington5 days ago 0 comments

    Shout out to @jtechs who made a lovely wiring diagram as he builds the FIRST build of SmallKat made by another person!

  • New Assembly instructions and BOM purchasing info!

    Kevin Harrington07/16/2019 at 20:36 0 comments

    Today was busy and productive! I printed out a new Grace model SmallKat and made an assembly instructions document. Check it out here:

    In it you will learn how to assemble a smallkat robot, as well as calibrate all its links.

    I also added the purchasing direct links on all of out BOM:

    This should fill in the mystery steps in our previous documentation. 

  • Design Revision: Update 1

    xaveagle07/09/2019 at 03:47 0 comments

    Quick update on the most recent version of the cat. We took a look at our previous designs and have started making some improvements. 

    These include;

    • Longer legs and a slightly larger body
    • Easier assembly - many of the parts will be the same and reversible so its harder to mess up
    • Easier manufacturing down the line. Similar parts allow for easier mass production
    • More customization  
    • Optional encoders for additional feedback
    • Improved motherboard with room for 20 servos
    • Improved calibration 

    The current design still needs a revision or two. Currently its very blocky and hastily made so that electronics can be tested. Further revisions will have nicer aesthetics. Additionally we are re-evaluating our choice of hardware so that we can better supply parts. We also need to stress test the system with the larger body size and additional weight 

  • BowlerStudio got updated, the SmallKat runtime

    Kevin Harrington06/21/2019 at 16:52 0 comments

    I spent the week doing bigfixes on BowlerStudio!

    The big ones fixed:

    * Re-docking windows sometimes results in frozen text windows

    * Cold-start on windows was buggy

    * Slide bars for robot link limits is MUCH improved

    * Adding files to empty repos works now

    * Git pull, and update repos menu item, now work

    * Dropped the OpenCV deps, makes cross platform easier and binaries smaller

    New Features:

    * A workspace menu, populated with the 15 most recently used Git repos

    * Bundled JVM on windows and Macos, no more separate Java dependency!

    * Ubuntu 18.04 PPA

  • SmallKat Dynamics and software update

    Kevin Harrington04/25/2019 at 18:38 2 comments

    Here is an update to the dynamics stack. In the background you can see the control software BowlerStudio with the live 3d model and its motion trajectory. 

  • FootSensors V2​

    keionbis04/24/2019 at 21:49 0 comments

    Iterations are inevitable. Since we have taken to developing this cat full force we decided the easiest way to go about the foot sensors is to revise them from using their SPI protocol to making them as simple as possible by returning an analog voltage between 0 and 3.3 volts. So as can be seen here, the new DPS310 barometric pressure sensor resides in the middle of the board and to its right exists an stm32l011f4 micro controller(programmed through pads for pogo pins on the back for easy mass programming) that returns the equivalent value from the 24bit sensor as an analog voltage through the PWM port. This PWM signal is then filtered through an RC filter and comes out of the connector on the back of the board as an equivalent voltage. The pressure sensor data is therefore down resed from its original 24bit to 16 bit, however this is shill more than good enough for our application.

  • Added Dynamics to the control code

    Kevin Harrington04/17/2019 at 13:28 2 comments

    Here is a video demonstrating the dynamics loop. The IMU produces a gravity vector that is then used to compute if the SmallKat is tipping over. To the degree that it is tipped off its axis, the dynamics controller applies a counter Coriolis force by spinning the head and tail counter to the tipping direction. 

  • Added instructions and printable files

    Kevin Harrington04/15/2019 at 16:25 0 comments

    I added a zip of printable files for the whole SmallKat. They are in a zip folder in the files section of this project page, and also here:

    I also added detailed instructions for cloning, printing, wiring and calibrating a new SmallKat. See the instructions section. 

  • MotherBoard Rev 2

    keionbis04/12/2019 at 03:05 0 comments

    The second revision of the motherboard took everything we learned from the previous revision and fixed all the issues. The number of IMUs was reduced to 1 in the center of the motherboard ,  The Teensy 3.5/3.6 was replaced with a nucleo-l432kb nucleo-64 development board, A PCA9685BS to drive all 16 servos, off board power regulation for the servos using 4, 4A BECs and fused power plugs for each bank of 4 Servos. The switch mode circuit was improved to as previously inductive spikes from the motors being released from stall would cause damage to the IC, once resulting in it releasing its magic smoke. The correct connections were added to allow for the connection of the foot sensors. 


    The new board is being produces now and this will be updated as testing insures.

  • Pressure sensing feet​

    keionbis04/12/2019 at 02:46 6 comments

    While brain storming sources of feedback that could be put onto the robot, We came up with a barometric pressure sensor encapsulated in a form of rubber. After researching a number of pressure sensors a highly sensitive, 24bit MS5611 pressure sensor was chosen with a resolution of down to 0,0024 mbar communicating through SPI. A board to mount to the end of the ankle joint of the robot was made so it could be encapsulated in the rubber. 

    This board was mounted to the ankle join and cast in a variety of rubbers to test the sensitivity and resolution of the data. Two durometers of Smooth-on silicone rubber (Durometer 10 & 20) and Smooth-on Vytaflex 20, a Durometer 20a poly-urethane. These materials were cast into a 3 printed mold and placed into a vacuum chamber and a vacuum was pulled to remove any air from the system that may result in any inconsistencies in the density of the material. 

    The silicone rubber was tested and  the results were very promising of the Durometer 20 rubber, however the Durometer 10 rubber was too soft to provide reliable and repeatable data. However the attempt to use silicone rubber stopped here, it was eliminated due to the inability to have silicone bond strongly to any material other than itself. 

    The poly urethane casts despite having a number of failed attempts at the beginning gave excellent results  in both casting quality and pressure transmission to the sensor. For this reason as well as its durability we continued with this material.

View all 11 project logs

  • 1
    Fork the Smallkat configuration

    Before building anything, lets load up our personalized copy of the SmallKat framework. Navigate to the Greycat repository and fork it:

    Once you have it forked, modify 

    Open MediumKat.xml and do the same on line 8.

    Open launch.groovy and change Line 3.

    You now have a fork of the MediumKat configuration with a hardware launcher!

  • 2
    Launch your fork of SmallKat

    Download and install BowlerStudio and Java 8.

    Open BowlerStudio and login with your Github username and password. 

    Use the Github menu to navigate to your fork of greycat and open launch.groovy

    Use the run button to launch your robot. A simulation of your robot will open on the 3d window. You can make it walk using the arrows in the top right of the Creature Lab tab.

View all 9 instructions

Enjoy this project?




[this comment has been deleted]

Kevin Harrington wrote 04/23/2019 at 14:14 point

Thanks! I will be in touch as we go into development this summer to build the new stand-alone variant. 

  Are you sure? yes | no

Ken Yap wrote 04/12/2019 at 02:52 point

Love cats. The "ignore you" part of the coding would be simple. But seriously, love cats. Meow!

  Are you sure? yes | no

Starhawk wrote 04/12/2019 at 02:11 point


...but seriously, I want one. A pity, because I can guarantee you that I can't afford it :(

  Are you sure? yes | no

keionbis wrote 04/12/2019 at 02:48 point

you might be surprised. The projects open sourced so you can print everything yourself and all the other components only less than $300

  Are you sure? yes | no

Starhawk wrote 04/12/2019 at 02:50 point

I have a dead maximum of $200/mo disposable income and no 3d printer.

  Are you sure? yes | no

alireza safdari wrote 04/11/2019 at 17:37 point

We deserve more information. :)

  Are you sure? yes | no

Kevin Harrington wrote 04/11/2019 at 18:49 point

geez man im posting as fast as i can...

  Are you sure? yes | no

alireza safdari wrote 04/11/2019 at 18:51 point

@Kevin Harrington  Sorry, did not want to push you. Take it in a positive way, like there are people out here who are interested to know more. :) Thank you for posting.

  Are you sure? yes | no

Kevin Harrington wrote 04/11/2019 at 18:53 point

no worries! Im excited to get this public facing after a year of under-the-radar developemnt with Keion and Xavier

  Are you sure? yes | no

alireza safdari wrote 04/12/2019 at 04:18 point

@Kevin Harrington You guys are on fire :D Thank you for posting more information. :)

  Are you sure? yes | no

Kevin Harrington wrote 04/11/2019 at 22:40 point

I added a bunch more info :)

  Are you sure? yes | no

alireza safdari wrote 04/11/2019 at 22:41 point

Going to read them now. Thank you.

  Are you sure? yes | no

alireza safdari wrote 04/11/2019 at 22:46 point

@Kevin Harrington I really love your solution for programming the cat. Am I outdated or this has never been done before?

  Are you sure? yes | no

Kevin Harrington wrote 04/12/2019 at 12:00 point

This is rather new way to program and control robots, yes. My contribution to the project is the programming framework, [BowlerStudio]( I wrote the programming environment, the kinematics models and the hot-swapping Git based script architecture. 

  Are you sure? yes | no

Dan Maloney wrote 04/11/2019 at 16:42 point

If it doesn't spend 90% of the time sleeping, 5% puking, and 5% licking itself, it's not a proper cat. ;-)

But it's still really cool, and I'm looking forward to seeing more. Nice work!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates