We want our robot to possess
In order to accomplish these high level goals, we need to satisfy specific requirements first.
For specifics about the mechanical, electrical, and software designs, see each respective component page.
With the above goals in mind, our robot will consist of a large "net" structure atop a mobile base. The hoop-net will catch the ball, and feed it into a staging lever. Once the robot is in position to throw, the staging lever will pull back, dropping the ball in to the loading chamber, and then return to the neutral position, pushing the ball into a pair of high speed rollers. These rollers will throw the ball forward.
As the robot cannot cover the entire catching area by standing still, a mobile base will be used. The Pioneer 3DX robotic platform has sufficient speed and accuracy to move the robot around the catching area, and is fully controlled via the manufacturer supplied ROS Aria package. As movement commands will use ROS, we will continue to use the ROS ecosystem and will process image data from an XBOX Kinect to detect the ball in air and the human partner on the opposite side of the field.
Figure 1: A block diagram of the robot internal pieces. Arrows represent information communicated between each discreet part, whether that is digital information over USB (Kinect to netbook) or voltage & current levels directly to hardware (Motor controller to motors). Bidirectional communication exists between the netbook and the Pioneer, the netbook and the Arduino, and the Arduino and the motor controller.
Figure 2: Flowchart of decision logic for the robot. The robot starts off looking for a ball. If the robot has never seen the ball, but notices one inside the launch chamber (detected by Catch Trigger), it moves on to the throwing phase. This avoids a trap condition if the robot never sees the ball in air or if it starts with the ball (as in the competitive side of the competition). From there, the robot aims, loads the ball, and fires it forward. As the ball is airborne, the robot moves back into the initial position underneath the hoop.