Apr 28, 2017

[2.70] Seek and Geek #10: Ballscrew

Summary: Hardware debugging is a lot like code debugging, but involves more acetone.

I had acquired a ballscrew assembly from one of the loading docks, and was really excited about using it as the main actuator for this desk. (This is the same ballscrew from Kris's first seek&geek) Even though there was no obvious part number or datasheet, I could estimate the stiffness by looking at similar ballscrews and felt pretty happy using this approximation in the rest of my calculations.

The ballscrew assembly has been sitting on my bookshelf for years with the same wrapping I found it with - paper towels and packing tape. This week I took off the wrapping and started dimensioning things... and started this very wild ride.

Ballscrew assembly pre-shenanigans

Long story short, I accidentally discovered the true reason it was wrapped up. I had thought the towels were simply to prevent dust from getting in the bearings, but the true reason was to prevent pine resin from contaminating everything else!

At the base of the ballscrew where the supporting block bearing is, there was a glob of pine resin. In my excitement to measure all the dimensions, I had allowed the ball nut to sink into this resin. So suddenly, the entire assembly was seized!

In retrospect, what I should have done was soak the entire assembly in acetone to dissolve all the grease and resin. But, for some reason, I thought there would be rubber or plastic components that would be unhappy with the solvent bath. So I painstakingly took everything apart, soaked everything in acetone, reassembled the pieces, and finally relubricated all the parts!

Fixing my mistakes

First discovery: the two bearings in the driver block are in a face-to-face configuration. They use 8mm ID flanged bearings, where the outer flange is held in place and the inner races are preloaded by a torqued nut compressing them against the 12mm screw.
Bearing diagram. Solid lines are outer diameter (outer races), dashed lines are inner races, r
ed lines are approximations of ball contact forces and directions
The face-to-face configuration has more compliance against rolling moments, which makes it more forgiving with misalignment (4x less sensitive to roll than the back-to-back configuration). Assuming maximum race deflection of these ball bearings is 15μm under nominal max load of 3300N, linear stiffness should be  $2.2 \cdot 10^6 \frac{N}{m}$, making
$K_(moment) = \frac{K_(linear) L^2}{4} = 3.1\cdot10^4 \frac{N}{m}$
So that's neat. The next component in the stack is a steel washer. This item was supposed to prevent the ball of resin from gooping up the bearings below, but when the ballnut plunged into the resin it brought up this guy with it.





Next up was reattaching the shaft. The end of the ballscrew had a really fine thread, which got slightly damaged by me pressing the shaft back on. I used a knife to gently nudge the threads back in place, so I could reattach the nut. There's also a washer on the front end of this assembly that protects the inner races of the bearings from resin goop.



I replaced the resin goop ball with a blob of lithium grease. Probably this was unnecessary.


Next up was re-assembly hell. Luckily for me, this ballnut uses an external ball-return-plate. Otherwise I doubt I would have been able to repair this item (or maybe I would've come up with the better idea of dunking the whole assembly in acetone first).

There were originally 50 balls, 2.3mm diameter. Unfortunately I lost one in the repacking process :(



Repacking the balls involved picking them up with tweezers, packing them in the channel, then feeding the shaft such that the balls were evenly spaced. I did this five times in the process of hardware debugging.

Next up was lubrication. Chain oil was too clingy, Tap-magic too light, but machine oil worked fine.
Never again! But, the ballscrew lives! And now I feel justified using this reuse ballscrew in the desk.

This is what the balls are doing on the inside.
Modified from barnesballscrew.com
We can take a guess at load capacity of the ballnut knowing how many there are (too many!) and their diameters. First, taking a look at contact pressure.

Maximum contact pressure can be approximated with
$P_(max) = \frac{P_(load)}{\frac{\pi}{2}r}$,
where we need to take care to not exceed the Brinell hardness... that's how bearings fail! Assuming the bearings are 52100 bearing steel, hardness should be ~200 BHN. 

(wikipedia)
So for these balls, $P_(max)$ < 11.2 N per ball, for a total load capacity of 550N, or 123lbs. That means no attempting to stand on the ballnut by itself.

Apr 17, 2017

[2.70] Cardboard Concept Desk



Modeling a concept desk out of cardboard, just as a quick stupid-check before designing components in detail.



The goal here was to see what this desk idea would look and feel like, without worrying about geometrical tolerances. I also played around with adding trusses to the interior of the desk (and added a drawer!)

Construction was all hot-glued corrugated cardboard, with the exception of the simple linear axis which makes a final reappearance here. So, the vertical column was assumed to have substantially higher stiffness than the rest of the cardboard desk.

Adding more thickness (box drawer) to the desk significantly helped improve moment of inertia and reduce deflections, but I don't think the interior trusses contributed much. I think future desk might scrap the truss idea in favor of having just clean box walls.


Derp-cardboard desk's only attachment to the carriage was via hot-glued foamcore, and clearly future desk will need a more load-bearing attachment system. Surprisingly, hotglue held the desk and 200g of motor components just fine.


Real desk will also likely be a wall-mounted desk, for simplicity.

Mar 30, 2017

[2.70] Linear Axis v2

Finally hooked everything up and ran the tests! 

TL;DR: This linear axis system has position error of 0.44mm, with only 3.5μm error resulting from backlash. It falls within the desired error budget of 0.5mm, at least in the no-load condition.


So this is what the setup looks like - I have my linear stage on a desk, and the laser shines on a piece of paper far (4.5m) away. I took three tests:

  1. Command the stepper motor to move 5000 counts forwards and backwards, and find out what distance this is (turning off the power supply between each jump)
    • testing ability to reliably move a set distance
    • measure open-loop error when turning on the system
  2. Command the stepper to jump (each 5000 counts) forwards 4 times, then to jump backwards 4 times (leaving power supply on)
    • testing ability to return to a position
  3. Command the stepper to bounce between two positions (bouncing 
    • measure cumulative backlash error

  • Distance from "zero" point of rail to wall "L"= 449cm
  • Travel distance of the linear axis "x" is defined differently every test
  • "Radius" of the most sensitive part of the carriage "r" = 20mm
  • α  and δ are resulting angular and distance errors projected onto the wall, from which we can measure machine error "err" of this linear axis
$\alpha = \frac{\delta}{L} $
and
$err = \frac{\delta x}{L+ x} $

Where for the purposes of my experiments, I assume all projected error comes from distance errors, even though some constant portion of it comes from angular error instead. (My analyses farther down ignore angular errors)

((For the results of these experiments, skip to the end))

Linear Axis v2 accomplishes two things. First, it has an actuator (nema17 stepper motor + 1/4-20 threaded rod), which allows me to send distance commands. Second, it has an anti-backlash device so switching directions accumulates less error.

Me planning out components for this actuator (ended up buying a flexible coupling instead of making one)
Some machining notes
This version2 reuses most of the parts from v1, with some modifications. I replaced one of the steel rails with a 1/4"-20 threaded rod, and added some bushings to the bearing blocks to accommodate the new diameter. I also made a plywood stand to put all the things on so I could use the linear axis without needing an empty optical table.

The big new thing here is the carriage for this threaded rod. Its anti-backlash system uses two adjustable-offset nuts for its preload. The threads of one of the nuts will always* be contacting the threads of the rod when traveling in either direction.

(* not actually always; since these are hand-tightened there will be some amount of user error here) 


Carriage and modified bearing block
The fixed part of the carriage consists of a milled aluminum block with a tapped hole on one side and an oversized-slot on the other. The HDPE wedge and its brass threaded-insert floats within the slot and gets pushed outwards by one of the adjustment screws (the other one keeps the wedge centered)

Carriage!

I chose to replace one of the rails with this actuator, which has some advantages and disadvantages compared to having two rails with the actuator in the center.

Two Rails, with Actuator acting as Rail

Advantages:
  • Much easier to build with the preexisting parts
  • Don't have to worry about overconstraint from the two other rails
Disadvantages:
  • Sensitive to threaded-rod imperfections, especially in roll
  • Actuator will always apply a moment, which magnifies error

Two Rails + Actuator in Center

Advantages:
Disadvantages:
  • Have to take care to add compliance to avoid binding from overconstraint
  • Not as easy to modify v1 rail to accomplish vs. the other method
Now for experiments! I used a standard nema17 stepper and an Arduino microcontroller, so nothing fancy. 

(A stepper motor is a brushless DC motor that divides a full rotation into an equal number of steps, so they will precisely rotate a fixed rotor angle without needing feedback. They usually do this by having tooth-shaped electromagnets and a gear-shaped rotor.)
Did I bring my 2.70 work and my calipers on a plane to Sweden? Yes, yes I did.
Results!
Experiment 1 - Turn on power to the system, command a set distance, turn power off
The carriage started at position 2.2cm. I programmed it to move 5000 stepper counts, then turned the power on and let the program run. Once the carriage stopped (5.3cm), I turned the power off. 
I flipped the direction and did this again, for a total of three trials (2 forwards, 1 backwards)

Looking at a ruler next to the moving carriage, it seems like the machine consistently moves 3.1cm per 5000-count jump. Looking at the laser deviations, we can get a better error resolution. The standard deviation for the three jumps was 1.54mm and the magnification for this experiment was 120.7. So, for this experiment the machine moves 3.1cm with an error of 12.8μm - pretty consistent commutation by the motor.

The Arduino is a generalist microcontroller, and when first powered on it briefly supplies 5V to all its logic pins. This slightly energizes the stepper motor on startup and causes additional error between what should be identical (or within 1.5mm on paper) landing points. This error was an average of 15.7μm, of which approx. 3μm should be start-up error.

Experiment 2 - Motor moves forwards, with pauses to measure distance traveled. Turn off power and restart. Then motor moves back to the starting point, again with pauses.


The carriage started at position 13.5cm. It moved four times, each time 5000-counts (nom. 3.1cm) and ended at position 2.2cm. This distance seemed a bit short, being an average 2.825cm instead of the expected distance. The system was turned off and reprogrammed to move backwards four times, again 5000-counts but ended at position 14.7cm - giving an average jump-distance of 3.125cm.

This is exciting. From Experiment1, we determined that turning the system on gives ~3μm error, and movement will have an average error of 13μm per jump. This machine error projected on the wall should give us an expected average jump error of 1.65mm. Experiment2's average jump-distance is off from our expected 3.1cm by 0.25mm and falls within the expected amount of error.

Experiment2 also allows me to measure average error of returning to a position. This ended up being 0.44mm error for my travel range of ~12cm, which is within my original desired error budget (500μm) for this machine. Woo!

While the carriage was moving, the laser dot moved back and forth on the page. This is partially due to vibrations transmitted by the motor, partially from contact vibrations between the carriage nut and the threaded rod, and partially from the laser pointer only being taped onto the carriage bed. The tip of the laser pointer displaces 0.115mm from these vibrations. 

Experiment 3 - Motor travels back and forth between two points, with pauses for recording position

The carriage started at position 6.6cm. Moving forwards and backwards 5000-counts, it consistently landed at positions 6.6cm and 3.4cm (5 trials) so traveled 3.2cm distances, not 3.1cm. So that's odd given the results of the other two experiments, but at least it's repeatable here.

Position error for this experiment was an average of 3.4μm, which means my machine is pretty good at rejecting backlash. While the carriage was moving, the tip of the laser wobbles 38μm (I did a better job clamping down the base platform for this experiment)

Bonus Analysis - Angle of linear axis machine relative to the wall
From Experiment3, we see that the the entire linear axis system is not quite square* with the laser paper (if it were square, there would be no systematic difference between the front measurements and the rear measurements). If we assume this discrepancy is entirely due to angular** error relative to the wall, we can get an estimate of what that angle is.



$\theta = tan^{-1}(\frac{\Delta }{x}) = 0.28^\circ$

$\Delta$ is the distance between the average front and back points (3.4cm and 6.6cm, resp.) multiplied by Experiment3's magnification factor. This angular error seems around right for lining things up using the floor tiles.

*I know that the laser pointer itself is not colinear with the axis-direction-of-travel... but I'm just combining this angular error with the main one and calling the whole thing "machine error"
**I'm also assuming my system didn't move between/during experiments, which probably isn't true.


Feb 27, 2017

[2.70] Simple Linear Axis

For this assignment, we were told to go forth and create a linear motion axis built from scrap and then measure its precision. I had some leftover 8mm steel rod from what used to be 3D-printer materials, so I decided to make a small linear rail out of that. These rods were only 30cm long and rather thin for desk material, so I'm treating this one more like a scale model. I can use this to see what I can improve for the real thing.

With round straight steel rod as my rails, I have two main concerns to address:
  • Fabricate rail holders to maximize parallelism of the rods
  • Make a carriage to achieve best slidey-ness/load capacity with least effort/wobbliness
The rail holder objective is fairly straightforward, but the carriage requires some thought. Generally the more constrained you make a slider, the less load capacity it gets (before you get friction problems)

I decided to see how far I could get with a circular-bore carriage (slider on one rail has cylindrical bores, and the other rail just has a flat.) Fundamental failure modes of this design will be angular wobbliness in the xy-plane (parallel to the base, but would move a laser beam side to side), since a slip-fit circular bore inherently will allow side-side play. However, such a design would prevent the carriage from lifting off the rail and I could later reduce angular errors with a preloading mechanism. Also, this design is really easy to machine.

Below is some scratchwork:



So if I have an 8mm rod, and I have a clearance bore of 21/64" (closest common machine tool size, equal to 8.335mm), what's the best error I can theoretically achieve? More fun scratchwork below:

I can expect between 0.2° and 0.6° angular error assuming my carriage connection is actually rigid

I needed to predict what sort of errors I would see from this device; for that I used another Slocum spreadsheet. This error apprortionment spreadsheet explores allowable errors for all the components in a machine based on total error the engineer wants to achieve and how precise the engineer can expect to get each individual part. 



The logic here is that I can easily acquire a decent actuator and build a decent structure through clever machining processes, but my sliding axis idea is going to rely on flawed delrin bearings and a really derpily-mounted and honestly not well-collimated laser "sensor". So I expect the most error to come from these items. The goal is to achieve 0.5mm precision (arbitrarily lofty goal) despite these items - for that to happen, my linear axis needs to have 0.33mm precision (angular precision 0.09deg) before considering load. (I'm moving things on this axis too slowly to care about thermal or process errors.) Welp, here goes.

I machined a block of delrin to create the four rail holders and the circular-bore carriage sliders. All the critical features of the rail holders (height, bore, and mounting bolt holes) were machined first, subsequently the block was bandsawed into four pieces. The slider pieces were also matched by machining everything before splitting, to improve relative precision of the components during assembly.

Bottom faces of rail holders and slider (left) and top faces (right)
Rail holders were bored with a 5/16" reamer to get a press-fit with the 8mm rod. Slider bore used a 11/32" reamer to get a slip fit. I ended up with a rail assembly that moved very smoothly under no load, and remained decent even when I pressed harder on it.



After assembling the more constrained rail, I measured the distance from the top of the rod to the slider - 1.42mm, and found a scrap piece of acrylic for the flat that reasonably matched that height. I then bolted my simple linear rail assembly to my lab's optical table, then attached a piece of sheet metal with VHB tape to test it.

Simple Linear Axis with all the components
Attaching components with tape isn't the most rigid way to make a machine, but I'll soon have to modify the carriage to add an actuator. I therefore decided to go with an attachment method that would be easy to remove, since I don't yet know what modifications I'll add to the final carriage.


For testing, I taped a laser pointer to the carriage and pointed it at a cabinet 20ft (6.12m) away. My carriage is 75mm long and wide, so using Abbe error principles

$ \tan(\alpha) = \frac{\delta}{L} = \frac{g}{length of carriage} $ 

and

$\alpha = \arctan(\frac{\delta}{L})$

where if I want my bearing error to be max 0.159mm (error apportionment), I want my angular error to be 

$\frac{0.159mm \times gap}{l} = 0.02deg$

and therefore max $\delta$ = 2.167 mm (repeatability at same location)
and max $\delta$ = 3.36mm (moving the carriage the full length of the 214mm-long rail)




Laser target. The white paper is so I can draw on it, and the black tape spot is for the camera's benefit.
The following video is from me trying to square up the assembly relative to the target by eye. I slid the carriage back and forth along the length of the rail and rotated the linear axis until the laser stopped wobbling side to side. This calibration was very handwavey, so it's difficult to properly measure the precision of the device itself versus how angled the entire assembly was.



Once I rotated the optical table to a reasonable target-width (video below), I was ready to start properly measure my linear axis.



It's possible to back-calculate the estimated angle of the assembly relative to the target based on the overall drift of the laser across all the trials, but I definitely won't conduct enough trials to properly statistics-away this particular source of error. Instead, I'll probably find a better calibration method for the next iteration of this linear axis once the actuator is attached.

Anyway, during testing I discovered that my clearance-bore + flat method did indeed have noticeable side-side error and worse than I calculated - 9.81mm, which was a 0.09deg angular error for repeatability testing. A lot of this is due to my setup itself not being squared up - angular error at the front was only 0.04deg of error compared to 0.14deg at the rear.

Traveling from back to front multiple times, I accrued an overall angular error of 0.23degrees. Womp. My estimation from looking at repeatability of the fronts and backs is that 0.05deg of that was due to the the table itself.

Given these results, I tried squaring up the optical table a bit better and put a 500g weight on the carriage to look at effects of adding a load. This time, my fronts and backs had more similar displacements - both errors were 0.1deg. However, sliding back and forth got an error of 0.5deg - twice as much as when I tried this with minimal loading, and 5x what my error spreadsheet budgeted for.

I suppose this is what I get for attaching my carriage to my bearings using compliant foam tape and attaching my laser with ducttape, and I'll find out how much better I can get when I add an actuator and reattach everything with more thought.

However, the real experimental error matched up with my scratchwork predictions, despite having a bore gap 0.2mm larger than intended (using 11/32" reamer instead of a 21/64"). So probably I shouldn't expect to achieve anything significantly better even with an actuator.

Feb 24, 2017

[2.70] Kinematic Coupling Round 2 (plus bonus annealing fun!)

Last time I made a kinematic coupling for a Slocum class,  the result was a tiny magnetic coupling for a pen. Well, time to make another 6-contact-point mechanism to constrain 6 degrees of freedom!

This time, I'm revisiting some material science fun - material properties of tempered and annealed aluminum. Last time I did this, I took 7075-O aluminum and heat treated it to approximately T6 temper. This time, I'm starting with a block of 6061-T6 and seeing how far I can anneal it.

I filled in two estimation spreadsheets for the kinematic coupling. This one assumes the grooved half is made of 6061-T6, and the second one assumes the grooved half was softened to T0. In both cases, I'm using pine spheres for the ball half.

For this spreadsheet, I assume that there's a 20N preload pressing the halves together but at an imperfect angle (5deg, so modeling a weight slightly cantilevered off the center). I also assume that I will be measuring Abbe-error at a distance of 10ft.

pine balls on 6061-T6 grooves



pine balls on 6061-O grooves

An interesting observation that emerges from these two spreadsheets is that annealing the aluminum is expected to yield no difference in kinematic coupling errors. Of course, that does make sense, since pine has a both a substantially lower yield strength and lower stiffness than even soft aluminum.

I ran the spreadsheet again, using ball values for steel, and found that actually my problem is that the yield strength differences between T6 temper and T0 are too small to see much difference in error... and given that 6061 will have the same elastic modulus at any hardness, I'm not really sure what I expected in the first place. Anyway, moving on.

This KC used a much less involved method of construction than the previous one. I grabbed leftover wooden drawer knobs and drilled 1/4"-diameter blind holes to accept steel dowel pins. Then, I drew a circle on some scrap aluminum (this isn't the one that will be baked) and marked and punched locations spaced 120 degrees apart. These punched spots were drilled through with a 1/4" bit and again with a 19/32" reamer (I couldn't find a 1/4" one!)

19/32" holes ended up being too much of a slip fit, so I shimmed the dowels with some tape.  

Completed upper half of the KC
The lower half of the coupling was made of a 1/4" chunk of 6061-T6, and used the same method as KinematicCouplingPen to form the grooves - indexing head for 120 deg rotation, preliminary cuts used a flat endmill followed by a chamfered bit (this one was a bit big for a countersink). I also drilled some 5/8" clearance holes for attachment to future tensile-tester fasteners.

Tensile testing ended up not happening, for reasons I'll get into later in the post :)


A note on machining - this go around I learned from my previous mistakes and locked the spindle when machining the grooves, instead using the much more rigid knee to control z-axis height.

Completed kinematic coupling
For testing, I relied on good old Abbe Error. Magnify your errors by projecting them really far away!

Abbe Error diagram from last time
This KC has coupling radius "r" = 19.6mm, and my projection distance was 6.33m.

$d = \frac{rD} {L} = \frac{D} {322.96}$

$\frac{d}{D} = 3.096 \times 10^{-3} $


For these repeatability experiments, a projected deviation of 1mm indicates a coupling error of 3 microns. The experiment consisted of taking the KC top off and setting it down again, then marking the new location of the laser dot. I repeated this process 10 times.
KC was clamped to the table and a laser strapped to the upper half pointed at a paper on the wall
Actual piece of paper taped to the wall
So how did I do? For the just-laser-pointer trial (self-weight provides a 2N preload), my max radius across the entire spread was 6.06mm. Maximum distance between consecutive trials was 8.64mm, and maximum distance from the origin (laser location before I started the repeatability test) was 12.3mm in the negative x direction.

I added some weight on the center of the KC and tried this experiment again with a 10N preload. Here, max spread radius was 5.50mm, max distance between consecutive trials was 8.48mm, and maximum distance from the origin happened from origin to location1 was 10.99mm

An interesting observation for both cases was that the origin itself - before I started messing around with the KC - is on the extreme edge of the spread (the origin location is marked with a sunburst pattern). I wonder whether the KC settles to a new favored position over time, versus when I quickly pick it up and set it down during the experiment.

Translating these results to errors in the coupling, I get this:
So this kinematic coupling is repeatable to approximately 15 microns. This happens to be 5x worse than the first one I made, but definitely took less than 1/5 the time to make.

Going back to the kinematic coupling spreadsheet and updating values to better reflect real life, I found that I should expect a displacement error of 12.7 microns (10N preload, where the added 8 N was assumed to be 1deg off center, because nothing's perfect). Pretty close to real life!

Alright alright, what happened to the material science part?
Well, the internet suggests that a good way to soften 6061-T6 is to coat your piece with a layer of sharpie or bar soap and then torch it with an acetylene torch until the soot burns off. If you let it air cool, it should be somewhere between T3 and T0.

So I did that, then remembered I had an evening lab class in the metallurgy lab and the forge would still be hot when we finish with classwork! This was convenient, because the kinematic coupling piece is rather thick and torching it would only superficially soften the outer faces.

Ooh, fire
 Unfortunately aluminum is less forgiving than copper and is more difficult to judge temperature by eye. It also happens to be that aluminum's forging temperature is only approx. 300 or so degF lower than its melting temperature... which is to say I spent too much time taking pictures and accidentally let my workpiece partially melt.

If you create deep grooves in a block of aluminum, the thinner bits heat up faster. Womp womp.

#hubris #stoptakingpictures #startpayingattention
So no stiffness testing between kinematic couplings this time. Luckily for me, I already did the assignment part.

What else can you do with a melty piece of aluminum? Nominally it should be T0, but in this state it's difficult to stick in an Instron. 

I decided to try a very handwavey version of the Rockwell/Brinell hardness test methodologies to finish off this fun experience. I got a 18-oz ballpeen hammer and a metal punch, and struck each material with vaguely the same amount of force. Then I measured the depth of the indentation.

Indent on melty-aluminum vs indent on your standard 6061-T6
Melty-aluminum's punch was 1.2mm deep, and T6's punch was 0.25mm deep. If we assume (dubious) that I actually used the same amount of force striking each piece, melty-aluminum is 4 or 5 times softer than 6061-T6.

6061-O aluminum has a Brinell hardness of 30, compared to T6's hardness of 95. Between like-materials and this close together on the scale, we can assume the hardnesses and scale values to be linear and say 6061-O is 3 times softer than 6061-T6. So my melty-aluminum is either at T0 or softer. I'm leaning 'softer', since it... melted. I guess this doesn't actually count as "annealed".

(Kinematic Coupling spreadsheet says I wouldn't have noticed a significant difference in error, anyway. Hrmph)

Feb 18, 2017

2016 EC Clubhouse Construction




A short post about the wooden clubhouse my buddy Elena (left) and I lead for this year's EC REX! (Elena's in charge; I was first mate :P )




Our goal was to make a small (smol!) hangout space alongside the larger East Campus Fort, to which we connected our structure with a rope bridge!

hangout space getting love during the East Side Party kickoff event
Our structure (left), attached to the larger fort project (right)
We (along with fort team!) submitted design drawings and structural calculations to a PE and architecture firm to get their stamps for the temporary structure, and also got stamps from Cambridge Fire Dept.










Construction started with digging holes and adding gravel for foundation cinderblocks. We spent a long time setting up a level surface that compensated for the uneven dirt ground. Even more time was spent moving the foundation locations around to avoid all the tree roots!

This took a night, then half another day to fix my mistakes
Our two person team had a more leisurely pace than the 8 person team leading the Fort build. Both teams ended up finishing within 10 days, perfectly on time for the party!
Put up the central tower by Day 2

Three towers up!

By the end of Day 3 we had floors on the entire second storey.

Starting on the tower again

Adding joists to the third floor.
Once the overall structure was completed, Elena and I split up the rest of the tasks. Elena added in the railings and I started working on the rope ladder.

The rope ladder was our access point for the second floor, and was attached to the spandrel via eyebolts and to the ground via anchors. The anchors get driven 2 feet into the ground, then a load pulling on the steel cable wedges the anchors at an angle.

Had to soak the ground to drive in ground anchors. These will be impossible to move.
Most of my time was spent working on rope ladders and bridges, and by the time I finished Elena had completed the rest of the clubhouse around me! The REX Chairs ordered a bunch of beanbags to make the hangout space cozier.
Note how we don't actually touch the tree. Trees in the courtyard are historic and we aren't allowed to hurt them!



Maya was super excellent and knotted the rope ladder together, then tensioned it up. In planning phase I miscalculated how angled I wanted the rope ladder to be; I set the horizontal distance too far and the structure ended up being more saggy ideal. We helped make climbing easier by adding a wooden handhold/step, as well as reinforcing the OSB shear wall to accommodate people stepping on it. Up above on the second floor, we screwed in 2x4 hand-holds onto the floor to help people exit/enter the ladder.

Art thanking our sponsors! East Campus and Clubhouse team are really happy we had such talented artists joining in
Elena and I saw the sponsor art, got super excited, and immediately asked the REX chairs if they would ask people to make the rest of our shear walls pretty. The chairs sent out a call for artists to the 100+ mailing list of people helping with construction and REX events, and we got the most beautiful art decorating the OSB shear walls.