Saturday, April 4, 2020

PPE revolution: Face shields

Building Face Shields


In these strange times, it is important that we do all we can to help our medical staff on the front lines. After months of political blunders, we suddenly find ourselves in a country completely unprepared for the Covid-19 situation at hand.

My wife is an Emergency Room physician, so I am constantly thinking that at some point she will come home and either be sick or I will get sick. To watch as our government fumbles to provide adequate support to people on the front lines, the burden is just too great and like a slow and painful train-wreck. I find myself unable to just sit in self-quarantine for whatever amount of time without making some impact.

However, if you own a 3D printer and some material.. I believe you can make a difference.

The Design


There are various 3D face shield designs out there in the wild now. To start, there are various NIH approved designs: budmenDtM, arista, etc.. However, the quickest design to implement is anything which uses a standard 3-hole punch for the visor to clear film interface. We do not recommend using adhesive for ease of sterilization.

We prefer the Josef Prusa face shield design overall (see google). The design is easy to print and stack-print, it also offers enough support for people who will be wearing these for 8 to 12 hours, and it does not seem to fog as much (which my wife prefers). Staff should be wearing face masks as well.. and this should be thought of as not the only layer of protection for staff.


Print material considerations:


Most people are recommending PETG material because the plastic has slightly more tensile strength, while offering a bit more rigidity and flexibility. PLA works just great in my opinion. There is some fear that the material is more brittle than PETG, however, I do not think this is of overwhelming concern if the print is wide enough. At very thin widths, yes, I could see this as a potential concern. But unless you know how to print with PETG, then PLA is a better choice.


Shield considerations:


Clear PETG, Polyester and others are in super short supply worldwide. After calling several vendors and getting in touch with larger shop manufacturing shield designs, the universal bottleneck seems to be in procuring 5mil to 20mil clear plastic. It is just not available.

However, there is a simple workaround to this problem. In most office supply stores you can easily find back stock of overhead projector clear acetate. This is our choice as it is sterilizable with alcohol, comes in 5mil thickness, and is still quite accessible.


Harness considerations:


Most people are trying to source elastic bands which are also very hard to procure at the moment due to the massive increase in demand. However, a simple workaround to the shortage in supply chain is to switch to rubber bands.

Caution: Most hospitals are non-latex zones and we do not wish anyone to go into anaphylactic shock over several headbands in the room. Although this risk it quiet low, the higher risk is with the care provider with a latex allergy.

Again, office supply is ahead of you in this department. One material for considerations is EPDM (ethylene propylene diene monomer) rubber, which happens to be both UV safe and non-latex.

Waste considerations:


In most cases, care providers will likely choose to toss the rubber bands after shift rather than sterilize. However, for the foreseeable future we need reduce waste of PPE. Already most hospitals are recycling equipment by sterilizing with alcohol before and after use, and then placing the devices in paper bags for 5-7 days before they are reused. This protocol is not exactly what should be done, but it is what we are doing while there are no additional solutions.

For this reason, we did not choose to add foam for comfort to the design. The headband will likely end up being submersed in a chlorine-water solution or alcohol after shift. And if the face plastic is detachable, it can be cleaned properly with alcohol. Foam simply adds a layer where potential contaminates may live, in addition to comfort. If you are using foam in the design, we recommend single side adhesive so that it may be disposed after use, rather than glue.


Our Design Choice:



Construction:




Cost:


We estimate the cost at about $1.75 per shield.
  • 1 kg roll of PLA can make about 33 headbands.. which is about $1.30 in plastic. 
  • 50 packet of acetate is about $10-12.. which is about 20-25 cents a sheet. 
  • EPDM rubber bands are about 5-10 cents in small bulk.


The Build



3-hole 14mm Prusa remix

After printing the 3D headbands, we used a standard hole punch. Many of the first designs had 4-6 holes. We recommend buying an adjustable 2-7 hole paper punch. This will allow the most flexibility in punching holes in acetate stock.

There is a recommended process which involves wearing rubber gloves, sterilizing the print bed, and also using a respiration mask while packaging and removing printed parts. These should be followed. What is most important is to sterilize the part with alcohol (as this does nothing to PLA), pretend you have Covid-19 and store the part for at least 3-days in separate containers to reduce transmission risks. The hospital we are working with does this before use and after use during recycling PPE as part of their protocol.

Additionally we have outsourced the hole punching to the hospitals, which is why we recommend a 3-hole design for attaching the clear film to the headband. This allows hospital staff to sterilize before use as well as follow appropriate protocol in a clean environment. For this reason we do not recommend 4-6 hole designs unless you also intend to calibrate the spacing of the hole punches and provide hole punches separately to the hospitals in need.



The Results


While our impact is limited. We are helping and recruiting others with 3D printers.

Today, our first shipment of 60 units was delivered to Contra Costa Regional Medical Center (CCRMC) in Martinez, California! This county hospital has a very large catchment zone from Richmond to Antioch. There are also 500+ employees in need of proper shielding, not just the ER staff. 

Additionally, staff are expected to grow as Gavin Newsom's creation of California Health Corps will pull retirees and medical students into the workforce to combat Covid-19. CCRMC has had a standing purchase order for over a month to buy 5000 shields. This order has not been filled, and we do not expect that it will be filled.

The members of IDEO GoFundMe group have donated 100 face shields to CCRMC after I reached out to them, and they are promising an additional 200+ more. Meanwhile, Mayfair Plastics in Michigan has created a single cavity injection mold based roughly on the Prusa design and they have promised us 1000 units soon. Also we have a verbal promise of 500 units from The Port Workspaces in Oakland who are building an NYU open-face shield design using clear PETG and laser cutters. And another 140 are coming from MakerNexus. In addition, we are also working on procuring and additional 1000 from Fictiv in SF.

Currently our main focus is on supplying CCRMC, however, we have also reached out to GetUsPPE.org who is coordinating efforts nationally for supplying PPE to facilities in need.

Friday, January 3, 2020

Wall-E project (body continued)

Just a quick post about the body. Prior to Christmas I finished the head and even added servo mounts for the eyebrows. Here’s the basic look and feel. 





Wednesday, October 30, 2019

Wall-E project (body CAD second step)

Since my last post I've been CAD-ing my way through the body of our Wall-E project. I am quite pleased with the amount of progress I've been able to make in the after-hours of the evening.. despite work, side-work, kid-work, and my role as full-time musician and maid.

In any event.. There are several things I 'fixed' in my model - including separating the parts to be printed by color, so that I have to do less painting. And I also thought through the screw mounts a bit more in detail. I feel my design will be stronger.

Also, the Neck mount has room for three 626zz bearings, with M6 screws as axels. I will also be hollowing the inside of the Neck mount for better cable management. I was not happy with the way this was handled in the inspirational model.. and also, some portions of that model just were not as they are in the movie - so, naturally I had to fix those pieces.

Rear Right Upper View:

 Front Right Upper View:
Front View with door and electronics panel hidden:
The only thing I'm really not pleased with are the proportions of the electronics panel in the front view. I had to mount the 1.8" LCD sideways, because it would not fit?! Due to the PCB mounts being larger than the actual panel itself.. so, I scaled the recessed vent holes on the right side to about 35% while the LCD is 65%. Of course, if you look at screen shots from the movie, it's actually 50/50.. but oh well. We can't make everything perfect..

I suppose I could scale the entire body by 20-30mm.. but there are a ton of extrusion operations to fix if I do that change.. and I'm just not THAT motivated. Maybe in version 2 I keep thinking.. (?) - when I have to scale the body anyway to fit retractable wheels, anyway.

Or who knows.. I may get the motivation pretty soon.. even thought there are lot of sketches to change to propagate +20mm into the height of that panel. It's a pain to think about.. but I probably could knock it out in a few hours if I really wanted to, as most of the extrusions are referencing other faces or vertices rather than hard measurements.

So, more to come..

Sunday, October 13, 2019

Wall-E project (chassis, first step)

It is all but redundant to say that's I've been busy on embedded projects. Alas, I somehow find time to build a robot?!

My son and I are really excited about our next robot project. We are building a mini Wall-E. I started with an engineering student from Ireland's Wall-E on Thingiverse. However, there were several issues with this design, that make it more of a re-design project.

  1. I did not have the motors v1 author (Simon B. @chillibasket) used.. both because the ones he used were sourced in UK and because I have other ones I can source which are similar size.
  2. Since the robot is a smaller sized robot (unlike Beast), I have to use reduced size 60 RPM motors.. even though I have some 200 RPM motors - but there is only 5mm of play between the motors, if I use those. Also, these cheaper motors do not have an encoder, and that's an issue for me! Because, obviously I need an autonomous Wall-E eventually..
  3. @chillibasket printed his axels, which are not very strong and make a LOT of noise.. so, I wanted to add 626zz bearings and use an M6 screw for my axel for strength and something that does not sound like a mill wheel.
  4. Later, I will need to redesign the head exclusively to add a StereoPi for the eyes. Nevermind the variable baseline between the cameras.. I'll address that later.
  5. The gripper in the v1 design does not actuate, again.. later.
  6. The wheels cannot retract into the body so that he folds into a box. I have a plan for this, but it will likely get addressed in my re-redesign.. but I'm thinking about it.

Further thoughts about retracting wheels: I already purchased some worm gear motors with encoders for this. However, I just want to get something working first! Then I can think about more complicated design features like navigation, mapping and localization and retractable wheels. I already did some rough measurements and I would need to think through a lot of other things like a 2-axis gantry mount, and where the heck the electronics would fit in the re-redesign.. possibly and false wall? It's much more complicated and the body would likely need to bigger to accommodate the mechanics and electronics.

So.. I gave up on my Luzbot 3D printer.. 3mm filament is temperamental. It breaks a lot, much more fragile over time than 1.75mm filament.. and I also got supoer spoiled while contracting for a company with a lot of Makerbot printers for several months. They are the most user friendly printer I have used yet. I also acquired a prefect condition (30 print-hours old) Makerbot Rep2 for free.. and a second one with a rebuilt gantry a similarly low print-hours for a few hundred dollars. So, I moved the Luzbot to a storage/practice space, and I have started running my new printers 24hrs a day!

So, 320 parts later..

The initial track prints had issues. I mistakenly printed with support for the overhang, which left a blemish in the underside. Over time the tracks started to curl up as the pins where inserted. After I revisited the print, I found the mistake, and reprinted 50 parts.. The final track is flat now, and it worked great. The 626zz bearing are a huge improvement. I also added wheel covers, and used M6 1.5mm washers as spacers (rather than printing them). However, I did not account for this in the CAD and this forced me to go back and reduce the tread gear teeth by 1mm so that I did not get binding as the track moves (which as also stopping to motor from turning). Now we have functionally wheels.

I chose some cheap Nextron 60 RPM motors from Amazon. But since they did not have encoders, I also order some shaft mount hall-effect encoders as well. Alas, they also needed a mount.. so after disassembling one of the motors to make sure it would work and that I had enough room.. and a couple caliper measurements later.. I had to print the encoder mount for the motor I used. I have not had to revisit this part. After final assembly I noticed different speeds for each tread, but this seems to because of different torques on the main shaft axel screw. So, loosing one side or tightening the other side works for now. Obviously I might have to revisit this part of the design later, if I extremely worried about drift. In my experience the wheel slip is either huge or non-existent depending on the chassis design.. in this case, I it is going to a lot of slip, I'm sure.

Lastly, I had to redesign the motor mount for a couple reasons. The first is that I soldered 90° angled 10mil pins into the encoder breakout, and I needed relief for this on the motor enclosure side. I also made the enclosure fit a lot better. I added width, so it straps together with M3x30mm screws. And in the previous design there was only one M3x6mm into the motor mount.. which I feel is way too few obviously, so I added four more for a total of five mount screws. Basically, it is not going anywhere. Additionally, I added an M3x4mm set screw into the shaft gear, because the pressure fit in the previous design rips right through with enough motor torque. Theres also an additional 4mm of pressure fit with the set screw, and the new design works a little better.

Here is the final assembly, with the wheel caps added. I purchased some M3 2mm, 2.5mm and 5mm bits for my Dewalt. There are about 200 screws in the chassis along with the 300 parts. Phew, this is not even the complicated part yet..

Then, I started the body. And, Wall-e hit a wall. I reached the build volume limit of my Makerbot with the bottom plate. It does not fit vertically or horizontally. I have access to larger printers, via friends.. but really I do want to try to build it entirely on the Rep2's. So, I had to split the part into two prints, which I think will be okay. I put the split on an off-center portion of the motor mounts, and I think there will be enough rigidity from the remaining screws the side mount screws.


Here are the resulting split bottom plate assembly after super glued and bolted. It is actually much stronger than I thought it would be. It also helps that I did not line up the spit seam with the seam on the motor mounts. It seems rigid enough for the robots goals.




Wednesday, September 16, 2015

Lidar - motor mount added

Since I have been really busy working on other embedded projects, it has been a little difficult for me to finish up the lingering project over the last few weeks. However, I was able to finally had the motor mount, additional pulley and improve the inner fasteners.


The full stand is about 4.5" high and about 5-6" wide. It is still reasonably sized. Mounting it on a robot should be the interesting part. I am still playing with the optical interrupt triggers. Maybe I will get more time soon...


Tuesday, August 25, 2015

stereo_cyclops cad posted...

I just added the cad model to the jetbot repository. Obviously, if you are an onshape user, you can copy the entire workspace and edit the model at your heart's content.


Search for 'stereo-camera-case' to find the model. 3D prints away!


Sunday, August 16, 2015

stereo_cyclops released...

I posted stereo_cyclops, in the spirt of hacking, for all makers and the open source robotics community.

github.com/hhony/jetbot

It is a jetson compatible repo, for building a stereo camera, nickname: stereo_cyclops.


Sunday, August 2, 2015

Lidar - full redesign

After the first prototype print, I found several mechanical issues which could have been avoided had I taken the time to rethink the placement solution. I redesigned the quadrature encoder wheel to be something closer to what a shaft encoder (in principle) would do. 

I have also considered using an absolute encoder and gear ratios. I know that I have less to worry about in regards to 'belt slip' with the use of a timing pulley. However, I am always concerned about the wear and tear causing slip than anything else. The most common mistake when building a timing pulley system is tightening the belt too tight. This will eventually deteriorate the belt and slip will be introduced before belt breakage occurs.

Obviously the best redesign of the entire solution (if I were not already committed to using off-the-shelf components) would be to redesign the slip-ring itself... I have considered this task, several times already. 



The main issue I have against redesigning the slip-ring is that: 

  1. I would not be using off-the-shelf components which would be easily source-able for anyone else to build one of these. And... 
  2. I have been down this road before on another robot. Designing a slip-ring can become hard to manufacture... but I might take another stab at it eventually (with all my lessons learned up front).



I oriented the optical interrupters to be above each other. Overall I think the height increased by 5mm or so in Z... it's not a bad trade off since the horizontal is about 9mm shorter in X now. I also drastically increased the wire feed hole through the lidar case mount - through the top). Unfortunately it is not visible from the above view.



I also added zero-ing text so it is easier to explain the quadrature encoding to others. I had so many people ask me where zero was, I decided to just make it visible for all to see, rather than searching the entire part for the misaligned holes.



So, now I feel the quadrature encoding is much more clear for others from the above picture.

Wednesday, July 22, 2015

Lidar - printing design without support material

For having zero mechanical degree, I can't really complain with the utility at which I've applied my art degree from a former career. There is a certain part of the manufacturing process which relies on general aesthetics and functionality in order to design something that looks like it will work. 

I have separated the spinning assembly into 5 components now. And the fact that I don't even have to use support material anymore means that the prints are looking great. 



Shortly after my last post I redesigned every piece of the top assembly to print on a flat surface. I have a strange attraction to components with tabs... there's something surprisingly satisfying about your 3D printed part just snapping together just moments after it is off the print bed.



The encoder wheel has a groove in the bottom with a few mounting tab slots (above in green color). The encoder ring that isolates the two optical detectors, just slides right into the bottom of the part. It will need a few small epoxy beads on the above tab insides. And the rest is smooth printing all around.



Next tasks:

  • Design motor mount
  • Design motor shaft coupling pulley
  • Modify existing lidar base to accomodate motor mount
  • Print and start coding

Tuesday, July 21, 2015

Lidar - mount threaded...

Redesign of the encoder wheel needed to happen today. I did fit the parts and I'm quite proud of how it is turning out. 



The mounted pulley is flush just like the CAD. However, I found an issue with the support material because my second pass on the design just wasn't good enough for manufacturability. I need really flat surfaces from the raft on the encoder to improve the overall print quality.


I have separated the pulley pins into threaded rods, and I am using them to the mount the lidar on top of the pulley as well. 


The isolation ring on the bottom has become it's own slip in part. I will likely have to epoxy it into the channel for now. This will provide prints with zero support material for the encoder wheel - and this should reduce the noise on the sensor by quite a lot. I may add snap tabs (like I already did for the lidar mount).


The top of the pulley also has the three snap tabs. I am quite please with how these turned out. They snap right into to the lidar mount and the fit is pretty snug. I seem to have sized it very closely.


Friday, July 17, 2015

Lidar - 1st pass, and improvements

The print came out great, for such a complicated shape. Part of this exercise is to push the limits of the printer, and the other part of this exercise is to design it better for printing based on what is discovered in the process.


Problem spots which were noted at time of beginning to print:
  1. The mask for the encoder emitter detector sensor makes printing this structure with the modern support structures almost impossible because of the density of small features in the model. The durability of the mask is compromised by the proximity to support material.
  2. The manufacturability of this object is much lower than it could be. The issue is that the assembly is not that modular for repairing the unavoidable wear and tear on a spinning part.
Ways to improve design:


  • Create large printable planes and minimize support material needed to improve structural integrity of part. The easiest way to to this is raise the interior of the top of the encoder wheel.



  • Separating the gear component into its own part will ease repair of the component by adding accessibility. Likely, I will take this idea further and replace the the plastic pins with bores for some pins. And these pins will be threaded from either side of the pulley bores by a threaded inset. The pins will sandwich the pulley and the encoder between the laser mount bracket and the slipring.



Lessons learned should never be passed over too quickly:

From experience, while working on robots from the field for a few years... The repair of the robot is unavoidable, just as your car will not run forever without maintenance. Making that repair process easier or more difficult - is up to the designer and the manufacturer.


Note, I needed to add some relief into the bottom of the encoder sensor cover. This also looks much easier to assemble. The previous concern was for upward light into the detector, but the new shelf adds the needed emitter/detector isolation.




Future improvements:
  • threaded pins inserts 
  • bore holes through pulley with threaded inset mates for pins 
  • add cable management into the base and encoder cap

Wednesday, July 8, 2015

Lidar - Increased Resolution

Originally, I had designed the encoder every 4 degrees, meaning that the overlapping encoder tick on the inside track would trigger every 2 degrees. I doubled the number of holes and halved the ~4mm to ~2mm.




Since the sensor is only about 1mm wide, I think this will work as the lidar will likely not be spinning more than a few Hertz. I am planning on running this on an ARM and I do not know what the pulse/interrupt rate looks like yet for the optical interrupter.



I think that increasing the resolution to 1 degree per encoding seems like a good idea. Luckily if it doesn't work out, changing the model is really simple - since it's just a few constraints on a circular pattern to tweak the model.



Monday, July 6, 2015

Lidar Rethinking...

I could hear the voice of the Camp Peavy in the back of my mind, as I was finishing up the assembly, saying, "You're doin' it all wrong!" I thought I would get clever and put the pulley teeth on the bottom... but this has it's own issues.



And Camp would have been correct too. I thought I was basically assembling the part upside down... turns out I wasn't but now I need to hybrid the two ideas. The problem with the pulley teeth on the bottom is that the encoder is too high and interferes with the sender/receiver.




Clearly I was on the right track the first time. All I really needed to do was lower the slip ring under the gear (as I did in the first time I heard Camp's voice in my head). The second time I heard "you're doin' it all wrong!" was because I missed the measurement on the optical interrupter cover.

Oh well... As Marvin the Martian says, "well... back to the drawing board." Hey, it's Monday, so my notion that I would be 3D printing today - was not an incorrect assumption!

Saturday, July 4, 2015

Lidar Encoder Pulley

Showing off the encoder pulley I just modeled. I've still got some sizing estimates to deal with, but it's getting pretty close. There's probably not enough clearance on the inside still for wiring, screw mount and top of arm enclosure.



I need to build the design the lower mount and encoder sensor arm. I decided to go with the standard H21A1, just like how some older smoke alarms work. I added a channel to mask the led and sensor of the other optical interrupter.

Lidar, revisited...

Pulsed Light has been selling a fairly low-cost, long range lidar. I just got around to doing something with the one in the mail today. I also got a 6-wire slip ring... uhh huh... that's right.



What did you think was going to happen? I mean, it's just begging to spin...




So, I picked 100XL timing belt, since it's stock in 1/4" width.




And the Lidar mount was quite possibly the most cumbersome thing to design since airplane parts in a past life.





I think it should work just fine... I'll start 3D printing before Monday, likely.