Press "Enter" to skip to content Posts

3D Printing Custom Propellers

For fun, I wanted to custom design a propeller so that I could effectively match it to the hydrodynamic characteristics of the AUV and a drive train to try and improve efficiency. Luckily, I found a design tool which makes the propeller design easy — MH Aerotool’s JavaProp. Although the JavaProp is meant for airplane propeller design, it’s easy to change the medium parameters by inputting the density, kinematic viscosity, and speed of sound for water in the options tab to produce designs suitable for usage in water.

Recall previous posts where I used OpenFOAM to analyze the flow around the AUV hull to determine the drag and velocity profile in the propeller disc. I can input these parameters into JavaProp to tailor the design to my AUV! Granted the flow profile is a fairly simplistic linear input with 2 parameters, it’s probably good enough for my purposes. Inputting the drag and dimensions into JavaProp is straightforward. For a preliminary cut, I chose the following parameters:

Propeller Design Inputs

Clicking “Design It” gives me a quick design. After some modifications, the rough design gives me about 76% efficiency, and that’s without really thinking too much into it. Lots of information is generated as well to better understand the propeller’s performance.

Test Propeller Performance


The best part, however, is that it outputs the optimum propeller geometry given a selection of profiles for different points along the propeller:

Test Propeller Geometry

The awesome part is that you can export the profiles as a surface to manipulate in external programs – Through some CAD elbow grease with your program of choice, it’s possible to convert the surface into a complete propeller. One caveat, the trailing edge needs to be thickened to be manufacturable later, but I accomplished this easily with the custom settings available in JavaProp.

The 3D prop was created in OnShape by intersecting the exported surface along a series of planes, which creates a series of profiles used for a loft feature for a single blade. From there it’s just a matter of rotation pattern feature to make three blades, adding a hub, and adding some fillets at the root.

Propeller CAD Design


Shapeways has recently introduced a trial of the HP Jet Fusion 3D printer, so I figured that would be a good material to do a trial print in. The results were surprisingly good! I had originally planned to smoothen the propeller out and use it to make a plug to create a mold, allowing me to cast propellers out of a much stronger urethane material. Although not smooth enough to be a perfect propeller, this new material may be tough enough to use the water itself!

3D Printed Propeller

The keen eye will notice that I didn’t print the specific design shown above — I actually 3D printed an earlier revision, which didn’t have an adjusted flow profile. Once adjusting the flow profile for reduced flow near the root of the blade, the chord of the profile at that point increased to compensate.

Next steps will be to experiment with different ways to smoothen and stiffen the propeller. Either filling and sanding or adding a very thin layer of fiberglass tissue and epoxy could work. Either way, 3D printing propellers seems very feasible, and a very reasonable cost. The best part is, I can experiment with different ways to optimize and easily print multiple variations to actually test.

One unknown, however, is how the print will deal with pressure if used directly at the AUV’s test depth — Any porosity may cause problems so some testing will be required before putting it into use.

Leave a Comment

Side-lobe Suppression

Another minor update. I’ve been messing around with some transducer designs for the SAS transmitter. Given that the wavelengths of ultrasonics underwater are very short (due to the high propagation velocity), it’s difficult to achieve 1/2λ spacing for array elements, which is needed to suppress grating sidelobes in an array.

Regardless, I think I’ve found a potentially useful arrangement for transducers. Initially, with a uniformly driven array, the sidelobes are rather quite atrocious (~7dB down from the peak for the first sidelobes). Using some very simple, non-scientific shading (read: hasty trial and error), I can suppress the sidelobes to better than 15 dB down from the carrier, which will greatly reduce unwanted effects in the SAS image.  The shading also has an effect of widening the beam, which is actually desirable to increase the insonified swath on the ocean floor.

Plots for single element (blue), 5 element array (orange), shaded 5 element array (green)


Unfortunately, shading can’t be used to significantly mitigate the grating sidelobe at 45° off boresight, but since it is >15 dB down hopefully it shouldn’t cause much of a problem. The lobe facing down to the ground will have its most significant impact via ground-bounce, will be mitigated by not opening the receive window until after the ground bounce has arrived. The lobes facing towards the surface will manifest themselves in multi-path reflections off the surface and back to the receive, or down to the ground and back to the receiver — These are important to keep to a minimum for the best imaging performance.

Next steps are to continue developing some software to do some NESZ calculations before finalizing the transducer design and forking over a large amount of money on piezoceramic elements…


Leave a Comment

Sonar Beamforming

Having been incredibly busy with work, and haveing temporarily lost my machining space (converted back to guest bedroom/office), I’ve only had time to fiddle with some high-level designs and for my sonar project. One of the things I’ve been working on is determining how best to make the transmit array. To support that, I wrote up some Python code to generate a Piezoceramic transducer object (in the form of a class), which returns the beam-pattern vs Az/El angle for custom rectangular or circular transducers. That feeds into a transducer array object, defined by a Python array of tuples defining for each element the position, relative driving amplitude and relative phase of the input signal.

The output of all that is the theoretical beam pattern for custom transducer arrays!

Elevation beam patterns for a hypothetical 150 kHz sonar array, consisting of 6 vertically stacked narrow elements with a vertical dimension less than Lambda. The Green pattern has arbitrary amplitude shading applied

The basic structure of code allows me to quickly determine the beam patterns for various transducer arrays, and experiment with shading to reduce sidelobes, and phasing to steer the beam — Perhaps at some point, I can try to write an algorithm to experiment with a combination of both to create a structure which best insonofies the ocean floor.

Unfortunately, I haven’t yet had time to parse the results of various design permutations, but the basic code is up and running. I think the next step will be to determine how different beams project onto the ocean floor and reflect back so I can do some performance calculations (essentially NESZ, or Noise-Equivalent Sigma Zero, a common performance measure for synthetic aperture systems)

Elevation beamwidth of a 4 element vertical array of 255 kHz transducers. The vertical dimension is approx 3x Lambda. The green element is being steered, note the rising grating lobe.


I suppose I have some work to do with getting better graphs out of Pyplot, especially proper annotations. (The axial scale is in dB in the above plots). A drawback to this method is that it assumes the transducer beam patterns are all perfect-world, sunny-day patterns and don’t account for various higher order effects that impact beam pattern (e.g. non-uniform vibration of the piezo elements, acoustic coupling, etc). Lacking appropriate FEA software to do acoustics (Haven’t found anything suitable in the open source world yet!), this is what I’ve got to work with and build on for the time being. Likewise, another step is getting more representative patterns.

Leave a Comment

Some Minor Progress…

Just a minor progress update. I’ve been adjusting the CAD design and working on some additional parts. A snapshot below….

AUV design snapshot, January 2017. Cutouts for the imaging sonars are visible. These will probably change…

I also finished grooving the prototype bulkhead ring. It wasn’t super easy, and I’ll need to experiment with feeds and speed some more to get nicer cuts. I’ve also had a plastic order come in, so I’ve done a test fit of the bulkhead into an extra piece of acrylic tube. It’s a tight,  but good fit! I just need to machine the remaining bulkheads and anodize them before I start pressure testing.

Test fitting a bulkhead into an acrylic tube.

I’ve also been working away on the nosecone plug — Adding layers, then machining it down to get it smooth — Once it’s in the right shape, I’ll manually sand it smooth and start the process of sealing with epoxy. This is a pretty messy operation, as the spackle turns to dust, so I typically do the machining with the vacuum hose right beside to suck it all up.

In the photo below, you’ll also notice the standoff I made to mount the toolposts higher in order to machine large diameter parts — Here I’ve got two spacers mounted to get over 6″ swing over the bed with the Sherline lathe. Since it’s a very soft material, I think it’s okay, but this would be quite non-ideal for machining anything harder. (To do the outside of the bulkhead rings, I just mount a single spacer and use the smaller toolpost. Still not as rigid as I’d like, but it’ll do for this small job. I do wish I had room for a bigger machine, though…)

Turning the nosecone plug. The toolpost is mounted on a special standoff I made to turn large diameter parts.

Rudder Simulations

While designing the thrust/steering module for the AUV, I figured I should determine how much torque the rudder will require (for motor selection) and what forces it will result (for eventual control development). The rudder itself is a fairly simple plane with an airfoil type profile, with the rotational axis a quarter of the way from the front to the rear, making it what’s known as a balanced rudder. More on this later.

Balanced Rudder

I set up an Open Foam case to calculate the forces and torque, and made a script to run it through 0 to 50-degree steering in 5-degree increments. I opted to just use an isolated rudder for the initial tests, although in reality there will be interaction between the body and the rudder, especially since the rudders will be located in the region where flow is beginning to separate from the AUV hull. Note that in earlier CAD models, I had shown the rudder being only a portion of a fin — in order to simplify things, and balance the rudder, I opted to make the rudder consist of the entire fin.

The simulated results I got are shown in the chart below. I only ran simulations up to 2 m/s, as I don’t expect the AUV to go much faster than that operationally.

Rudder torque vs deflection angle, with rudder rotational axis 25% back from leading edge of mean chord

Although there appears to be an outlier at 30 degrees deflection (Either due to some real hydrodynamic effect or errors in the simulation), this result is actually what’s expected for a balanced (or partially balanced) rudder. If the rotational axis was at the front edge of the rudder, all the forces would be acting on one side of the rotational axis which would result in significant torque requirements to move the rudder. By locating the pivot point near the rudder foil’s center of pressure, the forces in front of and behind the rotational axis negate each other resulting in reduced torque requirements.

With the balanced rudder, the forces start off minimal while the flow is laminar. Once the rudder’s foil begins to stall, the torque will actually invert and go the other direction. To illustrate this, some renderings of the results from Open Foam are shown below. Note that the streamline colours represent particle velocity, but the colour scales are slightly different between all images.


10-Degree deflection. Flow is laminar.

In the first case above, with 10 degrees deflection, the flow is still smooth around the rudder’s foil. While the torque value at this point is very low (hence why it’s “balanced”), using the right-hand rule to interpret the torque around the Z-axis, it appears that the torque is actually wanting the rudder to keep deflecting!

20-Degree deflection. Flow is starting to separate.

At 20-degrees separation, per the plotted results, the rudder foil is around the stall point. At this point, the torque around the rotational axis is neutral. Any further deflection wants to push the rudder back towards the forward position.

40-Degree deflection. The rudder is stalled. Note the turbulence behind.

Throwing the rudder even further, to 40-degrees, we can see that it’s now clearly stalled. You can see the turbulent flow behind the rudder. The streamlines make for a really cool graphic!

For curiosity’s sake, I ran a couple of extra simulations, varying the location of the rudder’s pivot axis 4mm forward and 4mm back from the 1/4 chord position (this turned out to be 6.6% of the mean chord). A plot of the results below. I still have some optimization to do in terms of rudder profile and mounting point, but these give me a good order of magnitude understanding of the rudder torque for initial design work.

Varying the location of the rudder’s rotational axis effects the torque.

In terms of motors to drive the rudders, I’m currently planning a geared down brushless motors, as I want to have fairly fine and smooth control over the mechanism (reduce noise, vibrations, improve fine control over hobby servos).

Leave a Comment

Universal Bulkhead Ring Part 2

I’ve been bounding around design and work on some different parts of the AUV but had been meaning to get back to working on the bulkhead ring prototypes. I’ve made some tweaks to the design, mostly so that I can mount internal components directly to the inside of the ring, necessitating the creation of some flat spots on the inner surface, where I can drill and tap mounting holes. These should be fairly easy to cut out on the mill when doing the finishing drill steps.

Universal Bulkhead Ring

I had some time today to sit down and make some progress on the machining and managed to get most of the lathe work done, minus the external grooves which will seal up against the body tube. For the most part, things went well, although I made a fairly stupid mistake and zeroed off the wrong side of the grooving bit when cutting the face grooves — Luckily, not all the rings will need seals and o-rings, so I can put this one into a “wet” compartment where that mistake won’t matter.

Inside Turning large parts on the Sherline

One frustrating battle I did have to fight, however, was with chatter. I had significant chatter on the external turning operation. I think I’ve tracked that down (a little too late) to one of the gibs in the slide, so will need to tweak that before spinning anything more.

One tricky part about the setup is that the part needs to be flipped part way through. To make sure that everything is lined up, I had to place a dial indicator behind the part and very carefully adjust it in the chuck to make sure that I had very little runout. In the end, I got about 2-3 thou peak-to-peak deviation at 2.7″ radius. Not too shabby, and good enough for my purposes.

Aligning the part after flipping, using a dial test indicator on the back face

All in all, however, the g-code works well, and future rings should be much faster/smoother to machine. I ended up settling on a feed speed of 145mm/min and 0.1mm depth of cut with the mill’s motor geared down (~1400rpm with carbide tooling, so a very fast surface speed). I wouldn’t push the machine any harder than this at these large diameters (~5″), especially since the chucking method isn’t super secure, and subject to going out of alignment relatively easily. I suspect I’m feeding too fast with too light of a cut, so on the next ring I’ll experiment with deeper cuts and slower feeds to see if I can improve the chatter/finish/headaches. — Disclaimer: Do not take any of this as good advice. I’m not an expert machinist! This a very non-ideal method for clamping large parts on a small lathe, and can be dangerous if not secured properly. 

Next steps will be to finish this part, and work on the next batch. I’ll need about 8 with my current design, so it may take a bit of time to get them all done…

Universal Ring Progress! Most of the cutting is done at this point.
Leave a Comment

Fiberglass Nosecone Part 1 – Making a Plug

The AUV’s nosecone will be a free-flooded chamber but needs hold its form for hydrodynamic purposes. I had originally planned to make the nose cone have a spherical form at the front with a radius something smaller than the AUV’s diameter, then blending into the body. The purpose of that was to eventually be able to put a phased-array forward-looking sonar in the nose for mapping and obstacle avoidance, and the spherical form looking forward would reduce the refractive effects of the water-fiberglass-water transition.

However, given the magnitude of the scope of building an AUV and a side looking Synthetic Aperture Sonar, any kind of additional forward-looking sonar would be so far down the road that I opted for a simpler, more hydrodynamic and more aesthetically pleasing elliptical nose-cone form instead.


AUV Nosecone CAD

The first step in making the nose cone was to build a plug, to be used to make a mold. Using 0.75″ blue insulation foam, I cut out profiles using the CNC machine. The profiles were slightly oversized to compensate for any slop in the assembly and cutting, with the excess to be sanded down to the correct dimensions.

CNC Cut profiles, for the Nosecone Plug Stackup.

The pieces were then glued together, onto a wooden dowel which served to keep everything aligned and to give something for the lathe chuck to bit onto. To keep things tight, I used the mill itself to act as a “clamp”. The joy of working with foam is that you can get away with doing things you shouldn’t do with harder materials…

The plug profiles glued together and mounted on the mill to act as a vice. This is the same configuration I used to turn the part.

I cut out another profile, and lined the inside with sandpaper — This was used to help sand the foam to the right shape. Once in the spackle stage, the form was used to help evenly spread the spackle. It would have been better to use a more rigid material for the form, like wood, but I didn’t have any kicking around, so opted to work with what I had.

Sanding Form for the Nosecone with my CAM software running in a virtual machine in the background.

The first sanding step was to sand the foam past the target dimensions, and then build up a layer of spackling filler – The spackling will help give a smoother, stronger finish than is achievable with foam, which is essential for a good fiberglass mold, and hydrodynamic surface. I used quick-dry spackle to speed up working time, although since it off-gases quite a bit as it dries, I had to use it outside and the cold weather slowed the dry time back down to a crawl. The quick-dry spackle does shrink somewhat as it dries, causing cracking in thick layers, but that’s okay as the cracks are filled in over subsequent, finer applications.

Nosecone Plug after initial sanding and two layers of spackle, ready for a spin on the lathe. (LinuxCNC with test program in the background)

Once a decent layer of spackle was built up over top of the foam, I used the CNC lathe to bring the plug to the correct dimensions and symmetry. To create the G-Code, I used e-Cam running in my Windows VM. Since I didn’t have to rough away all the material from a full cylinder, I created a DXF file with offset profiles from the final shape, starting at 0.25mm and building up to 1mm steps. Importing these, I created a series of “finishing” profiles, which resulted in tracing the final lines.

Generating the G-Code to finalize the nosecone shape.

Normally the Sherline lathe can’t handle very large diameters, but using riser blocks and some custom made tool risers (Another thing I worked on over the break, which I’ll need to finish other AUV parts) I managed to swing the large diameter part. Luckily, the plaster is relatively soft and easy to work with. I’ve run it through the CNC program once, and then added some extra plaster to fill in some gaps where it wasn’t thick enough and will run it through again once that’s dry.

Next steps will be to seal the surface with epoxy resin, polish smooth and wax to perfection — The more time spent working on the plug, the better the end result will be. Since I don’t have a suitable indoor workshop for curing resin (fumes), I’ll need to use a resin formulated to cure at temperatures near freezing so that I can do the epoxy/fiberglass work on the patio. Winter in my neck of the woods is more akin to spring in the rest of Canada and doesn’t go below freezing very often. Unfortunately, this year winter has been a bit colder than usual, so it may be a while before it warms up enough for fiberglass work…

Otherwise, AUV design is slowly progressing. I’ve been taking some more test cuts and refining the CNC programs to generate the universal rings. I’ve been putting more thought into the electronics and control of the AUV, but will leave that as a topic for a future post.

Leave a Comment

Slowly Picking Away

Work’s been quite busy the past little while, so I haven’t been able to get as much machining done as I’ve wanted to — That’s been additionally hampered by needing a new shaft coupling for the Y axis on my mill, which is currently on its way.

A few weeks ago, I did get enough time to take the prototype bulkhead ring for a spin on the lathe, and played around with the feeds/speeds quite a bit. I think I’ve got things somewhat dialed in for the facing/boring steps, and as expected I need some fairly light cuts to be able to get to ideal cutting speeds. Still having some trouble getting good chip breaking, so not perfect yet. Face boring proved to be quite difficult — I’ve found a speed that doesn’t stall the machine, and doesn’t sing too badly, but definitely far from ideal.

Experimenting with the CNC Lathe
Experimenting with the CNC Lathe

I’ve been putting some thought into the sonar payload itself, primarily with how I’m going to manage record all the data. Luckily the sonar bandwidth is very small compared to that of a Synthetic Aperture Radar so the data rates needed are orders of magnitude lower, but some very preliminary estimates are around 85 Mbit/sec at a worst case for I+Q samples from a 2×12 element interferometric array on either side of the sonar. For an hour’s worth of imaging, that’s nearly 40 GB of data to store! I could optimize the data rate by something like BAQ compression, but I think that rate should be manageable without compression.

An SSD would clearly fit the bill for storage, but could potentially be a pain to get the data into directly from an FPGA. I did a bit of searching and found the Inforce 6540 single board computer, which offers a Snapdragon 805 processor, both USB 3.0 and SATA ports, and a Linux image. I could potentially route the data from the ADC array through an FGPA into a Cypress EZ-USB controller into the ‘6540, which could then write to an SSD with a proper file system — I could then connect the SSD to my computer at home to download and process the data. I’ll dig around a bit more to see if the processor can handle the sustained data rate over SATA, but this seems to be a good candidate for a mission computer to handle sonar and potentially even future camera payloads.


Leave a Comment

AUV Thrust Module Design Progress

A quick update on some design work I’ve been picking away at recently. I’ve managed to roughly place all the parts for the drivetrain in the thrust module and started work on the control fin motor/gear layout. Still all subject to change, but it looks like I’ll be able to fit everything I need in the tail cone.

Cut-away view of the work in progress AUV propulsion module.
Cut-away view of the work in progress AUV propulsion module.

Next step of this design is to figure how to seal the control surface shafts. Ideally, those will be magnetic couplers as well, but I have to analyze how much torque will be required, and how much I can transmit with a small magnetic coupler. Failing that, I’ll design it to use Ikelite glands — I have an Ikelite camera case which uses these, and the performance seems good.

I found a source for BLDC gear motors that run off 24 volts and aren’t insanely expensive, which I’m hoping to use for the control surfaces. Standard hobby servos run of much lower voltages, and I was hoping to implement my own control scheme for the motors — More on that later, as I’ve ordered one motor to test out to verify it will actually be suitable.

Leave a Comment

A Lesson in Rigidity

After getting some metal stock this week, I was anxiously waiting for the weekend so I could start machining some prototypes for the AUV’s universal ring bulkheads.

Now, I need to throw out a disclaimer — I’m not an expert machinist by any stretch of the imagination. In fact, quite the opposite and I’m learning as I go, which is what this post is all about.

Having read through different things on feeds and speeds, I set up some programs with what I thought were somewhat aggressive cuts (for the Sherline) that I hoped the machine could handle — 1mm depth with a 3/8″ end mill into 6061 aluminum, with a feed of about 260 mm/minute. I’d read complaints about the rigidity of the 2000 series mill, but figured I’d try anyways.

The intent was to mill out the center of a 6″ diameter piece of Aluminum, so I could use the 3.1″ Sherline chuck to clamp from the inside onto the lathe for all the turning operations I’d need to do. I was hoping to salvage the inside chunk, since the stock wasn’t cheap. I planned on accomplishing this by milling in half way from one side, then flipping the part and milling in from the other side.

Now, the Sherline motor handled the first cuts like a champ. The 2000 series vertical column? Not so much. Unfortunately, as the machine went through the cuts, it put enough stress on the vertical column causing it to pivot along the vertical axis and throwing it off center. You can see the steps caused by this in the picture below, due to the column gradually pivoting at each cut, throwing off the alignment more and more. Luckily this was a roughing cut, so the the stock wasn’t lost.

Stepped profile caused by the wandering alignment of the mill's vertical column
Stepped profile caused by the wandering alignment of the mill’s vertical column

Eventually, I tightened the column well enough that it finished the last cuts without too much added deflection. Figuring I could tighten up the mill just a little bit more before flipping the part and trying the other side, I put the wrench on again, applied some torque and snapped the bolt clean off, leaving me with a Z-axis no longer attached to my mill, and the mill out of commission!

Not to be deterred, I figured I would try and see how well the the part fit in the lathe’s chuck using the pocket that was milled in one side. Not too bad, I must say:

6" diameter part on a 3,1" diameter chuck
6″ diameter part on a 3,1″ diameter chuck

I then screwed the chuck inot the lathe. I had to use two riser blocks to get clearance on the large part, causing some inappropriate cutter geometry. I needed that much offset to get the part below 6″ diameter, after which the intent is to only use a single riser block, and some special tool holders I’m planning to make in order to hold tools perpendicular to the part.

Turning large diameter parts
Turning large diameter parts

Turning the large diameter part was easier than I’d thought I used 0.2mm depth of cut and a 60 mm/min feed rate, which the machine handled well. The part stayed solidly affixed to the chuck, even when I accidentally crashed the tool into the part.

Now that I’ve gotten the stock cut such that I can mount it on the lathe, and turn it freely on the lathe, hopefully soon I’ll be able to start working it to the final shape. Unfortunately, I ran out of time to machine today and had to start cleaning up at this point.

Next steps, I’ll have to fix the mill. From what I’ve read online, the rigid column Sherlines fare much, much better than the fancy articulating column mills, and luckily the part to do the conversion is fairly inexpensive. Although perhaps the Sherline isn’t the right tool for machining large parts en-masse, for the quantities of parts I need and considering it’s what I already had available, it looks like it’ll fit my needs just fine.