GROUP 4 Final Report
Goal of Project: The goal of this project was to program our robot to navigate 12x12 tile course autonomously to pre-programmed destinations, whilst picking up blue and orange golf balls and depositing them in their respective bins at the end of the course.
Course Navigation: Given the choice of multiple sensors, we only used the LADAR system and the camera on the robot. The LADAR was used during wall following. We implemented a basic Bug 2 algorithm for obstacle avoidance because it was fairly easy to implement and is very reliable. It does not suffer from getting caught in loops like the bug-0 algorithm, and it takes a shorter time to navigate around obstacles than the bug-1 algorithm. Our algorithm used the ladar to detect if there is a obstacle present, and then moved into obstacle avoidance mode until the robot had fully navigated the obstacle. The robot was able to compare left and right errors to determine whether it would left or right wall follow around the obstacle. When there was no obstacle, the robot was either moving toward the specified positions, or ball finding. In specific, the robot checks every ladar array for a distance just barely past the robot’s boundaries and a smaller section in front for a larger distance. When the robot sees an obstacle, it calculates the vector from that point to the goal. To determine if the robot should right or left wall follow, the robot first checks if the right or left wall errors are small. If at least one of them is, it compares the two values. If left wall error is smaller than right wall error, it left wall follows. If neither of those errors are small, the robot checks front-right and front-left LADAR distances. If one of those is small, it compares the two. If the front-left LADAR distance is smaller than the front-right, the robot left-wall follows. If none of those cases apply, the robot defaults to right wall following. Once the robot gets away from that vector for the first time, it begins to look to see if it has returned to the vector and is closer. If the robot is closer, it turns off wall-following until it sees another obstacle.
Ball Detection: For ball detection, we used the camera to find blocks of pixels of either blue or orange to detect if the robot was seeing one of the golf balls. Once the robot spotted a ball, it would enter a control law based on the centroid position of the block of pixels on the camera. The robot was programmed to move towards the ball in such a way that the ball came in slightly left or right of center depending on the color. Our ball capturing system consisted of 2 doors connected to servo motors that opened and closed them as needed. As the robot got close to the ball, the correct door would open, the the robot would move straight forward and close to door to capture the ball. Once all the balls were captured and the course was complete, the robot was then programmed to drop the balls off in the specified zones. The robot would travel to the drop of zone, open he correct door, and then back up to release the balls. During the final competition, the robot was able to collect and deposit balls very well.
Ball Capturing Mechanism: Figures 1 and 2 show the robot with its ball grabbing mechanism. The motivation was to keep it as simple as possible, both to build and operate. By making the robot track 20 degrees left or right of center, from 2 tiles away, depending on the color of the ball, the robot is able to guide itself so that the ball is placed in the correct door. A middle separator keeps the different balls in different pockets. The RC servo is mounted inside the door by 2 bolts and is bolted to the doors, which open 2 tiles away from balls depending on color. This leaves adequate space for at least 3 balls, and no inhibition of their exit when depositing.
Figure 1 (robot claw, as described above)
Figure 2 (the robot)
Figure 3 (robot in action)