In fall 2015, at my internship in Massachusetts I spent a fair amount of time learning how to design PCBs. This was a big step for me as an EE, and I was interested in trying to create one on my own. However didn’t want to make just any simple circuit (of which I have made several, out of old-fashioned pegboard and solder bridges), I wanted to find a project that could mesh with my interests in robotics. I needed a source of inspiration, and happened to find it in the middle of downtown Boston in early eptember:
The StrandBeest Project, which designs large kinetic sculptures that move due to wind pressure, held a public demonstration that I happened to catch. which was was little disappointing at first because due to the lack of wind, the mechanisms weren’t able to move themselves and were pulled along by their curators. Then I got to thinking, couldn’t I just make one of these and power it from a motor? Couldn’t I create a board that controls the motors and allows me to remotely control my own little strandbeest-robot? They’re pretty slow…maybe I can come up with a way to make them run faster? So from that, I came up with Bugbeest:
Well, it was a start. This was my rough concept after some fiddling around with different mechanisms over the next few days. I was aiming to create something that, Like a strandbeest, could manipulate its limbs in complex ways, while being powered from a single source. The design uses a cam on a rotating pulley to produce the leg motion. this cam is set at a slight angle relative to the ground plane, and fixed from pivoting vertically. this produces a rotation around the pivot point, and a translation in and out. By connecting linkages in a certain way I was able to get a natural leg movement out of the system. I was aiming for a six-legged layout, as the hexapod robot form factor is notorious for requiring a large number of servos to control properly, which makes them prohibitively expensive and prone to malfunction. I believed that a simplified robot chassis could prove to be useful here. Not doubting my CAD abilities, I created a more polished and fully formed BugBeest, and it worked!
The models were created and rendered in Inventor. I had some experience with Inventor’s rendering tools prior to this project, but this was the first time I had attempted to properly render video with the software. It works very smoothly and I plan to use it much more in the future.
The next step was to create a real version of BugBeest, to prove the design and perform some powered tests. the bot had been designed with 3D printing in mind, and creating the main body was not too difficult (but was very tedious, it took 21 hours to print!).
I ran into much more trouble on the pulleys. I decided to create custom loops of belt to control each side of the robot with a single motor (why one motor on either side? I only had 2 and they cost more than I was willing to spend on the project at the time), and had settled on gt2 2mm pitch belt, which is cheap and commonly available. However, my 3d-printed pulleys weren’t fitting the belts; I hadn’t taken the flex of the belt into account when creating the tooth profile in CAD. This was fixed using some very un-scientific trial and error designs. In the end, the belt fit perfectly over the pulley.
So, does the design work? well, mostly:
It functions as I expected, but the legs will quickly get out of sync as there are varying levels of friction in the belts and leg joints. The belt in particular cause a lot of headaches for this build, and future revisions of Bugbeest will likely forgoe this part, using a motor to actuate each leg. There are several other reasons to do this as well, as I explain below.
Either way, I needed a better way to control the bot than my bench power supply and a long cable. I could have just thrown an arduino and some motor shields inside the body and stopped there, but I’m building this bot to learn, not just for the fun of it! So, I learned Eagle CAD, and made myself a robot control board:
The board is build around the Atmega328p microcontroller, the TI DRV8802 dual H-bridge motor driver.,and the Nordic NRF24L01 radio transciever. these three chips do all of the crunt work to create a 2-motor, wireless robot. I also included a 12V boost converter, two ATTINY85 microcontrollers, a USB/UART converter for serial programming, and some reset control/voltage monitoring circuitry.
because this was the my first go at designing a PCB, I was a bit wary that I had made a design mistake. So, to ensure the design would work before ordering the boards from a manufacturer, I laid out the design on a breadboard:
there were several parts of the design that I figured would need to be tested. the biggest one being the two ATTINY microcontrollers I mentioned earlier. the motors that I chose to use for this project (some gearmotor made by Faulhaber, suffice to say they are pretty nice but very expensive) include a quadrature encoder, which outputs two offset square waves when rotating. These are very high resolution (over 500 “ticks” per rotation), and would bog down the main microcontroller with constant interrupts to read the new motor positions. the ATTINYs are used instead of these, and store the motor position and number of rotations in registers that the main ATMEGA can access over the I2C bus.
Once I was confident the board would work, I sent the design files to the great folks at OSHpark to make the PCB. I then assembled the components on the board, and we had a working bot!
…wait, where’s the video of it walking around?
well, there isn’t one. the Hardware of Bugbeest ended up being very hard to work with, and to make a long story short it requires a redesign. At this point I was finished with my internship and returning to classes, so I didn’t (and still don’t 😛 ) have time to improve the design. What a downer ending, right?
When the eventual Version 2 will appear, I can’t say right now. but I do know what improvements it will include:
- six motors, one for each leg.
- The biggest hardware issue with this bot was the belt connecting the legs on each side. by removing this I will be saving myself a lot of pain.
- I plan to use a more cost-effective motor, possibly these motors from Ebay
- If so, I would need a new design for the encoders, maybe create my own?
- flip cam location to underside of the leg
- not only will this make the legs more powerful (more leverage), it will also move the period where the leg is swinging faster to the upwards position, making the robot less jerky in its motion.
- redesign the body to be lighter/use less material.
- servos, LEDs, maybe some sensors?
- simplified legs which use fewer fasteners.