Grasshopper - Parametric Wrist Brace - Sport & Impact Protection
by connelltrainor in Workshop > 3D Printing
1165 Views, 8 Favorites, 0 Comments
Grasshopper - Parametric Wrist Brace - Sport & Impact Protection
This is my 'at home' project to experiment with the design and fabrication of custom personal impact protection equipment for the wrist and hand. This project aims to create a parametric design system solely using Grasshopper, into which a user can input hand scans and produces a 3D printable wrist brace. I want to explore how is best to deal with 3D meshes whilst creating a strong but lightweight design, and also investigate designs for the best way to print that also allows user to take on and off.
These are the simplified stages of this iterative design process:
- Simple Test Brace
- Hand Canvas
- Smoothing Hand Canvas
- Removing Small Circles
- Boundary Curve Modifications
- Thumb Hole
- Back Cutout
- Solid Palm Pad
- Voronoi
- Leveling Base
- Cutting the Back Off
- Strap Cut-outs
- Bake & Boolean Union
- Printing
Supplies
Update: For all those reaching out to me, I am happy to supply my final Grasshopper file/files for guidance purposes. Please send me an email and I will let you know what plugins are required.
Note: The files are relatively slow on a laptop. I am in the process of updating the steps taken with simplified Grasshopper flows for efficiency.
Research & Motivation
I have snowboarded all my life and suffered from multiple wrist injuries and fractures, and worn/purchased expensive and uncomfortable wrist braces. I believe the scope of digital fabrication and 3D printing has the potential to improve the overall user experience of the conventional wrist brace for any sport/activity by making them more comfortable, lightweight and cheaper.
Simple Test Brace 1
Before I create my own parametric wrist brace in grasshopper, I decided to do a simple test run, create the most simple brace possible, print it out and then see what I can learn from the results before I begin the final product.
For this first experimentation attempt to create the most simple wrist brace possible I found a generic grasshopper file online that creates the outline curves seen above. I then used a FitLoft to turn those curves into a hand/wrist shape I can use as a canvas for developing the brace.
Simple Test Brace 2 - Voronoi
I then used a brep to Voronoi tool block from online to create a simple 3D geometry with a Voronoi pattern from a surface. I used Voronoi here as an experiment so that I could see if this is the type of design I would like to use and whether it has appropriate properties (such as strength) for a real brace.
Simple Test Brace 3 - Thumb Hole
In order to create a hole in the brace for my thumb to come out from, I started by creating a cylinder and capped it. The size of the cylinder was made bigger than that of my thumb to allow space for it,
Simple Test Brace 4 - Cutout
I cut the hole directly out of the Voronoi by finding the difference between the 2 geometries.
Simple Test Brace 5 - Analytics
There were a few obvious problems with this very rudimentary first attempt at a brace. Firstly, there were clearly areas that had geometries that are far too thin for both printing and being a strong reinforcement. Secondly, where I had cut out the hole for the thumb, the areas were jagged and sharp. In the future, I should cut the thumb hole from the surface before adding the 3D Voronoi.
The last thing I found here is that working with meshes was not optimal. I should try and keep my cast as a brep/polysurface as rhino/grasshopper is not optimised for meshes and this mesh was incredible slow on my laptop.
Simple Test Brace 6 - Printing
For this first time printing, I cut the back off the brace for better analytics of the brace once printed, such as being able to look inside and see where it fits well and badly
Simple Test Brace 7 - Printing 2
During my peer review meeting, Alex raised the point that printing the brace may have some associated challenges. I had planned to print the brace vertically as seen above, however, I wanted to check if the brace could be printed in this orientation and to determine what other considerations and challenges may arise.
Simple Test Brace 8
Hand Canvas 1 - Importing Hand Scan
I am initially starting with 3D scan my friend recently took of his left hand. I imported this into Rhino as a .STL, and then into Grasshopper using a mesh block.
We compared hands and have very similar sized hands so this scan should work initially until I can get access to a 3D scanner to take a more accurate STL scan of my own hand.
Hand Canvas 2 - Boundary Curves
I now need to trim the hand to make up the basis of a blank canvas that I will use to model the brace around. To do this is firstly removed the fingers as I do not want the brace to cover these. I drew lines in XZ plane with the goal of extruding them to cut off parts of the hand I don't want to work with in the future.
Hand Canvas 3
I extruded this curves in the Y direction to intersect the hand model scan.
Hand Canvas 4
Using the MeshSplit function in grasshopper I was able to separate the hand into different parts. The fingers (index 0) and the palm (index 1), the part which I want to work with).
Hand Canvas 5
I offset the whole mesh by 0.65. This value will be changed in the future, but this is the number that will control how much space or how tight the user wants the brace.
Smoothing Hand Canvas 1
Here, my next concern was to move away from using a mesh. I don't want to work with meshes whilst doing the parametric manipulation. I want it to be a poly surface as I found in 'Simple Brace 6 - Analysis' that a mesh is harder to work with and was slowing down my computer. Hence I used the Mesh 2 PolySurface block, and you can see the results above.
I firstly see that the output polysurfaces need to be smoothed. Similarly, from looking at my simple hand brace in 'Simple Brace 6 - Analysis' I see that the jagged edges I used in the hand canvas created problems with sharp edges and corners that are not ergonomic and are difficult to print. In order to make a smooth canvas for an effective and ergonomic brace, I need to turn this canvas into a smooth surface. Based on my research, I found an effective method of doing this by making up the canvas as a sequence of circles. It starts by converting my mesh from the previous step to a surface in order to make modifications. I used the Mesh2PolySurface block.
Smoothing Hand Canvas 2
I found a some grasshopper examples of making up a shape of circles by projecting an equally spaced sequence of lines onto the model. I started by creating this sequence between the original boundary curves for the wrist and fingers. In grasshopper I then project these lines onto the polysurface.
Smoothing Hand Canvas 3
Taking in points of intersection between the hand Canvas surface and the projected curves, you can see the result above. These open curves need to be closed in order to form the smooth sequence of circular closed curves I desire.
Smoothing Hand Canvas 4
I 'closed' the curves using a Close Curve block. This has the option to include a bulge. This is going to be a key variable for the design of the brace as it determines how much of the thumb area the brace will cover. Since this area is a key area to protect it would be good for the brace to extend over the palm area at the base of the thumb.
Smoothing Hand Canvas 5
I realised that during the 'Hand Canvas 6' stage, the top and bottom edges of the mesh were not turned into curves since the Tween Two Curve doesn't allow me to include these bounding curves.
Smoothing Hand Canvas 6
When increasing the 'bulge' in order to cover the palm, I noticed some associated issues. There is this problem seen here with a tiny circle forming on the bulge. This will cause complications when lofting these circles into a smooth brace.
Removing Small Circles 1
I attempted to use the 'Divide Curve' and then Interpolate the result to try and remove the small circle above the thumb. As seen above, this did not work. However, I liked the resulting interpolated result as it gave a smoother wider fitting canvas for the palm of the hand which I think could improve comfort in the future brace.
Removing Small Circles 2
I had the idea to take the average point for each circle on individual z-axis levels and compare this to the far left point on each circle. Since the average point for the tiny circle is less (in the x-direction), it can be singled out and removed.
Removing Small Circles 3
In order to find the most left point of each circle in the sequence, I started by drawing a line that hits the most left point (smallest point on the x-axis) for each circle.
Removing Small Circles 4
By extruding this into the x-direction, so that it cuts the circles, I identified the key points on each circle for comparison.
Removing Small Circles 5
By dividing the curves into 50 points, I used the Average function to find the 3D central location of each circle.
Removing Small Circles 6
By deconstructing both the sequence of average points and the far left points to their x-components, I compared their x locations using the LargerThan block.
Removing Small Circles 7
I then sorted the points greater than (that I want to keep), and use this register to remove the small circle that wasn't larger.
Boundary Curve Modifications
After lofting the curves from the previous step I realise that there were some unpredictable overhangs that would make the design both difficult to print and uncomfortable to wear. Hence I went back and edited both the thumb bulge and the original boundary curves. The result is a much more smooth flowing loft.
I started using the shape of the boundary curve to produce the amount of thumb pad included in the hand canvas rather than the bulge. This gives me more flexibility to increase the lower portion of the thumb at the base of the hand, and remove the area above the thumb so that it has maximum mobility whilst being protected.
Thumb Hole 1
I wanted to create the thumb hole in the hand canvas, before creating the brace and using the voronoi. Previously in the 'Simple Brace 4 - Cutout' stage above, cutting the hole in the Voronoi pattern led to jagged and sharp edges. Using a similar technique as used previously for cutting the lofted surface, I firstly drew a curve in Rhino on the x-axis which would intersect the surface in a way that it would cut out a good thumb hole. I extruded this curve into the y-direction to slice a good thumb hole.
Thumb Hole 2
By splitting the surface using this extruded panel I was left with two pieces. Only the large piece (above in green) is needed to create the brace. I edited the original thumb curve to preference, in order to cut a thumb hole that looked good.
Thumb Hole 3
This hand canvas is done and represents the template shape to build the brace around. I will now look into creating a one-piece design for the brace.
Back Cutout 1
I wanted to create a back cut-out, which would leave the back of the brace open. From my previous print of the simple brace with its back cut off, I learned that this feature would allow the user to put the brace on and off with more ease. The back of the wrist does not need much protection. Velcro straps will go over this empty space to hold the brace on the user's hand.
In order to create the back cut-out, I used the similar method as above with the thumb cut-out. I drew a slicing curve in the Y plane that would nicely intersect the back of the canvas.
Back Cutout 2
I extrude the curve in the X direction to intersect the canvas.
Back Cutout 3
I split the surface using the extruded curve leaving the canvas with the back cut off. I edited the back curve to create a good looking cut out on the back of the canvas.
Solid Palm Pad 1
My vision for this brace is to have a solid (rigid) pad which extends from the front of the wrist across the palm of the hand. This is the area that requires the most protection and rigidity in the event of a fall. Around this brace the supporting structure will be less rigid and will be more conservative with weight and comfortability.
In order to create a solid palm pad I decided to split the hand canvas into 2 parts. Above you can see I drew a curve on the top view of the canvas.
Solid Palm Pad 2
By extruding this curve down (and editing the shape and position of the curve) I optimised the shape of the pad by looking at the area on each side of the extruded curve.
Solid Palm Pad 3
Above you can see the palm pad that I settled on and cut-out from the hand canvas.
Solid Palm Pad 4
Initially, here, I extrude this cutout in the Y direction. This gives the solid geometry that once printed will sit against he users palm for protection.
Voronoi 1
Following on from the palm pad above, it is time to create the supporting structure that will surround the hand and hold the rig palm pad in place. For this area, I am once again trying to use Voronoi since this gives a good balance for strength and rigidity whilst being light weight, comfortable, and aesthetically pleasing.
Voronoi 2
This green area to be turned into Voronoi whilst the front palm pad remains solid.
Voronoi 3
There are many tutorials on how to turn a surface (like the green one seen in the previous stage) into a Voronoi geometry. Here I used the PopGeo function to populate the geometry with random spaced points. Using the Grasshopper Voronoi and PLine tools, I was able to create the Voronoi mesh seen above.
Voronoi 4
using the weaverbird (wb) toolkit I was able to join up the Voronoi mesh can convert it into a brep.
Voronoi 5
Voronoi 6
I immediately notice a few problems with this stage of the Voronoi. Firstly, there were obviously parts of the brep that were too thin. Not only would they cause difficulties when printing, they may also have a negative impact on the structural integrity of the brace. By adding the front palm pad back in, I aimed to check if this might help correct/reinforce these thin areas.
Voronoi 7
Currently, the rigid palm pad is extruded in the Y direction as seen in stage: 'Solid Palm Pad 4'. However, I realised that this wouldn't make the pad flush with the Voronoi since this is extruded in the normal direction to the surface.
Solid Palm Pad 5
I instead, aimed to edit the previous extrusion for the solid palm pad by extruding it in the direction normal to its surface, rather than in the Y direction. This gave a better fit but still was no connecting well to the Voronoi.
Voronoi 8
This Voronoi design seen in the previous stage, does not match my vision for this brace. I was hoping to get an extruded surface with holes cut-out as seen above, rather than this smooth tree-like formation. Also, as seen in the previous step, the palm pad is still not flush with the exterior Voronoi structure. I think a more square extrusion design will improve this. The current smooth branches do not touch the pad at all sides, therefor both boolean union and printing are unlikely to be successful.
Voronoi 9
I researched a better way to create the Voronoi I desired, which involves projecting my wrist shaped surface (the hand canvas) onto the flat XY plane before adding the pattern.
Voronoi 10
Using the PopGeo block once again I populate the projected surface with points and use the Voronoi block to create a series of holes.
Voronoi 11
Following a method used in many online Voronoi tutorials I created a surface using the previous Voronoi curves.
Voronoi 12
I extrude the surface in the Y direction whilst also extruding the hole areas so they are not. present in the final brep.
Voronoi 13
I used the SurfaceMorph block to correct the protected surface to fit around the hand canvas once again, now including the Voronoi holes.
Voronoi 14
This gives the final Voronoi structure for the exterior of the brace. I now go back and investigate a good way to add back in the solid palm pad.
Bake & Boolean Union 1
I added the palm pad back in, which is now a good fit since it is extruded in the direction normal to its surface. This matches the process used in the Voronoi (extrude in Z direction and map to the surface). This helps create a solid palm pad that is flush and well fitted to the Voronoi exterior.
Bake & Boolean Union 2
However, upon trying to complete a Boolean Union, I realised it was not working. Whilst the palm pad looks good and is also flush with the Voronoi exterior, it has not got a constant connection between the connecting surfaces as seen by the gaps above. I attempted to scale the pad so that there was a good overlap for the boolean union to work, however, this was unsuccessful and ruined the flush aesthetic of the pad.
Voronoi 15
I attempted a backup plan which involved not cutting out the pad in the original Voronoi section, and just adding the pad inside this geometry as seen above.
Solid Palm Pad 6
I made the solid palm pad slightly thinner than the outside extrusion so it fits within the geometry of the exterior Voronoi. This should still help to re-enforce the area without affecting the ergonomics of the brace.
One-Piece Design
At this point, Grasshopper is very slow, and my laptop cannot handle it. Any changes take >5 minutes to load/implement.
Bake & Boolean Union 3
The brace can now be successfully joined together into a single object using a Boolean Union in Rhino.
Printing 2
When I moved into the printing stage I noticed something strange occurring in the Cura slicing process. I wanted to use a brim as I did before with the printing of the first simple brace since this seemed effective at supporting the brace whilst it is printed vertically.
Since the brim doesn't work as expected, as seen above, it suggested to me that the base of the brace isn't level.
Leveling Base
I levelled the base by cutting a 1mm square from the bottom edge of the brace. The base is now level and the brim works as expected.
Printing 3
The brace printed well first time.
Printing 4
Upon inspection of this printed brace, I found that leaving a part of the back not cut out made the brace far more rigid. While this might be a positive aspect with regard to the strength of the brace, it needs more flexibility to put on and off, as well as to 'mould'/better fit the user's hand. In the next iteration of the brace, I want to test having the whole back edge cut out as you will see below.
Cutting the Back Off 1
Since my grasshopper file was too slow to continue using, I had to do the following edits to the brace directly in Rhino. I drew a curve in the XZ plane that I could then use the MakeHole function to cut into the baked brace to remove the remaining section of the back cut-out.
Cutting the Back Off 2
Strap Cut-outs
I needed an effective location to add two velcro straps to the brace to hold it on and to add tightness so that it fits better around the wrist. Using the same method as above I drew curves and used the MakeHole function to extrude and remove these grooves seen above. I added the groves to the sides of the holes already there from the Voronoi, however, I did not like this aesthetic. Hence I decided to add a feature that was purposeful there to hold the velcro straps.
Strap Cut-Outs 2
I drew 4 identical panels on either side of the back cut-out.
Strap Cut-Outs 3
I used a new grasshopper file to extrude these panels into the hand canvas in order to get 4 well positioned panels within the brace geometry.
Strap Cut-Outs 4
Using the same method as previously used for the solid palm pad, I created the 4 panels by splitting the canvas and extruding the 4 sections.
Strap Cut-Outs 5
I now added this new grasshopper file into the old (slow) file.
Strap Cut-Outs 6
Using a boolean union I join the new strap panels to the brace.
Strap Cut-Outs 7
I drew central holes for the velcro straps in each panel and cut out the holes using the MakeHole function and extruding the curves in the Y direction within Rhino.
Final Result
Final Result 2
Printing 5
I printed the brace once more. This time I made the brace slightly thinner (3mm) using a slider in grasshopper which controls all extrusions. I did this because I wanted the brace to be slightly more lightweight and flexible.
Printing 6
Printing 7
Final Result 3
Development 1
During my class review, it was a suggested improvement that I could trim the solid inner panel along the inside wrist so that it matches the profile of the Voronoi holes. This is seen above in red. Upon attempting this I quickly realised that I quite like this feature and think it improves the aesthetics of the design. I think being able to see the whole solid palm pad and its outline is a cool design feature.
Future Development Ideas
These are a list of developments i plan to implement in the future, but haven't had time to complete before the end of the quarter:
- I am waiting on the straps to be delivered. These 2 straps will be added to the back strap cut-outs.
- I will investigate creating a 2 piece design. Splitting the design into a front and back piece might allow the user an easier way to put the brace on and off whilst retaining maximum rigidity in the brace.
- I plan to get and use a better hand scan. I will hopefully use professional hand scanning equipment to get a better/ more detailed scan of my own hand.
- I hope to explore and print more braces using a more flexible material. During my peer review, it was suggested I should attempt to use something like a TPA filament which can be more flexible and forgiving for use with human-centred design.
- I plan to extend the scope of this project and attempt to use generative design in Fusion360 to optimise the design to withstand directional loads
- During my class review it was suggested that I could 'vary the scale of the subdivisions within the overall Voronoi structure depending on where it falls along the arm'. This would be a very effective improvement in the future since it would allow me to add strength to those areas where it is needed by having a very condensed geometry. Similarly, where comfort is more important and strength is not as necessary I could have less material and more Voronoi holes.
- Upon peer review with Ashley, they suggested that I could use the power of the Parakeet Grasshopper plugin to create a cool/strong pattern for the external wrist support that might be an improvement on my Voronoi Pattern. It may also allow me to add more condensed material in sections as suggested above.