ASEE 2011 competition
The goal of this project is to have a robot start on the east wall, navigate the track, collect all red doll rods, and finish touching the original east wall. The key robot rules are: robot must be fully autonomous, total budget is under 450$, the robot must fit inside an 8 x 12 x 10 inch box, and it must complete the task within two minutes. We designed the robot to be similar to an assembly line, so the robot never stops moving. Our robot ended up using a PI controller based on the Arduino PID library.
The batteries were only changed twice which shows how the project focused on building small modules, and shows how smoothly the final design came together. We ended up not competing due to funding issues with the school, which is why nothing was fully completed or perfected.
- Moser EE- electronics, programming, control theory
- Imig EE – electronics, control theory
- Doxsie ME- CAD design, organization, mechatronics
- Dulce BioE- general management, organization, paperwork
The total time for this project was about seven months!
- Rather than rushing into any decisions, we decided to brainstorm for about two months. This brainstorming allowed team members who weren’t interested to drop out and allowed everyone else ample time to research, think of designs, test sensors, and test algorithms.
- Next stage was to build a robot that could follow a wall, we had two robots at this time — Arduino and a Propeller based robot. Many complications arose with the propeller robot, so we ended up going with Arduino since it’s simple to use. This stage took about two months.
- Once the team’s robot could follow a wall, it was time to navigate the course perfectly every time. This stage took about a month. A video oh another!
- The final stage was giving the robot it’s second chassis, and test one door. We then added the color detection modules. This stage took about a month, giving us plenty of time for perfection.
I ended up doing the majority of the programming and I’ll give a bird’s eye view on the concepts of the program.
- Break the overall program into three stages.
- Keep everything very modular and break up core robot functions into methods which are reused in all applicable stages.
- Write the program in a style which contains no time based delays. If a large time based delay is needed, then store the current up time and don’t take action until the stored up time and the current up time differ by whatever the delay needs. There are some exceptions to this, but they’re under ten milliseconds.
The Arduino may do a few hundred loops a second where the actual processor just runs calculations and makes adjustments to registers, it’s not generating signals for the servos. There are large delays when the robot is turning at the corners, or at a time where it doesn’t need to be accurately following a wall and color detecting. We were originally using a compass, but a simple estimated turn is better and saves 30$.
Final ASEE robot source code (pdf) – Since we didn’t go to Canada, the code isn’t pretty.
We did use a standard Arduino with an Atmega328. This proved to have enough pins for everything. Our Arduino was the DC BoArduino from Adafruit!
The wheels used continuous rotation servos. Doors were cheap analog servos, color sensors are the same ones that I wrote about earlier…etc. A full list of the final parts is in the pdf below.
The doll rods are much easier to work with if they’re knocked over since they can roll. I’ll admit that we used some design ideas from the other team. They didn’t knock over the doll rods and had major difficulties with actually getting the rods into their storage compartment. Their robot was based on dead reckoning, which meant there was no feedback when it came to navigating the track. Although dead reckoning is an easy path to take, it’s not ideal when tolerance is less than an inch. The video below is an older one back before we completed the color sensors. The servo in the next video is a digital all metal gear servo and it’s MUCH nicer than our final servos.
front view from robot showing pid response:
inside the cargo bay (collecting both colors):
Why are we not competing?: The tech department is funding the project, and our team is composed of engineering majors. Since we’re not from their department, they weren’t able to drop a few thousand to send us to Canada. It was frustrating since this was not explained until a few weeks before the competition!
Why didn’t we use all the doll rods?: Yes… as you can see we weren’t using all 12 doll rods. This was because the other team that dropped out still had most of the doll rods, and we didn’t have enough extras to fill up the course. We didn’t get around to making more.
One more video!