With the manufacturing process established through the iterations of smaller prototypes, full scale fabrication was started. Each iteration of the manufacturing process was further refined to improve the results and progress toward a functioning set of fins.
The full scale model used two foam positives, one of each half of a fin, to make plaster negative molds. One set of two, mirror imaged molds was capable of creating both of the full fins. Each 18in mold was cast directly into a wooden box so that it did not have to be cut or moved. The plaster was set as a reusable mold. Similar to the small scale, silicone was poured into the positive and channel inserts were pressed into the wet silicone. The full scale channel mold made the progression from a single set of channels to multiple independent sets.
The advantage to using incremental scaling was the ability to test and make improvements while being more time and resource efficient. The downside was that each iteration added to the cumulative time commitment of labor not being applied directly to the final model.
The first full scale attempt incorporated some changes and improvements from the small scale models. One change was the way the channels made. Where the small scale channel mold was created with a 3-D printer, the full scale channel insert was constructed on a panel made of wood that was set on top to close the box.
The next step was making a foam positive of the fin. For a precise recreation based on the SolidWorks model, the plan was to use WPI’s ABB Robotic Arm. This robot is capable of using an endmill attachment to carve materials, like foam, from multiple angles. This is where one of the larger obstacles was encountered. The ABB Robotic Arm can be operated either in a manual mode, or run from a program generated using ABB’s RobotStudio software. Due to the complex nature of the fin shape, manual operation was unlikely to be successful. As such, the offline programming method was pursued. To do this, a digital workstation was set up in RobotStudio, which included a model of the robot that would be used for actual manufacturing. With this set up, a SolidWorks model of the midscale fin was imported into the work station. To facilitate easier modeling of the robot operation, slices were added to the fin model prior to importing it into RobotStudio. These slices were oriented across the fin, parallel to the root. The slices in the solid model generated distinct edges along both sides of them. This feature allowed the use of the AutoPath tool. AutoPath allows RobotStudio to detect an edge around a selected object, and generate a tool path along that edge. Using this method, the surface of the fin was traced. Once all of the tool paths were generated, the program was loaded to a USB drive, and transferred to the robot.
Before any actual cutting of foam was to be done, the program was tested on the robot. This was where some problems were encountered. The first problem noticed was that the robot’s Joint 6, which corresponds to the rotational aspect of the robot’s “wrist” joint, was turning excessively, slowing the actual movement of the robot. While this issue was a slight slowdown, it could be dealt with. The major issue arose when the robot moved along the second path. The robot began encountering a singularity that did not appear in the simulation. This caused Joint 4, which rotates what could be thought of as the robot’s “forearm,” about an axis through the link, to rotate all the way to its limit, which was then detected by the robot controller and stopped the entire program. Several attempts to fix this problem were made, including manually setting the configuration of the robot at each individual target point. Another technique attempted was to add intermediate target points along the path that was generating the singularity. This was done in an attempt to force the robot to maintain a preferred orientation. Both of these attempts were ultimately unsuccessful.
Since the singularity in the robot was encountered approximately half way across the width of the fin, it was agreed that not transiting the entire width with the robot might solve the problem. To accomplish this, another slice was made in the SolidWorks model. This time the slice was oriented along the length of the fin, from the root to the tip, and perpendicular to the previous slices. The final model with the slices is shown in Figure 8.1.1. This created additional edges to create paths on. At this point a path could be generated from the outer edge of the fin, across the top surface, to the midpoint of the fin, and back to the outer edge with one continuous path. Pre-production testing verified that this method did solve the singularity problem, and the program was able to run all the way through.
The last task that needed to be accomplished before cutting the foam with the ABB robot was to build a platform for the offset height above the work station surface. This offset is required because the end mill used for the carving is attached to the robot via a 5” diameter bolting flange. This flange would hit the surface of the work station when attempting to carve the lower sections of the fin if there was not an offset applied to the work piece. To create the offset required, a platform was constructed. This was done using a spare section of MDF and some scraps of 2in x 4in wood. Nails were pushed through the bottom of the MDF to hold the foam block in place while it was being carved.
With the program working and the offset platform constructed, a first attempt at carving was made. However, it was soon discovered that additional preparation was needed before this process would work as planned. One major issue was that the end mill being used only had 1.5” of cutting length. This meant that any areas needing to have more than 1.5” of foam removed had to be reduced manually. Additionally, it was discovered that the speed setting on the robot was much too high for the cutting capability of the end mill. This was fixed by reducing the speed setting of the robot in RobotStudio.
With these issues resolved, carving was once again attempted. This time attempt was much more successful, and only a few incidents occurred where the DC motor powering the end mill was bogged down while cutting. This was overcome by manually pausing the program, letting the motor spool back up, and continuing the program. This attempt was cut short due to time constraints.
Eventually, in order to keep up with time constraints, the foam for the first fin model was hand carved using a hot wire foam cutter, a hacksaw and several methods of sanding. Next, a shallow box was constructed out of medium density fiberboard (MDF), which allowed a structure for the plaster pour. The first attempt at the plaster negative failed because the mixing process was too slow. This resulted in the plaster hardening in the bucket before it could all be added to the box. Once it was dry, the plaster also crumbled easily along the edges, which resulted in a delicate mold. In order to resolve this issue, jointing compound was used for the second attempt. Jointing compound is a mix of plaster of paris and several other hardening agents, which results in a more homogenous mixture and consistent strength. Foam was inserted into the corners to reduce the amount of jointing compound required for the mold.
To complete the mold, the channel inserts need to be created. In order to reduce cost and lead time, basswood was decided on for constructing the channel inserts. Using a layer of MDF, the basswood was layered on and cut to the channel dimensions as they had been defined in the SolidWorks model. This process involved sanding the basswood down to size and wood gluing the pieces onto sketches derived from the SolidWorks model for the channel geometry. This proved to be a tedious and inaccurate process. During gluing, many pieces slipped slightly, and cuts were found to be too rough to fit perfectly together. The channels were all less than three centimeters, much too small to work with by hand with any true accuracy.
With the requisite parts completed, the mold was ready for the silicone to be poured. The same silicone that was used in the small scale was used in the full scale, Dragonskin 10. There was concern with bubbles forming in the mixture and compromising the channel structure. To avoid this, an improvised degassing chamber was created using Space Bags and a shop vacuum. The silicone was poured and degassed according to plan, however, the channel inserts floated slightly while the silicone was curing, resulting in insufficient channel depth.
In order to mitigate loss, an attempt at an inextensible layer was made on this unusable fin. Delrin was used in the soft robotic fish project, but proved expensive and difficult to obtain. Instead, a high density plastic layer was used, as it was assumed to have similar properties. The process for bonding the inextensible layer to the fin was the same as the one used in the small scale prototype, and appeared to have worked well. This turned out to not be the case when the fin was subject to significant deformation and the high density plastic pulled out of the silicone.
On the second fin, holes were made in the high density plastic to allow the silicone to bond better. The layer was attached like the others, and once again pulled free under significant deformation of the fin. With neither solution producing acceptable results, other material options were explored.
Applying the lessons learned from the first full sized attempt, accurate channels were created with a 3D printer. This had not been the first course of action because the full set of channels was too large for the build area of the printers that were available. After making the positive in SolidWorks using the existing fin model, it was split into three sections that could be printed individually. The three parts were glued into one panel using a two part epoxy.
The process for pouring the silicone, setting the channels and degassing was the same, except the channel inserts stayed deep in the silicone mixture and remained in place. The mixture was degassed and left overnight. Difficulty was encountered separating the mold from the silicone. As a result, two of the three 3D printed channel inserts broke while being removed. It was also discovered that the silicone mixture never fully cured and remained quite sticky, causing some slight issues with fin. Given that the stickiness remained indefinitely, it was likely because of either an imbalance in the silicone parts ratio or insufficient mixing of the combination. In order to prevent this error from recurring, investment was made into better mixing equipment to assist in ensuring successful attempts in the future.
Once again, to reduce waste, another test of the inextensible layer was conducted. Using the example set by the small scale test, a mesh was used for better bonding. Window screen fit all the requirements of an inextensible layer, so a new layer was made and the results were quite promising. Under significant deformation, the screen showed no sign of separation. With this result, the inextensible layer issue seemed to be resolved.
After the frustration of the second attempt, the process was revised and a third pour was set up. In an attempt to be more efficient, two fin halves were planned to be poured simultaneously. The channel inserts needed to be 3D printed again, but, instead of being cemented together, the segments were attached to cardboard and taped in place to allow easier removal without the risk of the channel segments shifting while the silicone cured. Disposable cups were used to ensure a 1:1 ratio of silicone mixing parts, and the silicone mixture was stirred thoroughly in a second container before being poured. Once the silicone was poured, the channels were carefully inserted and the mold was inserted into a Space Bag for degassing. A shop vac was used to remove the air from the space bag, thus removing air from the silicone. In the process, the channel inserts were pressed into the silicone, and some silicone was vacuumed up.
Removing the channels on the cured fin was difficult once again. The 3D printed channels cracked, but were not badly damaged. The cracks were glued so the channels could be reused. Both fins were unusable, the first had considerable air trapped inside, creating bubbles, while the second fin’s channels penetrated the outside of the fin, compromising the ability to hold fluid. It was determined that the cause of this was the degassing procedure. For the first fin, it was likely the air was drawn to the top of the fin mold and was then trapped, leaving large hollow sections of the fin. The second fin appeared to have fared due the channel inserts being pushed too deep into the mold.
Electing to avoid degassing on the final prototype, another pour was attempted. This time the channel inserts were held with tape and cardboard to allow disassembly for making the channel removal easier. The channel inserts were also supported along their top edge to prevent them from sinking too far into the silicone. By eliminating the degassing step, the resulting fin was properly formed and the channel inserts came out easily with their segmented design.
With positive results using window screen for an inextensible layer, the decision was made to continue with this technique. The inextensible layer was bonded to two of the four fin halves. Once these were cured, the two remaining fin halves were attached, creating two full fins.
Upon further research, the cost of a premade pressure vessel was found to be prohibitive. Additionally, the prototype did not require much pressure resistance. Through reaching out to contacts, the suggestion was made to use fiberglass, due to the cost, short fabrication time, and reduced depth requirements.
A SolidWorks model of the hull was created and put into an assembly with the full fins to confirm the proper dimensions and shape. Using this model for the hull, foam was cut to the shape needed and smoothed out. Similar to the fin, the hull uses foam blocks, cut to size, as a foundation for the structure. Due to the limited time with the ABB Robotic Arm, the foam was shaped by hand.
WPI’s SAE Formula Car project team had also used hollow body fiber glassing, and warned of their failure to obtain the proper shape with it. Acetone in the fiberglass resin dissolves the foam as the fiberglass cured, leading to deformation of the structure. This was mitigated with a layer of paper mache to provide a barrier and additional support. The paper mache was wrapped with aluminum foil to further protect the foam from the resin. The fiberglass fabric was wound around the hardened structure, and then treated with the resin. Upon curing, the fiberglass hull proved to be solid, with minor integrity issues at the rounded edges. The foam survived the fiber glassing, and required an acetone bath to clean out the hull. Upon testing, the fiberglass hull showed significant leaking and required extensive patching. After multiple attempts to patch the hull with various forms of epoxy and caulk, the decision was made to direct efforts toward a new hull.
The second iteration of the hull was created from acrylic. The acrylic was hand cut and chemically welded. Once bonded, the hull showed no sign of leaks. The next stage was to drill holes for the fin tubing. This was carefully done by incrementally increasing drill bit size. The tubes were threaded through these openings then silicone caulked in place. In order to ensure access to the internal components, a hatch was integrated to the top of the acrylic hull. This was accomplished by cutting the top piece of the hull in half and removing enough material to fit the hatch in place. The halves were then chemically welded together with an additional piece of acrylic on top. This ensured the halves were properly sealed.
Figure 46: Acrylic Hull and Hull Hatch
The plumbing assembly started with a simple test of the pump, a Flojet diaphragm pump. A quick connector was used with flexible tubing able to withstand 125 psi, well within the limits of the prototype, and allowing for easier changes in configuration. Upon further consideration, a softer, flexible plumbing assembly allowed for lower weight and greater safety for the robot and was chosen for all further connections.
Figure 47: Quick Connect Union1
The valves were originally planned as mechanically operated valves, however their slow actuation time raised concerns about the ability to accurately control the fluid flow. Additionally, the mechanical valves’ weight and cost made them a less attractive option. With few commercial suppliers of small solenoid valves that were not significantly over the budget, a manufacturer in China, Ningbo Yaofeng Hydraulic Electrics Company, was contacted. As it was a custom order, the lead time on the valves was almost two weeks, significantly impacting the fabrication timeline. After the valves arrived, there was very little documentation provided. This made it difficult when orienting the valves in the plumbing assembly and made testing a significantly longer process. Each valve was examined and tested in order to verify proper working condition and the configurations of the valves in on and off states. The valves were then used to determine a flow rate of the system. From this flow rate, a ⅜ in outer diameter tube was chosen. This was significantly larger than the first tubing used.
Figure 48: Solenoid Valve2
The change in tubing required different parts, as did the change from hard to soft piping. Research was started into components that were compatible with the valves’ BSP threads, the pumps NPT threads and the ⅜in (10cm) tubing quick connectors. This lead to several international part orders, significant increased cost, and a very long lead time. Finally, a tank and a one way valve were selected in order to complete the system. In all, the concept was unchanged, but the configuration went through significant restructuring.
After the system was set up correctly, it was verified by a pressure test. The original test resulted in significant leakage. An unaccounted for pressure release in the plastic tank caused the system to leak heavily. This problem was remedied by sealing this release with epoxy. Further testing showed no leaking.
The pump selected for the final configuration was the MG200 magnetic drive gear pump from Clark Solutions. This pump provided a significant power savings by reducing current draw to 3.4A. The pump was also considerably smaller and lighter than the Flojet pump, making integration into the hull easier. The change in pumps had no effect on the plumbing assembly layout.
Upon integration into the hull, it became clear the tank would not fit into the space allotted to the plumbing. As such, it was removed in favor of a hydraulic charging port system. This allowed air to be bled from the system without needing an additional source of hydraulic fluid.
The quick connectors proved to be difficult to work with at times, and leaked significantly during early trials. They required the mated tubes to be nearly perfectly coaxial to prevent leaking. Attempts were made to patch the leaks with silicone caulk and rubber cement, with limited success. Upon further research, it was found the tubes become worn if attached and detached from the quick connectors repeatedly. By replacing the older tubing and two failed O-rings, the leaking of the system significantly reduced. Small leaking still occurred due to the harsh angles the connectors were held at.
Upon connecting the MPU-9150 to the board, an odor and some smoke indicated that there was a short. After finding no error in how the device was wired, the breakout pins were tested with an ohm-meter. This testing revealed that three adjacent pins on the MPU were somehow shorted together within the chip. Specifically, there was no resistance between the FSYNC, AD0 and CIN pins. AD0, which had been pulled high, and FSYNC, which had been grounded, were the cause of the short. By pulling AD0 low instead of high, the last bit of the address of the device was changed from 1 to 0. This eliminated any dangerous current flow between those pins and allowed work with the chip to continue.
Promisingly, communication was established between the MPU-9150 and the MSP432. The IMU was acknowledging read and write commands, and was responding as expected to read commands. This indicated that other than the short circuit discovered, the chip was otherwise in working order. Progress stalled, however, while orientation data could not be acquired from the chip. Eventually, it was discovered that while the chip would respond to read commands properly, it would not update its registers in compliance with write commands despite acknowledging the communication. This meant that the chip could not be configured to generate the readings necessary for function and was ultimately useless.
The MPU-9150 had been discontinued by this time, so it's newer version, the MPU-9250 was acquired. Because the function of the chip was nearly identical with its previous generation, communication and configuration were easy to establish, and the chip was reporting orientation data shortly.
The pressure sensor breakout board communicated with the MSP432 using I2C. Communication had previously been successful in receiving only raw pressure values. This value does not mean much in terms of an actual measurement until the calculations are done, so the validity was confirmed against the typical value given in the data sheet.
To calculate the actual pressure in mbar based off the converted value from the breakout board’s ADC, six values needed to be retrieved from the board’s Programmable Read Only memory (PROM). These stored coefficients are factory calibrated values that are specific to the exact sensor on the board. Using these coefficients and the equations supplied in the data sheet, the pressure was calculated at around 9900 mbar. At the time the measurement was taken, it was compared to the barometer value at the Worcester Regional Airport, as reported by the National Weather Service. The sensor output within a reasonable variation from the reference pressure considering it was in a slightly different location.
For easier debugging and displaying of the calculated pressure values, a Sharp Memory LCD BoosterPack was purchased. This BoosterPack is one of several that is designed to plug in directly on top of the pins on MSP launchpads. The available driver libraries make it very simple to implement. The only important change was switching the sensor code to implement I2C on EUSCI module B1 instead of B0, because the screen communicates with the MSP432 using SPI on B0. With this simple fix, the pressure values were printed and updated regularly on the screen.
With the aid of an LCD screen, the pressure values could be seen to increase when the sensor was pressed down on. To simulate function without the actual robot, an LED was connected to another general purpose output pin on the MSP432. If the pressure value went above a certain threshold, 10000 mbar for initial testing, the theoretical robot was considered under water. In this state, the LED was off. Once the pressure was below the threshold, the LED came on as a primitive “ping” for locating and retrieving the robot in open water.
Figure 51: Pinout Diagram
The final pinout diagram was updated to include the high power motor driver for the pump as well as some other revised parts. In order to mimic this layout with the physical parts, several small perfboards were purchased. They came with built in buses and rails, similar to how a breadboard is laid out, to simplify soldering multiple connections to the same pin.
Sub-circuits were differentiated based on the size of the perfboards and where it was connected to the other components. The voltage regulator was placed on a perfboard with the 12V input from the battery to supply a 5V rail for the rest of the electronics. The I2C bus was also placed on this board with different sets of rails for the data line and the clock line that both sensors could connect to.
The 5V from the board with the voltage regulator connected to the boards for the valve motor drivers. Two H-bridge motor driver chips were able to fit on one perfboard, so each fin had it’s own valve control board. These were able to reach the inputs from the MSP432, 12V from the battery and the 5V from the output of the voltage regulator.
The high power motor driver connected to the pump came on its own breakout board. This board had screw terminals to connect to power, but the control lines were soldered to the standard headers to connect directly to the MSP432.
As a functional control system could not be tested before the prototype was complete, code control is largely limited to test files for different systems including fin oscillation, or gathering sensor input. Additionally, as a proof of concept for feedback-driven control, fin oscillation frequency can be controlled as a function of how far from horizontal the robot has tilted. In future control versions, putting each fin in either U or ∩ shapes would more appropriately correct the robot’s roll pitch or yaw.
1 [ CITATION Qui \\l 1033 ]
2 [ CITATION Sol \\l 1033 ]