Showing posts with label Multi-shot Cannon. Show all posts
Showing posts with label Multi-shot Cannon. Show all posts

Friday, May 11, 2012

Team I - The Buisiness

Main Design Concept


Detection and firing at moving targets has been a topic of great interest right from the time of World War II. This majorly came in the form of anti aircraft guns used to detect enemy aircrafts, predict their future position (or follow the aircraft) and fire accordingly. The challenge faced by us this semester is similar to this. We had to build a robot which shoots at static and dynamic targets. The robot is to fire Nerf balls at retro-reflective targets at a certain distance away. For the static target test, it is required to fire at single static targets randomly located in the plane and limits of the target bed. The dynamic state of the target consists of linear motion in the horizontal direction with deceleration and acceleration at the turn around points. Testing in this mode required us to fire at one moving and two static targets per round, and 4 such rounds in total.

The design requirements for this project are many fold. The robot is not to exceed dimensions of 2’x2’x2’. The power supply is supposed to be a dedicated one and the robot is not to rely on any sort of bench supply for power. The Nerf balls are to be dumped into the system, and not placed strategically. The design is to be expected to track the targets actively. The design, fabrication and testing of the robot is to be done in $350 which is refundable. The robot is required to be really safe to operate and is to be aesthetic in appearance. No laptop support for the final test is allowed. 




 Description of Subsystems

In designing our robot the majority of our major decisions were governed by a desire to make the precision of firing as high as possible.  This took precedence over other qualities, such as speed and firing power, and in some cases ease of manufacture.  This effort had great influence on our decisions in designing our firing mechanism, depicted in figure 1.  The firing mechanism employs a unique approach in which the ball is "kicked" by a piece of spring steel which has been bent back.  The idea was that if the spring was latched in to place by a physical reference before it was allowed to swing forward, it would hold a very repeatable amount of energy, and hit the ball in a very consistent way.  We also discussed the two other popular ways to propel the ball, pneumatically and with a flywheel, and decided that both of these approaches would impart a less constant amount of energy to the ball, because they will depend on exactly how fast the wheels are spinning (which is either dependent on the control feedback or fluctuations in the power supply) or the current pressure in the air line.  Another positive quality of the kicking approach is the fact that it introduced zero non internal friction to the system.  We didn't avoid friction because it is inefficient, we avoided friction because it introduces randomness.  We didn't have to rely on the seal between the ball and a barrel being identical in every shot, or the friction between the ball and a wheel being identical in every shot.  We did not rely on friction to add energy and there was a negligible possibility of friction subtracting energy.  We designed our ball rest in such a way that the ball leaves contact with the robot instantaneously with no rolling or sliding, thereby minimizing the randomizing role that friction would play.

 Figure 1: Entire firing mechanism with actuation 

This choice of launching mechanism introduced an important difficulty.  We immediately knew that the amount of torque it would take to pull back the spring would be large.  After evaluating many different options we decided on using an electric power drill to supply this torque.  This simplified the setup fairly considerably by providing enough raw torque to make any extra gear reduction unnecessary.  We simply made an arm with a shaft on it that the drill could grip that would pull back the spring until it caught in the latch.  The amount of power this provided was very large.  We started out with a stiffer spring that had dramatically more firing power, and the drill was still easily capable of pulling back this larger torque spring in a fraction of a second.
After testing with the power drill we needed to find a way to control it with the micro controller.  We originally had planned to try to drive it down and then back up, but found that the safety features on the device made it difficult to quickly switch directions.  The solution we found in the end was much more elegant anyway.  We connected the end of our loading arm to a spring which simply back drives the drill when it is not running.  The torque the drill provides is easily large enough to overcome this weak spring, and the instant it is turned off it gets neatly pulled back in to the starting position, out of the way of the launching spring.  This innovation allowed us to control the drill with a much simpler single relay setup.  We tied down the power switch on the drill and then used a simple relay to effectively plug and unplug its power cord every time we needed to cock the firing spring.

 Figure2: Latch that holds the ruler loaded

The two remaining components to the firing mechanism are the spring latch and ball feeding mechanism.  The spring latch was given a torsional spring that holds it up and allows the firing spring to click in to place.  We then actuated this latch with a servo connected by a string.  This way when the latch needed to pull away to allow the spring to click in it could do so without needing to wait for the servo to move out of the way.  figure 2.  This ended up to be a critical feature, because the servo moved much slower than we expected, and the power drill moved much faster than we expected.  The power drill draws a very large amount of current when it stalls at the end of its stroke, so waiting for the servo to move to its extremes might have been a long enough pause to actually burn out the motor in it.  

The ball feeding mechanism figure 3 consists of a simple gate that allows one ball to pass and roll in to the rest every time it rotates 90 degrees and back.  Above this gate was a tube that allowed all six balls to queue up.  At the top of the tube was a flat corral  area that funneled the balls into it (figure 4).  In order to proven the balls from jamming against each other and not feeding in to the tube a simple wheel was added at the height of the centers of the balls.  This wheel was placed so that any time two balls would have bumped in to each other to span the width of the funneling area and stopped the balls behind them from moving forward, one of them would be rotated back out of the way to the back of the line, allowing the others to move. 

 Figure3: Ball loading mechanism

The important feature of this technique was the direction the wheel rotates in.  Any attempt to push the balls forward would cause them to jam even tighter, but by pushing the jammed balls back uphill (where there was space for them to move) they would be moved easily.  This mechanism proved to be very capable, occasionally clearing jams involving 5 of the 6 balls.
Another area in which our strive for precision played a large role was in the design of our vertical and horizontal actuation.  Since we wanted to very carefully control our shooting power to be constant, we elected to simply rotate our shooting mechanism to point in the appropriate direction.  Since we were very particular about our accuracy, we decided that we wanted to have a precise measurement of the angle in both of these dimensions and feed this back to our micro controller for control.  For this reason we shied away from using servos or stepper motors for these dimensions.  We got an academic discount on some very nice 1024 positions per rotation absolute position encoders which we used in both our axes.  This meant that we would have an accuracy of around .3 degrees.  In the end one of these broke and we replaced it with a simple potentiometer.  We were surprised to see that this seemed to work just as well. 

 Figure4: Aluminum trough that loads balls and avoids ball clogs

To actuate these two axes we originally planned on using a horizontal timing belt and a vertical lead screw.  We replaced the timing belt with a bike chain early on because it was easier to source, and then ended up having chronic problems with it.  Keeping it properly tensioned was a constant ordeal.  In the end we replaced this with a four bar linkage between the drive motor and the thrust bearing that the whole platform was mounted on (figure 5).  For the vertical axis we discarded the lead screw due to speed concerns (as well as ease of sourcing) in favor of a simple spool and cable. Figure 6 The cable pulls on a bar that is tied to an axle on which the launching mechanism is mounted.

 Figure5: Picture showing the four bar linkage to actuate the turntable and a pot for position feedback

The final important decision necessary was what hardware to use for our vision system.  As discussed, one of the requirements was that no personal computers could be used for image processing.  Since we wanted to follow this rule we quickly narrowed our choices down to either the CMU cam or the Wiimote IR sensor.  These were the two options that would seem to work with the micro controller that we had decided to use and were already comfortable with (arduino).  Both of these options did the image processing on board.  The Wiimote sensor seemed to be more difficult to set up, requiring somewhat intense disassembly and resoldering, but seemed also to have better qualities.  In particular, the frame rate and resolution seemed to be much better on this device than the CMU cam.  The price was also much better, although we would have been much more likely to go with the CMU cam if we had known that we would get a steep discount on it.  By the time the pricing on the CMU cam was listed we were close enough to having the Wiimote sensor working that we decided not to make a change.  

 Figure6: Pitch actuation using a spool and some thread

Team Members and Responsibility 

Ben Strassmann - Camera and electronics hardware and software;
Nishant Kelkar -Wiring, ball management
Sahil Girish - Manufacturing and Design
Steven Christensen - Manufacturing and Design

Video




Team K-Wall E


MAIN DESIGN CONCEPT
In order to achieve the requirements of the multi-shoot cannon project, we came up with a design that’s mostly composed mainly of three systems. At first, we built the overall structure of PVC material that has two degrees of freedom that are actuated by two stepper motors and calibrated using potentiometers. After that, a firing mechanism was created using a rotating wheel driven by a dc motor. The ballistic balls are fed to the rotating wheel through a hopper is pushed and pulled by a spring-rod mechanism which is actuated by a servomotor. Then, a vision system was built using a Wii camera to detect targets and IR-LEDs to illuminate targets.


TEAM RESPONSIBILITY
Mohammed Alqahtani
Responsibility:
Firing Mechanism Design/Structural Design/Machining Fabrication/System/Testing/CAD Modeling/Documentation –Webpage & Public Demo.

Rohit Padmanabhan
Responsibility:
Structural Design/CAD Modeling/Electronics/Testing/Programming/Documentation -Final Report.

Jason Reballo
Responsibility: Vision Sensing/Testing.

Joon Seob shin
Responsibility:
Nothing

Labeled Pictures of overall system with description

Figure1: The Overall System
Figure2: Firing Mechanism&Hopper



Figure3: Firing Mechanism
'


Pictures and descriptions of subsystems

The Firing Mechanism

The mechanism is made of a rotating wheel driven by a dc motor as shown in figure 2&3. It also has a servomotor and a srping-rod mechanism thats is used for feeding balls and pushing them into the rotating wheel. 

The Tracking Mechanism

The main fuction of it is holding the oeverall systems which includes the vision and firing system. Also, allowing the overall structure to make two movements for panning and pitching. Both degree of freedoms were actuated using stepper motors and calibrated using potenitometers. 

The Vision System

A wii-mote camera was used to acquire target coordinates and 10 arrays of IR-LEDs were used to illuminae targets so that they can be tracked to a reference point on the testbed.

Video





Team E - Rambo

Main design concept
     Team Rambo based its design around the need to build a system that can fire Nerf Balls as consistently and quickly as possible. We decided to use pneumatics because of its high power, which would give a relatively linear trajectory, and the high consistency in firing accuracy. The cannon is equipped with a plastic piston, threaded into a high pressure hose that fires the balls at up to 100 psi. An aluminum tower holds the central pivot point about 7 inches off the turntable. The aluminum barrel is mounted to the acrylic baseplate with hose clamps and the piston has an aluminum clamp that connects it to the linear actuator. This actuator is connected to a three-way valve that exhausts the air in the line once the signal is stopped, thus allowing the piston to re-enter the barrel. The camera gathering the target information is mounted on the front at an 8 degree angle in order to see all of the target board. Figure 1 shows all of the components of our design.


Figure 1: Overall System Components


Team Rambo
David DeGerome-Control, Electronics
Isaac Marx-Machining, Mechanical Design
Neal Seegmiller- Programming, Computer Vision, CAD Design
Jessica Tiu- Software, Circuit Design

Subsystems
Loading System
     The main component of our loading system is an acrylic piston that seals the chamber when a ball is loaded into the barrel. The piston design functioned by pushing a ball forward and closing off the hopper hole, firing, and then retracting, allowing the next ball to drop in as shown in Figure 2.

 Figure 2: Piston retracting(top) and pushing a ball forward into firing position(bottom)

     Other components in the loading subsystem include a hopper, aluminum loading tube, rubber bands, and a 3-Way solenoid valve. The hopper of our loading system is a 22 oz. plastic cup, which is attached to an aluminum loading tube that can hold all 6 Nerf balls. The hopper has no actuators in it, relying on gravity to feed the balls. The rubber bands(B in Figure 3) help retract the piston to its resting position. The time it takes a ball to fall into the barrel from the loading tube is less than 1 second.

Figure 3: Ball Loading System: Piston(A[resting position]), Rubber Bands(B), Hoses and Clamps(C)

     In order to control the solenoids via our microcontroller, we had to create a switching mechanism because the microcontroller did not have the necessary voltage or current to activate the solenoids. We implemented the following circuit using transistors(Figure 4). This allowed us to output a 5V signal from the microcontroller to the transistor. This would “turn on” the transistor and allow 12V to pass to the solenoid. We placed a diode between the pins on the solenoid so that the back emf did not damage the microcontroller.
Figure 4: Solenoid System: Circuit Diagram
Firing System 
     The firing system consists of a 2-Way solenoid valve, barrel, and hoses and clamps(Figure 5).
Figure 5: Firing System: Barrel(A), 2-Way Solenoid Valve(B), Hose and Clamps(C)

     We use a ¾’’ hose as an expansion chamber to fire the ball. Initially, we used a smaller diameter hose and the firing power was lacking. We found that the bigger hose gave us sufficient power. The 2-Way solenoid valve activates and the compressed air releases out of the hose. Inside the barrel, we made a slight indent at the bottom in order to prevent the ball from rolling out when the barrel was pointed downwards. The complete pneumatic layout for both the loading and firing systems is below(Figure 6):
Figure 6: Pneumatic Layout of Firing(Left) and Loading(Right)

System Vision System
     Our original system design was to use a webcam(A on Figure 7) with the Gumstix microprocessor to analyze images and send via serial the positions of the targets to our microcontroller. We were unable to get the Gumstix to run our vision code, so we had to use a laptop in our final system. The laptop was able to read images from the webcam and send current positions of all 3 targets to the microcontroller.
Figure 7: Vision System: Webcam and Mount(A)

Azimuth and Elevation Aiming System
     In order to move the barrel to a desired position, we used 2 high torque motors that actuate the azimuth and elevation angles of our system(Figure 8 and 9 respectively).
Figure 8: Azimuth Rotation Motor

Figure 9: Elevation Rotation Motor(A) with Potentiometer(B), Turntable(C)

     The motors have dual output shaft, so we were able to mount a potentiometer(B on Figure 9) to each motor. These potentiometers are rated for ½ degree precision and a range of 90 degrees. The range of 90 degrees was sufficient for our task because the motors only had to move small angles to track targets on the entire range of the board. The azimuth motor is attached to a turntable(C on Figure 9), which rotates the entire tower. The barrel is rests on an acrylic platform that mounts to piece of aluminum attached to the elevation motor. The motors are powered by Carnegie Mellon motor driver boards which receives a PWM signal as input and outputs the corresponding voltage.

Software Architecture
     Our software architecture consists of two programs: track_targets is written in C++ using the OpenCV library and executes on a processor (e.g. a laptop). It simultaneously tracks all three target locations in webcam images, and converts these locations into azimuth/elevation angle commands. These are sent, along with other information, to the Arduino via serial communication in a 31 digit numerical string (explained in Table 1). multishot_cannon_controller executes on the Arduino. It receives input from all remaining sensors (potentiometers and switches) and controls the motors and valves of the cannon. Software communication is summarized by the flowchart in Figure 10. Note that, no communication from the Arduino to the computer vision program, track_targets, is required; only debugging messages are sent. The state of the cannon (including mode, current target, etc.) is fully managed by the Arduino and is unknown to track_targets.

Table 1: Explanation of numeric string sent to Arduino via Serial communication



Figure 10: Flowchart of software communication

 Video
 

Team G - Red Dragon 3

1. Main design concept
The goal of this project is to build a mechatronic device capable of shooting projectiles (Nerf ballistic balls) and striking static and dynamic targets continuously. To achieve this goal, since all of our group members are mechanical engineers, our design of the shooting mechanism is more focused on using mechanical structures. Basically, we use rubber bands to generate elastic potential energy for shooting and use a cam to tighten and loosen the rubber bands. To realize the tracking of targets in different positions, we need to aim our robot to different targets accordingly. We designed two mechanical subsystems to get pitch and yaw freedoms. Specifically, we designed a four-bar linkage for pitch and a square turntable for yaw. Details can be found in the descriptions of overall system and subsystems. 


For sensing, we used an IP camera to grab RGB information of the target board and detect different targets using RGB information. The microcontrollor we use is CompactRIO, which is unique among all groups this year. And we used LabView for control system programming. 


2. Team members and responsibility
Haiyue Li (Team leader): Electrical control system design and realization, assistance in design and assembling, testing, final report.
Bowei Tang: Mechanical structure design, assistance in assembling, testing, final report.
Xiaowei Zhu: Manufacturing and assembling, sensing, testing, webpage.


3. Labeled pictures of the overall system with description
   Fig.1 Overall System

Fig.1 is a picture of outlook of overall system. As we can see, all the mechanical designs can be seen from the labeled picture. Our system includes ball feeding and loading structures, shooting subsystem which contains rubber bands and the cam, a four-bar linkage for pitch freedom and a square turntable for yaw. Moreover, we can see the IP camera for sensing, servo and DC motors for system controlling, the CompactRIO microcontrollor and also the power supply. 


Fig.2 Overall Control System

Fig.2 is an image showing the overall control system. As we can see from it, the CompactRIO microcontrollor receives information from the IP camera and control four motors accordingly(3 servo motors and 1 DC motor). 


4. Pictures and descriptions of subsystems
4.1. Mechanical Subsystems
4.1.1. Aiming subsystem
Fig.3 CAD model for Aiming Subsystem(Pitch and Yaw)
Fig.4 Real Model of Aiming Subsystem
Fig.3 is the CAD model of the aiming subsystem, which contains mainly a four-bar linkage for controlling pitch and a square turntable for yaw. We also added a counterweight at behind to decrease the torque in pitch. Fig.4 is the real model we manufactured and assembled for aiming subsystem. 


4.1.2. Shooting Subsystem
Fig.5 CAD Model for Shooting Subsystem
Fig.6 Real Model for Shooting Subsystem
The shooting system as we can see from Fig.5 mainly contains a cam to tighten and loosen the rubber band by pulling strings attached on the rubber band. The cam will rotate to tighten the rubber band and at the straight line position it will suddenly loosen it, which can generate enough force to shoot the ball. Fig.6 is the real model of the shooting subsystem.

4.1.3. Loading Subsystem
Fig.7 CAD Model for Loading Subsystem
Fig. 8 Real Model for Loading Subsystem
We used a long cylinder to contain balls and designed a container which separates its space into six parts as we can see from the CAD model in Fig.7. To load a ball, the servo motor will rotate 60 degrees every time to make sure one ball will fall though the hole at the bottom of the container. Fig.8 is the real model of the loading subsystem.

4.2. Electrical subsystems
4.2.1. Sensing subsystem
Fig.9 Sensing Subsystem (IP Camera)
We use an IP camera as our sensing subsystem as shown in Fig.9. The reason we choose an IP camera is that it works well with our microcontrollor CompactRIO. Also, we can get clear RGB information through this camera and have the knowledge of accurate positions of the targets. 

4.2.2. Microcontrollor subsystem
Fig.10 NI CompactRIO Microcontrollor

We use NI CompactRIO Microcontrollor as our controllor and LabView as programming language. This is unique among all the groups this year. Fig.10 is an outlook image of the CompactRIO. The two modules from the left side are all Digital I/O modules, one of which we use for common digital input and output, the other one of which we use for generating PWM. The third module is the Analog Input module, which we do not need for the subsystem. The data transmission of CompactRIO is through Ethernet port.

4.2.3. Actuator subsystem
As mentioned before, we use 3 servo motors and 1 DC motor as our subsystem of actuator. We can find them in Fig.1 which are labelled. Specifically, DC motor is used to control the rotation of the cam, and servo motor are for pitch, yaw and loading freedoms. 

4.2.4. Power subsystem
Fig. 11 PC Power Supply
The PC Power Supply can be considered as a cheap, high-power and multiple outputs transformer. It can transform the 110v AC into DC at 3.3v, 5v and 12v. It also has protection circuits, which make it a perfect DC power supply for our system. As the current can reach more than 15 amps, in order to protect the servo motors, we need regulators to limit the current. 

5. Video of the system in action



Link: http://www.youtube.com/watch?v=ehOvzfmYGyY

Team J-Team Magnus

1. Main Design Concept

The goal of this project is to build a mechanism that will launch Nerf Ballistic Balls at multiple targets. To accomplish this goal, the Magnus Effect will be employed to change the trajectory of the balls. This will be achieved by using 4 spinning wheels to change the spin of the ball as it is launched by the machine; each wheel is driven by a brushless motor. The Arduino Mega microcontroller is used for controlling and sensing. A Wii-camera is used to achieve the needed vision requirements.  A pair of IR sensors is deployed to help initiate feeding process. Couple more motors are also used to drive different subsystems. The model of the mechanical systems can be seen in Figure 1, while the entire design can be seen in figure 2.

The major driving force behind this design is the inherent coolness factor from doing something extraordinary. This design is used in the sports industry for launching different types of balls, but the accuracy and range of this specific application are not known at first. After multiple testing and verification, we find out that Magnus effect is effective and consistent. Therefore, we stick to our original design and carry it along.


2. Team members and responsibility

Samuel Dyment
Responsibility: Mechanism Design/Manufacturing, Structural Design/Manufacturing, Machining, system testing, CAD Modeling, Parts procurement, Final Report 

Yipeng (Mita) Yun
Responsibility: hardware design and implementation; wiring; software architecture and coding; electrical systems integration; testing.

Zhaotao (Charlie) Xu
Responsibility: Electrical subsystems design and implementation. Testing. Electrical and mechanical intergration.

Ching-Heng (Richard) Lu
Responsibility: Part of mechanical structure design/manufacturing, Part of mechanism design/manufacturing, Subsystem integration, System testing, Video, Website




3. Labeled picture(s) of the overall system with description



Description:
The overall system of our robot is integrated with several subsystems, including vision system, launcher system, hopper system, feeder system and electronic system. They are assembled together within a sturdy structure. 

Our major design concept is using the Magnus effect to curve the trajectory of the flying ball and hit the targets in different places. The Magnus effect has been applied in many aspects in our daily life, Most of them are on ball sports, such as baseball, soccer and table tennis. Its major concept is to give a ball different spinning speeds between itself and the viscous fluid (e.g. air), it will generates a force in a normal direction of its moving direction. Then, the force will make the ball fly in a curve trajectory. Therefore, we can use this effect to make our ball fly up and down, left and right.

There are several reasons for choosing this design as our launching mechanism. First, we can make the nerf balls hit on targets in different places without moving any part in our robot. It is stationary and is still able to hit the dynamic targets. Second, we didn’t find anyone has done a four-wheel mechanism before. Most of them are using 2 spinning wheels with a movable mechanism behind them. Thus, we are really excited and proud of our innovative design for our robot.

Then let’s talk about how will our robot function in sequence.   

First, switch the power on in our electronic system and dump in the nerf balls. Then the wiimote camera in the vision system will start to calibrate, try to get the target coordinates and send them Arduino, the microcontroller in the electronic system.

Second, after getting the target coordinates as an input, the Arduino will process those data and output four different motor speeds for each of four motors in the launcher system. The motor then will start spinning at specific speed.

Third, hopper system will now drop in a ball into feeder system and wait till the ball is shoot out.

Fourth, as soon as the hopper system drops in the ball, the feeder system will move the feeder arm to the front then push out the ball into launcher system.

Last, the ball touches the spinning wheels in the launcher system, it will shoot out by the frictions between them and fly toward the target. Then it repeats the processes above.


4. Pictures and descriptions of subsystems

Hopper
The hopper subsystem was designed to be a high capacity ball sorting mechanism. The balls are dumped into the large opening at the top, and fall onto the holder disc below. When a ball is needed, the holder disc is spun by a stepper motor, and a single ball is dragged to a hole at the bottom of the bucket shaped object. There is an acrylic stopper that prevents balls from falling in to the feeder and attached to it is a tab that prevents jams.


Feeder
The feeder systems main purpose is to push a single ball into the launcher subsystem. The primary mechanism is a rack and pinion driven by a continuous servo motor. The feeder has a few sensors that make it aware of its status. Two limit switches stop the arm from moving all the way forward and all the way back. An additional sensor is located in the base of the feeder area to alert the computer when a ball has been loaded. Once loaded the ball is pushed forward into the launcher wheels while being held steady by the holding fork.


Launcher
The launcher systems main purpose is to consistently and accurately apply a velocity and spin to the ball. The launcher consists of 4 motors, wheels, motor controllers, and a plate that they are all mounted on. The electrical and mechanical connections were made to be easy to remove so that the launcher subsystem would be extremely easy to remove. The motors we used were Turnigy brushless DC motors and the motor controllers are Turnigy 18amp. The motor controllers are sent a pwm signal and automatically control the motor speeds. The four motors allow us to control the spin accurately in two directions, vertical and horizontal.


Vision
In vision subsystem, we use wii-camera to acquire target position. We took out wii-camera from a wii-mote, and rebuilt circuit for it. The circuit includes oscillator, which triggers on camera, and some extra components such as resistors. I2C protocol is implemented to ensure communication between microcontroller and camera. After camera captures targets, data is written to buffer address and microcontroller knows position coordinates of targets, thus giving further instructions to the rest of the system.


Electrical

We use a stepper motor to drive the disc inside hopper and to sort all incoming balls. After it drives ball into shooting ramp, the IR sensors inside ramp will sense the drop of the ball, and gives feedback to stepper motor and stops it from spinning.  Feeder system’s electrical parts include a servo that drives feeder arm, and also two limit switches to confine feeder arm range. Finally, shooting system’s motors are controlled by brushless motors, each written by microcontrollers according to look-up table to define motor spinning speed.
Below is the schematic showing how electrical subsystem is controlled by Arduino Mega.



Psuedo code:
While (there is ball in hopper)
{
   If ball drops in ramp
   {
         Stop spinning hopper
         feedForward
   }
   feedback()
   spin()
}



5. Video of the system in action

Team C- Team SeaSlug




MAIN DESIGN CONCEPT

In order to accomplish our goals we needed to come up with a mechatronic design that addressed the need to store and load balls, launch balls, and track targets.


Regarding the need to store and load balls, our initial approach was to use a simple hopper to use some other device to ensure only one ball travels to our firing mechanism at a time. However, upon investigation, we determined that this design was unreliable since it was prone to jamming. After evaluating a few other designs we settled upon a rotating carousel ammo repository. A triangular block is placed on top of our carousel so that balls do not prematurely fall into the hole leading to the firing mechanism and so that balls that are stacked on top of each other will not pass through to the hole, i.e. only one ball will fall through the hole with any given 60 degree rotation – the ball on top will be blocked and will either fall on top of the next ball in line or fall into an empty ball slot.  Notice that our ball slot design ensures that the balls within the slots do not touch the walls of the carousel. This is advantageous for us because we previously discovered that the friction between the balls and the carousel wall was great enough that it would either cause our motor to fail or make an incomplete rotation. We decided upon using a stepper motor to drive our carousel because stepper motors require no feedback and are easy to rotate precisely. The only disadvantages of using stepper motors is that they are typically weaker than DC motors and while they are being turned the computer program controlling the entire system cannot continue to run until it stops rotating the stepper motor.


Regarding the need to launch the ball, we’ve first considered many different options. We chose not to use a mechanism that relied on a spring-like material since we knew that extended usage/testing would cause wear on the material and thus provide different results. We also figured that using such materials would result in a high reload time since spring-like materials strong enough to launch Nerf balls 10 feet would be difficult to compress or extend. We chose not to use compressed air as a means to launch the Nerf balls because we thought that pressurized air would be difficult and dangerous to work with. We also figured that using compressed air would necessarily result in a high reload time. The third major approach that we considered and ultimately went with was to launch balls by feeding them to a spinning wheel, much like how automatic baseball pitchers work. A typical automatic baseball pitcher uses two side-by-side wheels to launch balls, but our design only uses one wheel. There are a few reasons behind this decision. First, we did not want to worry about the possibility of having two different speeds on the wheel. Second, with one wheel positioned beneath the ball we can apply backspin to the ball. We figured that we could use backspin to our advantage and increase the horizontal range of our firing mechanism. We were worried that the spinning wheel method of launching projectiles would be inaccurate and/or imprecise, but after we researched existing projects from other universities we learned that it is indeed possible to have accuracy and precision with a one wheel shooter.


Regarding the need to track targets, we had several options for computer vision available to us. One approach would have been to use a CMU Cam device, but we chose not to use this approach since the CMU Cams were not available until halfway through the semester and we wanted to start working on the vision aspect of our project earlier. The CMU Cams were also too expensive for our tastes. Another option was to use a webcam and a powerful microcontroller/microprocessor to utilize open source OpenCV code to detect targets. We decided against this approach for several reasons. First, none of us had any prior computer vision experience and we were afraid that this task would be beyond our capabilities. Second, we did not want to use a complicated microcontroller/microprocessor just for the sake of computer vision. We wanted to use an Arduino since it is easier to work with and would thus reduce the probability of human error.   Our last option (and the one we ultimately went with) was to hack a Wiimote camera. The Wiimote camera has the smallest field of view compared with the other options and it can only detect sources of IR light, but we decided that the Wiimote was the best approach for our needs since it had a fast response time and, most importantly, it was capable of doing all necessary computer vision calculations by itself and output the positions of up to four sources of IR light as x and y coordinates. Detecting the targets would necessarily involve illuminating them with IR light, but we felt that this would not be a significant issue down the road. Another advantage to the using the Wiimote is that the Wiimote camera, unlike the other options, is not affected by regular ambient lighting (with the exception of sunlight) and does not require recalibration every time the lighting conditions of our environment changes.


Our system also needs to be able to hit targets of varying height. To address this need, most teams decided to implement a tilting mechanism to change the angle in which they launch their balls. We did not implement this approach because our carousel/chute design relies upon gravity and momentum to have balls roll uphill into our barrel. Changing the tilt would mean we would have to have a flexible chute and we would have different input velocities for the ball entering the barrel. In the end, we decided upon keeping our launch angle constant and to vary the projectile’s maximum height by varying the speed of the spinning wheel and thus the output velocity of the projectile.


Another design decision we made was to attach our camera directly on top of our panning base. This was necessary since we relied upon our camera’s data as feedback for which direction our system is facing because our panning motor did not have an encoder. Our panning motor did not have an encoder because motors with built-in encoders were too expensive and we physically did not have enough space to add on our own encoder. One drawback to this approach is that depending on where our system pans we sometimes lose sight of several targets. This is undesirable because our camera cannot tell by itself whether the system is pointed to the right half of the target range or the left half. This is a problem because then the system does not know which way to pan to search for other targets. This problem was ultimately solved through software. 


SYSTEM OVERVIEW

Figure 1. System Overview
     The overall system is comprised, from bottom to top, of the base housing, shooter assembly, Wiimote Assembly, and Carousel Assembly.  Figure 1 shows an overview of the system.


SUBSYSTEMS


Base Housing

Figure 2. Base Housing




    The base housing is comprised of two half-inch thick acrylic sheets, four hexagonal aluminum extrusions, and electronics.  There is an Arduino Mega Microcontroller, three motor control boards, a stepper motor board, and a custom-made power board.  The main PC power supply, which powers our system, is also located in the base housing.  The custom-made power board can be thought of as a tunnel for all power and input/output signals.  All the boards connect to the power board in order to receive power from the PC power supply.  The boards also connect to the power board to transmit data and signals to the Arduino.  There is also a DC motor mounted to the bottom of the upper acrylic sheet.  This DC motor controls the panning system.  In order to aid in panning, a bearing turntable is mounted to the top of the upper acrylic sheet.  The turntable will be further explained in the next section.  Figure 2 shows the base housing.


Shooter Assembly

Figure 3.  Shooter Assembly
Figure 3a.  Custom Spinning Wheels


     The Shooter Assembly is the main firing mechanism used to launch the balls towards targets.  Figure 3 shows the Shooter Assembly.  An acrylic ramp is secured onto black acrylic sidewalls and serves as a path for the Nerf balls.  The black acrylic walls are constructed as a rectangle with side holes for mounting a motor.  Combining the black acrylic walls and ramp serves as a "chute" for the balls to travel through.  There are flat acrylic pieces also attached to the top of the black acrylic walls.  There are acrylic pieces, called Modified Acrylic Ramp Supports, that provide suport to the ramp as well as to the rest of the shooter assembly.  The Ramp Supports are secured onto the panning base as well as to 80/20 bars in the back.  In order to prevent vibrations and unwanted motion from the motor, motor supports were fabricated.  These motor supports mount to the 80/20 pieces as shown in the figure.  Combining these motor supports with cork reduces unwanted vibrations while adding stability support to the motor.  When the spinning wheel makes contact with a ball and compresses it, there is an applied force to the shaft which would cause the motor to translate vertically.  Figure 3a shows the different revisions of the spinning wheels used throughout this project.  Different wheels were created to experiment with the effect that different wheels had on our launch speed.  These custom wheels were created out of different pieces of acrylic using a laser cutter.  One assembled, the spinning wheel is then mounted onto the motor using a custom hub.   The shooter assembly itself also has a support panel that supports it underneath.  The support panel can be adjusted to different heights which causes a change in the launch angle.  While the height adjustments only change the launch angle by a few degrees, it is enough to vary the height of the projectile trajectory by a few inches at the distance of ten feet.  The whole shooter assembly is attached to the panning base which is then secured onto a turn table.  The panning base is also mounted to a panning hub that is connected to a DC motor as described in the previous section.  The turn table has bearings which reduce unnecessary stress and moment on the DC motor shaft.  There is also a reduction in friction which allows the panning base to rotate more smoothly.


Wiimote Assembly

Figure 4. Wiimote Assembly

      Figure 4a. Wiimote IR Camera Circuit

The Wiimote Assembly is responsible for vision processing and target tracking.  Figure 4 shows the Wiimote Assembly.  Figure 4a shows the Wiimote Camera Circuit.  The Wiimote Camera operates on an IR wavelength therefore it requires IR light in order to operate efficiently.  IR LEDs were mounted in an array around the Wiimote Camera in order to have as much IR light as possible illuminating the targets.  An acrylic mounting piece was created and together with standoffs supports the Wiimote Circuit Board and IR LEDs.  The Mounting Piece is adjustable but cannot be placed in the way of chute.  Our shooter assembly pans along with the Wiimote Camera and therefore serves as our feedback system for panning.  The Wiimote Camera is capable of tracking multiple targets at once and when interfaced with the Arduino has the capability of storing target positions.


Carousel Repository

Figure 5. Carousel Repository
     The carousel tube is attached to an acrylic sheet which is referred to as the carousel base.  Figure 5 shows the Carousel Repository.  The acrylic base is mounted to the 80/20 pieces and has a two and a quarter-inch hole cut out to allow Nerf balls to pass through.  There is a stepper motor mounted to the acrylic base and then connected to the carousel fan itself.  The carousel fan is a thin acrylic disc with six holes cut out approximately the same size as a Nerf ball.  The carousel fan is connected to the stepper motor shaft using a custom-made hub.  There is an acrylic wedge that aids the carousel in sorting the balls.  If there are any balls on top of one another, the wedge pushes the upper balls into the next available slot.  As the carousel turns, each slot is taken up by a Nerf ball. 


TEAM RESPONSIBILITY
Alex Shie (ECE) - Electronics, System Integration, Control, Vision, Testing
Chan Sik Kim (ECE) - Motion Prediction Code
Chloe "WooJoo" Shim (ECE) - Electronics, Circuit
Juan Carlos Oliveros (MechE) - Mechanical Design, Fabrication, System Integration, Video Editing, Testing

Final Report