Close
0%
0%

SmallKat: An adorable dynamics oriented robot cat

A dynamics oriented quadruped for research and education. Smallkat comes in 3 sizes and 2 different control configurations.

Public Chat
Similar projects worth following
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 comes in 3 sizes, micro, small and xl. Micro is the smallest and at one pound, is the same size and weight as a kitten. Small is the current product offering and is availible in 2 different electronics solutions. XL is a research grade platform and is the product of an MQP at WPI.

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

Download

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

Preview
Download

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

Preview
Download

  • 16 × MG92b Micro Servo
  • 36 × M2 x 5mm
  • 1 × 30 AWG Wire wrapping kit
  • 456 × Lulzbot PolyLite PLA 3mm (1 Gram)
  • 1 × Turnigy 1000mah Battery

View all 11 components

  • SmallKat Dynamics and software update

    Kevin Harrington04/25/2019 at 18:38 0 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:

    https://github.com/OperationSmallKat/SmallKat_V2/releases/tag/0.0.2

    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. 

    BOM:

    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.

  • MotherBoard Rev 1​

    keionbis04/12/2019 at 02:06 1 comment

    The intention of the first revision of the motherboard was to allow for the most feed back to the controller as possible. It Incorporated 4 i2c current sensors in order to extrapolate the force being applied to each motor, 2 BNO055 9DOf IMUs, a high current switch mode power supply to regulate the battery power to the rated 6V of the servos being used, a low current switch mode power supply to power the Raspberry pi annd Teensy, breakouts to 16 Servos and connections to allow for power and communication between a Teensy 3.5/3.6 and a Raspberry pi 3B+.

     Communications between the raspberry pi and the Teensy is done through USB HID at ~500Hz.  This allows for the kinematics to be calculates near real time on the Raspberry Pi and sent down stream to the Teensy, The Teensy was used to drive all 16 servos using individual hardware PWM channels, as well as collect IMU and current data from the sensors and reply to the raspberry pi with this information. This information is then used to update the walking gait and kinematics engine. 

    Despite the validity of the motherboard, a few small issues arose and a revision 2 was done, eliminating a number of sensors and replacing the Teensy. These will be spoken about in motherboard  Rev 2.

View all 7 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:

    https://github.com/OperationSmallKat/greycat

    Once you have it forked, modify 

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

    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. 

    http://commonwealthrobotics.com/

    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.

  • 3
    Print all the parts

View all 10 instructions

Enjoy this project?

Share

Discussions

[deleted]

[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

Meow!

...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](http://commonwealthrobotics.com/). 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