SmallKat is a cute little robot with a lot of capability designed around teaching and experimenting with dynamic robot control. It’s a shame we haven’t covered SmallKat yet, as it’s both a finalist in the 2019 Hackaday Prize and was one of the Bootstrap Winners this year.
Many hobby robots move by repeating a pre-programmed sequence of movements. Most hexapods for example follow this line of thought. However, robots like Spot and the MiniCheetah show a different world where robots determine the locations of their limbs by their current state, the measured state of their environment, and some imagined future. These robots are capable of so much more than their predecessors.
However, even a cost-effective version of these robots climb into the tens of thousands of dollars at a steep curve. SmallKat will help there: based around hobby servos and an ESP32 the hardware stays affordable. Data can be streamed to a much larger computer for experimentation which saves on some of the weight that supporting a larger device like a Pi would add.
This device will let students experiment with all kinds of dynamic models and even machine learning-based movements without breaking the bank. There’s even a nice software studio for experimentation to aid in the learning process. Video of it shuffling around after the break.
Robotics like this really needs to move beyond using those ear grating servos with limited lifespans and poor cost to performance… the design of the oprndog robot for instance should be possible to scale down to this size small DC motors are not any more expensive than servos it’s just that nobody is putting the effort in to design the proper motor drivers for them. Basically we more integration, single controllre chip like a PIC32MX795 + integrated with a lower power version of the odrive.
I believe the exact same thing and by now tearing my hair out to get any further. I think the problem are the motors itself. As soon as you go a little bit bigger the prices jump immensly. Now openDog uses rigid actuators, which could be made fairly cheap with DC motors. But as james said himself, those prevent you from getting the dynamics quite easily in there. You would have to simulate them. And that’s the reason where I am at a point now where I don’t know how to move on. Should I invest some money to get good motors or try to hack around the price once more.
For the moment it will probably be the latter one. There recently was a 3d printable “servo” (which is not a servo yet) here on hackaday ( https://hackaday.com/2019/10/14/a-mostly-3d-printed-servo-gear-reduction/ ). If I can manage it and build a full featured servo out of this, then this thing looks really good. It is just a bit big, but we’ll see.
End of story: It’s not as easy as one might think it is. I tried for over a year now. A small openDOG was my idea, too!
Then by all means simulate them… the dynamics Boston Dynamics robots do don’t come from the mechanics of the system as it is all non compressible hydraulics… similar to DC motors. Granted they have very fast hydraulics. Note that if you move to a more powerful MCU than the Atmel which is I think smallkat (also opendog, though isn’t he using a teensy now?) was using last I checked then it is a huge step up in performance 10-50x faster even if only running at double the clock rates, and 200Mhz chips are available also that can easily handle kinematics etc…. PIC32MZ2048EFH100 is about the fastest you can go with chipkit currently and just borrow the IO layout form one of the other boards so you can just get to work programming instead of adding support for your custom board. 2MB flash,512kB sram,75 GPIO, 10 ADC, 5 UARTs, 3 SPI, and 3 I2C…. in the layout they have for the flip and click board.
That doing kinematic simulation probably does mean you need more sensors, probably limb position detection of some sort perhaps flex sensors, pressure sensors on the feet, and at least an IMU on the body at a minimum but that’s probably $10 of parts. For the feet you might get away with a spring and a flex sensor also. Probably a good idea to go with a rubber foot also, boston dyanmics does this on all their cheaper robots probably with good reason.
A system I built at work recently was spread out across 5+ chips for instance and this drove up costs and perhaps has caused some unreliability… I’m working on making it a 3 chip solution + passives instead of a 5-6 chip slolution, I’ve moved around where my money is being spent and it will end up costing about the same in the end but hopefully perform better (I’m taking advantage of the fact that PIC32 chips which cost a couple bucks extra in my case can do IRDA on thier UARTs by flipping a single bit on). IRDA might be interesting for inter-cat communication also :P
http://www.cs.cmu.edu/~sfeng/sf_hum14.pdf
Apparently Boston Dynamics doesn’t use only inverse kinematics… but a hybrid system.
I like how they describe their entire system of motion in literally two equations. But thanks for this document. It is probably way over my head, but gives a hint on what to search for! You do have a point on your post above. I was thinking with going for a raspberry (or some other SBC) anyways and just offloading different tasks which need hard time constraints to small microcontrollers. Still this will involve a lot of trail and error since I have literally no idea about mechanical design and just try out stuff, if it doesnt work i try out the next. But that’s hacking, right? Will see how far I can push this. You might have convinced me to go for rigid actuators, just to keep that price low. And it could work, so why not try it out?
Beagle bone might be right up your alley, it’s a mishmash of a general purpose processor (like pi) and a few definite purpose processors that are used for real time processes. IO may be a problem though, maybe that’s why they don’t seem to be very popular.
Hi guys thanks for the interest in the project! I’m Xavier and I designed Smallkat. The main problem is the size of the motors and gears when you get to this scale. Its not very hard to find small motors that are cheap but it is difficult to integrate them into a system with t he tools that most hacksters have access to. Which is an important thing to consider if you want a lot of people to use/build your system. Additionally not a lot of those small dc motors have enough torque to handle the task of holding up a robot so it needs to be geared anyway and you would essentially end up with a larger servo if you tried to make your own. So for an intro level robotics platform that is cheap and affordable servos are perfect because they require minimal effort to set up and use and they are easy to replace if/when you break them. The motor controllers aren’t really the issue. Our resident PCB designer is amazing at what he does and we do actually have a few designs in the works that allows us to modify and use the servos as regular motors with add on encoders. This would add functionality but it does almost double the cost of the system. We do also have plans to look into alternative motor solutions and see if its possible to create a small scale brushless system that is relatively cheap but for right now the servos have worked great for what we needed them to do.
You would likely find the detailed analysis in the project page, it goes over all the pros and cons of our approach, all the attempts to make a motor ourselves, and why the final design ended on the one we did.
Short answer, we DID make a smart servo, and it worked great, except without the scale of production that OTS servos have it was 5x the price per motor.
As for the odrive/brushless AC backdrivable model, well that was rejected due to runtime problems. On the same battery SmallKat runs for 45 minutes, and the MIT cat robot of similar size runs for less than a minute on battery power.
The esp32 that we use as the main processor is more than powerful enough to do the full stack on the cat, no need to bust out a pic32. The choice to stick with offboard kinematics is not because the onboard processor can’t handle it, but rather we wanted a very rapid development loop. In this sense the java based controller you write in eclipse can be updated and re-running in less than a second. It takes 2.5 minutes to compile and program the chip.
When we designed SmallKat it was intended to be small and affordable. The servos are great because they require little effort to get going and are pretty cheap to swap out if something happens to them. So at this scale they are super easy to use ecspecially for beginners in robotics. In addition when designing at this scale it can be hard to modify and adapt small motors and small gears to work with your system with most of the tools you find in homes or makerspaces. Which is important to keep in mind if you want a lot of people to be able to use it. Keeping the form factor and costs down while attempting to recreate a new servo or use alternative motors is a tricky problem. The creation of motor controllers is really not the biggest problem. Our resident PCB maker is extremely talented and we actually have a few designs in the works to modify servos and treat them as regular motors with add on encoders. This would allow a bit of additional functionality. It does however almost double the cost of the platform so it is a trade-off. We are planning on looking into new motor types and seeing if we can figure out how to replace the servos with a brushless system or something a little more robust for a fancier model in the future, but for right now the servos are exactly what we needed for this system.
SmallKat… I believe it’s Little Cato
Does not look very compatible with real cats :-) Too fragile. At least one of my cats see small electronics parts or boards, especially with dangling wires, as (his) toys. But like small children, he tends to break toys quickly. I tried to explain, that these are MY toys and as long as he does not know how to use the soldering iron, he should keep his claws off. :-) But try to explain something to a cat….