I've wanted to make a spring powered flipper robot ever since I have been involved in combat robotics. I have always been fascinated with the obscure and different ideas in combat robots that could still be competitive. Spring powered flippers have always been in that niche for me. But the few people that have tried to make spring powered flippers have always been at best mildly successful. I'm making this post to show how much design work, iterations, and refinements go into something like this. And that's not to brag, but rather show that it takes a lot of work, but in the end it's worth it to make something cool.
I began my research years ago on youtube, looking for previous ideas to build my robot off of. I found the following two videos on youtube that later lead to this Ask Aaron post.
Again through internet research I came across Dale's Homemade robots and his robot Dead Air. This page is a great read for anyone interested one building a spring flipper of any level. Dale does some amazing things in his robots, including some pretty intense machining as well as building his own custom control boards for his robots. This page was incredible and inspired me to return to my dreams of building a spring powered flipper.
Initial Flipper Design
My go to first step in a design process is to draw things out on quartile paper. Especially for things on this scale it is really useful to draw things at a 1:1 scale to get a feel for how big the components will be in the end. My idea behind the flipper mechanism is that the flipper arm itself would pivot at around 2/3 of the length such that the distance traveled by the cocking mechanism would be roughly half of that of the tip of the arm itself. The servo would have an arm attached to it that would be centered when the flipper is in the cocked position. This would allow for using a self centering channel on my receiver to activate it. When the servo arm moves backwards the cocked flipper arm is released and the flipper fires. When the servo arm moves forward, it pushes the flipper arm out of the way to be able to move to the underside of the arm. A rubber band would pull the flipper arm back down so the flipper arm would snap over the servo arm once the servo arm gets low enough. As the servo arm returns to the neutral position, it catches the back end of the flipper arm to cock it back into place. You can see a drawing of the mechanism idea below.
It was at this time I realized that the positioning of the pivot for the flipper arm was almost exactly where I would want to put the drive motors for this robot. In order to fit the servo in place I planned on using a set of spur gears to transfer power from the servo to the trigger arm. I had considered this is some of the earlier designs as well in order to increase the output torque of the servo to actuate the original snail cam. I knew that Servo City sold servo gears, so that part was solved. The issue was the range of motion of the servo. By increasing the output torque of the servo, I would also limit the range of motion of the servo proportionally.
To specify the servo and the gears I needed, I first had to decide on how much flipper power I wanted. This is a little tricky to directly figure out given the geometry, but I can do a couple of simplifications and over spec the servo from these to be sure that it has the required torque. First I needed to decide on a spring to determine the force required to bend the spring. Going off of Dale's robot, his leaf spring flipper had around 70 oz-in of torque when fully bent. This seemed to work pretty well so I figured I would design around this number and make later adjustments if necessary.
Looking on Servo City I found the HS-7245MH Servo which is a digital programmable servo. This servo has a max input voltage of 7.4V meaning I could run it directly off of a 2S LiPo battery. It has a significantly higher stall torque of 88.9 oz-in meaning the gear ratio can be reduced to at least 1.08. I switched to a 24T spur and 20T servo gear for a ratio of 1.2:1. This servo only has a 180 deg range meaning without modification the servo would have a 150 deg travel which is only 75 deg each side. This is still too small for flipper to actuate correctly. The difference with this servo is that it is programmable. one of the features that can be programmed is the neutral point of the travel of the servo. This means that I could make one side of the travel of the servo higher than the other side. I could split is so the trigger would travel more than the required 83 deg in one direction and still have enough travel on the other side of the neutral point to be able to fire the flipper. The drawings of the servo with gears and the trigger arm travel are pictured below:
I used a lot of tested components in this design. I know they will work well together out of experience. The problem is that me just showing you readers this doesn't necessarily help to design your own robot. I have already broken down how I selected the weapon components. But I wanted to quickly go over how I would select the drive system and battery.
In general, this weight class is pretty limited on reliable drive motors. In my experience I have found the Fingertech silver sparks to be the most durable and versatile option for the price. There are other options that are tougher such as maxon motors, or cheaper options that can be found on eBay or other online retailers. But I found these motors to be very solid with decent performance for their size, weight, and cost. That being said, these motors are available in a wide range of gear ratios. You need to find the right combination of motor, gearbox, wheel size, and battery voltage to provide you with the right speed and pushing power. This can be a tough task. You need to take into account a lot of variables including operating voltage, motor constants, wheel diameter, stall current etc. There is a lot of math that goes into the selection of these motors. Fortunately for combat roboticists, Ask Aaron has developed a tool that helps to do all of this for you and actually provided some of the equations behind the tool if you click the "Gear Ratio Tips" button. This tool has a lot of the necessary values that are required to do these drivetrain calculations built in. It gives the user the key outputs based on the set up of your system to allow you to fine tune the speed of your robot and ensure the motors are running under stall. It also provides an estimate of how much current consumption these motors will use during a fight, however I have found this to be a very conservative estimate and generally at least double it when calculating battery capacity. Finally, there is an acceleration calculator that uses simple physics to tell you how quickly you will reach top speed and how fast you will cross the arena. I generally shoot for around two seconds. Below is the output of these tools for my selected setup:
Obviously this layout and dimensions aren't final, but help to provide me a good starting point. For example The flipper unit will likely be a little wider than it is here to give a little more clearance for the arm side to side. I will also likely move as many of the internal components towards the back as possible to help with weight distribution. This will also allow me to route the wires between the two sides easier as there is a gap between the servo and the flipper arm where I could make a wire channel.
Just a few design features to note on this. For the drivetrain, the wheels stick out the back side of the robot to allow the robot to drive when on it rear to hopefully help self righting. I had also planned to print a few removable wheel guards to help protect the wheels and allow me to reconfigure the armor to help fit the opponent. There are some nasty horizontal spinners in this weight class that I will have to be prepared for. Another design consideration to help protect from spinners is the front wedge. I plan to have a set of sloped titanium plates in the front to help deflect hits from spinners. The plan right now is to have them angled both towards the front and the sides to act as a wedge and deflect hits from other robots. This might change in the future if I have more weight to put into the wedge to help better protect the rest of the body.
The main frame piece of the robot is designed to be a single piece printed from reinforced nylon. Because nylon doesn't hold threads well, all of the places where components are bolted to the frame are designed in a way to have heat-set threaded inserts. There are around 30 inserts in total as there are a lot of screws holding everything together. The outer walls of the body are .1" thick and the central walls where the flipper mechanism is are 3/16" thick. The threaded inserts need .310" of material to be fully inserted. In order to save weight, most of the threaded insert locations are simply circular extrusions to provide enough material to properly hold the inserts.
The weapon servo and drive motors each have their own specific mounting points in the body. The servo has a platform that it sits on to space it properly relative to the rest of the flipper components. A custom 3D printed harness holds the servo in place. The drive motors are face mounted using the fingertech mounting plates. In order to support the back end of the motors, each motor has its own platform to sit on. The idea is to ziptie the drive motors to these platforms as a form of shock mounting in as small and light weight of a design as possible.
The flipper has always been the biggest design challenge of the build. I did a lot of initial calculations to ensure that the final design would require as little tweaking as possible to fully integrate the flipper into the final design. Looking at the cross section above you can see that the overall design is relatively the same, with a few key changes. First, the servo gear was moved up off the base. This was done to ensure the gear had clearance from the base plate as well as re-position the servo relative to the other internal components. One of the major changes to the overall layout is that the spring base is angled slightly. This was done to optimize the spring geometry in order to keep the maximum stress during bending under the yield stress of the material. This required the calculations for the spring deflection, flipping, and servo power to be re-done and verified again.
To verify that the same servo can still be used, the same analysis had to be done with the final setup. Using the same basic calculations as before: the spring force is 8 lbf at the flipper; the force on the other end of the flipper arms would be around 10.5 lbf; the trigger arm is 1.25" long meaning the torque required on the trigger arm is 13.1 in-lb (210 oz-in); with a 1.33 gear reduction that would mean the servo would have to produce 157 oz-in of torque. This is significantly higher than the 89 oz-in stall torque of the servo. However, this is an overestimate of the required torque as it assumes the maximum force perpendicular to the moment arm of the trigger. The trigger is designed in a way that there is no torque on the arm to maintain the loaded position when the spring force is at its highest. A more careful analysis of the forces involved would give an accurate representation of the maximum torque required to load the flipper.
The first step I had to take was to update the initial flipper sketch. This would allow me to more easily see the interactions between the parts all at once. I assumed based off of the fact that the initial theoretical calculations showed a big difference between the servo torque and the torque required, I'd likely want to increase the gear ratio. With the rest of the components set I knew I'd have space to make the servo gear smaller, which also had the added benefit of decreasing the weight overall. Switching to a 20T servo gear and a 32T spur gear created a 1.6:1 reduction. Using the final flipper sketch below, I verified that with the increased reduction, the servo would still have enough travel.
The final phase of the design process was weight reduction. As I mentioned earlier, this has always been a major struggle of this design. All of the previous versions of this design were significantly overweight. Finding the proper weight balance is difficult for flippers at any weight class because you have to store enough energy to launch your opponent without a spinning component. This doesn't leave a lot of weight for armor. Typically flippers have rather thin armor to make weight.
The initial BOM I did showed that I would likely have an easier time making weight with this design than designs of the past, however this was still a major task. I had used roughly the same internal components on Hercules which made weight just fine. The major difference is that this design has a lot more metal in it as parts of the from wedge and flipper arm. Having a large steel spring didn't help either.
One of the main questions that came up during this process was how to estimate the weight of the 3D printed body. Having the CAD model is helpful as I know the volume of the part, but when 3D printed, the part won't be solid. There are typically multiple wall layers printed around the perimeter and a set percentage of infill inside of that. In order to estimate this without actually printing the part, I created a formula to estimate 25% of the weight as solid to represent the walls of the print, and the remaining 75% based off of the infill percentage that could be adjusted to cut weight.
The initial design pictured below weighed in around 1.25 lbs with fasteners. I knew I would have to take some drastic measures to make weight, but it was definitely doable.
Construction and Initial Testing
I started by heat setting the threaded inserts into the body to mount the motors with. This all fit fine so the next major step was the electronics.
Because this robot was split into two electronics bays by the part in the middle where the flipper goes, I had planned on running wires between the two halved through a little cutout in the central walls. You can see the wires running across in the last image in the album above. Because of this, I ended up adding JST connectors to the power lines of the ESCs so that the wires running across wouldn't have to be soldered together inside of the bot, especially since this would be a 3D printed chasis. I learned that lesson from all of my electronics failures with Barrel Roll.
My original plan was to have the drive motors run on 3s LiPo and have the servo for the weapon motor run on 2s LiPo that I tapped from the balance plug of the battery. As a note, this is not recommended for the reason that this could potentially make the cells of the battery unbalanced from one another leading to decreased battery life or potential catastrophic battery failure. That being said, I knew the risks of the setup I was attempting to make and still planned on doing so because the servo has a relatively low current consumption in comparison to the drive motors, so the cells should not become too unbalanced. When I charge my batteries, especially the small ones, I balance charge them so that should fix the batteries between matches. If during testing they became so unbalanced that I was worried about them, I would resort to a backup plan of running the whole robot on 2s.
At this point I had a couple of options to fix this issue. I could have added a second power switch to control the power to the servo to isolate the circuits and likely fix most of my issues. But because I was already so close on weight, I decided to go with my backup plan to run the entire system off of 2S LiPo. This would both fix my electrical issues and lose some weight from the robot. I would have a lower top speed but in drive testing this seemed to be just fine.
With everything wired I took a little drive test around my kitchen that seemed to go well
I made a couple of leaf springs for the flipper out of 1095 spring steel. This stuff is no joke to machine. I bought a real sheet metal hole punch to cut the holes for the screws which just barely does the job and sounds like a gunshot every time it punches a hole in the spring steel. I'll likely look into alternative ways to retain the spring in the future so this is easier to do. But for now, I only punched two holes in there to save some weight and make it easier to get hole alignment to the spring mount.
I started my testing with just one leaf spring and it was rather lackluster. It somewhat flipped, but only barely better than a servo would. I did two things to help this: one I added another spring on top of the current one to increase the spring force. This definitely helped, not quite doubling the flip, but a definite improvement. I'm not sure if I'll have the weight for this on the final version, but I'm going to leave it for now. The second thing that I did was add spacers under the front of the spring mount to increase the relative angle between the base of the spring and the arm, increasing the deflection and the force at the bottom of the stroke. This helped pretty significantly, even with one spring. The initial math that I did says that this should plastically deform the spring so that they are bent downward, but there doesn't seem to be any deformation so I plan to keep this until the next version of the body where I can change the angle.
Here is a video of the flipper in action. As you can see, the arm doesn't go down all the way. I would have to either shim or reprint the central spacer to the flipper arm so that the interaction with the trigger fully lowers the arm in the loaded position. This would end up being a part of the flipper arm redesign.
The video of the test below shoes the mechanism working mostly as intended, but there were some issues. If you notice there is only one spring and no spacers on the spring mounting plate. This is because the servo was to weak to handle any more spring force and still operate as intended. This lead to a very lackluster "flip" that didn't do anything but lift the robot quickly, not flipping it over as intended. This isn't in the video, but trust me you didn't miss anything.
Drop Test 1.1
This starts with increasing the power of the flipper. From the video above you can see the geometry works really well. The only problem was that the arm didn't go quite low enough to clear the fixed wedge. This is a simple fix by shimming the flipper arm spacer a little when I reprint the center piece.
The main problem was the spring power. Doing the tests it seems like 2 springs provided a really good flip. So I used that as a baseline. Having 2 springs would be heavy, but I wanted to try and have that option If I could to maximize flipping power. I also noticed that the spring was no where near plastically deforming as my initial math would suggest. So I decided to increase the angle between the spring mount and the flipper arm when loaded. This would further increase the flipping power, potentially to the point where I could still get a really good flip with only 1 spring.
With this as the lofty goal I was trying to achieve I would need to first find a motor capable of providing enough torque to load the flipper mechanism. The servo I bought was the highest torque servo I could find in that weight range. If I wanted to increase flipper power and stay using a servo, I would have to do massive weight reduction on the bot that is already very weight minimized. As a compromise, I decided to move from a servo to a planetary gear motor. This would allow for a significant increase in trigger torque for around the same weight, at the loss of positional knowledge. Instead of having the servo respond to the position of the stick, I can just control the gear motor speed and set it to not move when the trigger is loaded. This might be tricky to do manually, but as a back up plan I would harvest the board inside of the servo I bought and mount the potentiometer on the trigger shaft, creating a pseudo servo of my own. This is a much more complex solution that I'd want to avoid if possible.
The servo that is in the previous version, has a stall torque of 88 oz-in. Using that as my baseline, if I wanted to increase the force up to 4.6 times as much as the servo version, I'd need a motor with a stall torque of at least 400+ oz-in of torque. Servo city has mini spur gear motors that are perfect for this. I wasn't sure on how fast I wanted this to turn, so I bought a couple different ratios that would all fit the torque needed.
The next step was making sure everything still fit in the 1lb weight limit. Below is the updated weight spreadsheet. The biggest change is that in order to make weight for the bigger gear motor, the wedges had to be thinned out to 1mm from 1/16" (1.6 mm) before. This is a little thinner than I'd want it to be but with how cheap the spares are, they could be considered more expendable and be replaced after a few battles. Everything is basically the same size and layout.
There were some other minor improvements that I made to the bot. In my testing I realized that I needed to put a hard stop to limit the travel of the flipper arm so that it doesn't continue to swing until it wedges itself against the base plate. To limit this, I added some holes to glue a thin piece of piano wire in the bot across the flipper assembly to stop the arm from over swinging. The other part of this is that the flipper arm needs to have some spring return to push it back down after the trigger travels underneath it to grab the underside. The central spacer pushes the leaf spring back up as the trigger rotates down. This will spring load the arm down to limit the amount of time the arm is in an upright position and vulnerable.
I had received a new TinyESC from Fingertech and installed it, but the 65RPM motor I had in there just didn't seem to have enough power to reliably fire the flipper. As such, I ordered some of the 33RPM version that theoretically have double the torque. Running these motors on 3s is enough to flip really consistently, but the motor itself doesn't seem to have significantly more torque than the 65RPM version. Being that I need to find a few final grams to shave off, I need to test if the 65 RPM motor would be enough on 3s as the 33 RPM motor is slightly heavier. This would also allow the weapon to reload more quickly which would be very helpful.
I have a sampling of all of the small batteries that fingertech sells in 2s and 3s for this project to test. Ideally I could use a smaller 3s battery that has lower capacity than the 2s battery I was planning to use as the higher voltage would mean the robot would use less amperage as the power consumption is based off the combination of voltage and amperage. I will have to test the bot out to see if the 3s 180 mAh pack I plan to use is enough to get the bot through a full 3 min fight.
That being said I am going to call this project done as far as this blog goes. None of the changes I make from here on out will change any of the looks or function. Just minor adjustments to make weight. For now, until I can find an event to go to, here's some photos and a test video.