The front of the Nerf Tank. The thermal camera is looking right at you!
All those wires.... It's a good thing we know how to manage them all.....
Circuits for both sensors and the motor conrtollers.
The main purpose of this project was to create a toy and have fun with friends. Nerf wars are a huge part of many individual's childhood. We wanted to create a toy for us and for children to enjoy.
What it does
It is an autonomous robot on tank tracks. Its thermal camera and proximity sensors let it path around and seek a target. Once a target is found, it fires until the target is gone or it is out of ammo.
How we built it
We used an old set of RC tank tracks. All the motor controls, sensor circuitry and mechanical workings were built from the ground up. We programmed it using the Arduino libraries.
Challenges we ran into
We ran into many challenges both with circuitry, hardware and software. Completing a project like this in 36 hours is a stretch because so many things can go wrong that are out of our control.
The first issue we ran into was creating a motor controller. We did not have parts to create one, so we had to create one using various transistors. After we constructed an H bridge, we noticed the logic levels for our micro-controller were not high enough to drive our MOSFETs. So, we used an operational amplifier that saturated at a higher voltage. Since it is a non-inverting amplifier, this isolated our micro-controller pins from the rest of the circuit and let us provide a high enough voltage to the gate of the MOSFET. Our H bridge then worked very well, but the motors did not have enough torque on start up. Adding a 0.1 uF capacitor in parallel fixed this. It helped the motors have more torque on start up allowing them to get moving more quickly.
Another hardware issue we had is that current would shoot back from the DC motors and affect our sensor readings. We fixed this in the software by simply stopping the motors for 2 milliseconds before reading the sensors.
The tank tracks did not like to move forward very well because the track would become tight if it stood still for two long. We fixed this with software. By moving the robot backwards for a little bit when the program first starts, it loosens the tracks and it can move forwards more easily.
Software for this project proved to be very tricky. We started with building blocks of code. But in bringing them together, we found a lot of timing issues. It takes time for the micro-controller to preform certain functions. Reading the thermal camera by far is the most resource intensive process for the small processor. Since the data comes in on a I2C serial line, the processor has to read each pixel one bit at a time. This caused issues with the timing in moving the robot and updating the state machine. We had to do a lot of trouble shooting to find out which order we need to read sensors, move and update states. The order and timing of these things had a huge impact on the robots functionality.
Accomplishments that we're proud of
Our robot is completely autonomous. It can avoid collisions and edges, searching rooms until it finds a target. It will then track that target until it looses sight of it or runs out of ammo. We are very proud of all the engineering that went into making it work. From the placement of sensors to the mechanical workings, everything had to be carefully considered.
We are also very happy with how well our teamed worked together. We were composed of a computer science major, an electrical engineer, a materials engineer and an aerospace engineer. We had different experiences and backgrounds to bring to the team. But of of our specialties, each one of us had skills to offer that no other member could. It proved to be very valuable to have so many different skills to draw upon. Also, our diversity greatly added to the overall creativity of our team. We are very happy and very proud of how well we worked together.
What we learned
Since we all came from different backgrounds, we had much to teach each other. Many of us learned hand on skills like soldering and bread boarding. Some of us had never built a circuit, but quickly learned how to both build and trouble shoot one. Many of us were knew to C programming and had never programmed anything that interacted with the real world. For many of us it was a novel experience.
The thing we learned most was teamwork and communication. Since not all of us came from the same background, we had to use different terminology to communicate what we needed to have done. It took a lot of trust to turn coding or circuit building over to somebody you not only just barely met, but also who did not have an experience in that particular area. Each of member of the team proved they were capable of learning and adapting quickly. We learned how to communicate, plan and delegate. If it were not for those things, we would not have completed the project.
What's next for Tank got Nerfed
We would like to rebuild our motor controllers and make our circuitry more compact. Putting it on a printed circuit board would greatly reduce the amount of wires running all over the place.
Also, we would like to control this robot remotely as well. Sometimes, kids get sick and end up not being able to play with their friends. We would love to attach an actual camera and have a different controller that was wifi enabled. In doing so, kids could remote in and have nerf war with their friends despite being sick at home or in a hospital.
The purpose of this project was to remember to have fun and remember our childhood. We hope to make a more refined version to later to share with kids. It is important to have fun and spend quality time with friends, nerf wars being a good way to do so.