After getting the robot to juggle lots of balls, the next challenge was to program it to do siteswap patterns. Siteswap is a mathematical notation for representing juggling patterns. It's kind of analogous to how music notation is to music, except that siteswap is merely a sequence of numbers. See here for more info on siteswap. No juggling robot has ever juggled any interesting siteswaps, so this will be another first for juggling robots. The programing is a bit more difficult with siteswaps because the hands are no longer doing the same thing. I need to accurately calculate the velocity curve that ends with specific angular velocity, position, and time. Having all three of those constraints makes the velocity curve become non-linear and blows up into a funky mess. After thinking about it for a while, I decided to use a piecewise linear function instead, which makes the math a lot easier:
After some work, I was able to get a couple of siteswaps working. I uploaded the source code here. Here is a video of siteswap 534:
Next up, I need to fix a few of things in this design:
- I think I'm going to need to order some specialized bearings. The hand with the large bearing is sturdy, but too heavy, which forces me to lower the incline, which makes the balls take longer to settle. One the other hand, the small bearing is too wobbly. I need a large light weight bearing.
- I need to modify the hands somehow so that I can throw inside throws instead of outside throws without the balls hitting the inside walls of the hands. Even when doing outside throws, it is difficult to do low throws, because the hands are too deep. If I make the hands more shallow, then it will easier for the balls to bounce out when catching. Probably some compromise is needed.
- I noticed recently that the arm is not as rigidly attached to the motor shaft as I would like. Normally some sort of metal collar would be used, but my design is essentially using a plastic 3D printed collar. It works, but it has some give to it. I think I am losing some the motor's torque because of this. I'm hoping that fixing this issue will increase the amount of torque significantly, and I'll be able to raise the incline more.