Open Source 3D-Printable Planetary Roller Screw for Food Processing Applications

: Historically, open source agriculture (OSA) was based on grassroots technology generally manufactured by hand tools or with manual machining. The rise of distributed digital manufacturing provides an opportunity for much more rapid lateral scaling of open source appropriate technologies for agriculture. However, the most mature distributed manufacturing area is plastic, which has limited use for many OSA applications. To overcome this limitation with design, this study reports on of a completely 3D-printable planetary roller screw linear actuator. The device is designed as a parametric script-based computer aided design (CAD) package to allow for the easy adaption for a number of applications such as food processing at different scales. The planetary roller screw is fabricated in dishwasher-safe polyethylene terephthalate glycol (PETG) on an open source machine and tested using an open source testing platform to determine if it could maintain a constant load without slipping and the maximum force. Then, this output is compared to a direct screw press using the same materials. The results found that the maximum force is more than doubled for the roller screw actuator using the same materials, making them adequate for some food processing techniques. Future work is outlined to improve the performance and ease of assembly. The results are presented and discussed for food processing applications.


Introduction
Although much open source agriculture (OSA) was grassroots technology [1] born of necessity [2], it is emerging as a commons-based [3] peer production [4], and some have even argued that open source agriculture is becoming a social movement [1,5]. For example, the MIT Media Lab Open Agriculture Initiative (OpenAg) believes that the precursor to a sustainable food system will be the creation of an open-source ecosystem of technologies that enable and promote transparency, networked experimentation, education, and hyperlocal production [6]. This distributed farming system is based on communication, sensing, data collection, and sharing as well as automation to enable a network effect or the Internet of Food and the next agricultural revolution [7]. As the organizers of the Gathering for Open Agricultural Technology (GOAT) argue, "The technologies that produce our food and the data about our food system should be public, and enable control by the farms and farmers that produce it" [8]. OSA follows the same open source approach long established to be beneficial in sustainable development [9,10]. Specifically, open source appropriate technology (OSAT) [11] consists of technologies that provide for sustainable development while being designed in the same fashion as free and open source software [12][13][14][15]. The open source model functions on a gift culture [16], where everyone benefits from generous

Roller Screw Design
Here, the primary solution explored was the use of a planetary roller screw linear actuator. These actuators were originally designed by C.B. Strandgren in 1954 [61]. They are low-friction, high duty-cycle linear actuators that can deliver large amounts of power and torque with lower friction and in a relatively small package [61]. The construction of these actuators involves the use of an outer nut or shell with threading, coupled to a number of threaded rollers that transfer the rotational power from the nut to the linear motion of a central lead screw. Another way to approach their function would be to envision a planetary gear system that is extruded into screws rather than 2D gears. This design was adapted and used for this project.
There are three primary functional parameters to a planetary roller screw that define the major functional relationships between each element. These elements are listed in Table 1 with appropriate units for each. These three functional parameters in Table 1 define the functions of the entire planetary roller screw system and are used to define a number of other functional variables down the line. Most importantly, they define the gear ratios between the threaded units, which can be used to determine the performance of these actuators in a specific application. Equation (1) shows the resulting gear ratio between the outer nut and the central screw.
Note that the only major parameter that affects this ratio is the number of thread starts. It is also important to note that mathematically, these planetary screw systems cannot operate with less than 3 screw starts on the central screw. It will be shown later that although a minimum of 3 thread starts is possible, it is rather impractical for real-world use.
These functional parameters also define the major diameters of the other components in the system. Table 2 shows the relationship between the primary functional parameters and the major diameters of the other components: These parameters define the basic dimensions and mechanical requirements of the planetary roller screw. However, there are other values that need to be defined to completely constrain the design of the planetary roller screw shown in Table 3.

Bill of Materials (BOM) for 3D-Printed Parts
The BOM of the 3D-printed parts in shown in Table 4 for the roller screw assembly, and those for the test stand assembly are shown in Table 5. An alternate top retainer is also included in Table 4 for validation testing of a similar direct press screw mechanism. Full details of the design are shown in Appendix A.

Roller Screw Assembly
A fully 3D-printed and assembled roller screw assembly is shown in Figure 1. This example was 3D printed on an open source Prusa Mk3S in natural PLA at 0.2 mm layer height, but it is amenable to replication on any RepRap-class fused filament 3D printer. Complete source for the assembly can be found on Github at [62].

Roller Screw Testing and Validation
Testing was performed with the roller screw and modular testing assembly made up the test materials shown in Table 6. Although initial prototyping was done in PLA, which is the most common 3D-printed plastic, it is not dishwasher safe. PETG has a heat distortion temperature of 70 • C and vicant softening temperature of 85 • C. Most home dishwashers operate at about 49 • C, which enables PETG components (unlike PLA) to be cleaned in most home dishwashers even without annealing the 3D-printed part. Both the roller screw Technologies 2021, 9, 24 5 of 26 assembly and test rig assembly were printed with PETG using an open source Lulzbot TAZ6 3-D printer [63]. Default high-detail print settings were used in a TAZ6 3D printer with a layer height of 0.14 mm. All tests were run on PETG 3D-printed roller screws and testing rigs. An S-type load sensor was used to measure the force the screw was able to impart during actuation. Table 4. BOM of roller screw assembly.

Name Qty Image
Outer Nut 1 Timing Gear Height ℎ mm Linear height of the internal timing gears used on the nut and rollers.
Timing Gear Module Each The metric module of the timing gears. Larger values correspond to larger gear teeth. Has no effect on gear ratios. Timing Gear Helical Angle ° Angle of the gear teeth from purely vertical. Timing Gear Tooth Shape ℎ N/A Standard shape of gear teeth such as Convolute. Thread Standard ℎ N/A Thread standard used such as ACME Square or UTS. Roller Axle Length mm Linear length of the axles extending from the tops and bottoms of the rollers.

Bill of Materials (BOM) for 3D-Printed Parts
The BOM of the 3D-printed parts in shown in Table 4 for the roller screw assembly, and those for the test stand assembly are shown in Table 5. An alternate top retainer is also included in Table 4 for validation testing of a similar direct press screw mechanism. Timing Gear Module Each The metric module of the timing gears. Larger values correspond to larger gear teeth. Has no effect on gear ratios. Timing Gear Helical Angle ° Angle of the gear teeth from purely vertical. Timing Gear Tooth Shape ℎ N/A Standard shape of gear teeth such as Convolute. Thread Standard ℎ N/A Thread standard used such as ACME Square or UTS. Roller Axle Length mm Linear length of the axles extending from the tops and bottoms of the rollers.

Bill of Materials (BOM) for 3D-Printed Parts
The BOM of the 3D-printed parts in shown in Table 4 for the roller screw assembly, and those for the test stand assembly are shown in Table 5. An alternate top retainer is also included in Table 4 for validation testing of a similar direct press screw mechanism. Timing Gear Module Each teeth. Has no effect on gear ratios. Timing Gear Helical Angle ° Angle of the gear teeth from purely vertical. Timing Gear Tooth Shape ℎ N/A Standard shape of gear teeth such as Convolute. Thread Standard ℎ N/A Thread standard used such as ACME Square or UTS. Roller Axle Length mm Linear length of the axles extending from the tops and bottoms of the rollers.

Bill of Materials (BOM) for 3D-Printed Parts
The BOM of the 3D-printed parts in shown in Table 4 for the roller screw assembly, and those for the test stand assembly are shown in Table 5. An alternate top retainer is also included in Table 4 for validation testing of a similar direct press screw mechanism.

Roller Screw Assembly
A fully 3D-printed and assembled roller screw assembly is shown in Figure 1. This example was 3D printed on an open source Prusa Mk3S in natural PLA at 0.2 mm layer height, but it is amenable to replication on any RepRap-class fused filament 3D printer. Complete source for the assembly can be found on Github at [62].

Roller Screw Assembly
A fully 3D-printed and assembled roller screw assembly is shown in Figure 1. This example was 3D printed on an open source Prusa Mk3S in natural PLA at 0.2 mm layer height, but it is amenable to replication on any RepRap-class fused filament 3D printer. Complete source for the assembly can be found on Github at [62].

Roller Screw Assembly
A fully 3D-printed and assembled roller screw assembly is shown in Figure 1. This example was 3D printed on an open source Prusa Mk3S in natural PLA at 0.2 mm layer height, but it is amenable to replication on any RepRap-class fused filament 3D printer. Complete source for the assembly can be found on Github at [62]. The load sensor was assembled and calibrated prior to insertion into the test rig assembly. The load cell wires are soldered to the input side of the SparkFun HX711. The wire coloring on load cells is standardized. Connect pins on the other side of the amplifier to an Arduino. The entire wiring diagram be seen in Figure 2.
After connecting all components, then, Arduino was used to calibrate the load cell. The HX711 library was downloaded from the Arduino IDE library manager. The public domain "SparkFun_HX711_Calibration.ino" calibration code was available from the SparkFun website and can alsobe downloaded from the project github repository [62]. A 9.07 kg weight was placed on top of the load cell, and the calibration factor in the calibration code was adjusted until the output on the serial monitor matched the weight. Once the calibration was completed, the calibration factor was placed into the "run_scale.ino" code found in the same locations as the calibration code. The weight was added to the top of the load cell again to confirm that the operational code was correct. cleaned in most home dishwashers even without annealing the 3D-printed part. Both the roller screw assembly and test rig assembly were printed with PETG using an open source Lulzbot TAZ6 3-D printer [63]. Default high-detail print settings were used in a TAZ6 3D printer with a layer height of 0.14 mm. All tests were run on PETG 3D-printed roller screws and testing rigs. An S-type load sensor was used to measure the force the screw was able to impart during actuation. 3D-printed PETG roller screw assembly and test rig assembly were printed with PETG using an open source Lulzbot TAZ6 3-D printer [63]. Default high-detail print settings were used in a TAZ6 3D printer with a layer height of 0.14 mm. All tests were run on PETG 3D-printed roller screws and testing rigs. An S-type load sensor was used to measure the force the screw was able to impart during actuation. The load sensor was assembled and calibrated prior to insertion into the test rig assembly. The load cell wires are soldered to the input side of the SparkFun HX711. The wire coloring on load cells is standardized. Connect pins on the other side of the amplifier to an Arduino. The entire wiring diagram be seen in Figure 2.  The load sensor was assembled and calibrated prior to insertion into the test rig assembly. The load cell wires are soldered to the input side of the SparkFun HX711. The wire coloring on load cells is standardized. Connect pins on the other side of the amplifier to an Arduino. The entire wiring diagram be seen in Figure 2. The load sensor was assembled and calibrated prior to insertion into the test rig assembly. The load cell wires are soldered to the input side of the SparkFun HX711. The wire coloring on load cells is standardized. Connect pins on the other side of the amplifier to an Arduino. The entire wiring diagram be seen in Figure 2. After connecting all components, then, Arduino was used to calibrate the load cell. The HX711 library was downloaded from the Arduino IDE library manager. The public domain "SparkFun_HX711_Calibration.ino" calibration code was available from the SparkFun website and can alsobe downloaded from the project github repository [62]. A 9.07 kg weight was placed on top of the load cell, and the calibration factor in the calibration code was adjusted until the output on the serial monitor matched the weight. Once the calibration was completed, the calibration factor was placed into the "run_scale.ino" After the setup process, the S-type load cell was fitted into the hole in the bottom retainer of the test rig. Three-dimensional (3D)-printed plates were fastened into the M12 holes on the top and bottom of the load sensor to hold it in place and provide an even surface for roller screw contact. The tests were performed by twisting the collar, while the center screw was held in place by hand to prevent rotation. This is shown in Figure 3. code found in the same locations as the calibration code. The weight was added to the top of the load cell again to confirm that the operational code was correct.
After the setup process, the S-type load cell was fitted into the hole in the bottom retainer of the test rig. Three-dimensional (3D)-printed plates were fastened into the M12 holes on the top and bottom of the load sensor to hold it in place and provide an even surface for roller screw contact. The tests were performed by twisting the collar, while the center screw was held in place by hand to prevent rotation. This is shown in Figure 3. Using the completed assembly described above, the roller screw was first tested to determine if it could maintain a constant load without slipping and what the maximum force could be obtained from the current build of this mechanism. Second, a test was done to determine the increase in loading per rotation of the collar. At each step, the collar was rotated 90 degrees and held static for a short amount of time. At each loading step, the force on the roller screw mechanism lowered after the hand was removed from the collar. Tests were repeated six times.

Validation Testing Versus Control Direct Press Screw
Then, a direct press screw was created using the same central lead screw and test stand assembly to determine how much force was generated compared to a roller screw press. In this alternate assembly, the top retainer was replaced with a threaded version (where the original was a through-hole with clearance for the screw), and the roller screw assembly was removed. All other materials remained unchanged. This configuration can be seen in Figure 4. . Image of 3D-printed polyethylene terephthalate glycol (PETG) roller screw during testing (left) and load cell with a push plate that was inserted into the test stand assembly (right). Using the completed assembly described above, the roller screw was first tested to determine if it could maintain a constant load without slipping and what the maximum force could be obtained from the current build of this mechanism. Second, a test was done to determine the increase in loading per rotation of the collar. At each step, the collar was rotated 90 degrees and held static for a short amount of time. At each loading step, the force on the roller screw mechanism lowered after the hand was removed from the collar. Tests were repeated six times.

Validation Testing Versus Control Direct Press Screw
Then, a direct press screw was created using the same central lead screw and test stand assembly to determine how much force was generated compared to a roller screw press. In this alternate assembly, the top retainer was replaced with a threaded version (where the original was a through-hole with clearance for the screw), and the roller screw assembly was removed. All other materials remained unchanged. This configuration can be seen in Figure 4. Testing with this version of the screw used the same method to startup and acquire data as with the roller screw test. However, for this series of testing, the lead screw is twisted from the top until no more force can be applied. The same operator was used in the manual twisting of this mechanism as in previous tests. The performance of the direct press screw was measured during 10 consecutive tests in terms of applied force over a duration. The direct press screw was rotated to apply force onto the load cell until it was no longer capable of completing this operation. After a varying duration of time, the force was then removed from the load cell by rotation of the screw in the opposite direction until it was no longer touching the load cell top screw plate.

Maintain a Constant Load without Slipping Test
The first test determined that the current roller screw assembly could maintain a 160lbf compressive load against the S-type load sensor. However, when the loading exceeded 200lbf, the roller screw teeth started de-meshing with the central screw. This demeshing can be seen most prominently around the 1000th collected sample in Figure 5. Then, the planetary roller screw was turned in the opposite direction to remove the load on the load sensor. No visual damage was observed on the rollers or central screw during the first test. Testing with this version of the screw used the same method to startup and acquire data as with the roller screw test. However, for this series of testing, the lead screw is twisted from the top until no more force can be applied. The same operator was used in the manual twisting of this mechanism as in previous tests. The performance of the direct press screw was measured during 10 consecutive tests in terms of applied force over a duration. The direct press screw was rotated to apply force onto the load cell until it was no longer capable of completing this operation. After a varying duration of time, the force was then removed from the load cell by rotation of the screw in the opposite direction until it was no longer touching the load cell top screw plate.

Maintain a Constant Load without Slipping Test
The first test determined that the current roller screw assembly could maintain a 160 lbf compressive load against the S-type load sensor. However, when the loading exceeded 200 lbf, the roller screw teeth started de-meshing with the central screw. This de-meshing can be seen most prominently around the 1000th collected sample in Figure 5. Then, the planetary roller screw was turned in the opposite direction to remove the load on the load sensor. No visual damage was observed on the rollers or central screw during the first test.

Increase in Loading Per Rotation of the Collar
The results of a representative loading test are shown in Figure 6. The planetary roller screw was able to maintain an average of up to 85.73 kg. At the 250th sample, the collar was rotated again, but the rollers failed and slipped off of the central screw. During the seventh repeat of this test, one of the rollers experienced a failure where the central screw sheared off its threads. The test ended after this event.

Direct Screw Press Performance
The results of the direct screw press are shown in Figure 7 for the most representative experiment. The average maximum force was 403.5 N.
The first test determined that the current roller screw assembly could maintain a 160lbf compressive load against the S-type load sensor. However, when the loading exceeded 200lbf, the roller screw teeth started de-meshing with the central screw. This demeshing can be seen most prominently around the 1000th collected sample in Figure 5. Then, the planetary roller screw was turned in the opposite direction to remove the load on the load sensor. No visual damage was observed on the rollers or central screw during the first test.

Increase in Loading Per Rotation of the Collar
The results of a representative loading test are shown in Figure 6. The planetary roller screw was able to maintain an average of up to 85.73 kg. At the 250th sample, the collar was rotated again, but the rollers failed and slipped off of the central screw. During the seventh repeat of this test, one of the rollers experienced a failure where the central screw sheared off its threads. The test ended after this event.

Direct Screw Press Performance
The results of the direct screw press are shown in Figure 7 for the most representative experiment. The average maximum force was 403.5 N.

Discussion
This is the first application of a roller screw design made for both AM, parametric, and for distributed manufacturing. The results that double the applied force was able to be tolerated with the same material represents a major step forward in the amplification of mechanical strength for fused filament fabrication (FFF)-based AM. The overall effectiveness of the 3D-printed planetary roller screw is discussed in the context of the experimental results. Afterwards, a path forward is described for future research.

Force Exertion and Pressure as a Function of Angle
The measured force after each 90-degree rotation was averaged together and plotted in Figure 8. For every degree of rotation of the main collar, the central screw exerted on average of 2.19 N onto the load cell. The same force data are divided by the area of the 50 mm diameter pressure plate base to determine the exerted pressure and can be seen in Table 7. This version of the roller screw is able to exert approximately 428 kPa onto a flat surface. The pressure exerted by this mechanism is dependent on the area of the crushing surface; a press plate with 1 4 the area would be able to deliver four times the pressure before entering the roller slippage failure mode of the current design.

Direct Screw Press Performance
The results of the direct screw press are shown in Figure 7 for the most representative experiment. The average maximum force was 403.5 N.  This is the first application of a roller screw design made for both AM, parametric, and for distributed manufacturing. The results that double the applied force was able to be tolerated with the same material represents a major step forward in the amplification of mechanical strength for fused filament fabrication (FFF)-based AM. The overall effectiveness of the 3D-printed planetary roller screw is discussed in the context of the experimental results. Afterwards, a path forward is described for future research.

Force Exertion and Pressure as a Function of Angle
The measured force after each 90-degree rotation was averaged together and plotted in Figure 8. For every degree of rotation of the main collar, the central screw exerted on average of 2.19 N onto the load cell. The same force data are divided by the area of the 50 mm diameter pressure plate base to determine the exerted pressure and can be seen in Table 7. This version of the roller screw is able to exert approximately 428 kPa onto a flat surface. The pressure exerted by this mechanism is dependent on the area of the crushing surface; a press plate with ¼ the area would be able to deliver four times the pressure before entering the roller slippage failure mode of the current design.

Comparison to Conventional Screw Press
The screw press assembly was only able to generate roughly half the approximate force that the roller screw testing yielded. The average maximum force delivered from 10 trials was found to be approximately 403 N. The pressure delivered by this screw was calculated to be 206 kPa or roughly 2 atmospheres of pressure at sea level. This direct press method encountered a large amount of friction during actuation from the rotating

Comparison to Conventional Screw Press
The screw press assembly was only able to generate roughly half the approximate force that the roller screw testing yielded. The average maximum force delivered from 10 trials was found to be approximately 403 N. The pressure delivered by this screw was calculated to be 206 kPa or roughly 2 atmospheres of pressure at sea level. This direct press method encountered a large amount of friction during actuation from the rotating central screw against the fixed load sensor. This friction is believed to have reduced the overall effectiveness of the system by increasing the difficulty in rotating the lead screw. This limitation is not present in the roller screw mechanism because there are no large flat surface contact areas that can cause static friction.

Future Work
Throughout the process of designing this initial prototype, a number of additional ideas and potential improvements have been thought of and even explored. The following section will briefly go over some of the potential future developments for this design.

Overcoming Mechanism Failures
The mechanism failures discussed in the second test of the roller screw are preventing the planetary roller screw from reaching maximum force application. This can be accomplished by adding additional rollers into the collar assembly to better distribute force. However, manually inserting eight rollers into the collar housing, holding them in place, aligning them, and threading the central screw through them is an incredibly time-consuming process that is prone to failure. Overall, one of the largest difficulties with the current design is the assembly of the central roller screw. The components can be difficult to manage by hand and are difficult to align properly for complete assembly. Potential design changes could allow the entire roller screw to be printed at once with all components pre-located where they are required. Future roller screw mechanisms will need to be printed in place to overcome assembly issues from adding more rollers to increase mechanism strength. This can be done with a printer with two heads: one printing in PLA and another in a water-soluble material such as polyvinyl alcohol (PVA).
If this were implemented properly, a user would simply need to print out the entire system once, remove, and begin using the system immediately. This would bring about quicker turn-around times and simpler end-user application for these systems. Modifying this design to be print-in-place will require design changes to allow everything to be printed properly without binding or meshing. The tolerances between the threads would need to be controlled so that there is adequate distance between the roller threads as well as the outer nut threads. Without appropriate tolerances, the threads could bind together, making operation impossible.
Keeping the rollers within the assembly would also be a challenge, as the current design relies on the gears as well as the central screw to keep the rollers within the assembly. The most likely approach to printing-in-place would not include the central screw, as there are typically other components to the overall system that need to be installed before the central screw. Thus, the approach to keeping the rollers within the assembly must be changed for the print-in-place design. This may be in the form of support material, a "pseudo-central screw", or any other means to prevent the rollers from falling out of the assembly before the central screw is installed.

Increasing Overall Force
The primary delivery method of power to the roller screw is through the application of torque to the outer nut. This torque is proportional to the total force that the press can exert. If the given material can withstand larger forces and higher torques than the original design allows, the simplest way to increase the force exerted by the press is to increase the torque on the outer nut. This can be done by increasing the size of the moment arm on the outer nut. The current design has rather short flanges which were pressed by the users' fingers. By making these flanges longer and adding more weight to the end of the flanges, the user can effectively increase the torque they can exert on the outer nut without an increase in force. This is a commonly used method within manual metal presses and cutters that use a large overhead wheel with a weight on one side. The user would take the weight and "throw" it to create large amounts of linear force on the work piece. The same principal can be applied here.
Further analysis of the mechanical system, such as through finite element analyses (FEA), would allow the overall system to become more rigid and tolerant of component variance. With such improvements, the overall force that can be applied to the system can be increased without changing materials nor significantly increasing the size of the system. These targets for future work would broaden the applicability of the system with the potential to optimize the design for specialized needs where required.

Migration to SolidPython
While designing this project, one goal was to make the design parametric so that it may fit into many different requirement sets. Although this design was originally intended for use in a fruit press, the design scope can be expanded to other areas where a high-duty cycle, low-friction, linear actuator is needed. Although OpenSCAD has facilities to create a parametric design, the design of the OpenSCAD Language can quickly become restrained and limited as the complexity of the design increases. This started to become a problem as time went on and the overall code base became difficult to control and manage while maintaining parametric design.
While searching for solutions to some of the problems encountered with OpenSCAD, SolidPython was found as a potential alternative. SolidPython is a Python3 module that encapsulates OpenSCAD within Python3 and allows the generation and exporting of OpenSCAD code. This allows developers to use many of the features and systems built into Python3 for developing OpenSCAD Code. Some of these features, such as encapsulation, polymorphism, and Front-End User Interfaces, are difficult or impossible to implement directly into OpenSCAD. However, these features are easy to implement within the context of SolidPython. Potential front-end features include the following: With some of these great advantages available, SolidPython was explored more, and a code base was developed that can use some of these features. That code base is located on the GitHub repository [62] and is released under the same license as the rest of the Roller Screw OpenSCAD code in a separate branch.

Roller Encapsulation
As can be seen in the original design, the roller screw typically used the spacers as retainers for the rollers to prevent them from falling out of the assembly. This requirement adds complexity to the design and is a source of increased friction as the spacers are pressed against the walls of the roller screw. Our design solved these issues by using herringbone gears for the timing gears. Herringbone gears are capable of taking some level of axial load and therefore can keep the rollers retained.
However, there are other potential solutions to this issue. One other potential solution that has not been thoroughly explored yet is the use of an "Angled" ring gear. Figure 9 shows a mockup of what this may look like. Although first impressions may lead one to believe these are bevel gears, standard bevel gears cannot operate in the manner shown, because the axe of rotation for the roller and the nut are parallel. Bevel gears can only operate when the two reference cones of the gears form a line at the mating connection of the gears.
In contrast, the "Angled" ring gear would require a new gear tooth geometry. This is because, in essence, as the tooth moves up and along the slanted gear face, the module of the gear is changing. This is because the number of teeth of the gear is constant; however, the diameter of the gear is changing along the slant. This creates a gear tooth that would appear to get larger as it moves up the gear. This slanted gear could be used for limiting the axial movement of the rollers while possibly minimizing the friction between the rollers and the outer nut.

Food Processing Applications
The maturity of open-source appropriate technologies being applied to agriculture are maturing in the research and development arena, focusing largely on electronicsbased applications to agriculture [64][65][66][67]. There are also sophisticated systems that are open source and can be used to sterilize for example rooms in the agriculture industry as well as for research and development and medical applications [68]. This study has shown that even traditional mechanical food processing can be potentially processed using digital replication of OSAT as one potential application for planetary roller screw assembly is for crushing and or pressing fruits. The recorded pressure would be adequate for crushing soft-walled fruits such as grapes or peeled citrus without any prior processing. Firmer fruits such as apples and some root vegetables such as potatoes can just be crushed with the current iteration of the roller screw mechanism. However, this device could be used for these applications by both increasing the size and implementing the improvements discussed above. Food-safe plastics or an inner waterproof lining would be required to ensure safe consumption and prevent the absorption of liquids into the printed filament. To date, most 3D-printing applications focusing on food processing have been focused on printing food [69,70]. This study has shown that there are considerably more traditional applications available even to low-cost and readily accessible additive manufacturing systems. Future work is also needed to investigate the use of high-temperature open-source 3D printers [71] to print in engineering grade plastics such as polycarbonate, polyetherketoneketone (PEKK), and polyetherimide (PEI, ULTEM) and to determine that they are food safe and can be washed with industrial dish washing units [72], which have operating temperature above 70 °C (and thus could distort PETG). In contrast, the "Angled" ring gear would require a new gear tooth geometry. This is because, in essence, as the tooth moves up and along the slanted gear face, the module of the gear is changing. This is because the number of teeth of the gear is constant; however, the diameter of the gear is changing along the slant. This creates a gear tooth that would appear to get larger as it moves up the gear. This slanted gear could be used for limiting the axial movement of the rollers while possibly minimizing the friction between the rollers and the outer nut.

Food Processing Applications
The maturity of open-source appropriate technologies being applied to agriculture are maturing in the research and development arena, focusing largely on electronics-based applications to agriculture [64][65][66][67]. There are also sophisticated systems that are open source and can be used to sterilize for example rooms in the agriculture industry as well as for research and development and medical applications [68]. This study has shown that even traditional mechanical food processing can be potentially processed using digital replication of OSAT as one potential application for planetary roller screw assembly is for crushing and or pressing fruits. The recorded pressure would be adequate for crushing soft-walled fruits such as grapes or peeled citrus without any prior processing. Firmer fruits such as apples and some root vegetables such as potatoes can just be crushed with the current iteration of the roller screw mechanism. However, this device could be used for these applications by both increasing the size and implementing the improvements discussed above. Food-safe plastics or an inner waterproof lining would be required to ensure safe consumption and prevent the absorption of liquids into the printed filament. To date, most 3D-printing applications focusing on food processing have been focused on printing food [69,70]. This study has shown that there are considerably more traditional applications available even to low-cost and readily accessible additive manufacturing systems. Future work is also needed to investigate the use of high-temperature open-source 3D printers [71] to print in engineering grade plastics such as polycarbonate, polyetherketoneketone (PEKK), and polyetherimide (PEI, ULTEM) and to determine that they are food safe and can be washed with industrial dish washing units [72], which have operating temperature above 70 • C (and thus could distort PETG).

Conclusions
This study has shown the potential for using parametric scripted design to improve the applied force of a linear actuator using a completely 3D-printed roller screw assembly. It is clear that despite enormous progress in the last few years of the utility of low-cost open source 3D printers, there is still considerable room for improvement to make more sophisticated fully 3D-printable designs even without moving to other 3D-printing materials or composites. Such designs offer the potential for extremely low-cost food processing equipment along with many other applications that involve substantial physical forces.   [73][74][75][76]. The initial implementation of the open source planetary roller screw was done completely in OpenSCAD [77], which is a script-based CAD package. The OpenSCAD code base consisted of separate files with dedicated purpose. The file structure can be seen in Table A1.
It is important to note that there are two external OpenSCAD files that are used within the project. These files and their appropriate licenses can be found in the "lib" folder. The files and their descriptions are listed in Table A2.
All other files are used to support the components or is a component itself. In the following sections, the operational theory behind each component will be explained using description and pseudo-code.
The central screw is the simplest component in the entire assembly. Figure A1a shows a finished and labeled central screw assembly. Table A3 provides all of the parameters for the central screw. The following sections will describe the operation of the OpenSCAD code for generating the central screw.  Table A2. Resulting functional variables from primary parameters.

Standard Threads Library
Giertriebe [79] "Giertriebe.scad" Creative Commons-Attribution-Non-Commercial-Share Alike    As shown in Figure A1, the overall design of the central screw is simple. The design consists of a large, central, threaded rod with a cap at top. The cap serves two functions. One is to force a lower limit to the travel of the screw to prevent the screw from falling out of the assembly. The second is to allow the user to quickly turn the central screw if the need were to arise. This would be a quicker method of moving the screw than with the Planetary Roller Assembly.

Convolute Gears Library
The threaded rod of the central screw has the simplest external implementation. This is due to the use of the tsmthread4.scad developed by Dan Kirshner [78]. Using this thread library, the central threaded rod is a simple function call using the screw diameter (d_screw_eff), screw lead (l_screw_lead), screw thread starts (n_screw_threads), and screw length (l_screw_length). It is important to note that the screw diameter, screw lead, and screw thread starts are extremely important to the overall operation of the assembly. These parameters will be in all the major modules and must be the same across all of these modules.
The cap is a fairly simple construction. In OpenSCAD, it is implemented in its own module, which is then moved up to and attached (unioned) to the screw. The cap module generates one large central cylinder with the following parameters: outer diameter (d_cap_outer), cap thickness (l_cap_thickness). The outer diameter parameter defines the diameter of the cylinder while the cap thickness determines the cylinder height. This is the primary cylinder. Then, the cap module produces a cap cut-ins (n_cap_cuts) number of cylinders with a diameter of cut circles diameter (d_cap_cut_temp) and a height of cap thickness (l_cap_thickness). These cylinders are translated out to half of the diameter of the primary cylinder and then rotated around the primary cylinder. Finally, the periphery cylinders are subtracted from the primary cylinder to produce "cuts" into the primary cylinder that can be used to grasp and spin the central screw.
A picture of the printed part can be seen in Figure A1b. The printed part was printed on an open source PrusaMK3S [80] using natural PLA with a layer height of 0.2 mm. Appendix A. 1

.2. Rollers
The rollers are a more complex design and are a critical part of the entire assembly. The rollers transfer all of the axial forces exerted on the central screw to the nut. The rollers are also the primary method of rotating, and therefore actuating, the central screw when the nut is rotated. These design considerations imply that the rollers need to be robust while also minimizing rolling friction between themselves and the central screw. Figure A2a shows a rendered and labeled image of the roller and (b) shows the required parameters to be generated. The following section will discuss the design of the roller and the usage of the rollers OpenSCAD Module.
of cylinders with a diameter of cut circles diameter (d_cap_cut_temp) and a height of cap thickness (l_cap_thickness). These cylinders are translated out to half of the diameter of the primary cylinder and then rotated around the primary cylinder. Finally, the periphery cylinders are subtracted from the primary cylinder to produce "cuts" into the primary cylinder that can be used to grasp and spin the central screw.
A picture of the printed part can be seen in Figure A1b. The printed part was printed on an open source PrusaMK3S [80] using natural PLA with a layer height of 0.2 mm.

.2. Rollers
The rollers are a more complex design and are a critical part of the entire assembly. The rollers transfer all of the axial forces exerted on the central screw to the nut. The rollers are also the primary method of rotating, and therefore actuating, the central screw when the nut is rotated. These design considerations imply that the rollers need to be robust while also minimizing rolling friction between themselves and the central screw. Figure  A2a shows a rendered and labeled image of the roller and (b) shows the required parameters to be generated. The following section will discuss the design of the roller and the usage of the rollers OpenSCAD Module. The rollers are designed with a central section of threads, gears on both the top and bottom of the roller, and an axle that extends through the roller and past the gears. However, the gears and threads do not intersect with each other as they do in the original patent. In the original patent, this was required due to manufacturing limitations; the manufacturer could not simply start and stop the threads along the stock and then hob gears out of it. The conventional manufacturer was forced to make the threads along the entire length of their stock and then hob gears into both ends of the threads, creating the intersecting gears and threads in the patent. For this design using more advanced AM, it was decided to try what the original patent could not, so the gears and threads were kept separate from each other.
The parameters for the OpenSCAD module can be seen in Table A4. Notice that the three primary design parameters (central screw lead, central screw thread starts, and central screw major diameter) are being used rather than the direct values for the roller. The The rollers are designed with a central section of threads, gears on both the top and bottom of the roller, and an axle that extends through the roller and past the gears. However, the gears and threads do not intersect with each other as they do in the original patent. In the original patent, this was required due to manufacturing limitations; the manufacturer could not simply start and stop the threads along the stock and then hob gears out of it. The conventional manufacturer was forced to make the threads along the entire length of their stock and then hob gears into both ends of the threads, creating the intersecting gears and threads in the patent. For this design using more advanced AM, it was decided to try what the original patent could not, so the gears and threads were kept separate from each other.
The parameters for the OpenSCAD module can be seen in Table A4. Notice that the three primary design parameters (central screw lead, central screw thread starts, and central screw major diameter) are being used rather than the direct values for the roller. The values that the rollers use to generate geometry is calculated within the module and will be discussed later in this section. As noted, not all of the variables used to generate the geometry of the rollers are defined directly by the user. A couple of the critical dimensions are calculated within the roller module code and are used by the rest of the code for geometry generation. These variables are outlined, along with the calculations to obtain them, in Table A5.
These values combined create the rollers. The structure of the roller is constructed using a cylinder, one set of threads from tmsthreads, and two gears (of appropriate type) from Giertriebe. The central cylinder is constructed with a diameter specified by Axle Radius and uses axle_length for the overall height of the cylinder. The roller threads use the calculated value d_screw_eff for the major diameter of the threads with the pitched defined by l_screw_pitch. The overall length of the threads is defined by the user parameter, Thread Length. The standard and angle of the threads are hardcoded into the module; however, they may be changed by a user as long as those changes are made to the nut and central screw modules as well. The outer nut utilizes a "carving" method of the inside of the nut. This is used to carve the shape of the outer nut into the external housing. That is, a positive image of the internal workings of the nut is created. Then, that image is subtracted from the housing of the outer nut. This method allows more flexibility in the shape and form of the housing. This image includes the timing gears and load-transfer threads, which mesh with the rollers. Figure A3a shows a labeled rendering of the outer nut with the printed output being show in (b). This image includes the timing gears and load-transfer threads, which mesh with the rollers. Figure A3a shows a labeled rendering of the outer nut with the printed output being show in (b). The timing gears mesh with the rollers and prevent them from rotating out of sync with the rest of the system, which can cause binding of the threads. The threads, as the name implies, transfer the axial load from the rollers (which had a force induced on them by the central screw) into the nut. As noted in Figure A3a, these threads were not included for this design to simplify the construction and printing of the nut. This can be done because the timing gears are herringbone gears that can transfer and support some axial load. Similar to the separation of the timing gears and threads, which was done in the rollers, this method could not be accomplished in the original patent due to manufacturing limitations. AM methods allow the usage of these gears in the system and exclusion of the Load-Transfer threads.
The housing for the outer nut is a simple cylinder with flanges that can be pushed by hand. There are also a number of cut-outs in the housing that carve through the entire assembly. These reduce plastic use for the overall outer nut but can be excluded if desired.
In Table A6, the primary parameters for the outer nut are described.  The timing gears mesh with the rollers and prevent them from rotating out of sync with the rest of the system, which can cause binding of the threads. The threads, as the name implies, transfer the axial load from the rollers (which had a force induced on them by the central screw) into the nut. As noted in Figure A3a, these threads were not included for this design to simplify the construction and printing of the nut. This can be done because the timing gears are herringbone gears that can transfer and support some axial load. Similar to the separation of the timing gears and threads, which was done in the rollers, this method could not be accomplished in the original patent due to manufacturing limitations. AM methods allow the usage of these gears in the system and exclusion of the Load-Transfer threads.
The housing for the outer nut is a simple cylinder with flanges that can be pushed by hand. There are also a number of cut-outs in the housing that carve through the entire assembly. These reduce plastic use for the overall outer nut but can be excluded if desired.
In Table A6, the primary parameters for the outer nut are described. The actual generation of the outer nut uses a few modules. The first generates the rings gears, one for the top, one for the bottom, as well as the inner cylinder. This inner cylinder is used to cut a hole into the large cylinder that forms the rest of the body. After this is complete, cylinders are used to cut the holes into the overall body. Finally, a hollowed cylinder is attached to the bottom, and the flanges are formed with repeating cylinders that orbit around the hollowed cylinder. Most of the actions use their own internal module, which then are used in conjunction to form the entire structure.
Appendix A.1.4. Spacer The spacers ( Figure A4) are a very simple construction that is used to maintain appropriate distance between the rollers as the operater. They prevent the rollers from shifting within the assembly. In many cases, these spacers were not needed and are excluded from the overall assembly. The actual generation of the outer nut uses a few modules. The first generates the rings gears, one for the top, one for the bottom, as well as the inner cylinder. This inner cylinder is used to cut a hole into the large cylinder that forms the rest of the body. After this is complete, cylinders are used to cut the holes into the overall body. Finally, a hollowed cylinder is attached to the bottom, and the flanges are formed with repeating cylinders that orbit around the hollowed cylinder. Most of the actions use their own internal module, which then are used in conjunction to form the entire structure.
Appendix A.1.4. Spacer The spacers ( Figure A4) are a very simple construction that is used to maintain appropriate distance between the rollers as the operater. They prevent the rollers from shifting within the assembly. In many cases, these spacers were not needed and are excluded from the overall assembly. The spacer design is simple, consisting of a cylinder with a clearance bore through the middle that accommodates the central screw assembly. Along the ring of the spacer are bore holes that act as simple bearings for the rollers. These bearings allow the rollers to roll and make slight shifts in angle while maintaining a safe distance between the rollers.  The spacer design is simple, consisting of a cylinder with a clearance bore through the middle that accommodates the central screw assembly. Along the ring of the spacer are bore holes that act as simple bearings for the rollers. These bearings allow the rollers to roll and make slight shifts in angle while maintaining a safe distance between the rollers.