The camera will send the captured frames through wireless USB to the tablet, both for implementation into the user interface as well as for image processing. The user interface will be an application on the android tablet that will display the incoming frames from the camera, with moving objects highlighted in a unique color. Each colored target will correlate with an onscreen button below the video, which, when pressed, will aim and fire the turret at the specified subject. Up to 3 moving targets can be tracked at once, or a single point on the target field can be selected by the user as the target. For the group’s prototype model, a laser pointer will be employed in place of an actual paintball gun. The laser will be modified to demonstrate firing by turning on for approximately 0.5 seconds.
The image processing will be accomplished in the following manner. The camera will be set up facing the target field. When the tablet initially starts receiving frames, it stores the values located in each pixel in an accumulator matrix. In addition, it creates another accumulator matrix containing the values for the differences between the current image and the previous one. When a set number of frames have been received and collected, the total is divided by the number of images to find the average for each. Then high and low thresholds are set and stored, by scaling the average differences and adding them to the averages to get the high value, and subtracting from the averages to get the low value. As the new frames are received by the tablet, they are compared to the average matrix, and those pixels that do not fall within the range specified by the high and low value for each particular pixel are determined to be a moving object. The pixels within the range are set to a value of 0, and the ones that do not are set to 255. This results in the moving object being represented as a white blob on a black background.
Now that the object is detected, it must be represented in some fashion. This is done by running an algorithm to calculate the distance each pixel in the blob is from the edges of the window. The pixels closest to each edge (top, bottom, right, and left) are designated as the outermost pixels, and a line is drawn through each of them that terminates when it intersects with another, which forms a rectangle enclosing the object.
Lastly, the object needs to be tracked, that is, the object’s location must be realized so that the gun can be positioned to aim and fire at the target. This is accomplished through a centroid calculation of the rectangle, a simple geometric computation. When the coordinates are known, they are compared to the coordinates for the current laser pointer position, which is either in its default position or aiming at the target’s previously computed location. This comparison yields the distances the servos must be moved so that the laser is aimed at the target’s current location. If the paintball gun is used, then the depth information captured by the range finding system is also factored into the servo movements. This information is transmitted wirelessly to the microcontroller, which positions the servos accordingly and then sends the laser pointer a firing command. The figure below illustrates the image processing method.
Figure : Flowchart for image processing
-
The whole system is controlled by two major subsystems, the user interface and the microcontroller. Basically, the user monitors the field based on what is displayed on the tablet. When a designated target is chosen, servos move to the position and wait for a firing command. In order to control the turret system without being close to the battle field, a wireless module is going to be implemented on the PCB connected to the microcontroller. The microcontroller controls the servo system using a simple serial port; only three wires are needed, power wire, ground wire, and command wire. Two voltage regulators are used on the PCB. One is used to power the servo system. The other one is used to power the Atmel ATmega328. In total, there are several electrical components that will be implemented on the PCB: the Atmel Atmega328, a wireless module, a PID controller/ compensator, two voltage regulators, two motor drivers, and the laser pointer driver.
It was decided that MRF24WB0MA, a RF transceiver module from Microchip, is going to be the wireless protocol. This wireless module is powered at 3.3V, which is powered at the same voltage level as the Atmel ATmega328, the core of Arduino Uno. The task of connecting the wireless module and the microcontroller is simple. I/O ports on the microcontroller are connected the power state ports and clock signal port on the wireless module. Signal clocks from both ends are connected. Setup for the wireless communication is relatively simple compared to the other parts of the circuitry on the PCB. After the wireless protocol is set up, the signals from the user interface can be fed into the microcontroller and then to the PID controller to eliminate errors and avoid overshoot. The PID controller is a simple chip that takes in an input from Atmel ATmega328 and feeds the compensated signal to a voltage regulator to drive the servos. A schematic for the ATmega328 is shown in Figure 30.
Figure : Atmel ATmega328-MRF4WB0MA Schematic from weburban.com
Project Prototype Construction Hardware Fabrication -
The only part of the system that has to be built is the housing. First, the base of the device will be drilled to accept the base of the armature, hinges, the mounting screws and standoffs of the PCBs and power strip, and the casters. The first device to be attached to the base will be the armature, which will already have all of the components attached (see 119.2, Turret Assembly, below), followed by the PCB (driver board and Arduino) and power strip. At this point, no further construction will be done until the device is fully tested and functional. Once full functionality is achieved, the next addition will be the hinges, to which the side-panels will be pre-attached. The top cover will be attached via cotter pin following that.
Turret Assembly
As the turret comes largely pre-made, the procedure to assemble it will be relatively simple; it is a matter of attaching gears to servos, inserting these servos into the armature, and then screwing in the servos. The laser pointer will then be attached to the top portion of the armature using pipe clamps, and carefully secured in such a way that it properly aligns with the axis of the armature. The electrical portion of the assembly will take place after the hardware fabrication in section 119; the harnesses included with the servos will be attached to the driver board, and the power portion laser pointer will be attached to the Arduino directly, such that it will be provided the 3V it needs to fire at the appropriate time.
Share with your friends: |