Timeline

What we've accomplished so far?
- Designed and printed the base for the robot, which includes the piston, the gears, the pulleys, and mounting system for motors and wheels.
- Created a spring that compresses on command, which will be helpful for the jumping functionality of the robot.  Jumping was successful but due to a  chipped gear in the gearbox of the compressing piston the jumping feature is not present in the final product.
- Finished designing and implementing the circuit for this project.
- Developed a WIFI system, where the robot can be controlled to move forward and jump on command.

Challenges
1) Weak Base for the Wheels: Our first set of support blocks for the wheels just involved three thin cylinders that protruded above a flat surface to go through holes in the motors of the wheels, keeping the wheel intact. But this wasn't enough as the wheels went through enough pressure to snap the cylinders out of place. So we then added two extra cuboids on top and below of the motor, reduced the length of the cylinders and increased the infill of the print. Furthermore getting the spacing/dimensions right was very challenging. The motors had 3 small holes that we were designing cylinders to go through which took a few prints before we got it right.

2) Weak Base for the piston: When we first tested out our project, the base for the piston had bent when the piston compressed because we sort of extended the car body to allow for enough space for the piston. So our first change was to put in a few extra reinforcements. This did make our model slightly bulky.
To make it a bit more compact, we put the piston and a gear on the same base as the gear and the pulley system which solved the issue.

3) Spring's length being too long to compress: We reduced the length of the spring and tested it until we got the desired height. Then the spring still felt too strong as our piston had difficulties compressing it, so we ordered a new spring instead of being 60 lb max load it was only 40 lb max load so it was easier for our piston to compress and seems to work better.

4) Gear snapping out during the middle of execution: While we were testing out our prototype, we noticed that the gear used to snap out of the board before the spring could release. We made the gear more stable and intact by screws and bolts.

5) The coupler system took a lot of trial and error: For starters coming up with a design for this was extremely difficult. The basic idea remained the same where we put magnets inside to hold the two couplers together and they have a sort of track to guide them into locking together. Then the bottom one is attached to the plunger with a dowel so that we can pull up the spring. The top one connects in by being dropped down and held in place by the magnets and then getting twisted into place. Then the piston rises them up and when it reaches a certain point we have a little overhang that the top coupler pushes up against, turning it and releasing the bottom coupler and the spring. This took a lot of trial and error to get right.

6) Ropes for the release mechanism: To tie knots and to compress the piston, we had to find a really strong rope which wasn't too thready. We first tried Paracord original but then after multiple tests, we realized that Kevlar rope was a better choice. Paracord stretches by about 30% which reduces the length that the spring would be compressed. Kevlar cord does not stretch. 

7) Knots: A simple knot wouldn't allow the release mechanism to work. So we had to try three different knots i.e; spanish bowline, bowline, taunt line hitch, square knot, to get the desired result. The bowline on both ends is what we ended up doing.

8a) Piston Issues: Our piston broke, this was the night before the presentation so we clearly did not have time to order a new one (plus it was $30). So we decided to take the piston apart and see if we could understand what was going on inside. Kian was able to deduce that the gearbox was the issue as it got dirty and it sounds like a gear might have lost a tooth because it is making a weird noise. We cleaned it up and prevented the gears from locking allowing us to fix the piston although it does still make noise. The piston is now inconsistent it seems that at times the piston just stops working and we need to go in and mess with it again to get it to start working. We even tried using the air compressor to try and get rid dust.

8b) Piston Issues 2: When we were going into the piston to mess with the gearbox again because the piston locked up, the motor was only getting a current in one direction, i.e. it could only extend and not retract. We were not really sure why this was happening as we assumed that the piston was prevented from retracting once it hit the max stroke by a mechanical mechanism. So we starting pulling apart the piston and looking inside. First we thought it was the gears that were messed up as there was a gear on the motor of the piston. We looked at the teeth closely and they seemed fine. Then we got another DC motor from the makerspace and ensured that we could reverse the polarity the same way, which we could. So we decided to try and take the gear off the original motor and put it on this new motor. It took us a while, but we were eventually able to pull it off with pliers. After we did that we wanted to put the new motor in the piston so we had to remove the solder that was on the original piston motor. Then we decided to test out the piston's original motor by hooking it up directly and it WORKED, both ways. This was a shock, but it showed us that there was something that we didnt understand about the circuitry. So we further pulled the piston apart and understood the circuitry inside. This showed us that it wasn't working because the piston's circuitry was stopping it from retracting. Essentially we boiled it down to this issue and believed that if we pieced it back together properly it should work, so there was no issue the piston was just fully retracted so the circuit was stopping it from moving more. Then it still wasn't working. We messed with it for about half an hour and finally realized that the wires must be at a certain angle for it to work. So we put the piston back together holding the wires in the correct angle and only the motor works. The gearbox was already too damaged to fix.

9) Power Source: Firstly we need our project to be mobile (obviously) so we could not simply use a computer or a DC voltage supply unit from the makerspace. Instead we had to choose between batteries. The first issue here was getting the right voltage for each component. For the wheels and the board we wanted the same voltage, we chose 4.5 V. This was to allow the batteries to be in series and easily power all the components. But we also needed to supply the piston with 12 volts. This gave us many battery setup options as we could do a 9V battery with 3 AAs or we could do 8 AAs in groups of 3, 3 and 2. Or we could even do AAAs. The other factor we had to consider was the current. The piston needed 20 mA while each wheel needed 100 mA, for a total of 400 mA. We had to weigh our options and ensure that we had the correct amount of voltage and sufficient current for each component, as well as wire them correctly. 

10) Weight: Weight management and distribution was a huge concern. For starters we didn't want the car to be too heavy otherwise the spring would not be able to get it off the ground. But a more difficult issue was distributing the weight so that the car does not tip/flip when it jumps and so that the spring hits the ground as evenly as possible.

11) Tensioning of rope: Getting our Kevlar rope to be the correct length to loop through our whole mechanisms proved to be difficult as we had to tie a knot at both ends. The solution was putting a bolt and wrap the rope around it to increase the tension. When we got the desired tension we put nuts on the ends to hold it in place. This seems like a relatively simple solution but it did take time for us to devise and it made it a lot more difficult to put the system together again over and over when we were changing different pieces for better designed ones.

12) Release Mechanism flying away too far: Our goal was too make the hook reattach by itself to the cuppler system with the help of a few magnets, but what usually happened when the spring released was that the cuppler went flying on the other side of the board. So we took some tape and plastic and soldered that on the pulley to prevent the 'rope and hook' system from flying.

13) Reinforcement: Our project has a lot of stress on all the components. This was due to the compression of a strong spring. Numerous components were breaking so we needed to invoke some changes. We used a lot of screws to hold things in place as the metal is very strong, much stronger than 3-D printed components soldered together or hot glued together. For example our plunger was 

14) ESP32 Chip: We had cut the prongs off of the esp32 wifi dev chip we were using to hot glue it directly to the board so it would be secure during jumps. However, because the chip was so close to the board when the upload cable was plugged in it would pull up on the cable insert on the chip, eventually ripping it off right before the presentation. We had quickly removed all soldered connections and re-soldered them onto a new chip. In the future we should use mounting pegs and solder onto there so if there is a problem with the board it would be easier to replace it in the circuit. 

15) ESP32 Chip (software side): When we first tried to upload to the ESP32 chip our computers weren't recognizing that anything was connected. We weren't really sure what the issue was but eventually figured out that we needed to install a driver in order to properly connect the ESP32 and upload our code to it. So we searched online and after installation and messing with settings we were able to communicate with the board.

16) Code: Coding was a little challenging at first as we wanted to connect to a website with buttons to manage the movement of the piston and the car. At first we thought we would have to use html/js to create a website then use processing to bridge between html/js and arduino, and finally have some code in arduino. We started with this idea and realized there must be a better way. We were able to find a good tutorial online which allowed us to do everything through arduino making the code much more concise and easier to work with. 

Lessons Learned

There were two very big lessons learned from this project:

1) Don't be too ambitious. Our first project pitch had a jumping robot with an obstacle course on a mini-treadmill. During the course of our project, we realized that our car itself was going to take up most of our time. Furthermore we originally planned to have various different speeds for the car, have it able to be turned, and more however we quickly realized that creating a jumping mechanism was extremeley difficult so we switched up our plan to mostly focus on creating the jumping and simply have a car that could drive forwards at a set speed and jump. 

2) Time Management: We did start very early on our project, but we didn't plan out every step of the way efficiently and so we ended up spending a lot more time on steps that we didn't need to. Plus we knew it would take some trial and error, but it took A LOT of trial and error. Every step took a lot of time and testing, and it was very challenging to try and bring together the physical release mechanism, the circuitry and the code all at the end.