Saturday, May 12, 2012

Team B - Shing-a-ling

Overall Concept/ Subsystem Layout

The shingling robot has been divided into 4 main subsystems: the shingle dispenser system, the prong rail system, the nail gun system, and the locomotion system. A stack of shingles are placed in the dispenser bin. Then the shingle dispenser system sends a single shingle to the prong rail system.  The prong rail system positions a shingle in a desired location. After that, the nail gun system nails the shingle to the roof. The locomotion system then moves to the next location in order to place the subsequent shingle.



The first subsystem of the mechatronic device is a dispensing system. The purpose for this system is to allow a user to take a pile of shingles and essentially “hand” them to our device in order for it to execute the final goal properly. Dispensing was a very important part of our design, so multiple designs were considered with the first prototype. One of the ideas presented was pushing one shingle off of a stack of shingles. This idea was thrown out after analyzing the roughness of a shingle. It seemed the friction between shingles would be difficult to overcome by having a roller push the top shingle. Having an arm push each shingle on a stack was also considered. This involved having an arm push the top shingle on a stack of shingles sitting on a spring-loaded plate. Once the top shingle was pushed off the stack, the spring would expand, pushing the stack higher to replace the last shingle. This idea was considered briefly, but seemed a bit complicated and less reliable than the last design. The final design had a box holding vertically stacked shingles and pushed the shingles out one by one. This design was decided to be the most easily achievable and mechanically possible.  One thing about the final design that sets it apart is that every part of the robot was built by hand. Therefore, the final dispensing design was more achievable from bulk material then the other initial designs  (which would have required certain spring actuated subsystems to be ordered).


In order to accurately dispense a shingle, it is crucial to ensure only one shingle is dispensed at a time.  Therefore, it’s necessary to include at least one sensor that can determine whether a shingle has been successfully dispensed.  Originally, the plan was to use an IR LED and IR receiver, but a simple photoresistor is cheaper, works just as well, and if the robot is operating during the day, no LED is required for the sensor to be operational.



This subsystem had to be designed so the robot is capable of placing a shingle at every required location, including the extreme, where the shingle is placed half on the roof and half off the roof. Therefore, the main challenge of this system was to move the prongs out of the robot’s footprint. The prong rail system has been introduced to serve this task. A steel rod is used as a main guide rail for the prongs to slide along, combined with a timing belt (driven by a stepper motor). After the shingle is nailed to the roof, the prongs open to release the shingle.  Originally a lead screw was used for the horizontal translation of the prongs, but this required an incredible amount of power and time, leading to the design with a timing belt.


The horizontal motion of the prongs required a degree of precision and power which was perfectly suited by a stepper motor.  Combined with a snap-action switch which allowed for a constant zero point reference, a stepper motor could precisely place the prongs in any desired shingle location.  The prongs were also relatively light, and thus didn’t require a powerful DC motor.



The nailing subsystem allowed us to nail shingles to the roof after placing them in the correct position.  The main goals in this subsystem were to have two degrees of freedom.  The first is horizontal in order to place the nails in the correct locations relative to the shingle, and the second is vertical.  Originally, the plan was to use a lead screw to actuate the nailgun horizontally.  However, a steel rod and timing belt provided faster motion with less power compared to the first prong rail prototype that was created.  The vertical motion was required in order to engage the safety mechanism located on the tip of the nailgun.  Because the trigger was constantly pulled back, engaging the safety mechanism gave control over when the nailgun fires.  Two degrees of freedom were deemed more beneficial than moving the entire robot over horizontally because we could not directly control slippage of the drivetrain.  In addition, a lead screw was used in the vertical motion in order to prevent back-driving, as a timing belt would not have been nearly strong enough.


The horizontal motion of the nailgun didn’t require higher resolution than could be achieved through a stepper motor, and horizontal motion needed no speed control.  Thus, a stepper motor was used to obtain high torque at relatively low speeds of translation. In addition, this ensured precision in the placement of the nailgun, which was the most important design requirement.  The vertical translation however, would require faster speeds and less precise positioning, so a 24V DC motor with an encoder was used that could translate the nailgun quickly and then slow down when the nailgun was close to the desired position.  This limited overshoot and gently pushed the nailgun against the roof, which helped to prevent stress on the system.

Robot Locomotion


To increase execution speed and to avoid tilting in a way that might affect the dispensing system, we decided from the start that we would want our robot to be able to move in both x- and y-directions independently. Our first approach was to use two independent drivetrains, and to engage and disengage one of them when necessary. Ever since the beginning of the project the plan of attack siwtched which of the two would be engaged/disengaged, how this would be implemented, and whether one or both of the drivetrains would be equipped with 2 motors, allowing for rotation and correction in alignment.

The first approach for engaging/disengaging was using a long axis shaft, with a left-handed thread on one side and a right-handed thread on the other.  This would rotationally engage and disengage a pair of tank treads at the sides of the robot (the threads are reversed on either side so the tank treads spin in the same direction). However, the robot began to grow heavy and threads were thought to be too expensive (which was later found to be incorrect), so this idea was dropped. The plan maintained until April was to use two pneumatically engaged wheels at the rear of the robot.  On the other side of the robot (its front) would be two casters that are fixed slightly higher than the drivetrain for horizontal motion, such that when the rear wheels would engage, the resulting tilt of the robot would be placed on the casters.

In April, when most of the other subsystems were done, and with fresh experience from the machine shops, it was decided that a simpler and more robust solution for the locomotion would be possible. It would also be interesting to reduce the amount of necessary actuators.  It is at that point the decision was made to use omni wheels. At first it seemed intuitive to use four of them - one in each corner, as at that point it was thought the bottom of the ramp towards the prongs would not allow for motors to be placed in the middle of each frame edge. However, statics dictates the use of three omni wheels, as the system had to be monostable - just as four-legged tables often have one leg in the air, four wheels would risk one of them being placed in the air - which would be fatal for control. Thus, two wheels were placed at an angle in the front corners so they held the most weight, with the third wheel in the middle of the back edge of the robot, parallel to the roof’s front edge in order to maintain proper balance.


Of the 3 shingling teams competing, this design was the only one to not use computer-supported vision. In hindsight, it could have been the most robust solution (assuming the roofing felt was not redesigned for better sensing). From the beginning, the plan was to use LED-equipped brightness sensors to detect the chalk lines. Although Andrew successfully built an intermediary robot that would align to a red chalk line, this idea was dropped in the very end because it proved to be unreliable on the actual robot. Other, complementary, ideas for the sensing of the robot position included using color sensors for shingle detection and encoders (for the original drivetrains). However, shingle detection was dropped due to complexity, robustness and time issues. Furthermore, encoders would not make sense on omni wheels, as they are designed to slip.

An alternative, which was investigated pretty early consisted of hacked computer mice to measure distances on the roof. Although the mice proved to lack grip sometimes, this is the method of localization used for the major part of the locomotion program. Advantages of this method are computational inexpensiveness and versatility.

We also use infrared rangefinders to detect the roof edge.

More pictures, the report and a video can be found on our website.

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


Team K-Wall E

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.

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

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

Jason Reballo
Responsibility: Vision Sensing/Testing.

Joon Seob shin

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.


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

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


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


Team A - Team JABS

1. Main Design Concept

Team JABS designed our shingling robot to be able to attach shingles to all sides and corners of the roof and to fit inside of a 2x2 square as detailed in the specifications given.  Our robot contained four primary subsystems: drive system, vision system, shingle manipulator, and peeling.  As seen in the complete CAD Model in Figure 1, the motors, batteries and electronics were all contained on the robot to ensure the robot was fully autonomous and not tethered.   Each of the components was designed to be inside of the robot and were laser cut for easy mounting.  The electronics board, batteries and laptop had parts made to mount it directly to the robot.  Each of the sensors had a mount that would allow for easy attachment – the digital IR sensors had tight fit made for that sensor and the limit switches were mounted with 4-40 screws.  The nail gun – by far the biggest element of our robot – was mounted in the dead center of the robot to drive over the shingle when it was placed and nail in the correct spot given.  

Figure 1 - Photo of Team JABS' Shingling Robot

We also based a lot of our design concepts on budget constraints.  Our custom-made motor controllers were based on a 5 dollar part and a CNC machined PCB , and could still handle the high current motors we were using.   Many of our motors were found in RoboClub in order to “reuse” parts.  We also found additional motor controllers in scrap bins and repaired them to decrease the cost of this robot.  The batteries were taken from the nail gun and scavenged from RoboClub. We also attempted to keep everything simple and fast to manufacture.  All the gears and structural components were cut from acrylic on the laser cutter for cost constraints.  Each of the components were created in CAD to ensure they all fit together properly.  The robot was then assembled using machine screws to ensure that everything would fit together nicely.

2. Team Member Responsibilities

  • Jon Boerner was primarily responsible for the shingler’s vision systems and code.  Jon also assisted with fabrication and CAD, as necessary.
  • Andrew Burks was primarily responsible for mechanical design; he also created the working CAD model of the robot and performed significant assembly work.
  • Ben Streeter was primarily responsible for mechanical design, took lead on fabrication, and assisted with assembly.
  • Samantha Tan was primarily responsible for the electrical hardware systems on the robot and the assorted sensing mechanisms.  

3. Labeled pictures of the overall system with description

Figure 2 below shows the primary subsystems of our robot: the two peeler wheels, one of the two elevators, the nail gun, and the drive modules.  At the top of the robot, the peeler wheels remove a single shingle from the top of the shingle stack and slide it into an elevated side roller.  The side rollers, moved by rack and pinion in a vertical slot, are controlled by limit switches – they can either be in the elevated or lowered position.  Once the side roller is in the lowered position, the robot drives forward and the side roller slides the shingle under the drive wheels simultaneously.  Once the robot is at the correct position on the roof, the nail gun delivers a nail, the robot drives farther forward, and the nail gun delivers a second nail.  The operation then starts over again.  The block diagram in Figure 4 highlights how these systems work together. 

Figure 2 - Photograph with Significant Subsystems

Figure 3 - CAD Rendering

Figure 4 - Functional Block Diagram

4. Pictures and descriptions of the subsystems

Drive System

The drive subsystem will move the entire robot about the roof. Figure 5 shows an image of the CAD model of this subsystem. Items of importance in this subsystem are the caster wheels that allow the robot to rotate while maintaining balance, the drive wheel that is another Roomba drive wheel, and the last caster wheel which prevents the robot from falling off the roof when it is hanging over the edge. The caster wheels are designed in such a way that the drive wheel always maintains contact with the roof regardless of some caster wheels being on a shingle while others are not.

Figure 5 - Drive Subsystem

Vision System

Figure 6 shows the results of the vision system used on our robot. The system is capable of finding the side edge of an already placed shingle, the side edge of a shingle being placed, the top edge of a shingle being placed, and the red line where the shingles should be placed. The side edges are used by the system to detect when the shingle being placed is in position horizontally. The top edge is used to orient and position the shingle correctly with respect to the red line. With one webcam on each side of the system, the robot is able to shingle in either direction.
Figure 6 - Results of the Vision System Used for the Robot


The peeler subsystem is at the very top of the robot, and is shown in Figure 7.  It consists of two Roomba wheel modules rigidly attached to a vertical slider.  The wheels push the top shingle on the shingle stack to one side of the robot or the other.  Once a shingle has been pushed off of the stack, gravity kicks in and pulls the Roomba wheels down onto the next shingle.

Figure 7 - CAD of the Peeler Subsystem


There are two degrees of freedom in the elevator subsystem, shown in Figure 8.  The first degree of freedom allows the entire system to slide up and down the side of the robot.  This is accomplished by gearing a DC gearmotor to a pair of pinion gears nested between a pair of rack gears.  The rack gears are fixed to the robots frame, so when the counter-rotating set of pinions begins to turn they force the elevator up and down the robot.

The second degree of freedom on the side elevators are a set of rubber rollers.  A small DC gearmotor connected to an encoder is geared to a pair of rubber rollers.  These rollers grip the shingle and pull it out the side of the robot.  The encoders are used to determine how much of the shingle is in the rollers.  An IR sensor is used to detect the initial presence of a shingle and zero the encoders.
Figure 8 - Diagram of the Rollers and Elevator

5. Video of the system in action

Included below is a link to our team's summary video: