2016 / Course Final Project
Role:
Programmer, Designer
Timeline:
Fall 2016
Tools Used:
Arduino, Breadboarding, SolidWorks, Laser Cutter
Design Overview
Turtlebot was designed to compete in a robot tank battle competition as the final project for Cooper Union’s Autonomous Mobile Robots course. The robot had to meet several objectives: complete a round without colliding into walls or obstacles, leave and return to its home base, and score points by tagging the opposing base and the opposing robot with a ping-pong ball. The robot uses two servo motors to drive, controlled by an Arduino. It uses six Sharp IR sensors to detect objects. Turtlebot has six IR phototransistors to detect the opponent’s robot and base in order to target and launch at them. A rubber-band slingshot is triggered by a solenoid linear actuator in order to fire the ping pong ball. Turtlebot has a very powerful and accurate ping-pong ball launcher, and it uses this to its advantage. The competition strategy is to initially score points with long range shots at the opponent’s base, and continue by roaming the field, scoring more and hunting down the opponent’s robot. Turtlebot successfully completed all of its assigned objectives, and functioned consistently for the duration of competition.
Background
I worked in a team of four designing, fabricating and programming Turtlebot. The Robot Tank Battle Competition consists of multiple one-on-one rounds. The 6’x10’ arena contains a home base for each robot that’s marked with an IR beacon. There are three different types of obstacles in the arena, and a robot loses points for each obstacle it collides with. Each robot should also be equipped with a ping-pong ball launcher to attack enemy robots and home bases. The goal is to design an easily maneuverable robot with a reliable ball launcher, the ability to detect and avoid obstacles, the ability to detect IR light, and robust programming that integrates these abilities.
Method and Results
We used an Arduino Uno microcontroller, six IR distance sensors for obstacle detection, five IR sensors, two 168 RPM high-torque motors and a LS298 H-bridge to power them. Our robot design had 5 tiers to organize all the electrical components and to prevent any interference. All the tiers are made from laser cut acrylic and secured with vertical threaded rods. Because Turtlebot had several functional requirements, my team tested each function independently before combining all of them into the main code. This required a lot of troubleshooting and debugging, but ultimately Turtlebot successfully avoided collisions and accurately shot enemy robots in battle.
I was primarily responsible for writing the code for Turtlebot in Arduino. I wrote an object detection/avoidance loop that was triggered if an obstacle was detected within a certain threshold by the distance sensors. I also wrote a wall following algorithm, which served as Turtlebot’s main behavior. Turtlebot drives toward the right wall when leaving its home base and upon reaching it, turns 90 degrees so that its side is facing the wall. Turtlebot then drives alongside the wall until the IR sensors detect the enemy home base beacon. When the IR sensors are triggered, Turtlebot launches a ping-pong ball at the enemy home base. The assembly drawing for Turtlebot is shown below.