20
Explorations in opensource robotic 3D printing https://github.com/vinceHuyghe/explorations-in-robotic-3d-printing Vincent Huyghe UCL 2013 Adaptive architecture & compuation Tutors: Ruari Glynn, Khaleb ElAshry

Experiments in r3dp

Embed Size (px)

DESCRIPTION

UCL aac digital studio 2013 https://github.com/vinceHuyghe/explorations-in-robotic-3d-printing Vincent Huyghe

Citation preview

Page 1: Experiments in r3dp

Explorations in opensource robotic 3D printing

https://github.com/vinceHuyghe/explorations-in-robotic-3d-printing

Vincent HuygheUCL 2013

Adaptive architecture & compuationTutors: Ruari Glynn, Khaleb ElAshry

Page 2: Experiments in r3dp

Referenceshttp://reprap.org/wiki/RepRap

http://www.thingiverse.com/

Source: Moilanen, J. & Vadén, T.: Manufacturing in motion: first survey on the 3D printing com-munity, Statistical Studies of Peer Production

Prologue:

3d printing using extrusion of thermoplastics has become affordable and widely used. The main advantages of this technique is that the process is mechanically simple and the raw material is inexpensive; especially when compared to other 3d printing techniques such as powder printing and laser sintering. This has lead to the technique gaining a lot of traction in the open-source and DIY community, while the professional community has focused their attention on printers producing very high resolutions using much more expensive and complicated techniques. The large, community experimenting, researching and sharing ideas has allowed the extrusion technique to develop and improve very quickly. Now advancements and refinements in the field are being made constantly for example dual extrusion allowing printing in different materials or color blending nozzle, which allows to print in a range of different colors. The largest community and wiki is the one from the RepRap project- therefore this is the one which shall serve as the starting point of my research. RepRap printers are made from printed parts so as to be self-replicating machines. Additionally this means that any user can update, customize or improve the design. One of the website where all these designs are shared and printable files are available for download is the Thingverse.

Page 3: Experiments in r3dp

thingiverse.com/thing:19590universal paste extruder for 3d printers

It allows you to experiment with various pastes on your 3D printer without the need for any air compressor equipment or valves etc. it simply uses the existing Extruder motor output from your printer electronics.

http://www.thingiverse.com/thing:23775universal paste extruder for 3d printers

This is a 3 extruder setup with a single hot-end combining nozzle, to ‘mix’ and blend coloured filament plastic or different materials on a RepRap or other 3D printer..

Page 4: Experiments in r3dp

Abstract:

3d printing is considered the ultimate way of free form fabrication. 3d printing extrusions heads however are mostly used in combination with CNC machines. Printing layer by layer in the Z-plane seems like a very traditional and restricting way of implementing a technique that lends itself so well to free form fabrication. This paper will explore the possibilities of thermoplastic extrusion combined with an industrial robot. The goal of the project is to develop open-source fabrication protocols for robotic 3d printing. Additionally the need for dedicated machines for 3d printing in age where industrial robots are becoming more and more common in digital fabrication will be researched. Using industrial robots has some obvious advantages in freedom of movement and scale. Further it: has the advantage that it allows to combine different fabrication methods easily by switching end effectors. This would enable fabrication centers to have a greater flexibility in available fabrication methods with one machine. During the research I will not be trying to reinvent the wheel but rather try and get the most out of the knowledge gathered and developed by the open-source community.

http://www.thingiverse.com/thing:18379

UR 10

+ = ? References / Precedents

kamermaker 3d printer (2.2 by 2.2 by 3.5 m) DUS architects

http://vimeo.com/510910002010, Endless Process, Dirk Vander Kooij

low resolution thermoplastic extrusion combined with industrial robot.http://vimeo.com/17358934v

Almond technique, end effector for 3d printinghttp://www.youtube.com/

watch?v=6I05NXxV3ygMataerial by Petr Novikov, Saša Joki, Joris

Laarman Lab and IAAChttp://vimeo.com/66401994

Pet flakes, IAAC 2012http://issuu.com/thepetflakesproject/docs/

petflakesthebook

Page 5: Experiments in r3dp

The beginning:

The first objective is to build a 3d extrusion printing end effector for a 6-axis robot. That starts with building an extruder and understanding the mechanical and material properties of the extrusion process. There are 2 approaches, the first is to buy an industrial thermoplastic welder and mount it on a frame and control it using a relay. The advantage of this technique is that it could deliver quick results. The other option is to start with extruder parts for a desktop 3d printer and modify them to fit the purposes of the project. The advantage here is that these extruders design are highly modular and can therefor easily be adapted. I will pursue the second as it feels it offers more opportunities.

Page 6: Experiments in r3dp

some diffrent extruders “cold ends”:

Airtripper’s Bowden Extruder V3http://www.thingiverse.com/thing:35404

Lego worm drive extruderhttp://www.thingiverse.com/thing:21346

Direct Drive 3mm-GRRF-Hotend Bowden Extruder for Huxley (with removable fan ;-)

http://www.thingiverse.com/thing:40527

Referenceshttp://reprap.org/wiki/Category:Extrudershttp://reprap.org/wiki/Category:Hot_End

some diffrent “hot ends”: J head hot end, Alu hot end, Budashnozzle hot end

stepper motor

extruder

�lament

bearing

hot end thermistor or thermocouple

�lament width

extrusion width

large gearsmall gear

heater

the extruder

The desktop 3printer extruder consists of 2 main parts the “cold end” and “hot end”, the cold end is responsible for mechanically driving the filament in the hot end which is responsible for melting the thermoplastic. Because of the large open-source community and websites like thingverse, extruders come in a wide range of variety’s. For this reason I decided to start with Greg’s Wade reloaded extruder as it is the most common extruder used by the DIY community. Once the process is better understood after the initial research I will chose or develop an extruder better suited for robotic printing and meeting specific research goals that haven’t been defined at this point. The extruder workings can be broken down in different aspects namely; mechanical, electrical & hardware and software & code. The goal of the first experiments is to identify and play with the different parameters witch play a role in achieving a well-calibrated extruder.

Page 7: Experiments in r3dp

Mechanical aspects

Chosen combination extruder: Greg’s wade reloaded extruder cold end: budashnozzleIn the 3d desktop printers community 1,75 mm and 3 mm filament are the most commonly used and readily available. Commercial 3d printer manufactures such as makerbot and ultimaker are pushing for the exclusive use of 1,75mm filament and the latest models of these brands only support printing with 1,75mm filament. 3mm filament is only in use for DIY and open- source printers. The use of the industrial robot for the moment instead of a cnc creates the possibility to print much larger objects then desktop printers because it is not necessary to achieve the same resolution used by said desktop printers. This motivated me to opt for a 3mm filament extruder, as this would give me possibility to extrude more material quickly. Nozzle diameters in desktop 3d printers range from 0.3 to 0.5 mm, in a further attempt to adapt the desktop printer technology to the larger scale I decided to use a nozzle with greater diameter namely 1,2mm.

Greg’’s wade extruder reloaded and Nema 17 stepper

Budashnozzle and heat cartridge + thermistor original nozzle 0,5mm and new 1.2mm nozzle (mounted on budashnozzle)

Referenceshttp://reprap.org/wiki/Wade%27s_Geared_Extruderhttp://reprap.org/wiki/LulzBot/Budaschnozzle

Page 8: Experiments in r3dp

Electrical aspects

There are multiple platforms available for desktop 3d printers, a full list can be found in the reference. The most popular ones where developed based on the Arduino platform; namely RAMPS and Sanguilono. These controllers rely on specific firmware for 3d printing. Although this might be a good option in the beginning I think these might prove difficult to use when trying to integrate systems with the robot. For this reason I decided to use a standard Arduino board as that would offer me the most flexibility in the future and has the added benefit that I can rely on the knowledge of the huge open-source Arduino community.The different components used in extruder are:

controlArduino mega ADK

heat and temperature - heat cartridge 12V 40W - Epcos 100k thermistor

filament drive- nema 17 stepper motor

ventilation- Arduino motor shield- Fans 12V

Wiring thermistor

Wiring 12V heat cartridge

Wiring 12V stepper

Referencehttp://bildr.org/?s=thermistor

http://bildr.org/2011/03/high-power-control-with-arduino-and-tip120/

http://bildr.org/2012/11/big-easy-driver-arduino/http://www.instructables.com/id/Arduino-Motor-

Shield-Tutorial/

Page 9: Experiments in r3dp

The stepper motor, heat cartridge and fans require 12V, the heat cartridge however requires high amp current while the rest does not. After some initial testing I decided that the best way to do the power supply is5V trough usb for Arduino + shield + stepper driver 12V low amp for stepper and fans 12V high amp for heatWhen combining the 2 12V circuits into one I was having problems. The heat is controlled trough PWM, which means the heat, is being turned on and off very quickly. When using high pulse cycles the stepper driver started overheating very quickly.

Arduino mega adk

Transistor circuit

Arduino motorshield

Big easy driver

Page 10: Experiments in r3dp

Software and code aspects

Arduino side

The first step was to get all the components to work with Arduino code. However once everything was coded I realized that it would be difficult to calibrate the extruder properly whiteout being able to adjust the different parameters in real time and have visual feedback so as to understand the process. The next logical step was to code an interface for the extruder. After looking into the different possibility’s:- GUI in Arduino- serial communication - FirmataFirmata is a generic protocol for communicating with microcontrollers from software on a host computer. It is intended to work with any host computer software package. Right now there is a matching object in a number of languages. It is easy to add objects for other software to use this protocol. Basically, this firmware establishes a protocol for talking to the Arduino from the host software. The aim is to allow people to completely control the Arduino from software on the host computer.Firmata seemed like the best option because it would allow me to use the Arduino micro controller to read the sensor data and actuate the motors while the computationally heavier feedback loops would running on my laptop. Further in later stages of the project it would allow

me to easily integrate the robot data into feedback loops and wouldn’t matter how computationally heavy the code would become. For the host application I choose to use processing as I am familiar with it and would be easy to create a GUI with it.Getting the thermistor, heat cartridge and fans trough processing and Firmata was easy, however the stepper proved a bigger challenge. The stepper requires a HIGH LOW signal to complete 1 step- this isn’t a problem in Arduino code because the loop is called very quick succession but in Processing the draw loop is called much slower. In fact too slow to use processing to send signals directly to the stepper driver. The logical solution was to add the code to run the stepper to the Arduino standard Firmata code and trigger it from processing. The fact that the Processing draw loop is called slower then the Arduino loop created another problem when trying to pass numerical variables from processing to Arduino as one is reading faster then the other is sending. Some minor changes where made to the standard Firmata to remedy this.

code on github

Referenceshttp://www.instructables.com/id/Guino-

Dashboard-for-your-Arduino/http://arduino.cc/en/reference/serial

http://arduino.cc/en/Reference/Firmatahttp://firmata.org/wiki/Main_Page

http://processing.org/reference/libraries/serial/index.html

http://playground.arduino.cc/interfacing/processing

http://www.airspayce.com/mikem/arduino/AccelStepper/

Page 11: Experiments in r3dp

void analogWriteCallback(byte pin, int value){ if(pin == extruderSpdPin) { extruderSpeed = value; } if (pin < TOTAL_PINS && pin != extruderSpdPin ) { switch(pinConfig[pin]) { case SERVO: if (IS_PIN_SERVO(pin)) servos[PIN_TO_SERVO(pin)].write(value); pinState[pin] = value; break; case PWM: if (IS_PIN_PWM(pin)) analogWrite(PIN_TO_PWM(pin), value); pinState[pin] = value; break; } }

void runstepper() { if (digitalRead(extruderOnPin) == HIGH) { if (digitalRead(extruderDirPin) == false) { stepper.setSpeed(extruderSpeed); stepper.runSpeed(); } if (digitalRead(extruderDirPin) == true) { stepper.setSpeed(-extruderSpeed); stepper.runSpeed(); } } if (digitalRead(extruderCaliPin) == HIGH) { stepper.setSpeed(extruderSpeed); stepper.moveTo(2000); stepper.run(); } }

Modified analogWriteCallback function from standard Firmata to be able to pass speed value from processing to Arduino. If a signal is send to the extruder speed pin intercept that value, then the speed = the value. This way Arduino is only reading when a new speed value is being send.

Added runstepper function witch is called in the Arduino loop to run the stepper. Using the Accelstepper library for Arduino.The function allows to- run the stepper at set speed step/sec- change the direction of the stepper- calibrate the extruder by doing 10 full rotationsthen mm of extruded filament can be measured and mm extruded / step can be calculated.

Arduino code

Page 12: Experiments in r3dp

Processing side

functionality code

- read data thermistor and convert trough Steinhart-Hart thermistor equation to degrees C°. Common practice is to use lookup tables in 3d printers but I decided to implement the formula as it delivers more precise results.

- PID algorithm. The input is the temperature measured by the sensor the output is from 0 to 255, 0 being heat off and 255 maximum heat. Now this implement through a series of conditionals with 4 possible outputs states cold,cool, warm, hot. In the future I would like to replace this with a trough PID algorithm.

- run stepper motor. Speed, direction, calibrate, switch from micro stepping all the way to full stepping (1/16 to 1).

- run fans. 1fan to cool the top part of the hot end, 2fans to cool the extruded material.

- graphic interface. The 2 main components of the GUI are the sliders witch allow to tweak the parameters in real time and a graph showing the value of the variables over time. The control p5 library was used for sliders and toggles.

code on github

UR-10

Arduino

Extruderstepper

Hotend

movement speed

feedrate

speed++

heat cartridge

fans

thermistor

startstop

startstop

startstop

when temp okayif temp to lowif temp to high

if

Phase change diagram

Referenceshttp://en.wikipedia.org/wiki/Thermistor

(formula)http://reprap.org/wiki/Temperature_controlhttp://www.sojamo.de/libraries/controlP5/

processing

Page 13: Experiments in r3dp

slider set variable target temperatureslider set var threshold PIDtoggle PID control onsliders set var temperatures states PID

toggles for extruder onswitch extruder directionengage full, half or quarterstepping

slider set var steps/sectoggle extruder fan onslider set var extruder fan rpmsame for extrusion fan

graphtemperaturestate PIDstep/sec

Page 14: Experiments in r3dp

Material research

The most common materials used by desktop 3d printers are abs and pla. Abs is a general purpose, strong and very resilient type of plastic. Lego is made from abs. Polylactic acid is a cheap, biodegradable polymer, that is produced from lactic acid which can be obtained from the maceration of starch and sugars in biotanks. There are also some exotic materials available such as water solvable filament. If a an all metal hot-end is used materials that require a higher temperature for extrusion can be used as well such as nylon, PVA and lay wood. Other materials are used for full list see reference.

Referenceshttp://reprap.org/wiki/Printing_materialshttp://en.wikipedia.org/wiki/RepRap_Project#Replication_materials

Page 15: Experiments in r3dp

First material experiments

The first material experiments have as a goal to try and understand the variables involved in the process. Firstly to determine the operating range of the variables needed for extrusion -what the minimum and maximum temperature is -what is the maximum feedrate for the filament This is the calibration of the extrusion. Afterwards to develop a deeper understanding of the process test one variable at the time and see what happens at different intervals going through the entire operation range. These experiments will be undertaken with the extruder mounted to a horizontal surface, the extrusion is exposed to only gravity at first then movement by hand motion.

increasing the temperature reduces the diameter of the extrusion, this more noticable for ABS

increasing the speed increases the diameter of the extrusion, this more noticable for ABS

Page 16: Experiments in r3dp

low speedhigh heat

high speedlow heat

Page 17: Experiments in r3dp

Conclusions

The min temp & max temp are 190 & 250. The maximum feedrate is around 255 step per sec at full stepping. At higher temperature the material is more viscous and easy to manipulate, while at lower temperature the extrusion is thicker in diameter and soft- not viscous at all. At higher temperatures the material adheres better to itself and other materials. At low speeds the diameter of the extrusion is noticeably thinner than at high speed. As can been seen on the processing screenshot on previous page when the stepper is run past the medium speed range the temperature of the hot-end drops even though the PID is in its warmest state. This could be the result of doubling the nozzle size while keeping the rest of the design. The solution to this could be housing the heat cartridge in a larger heater block, this would then have a higher thermal capacity and provide more stable temperatures for extrusion.

Page 18: Experiments in r3dp

Moving towards robotic fabrication

Now that the workings of the extruder are understood it is time to move towards robotic fabrication. This starts by designing an end effector to house the extruder. The design requirements for the end effector are the following; modular design consisting of 3 parts: Arduino, extruder and hotend. This way it will be possible to update the parts making up the extruder without having to fabricate a new end effector. The first module is the Arduino part witch will house all the electronics. The goal here is to organize the wiring as cleanly as possible and limit the wires that run from the Arduino along the robot arm back to the host computer. The extruder part of the end effector will house the cold end. Here it is important to provide a flexible mounting platform that allows switching between different extruders easily. The final module is the one housing the hot-end; this part will be connected to the others through a soft connection. This will prevent any damage to the hot-end if it where to hit something in operation. Further a quick detach mechanism is preferable here as cleaning the hot-end during long operation might be necessary. On the code side of things, because Onyx the open-source library that will be used for robot kinematics is written in python it will be necessary to translate the existing code to able to integrate the

extruder and the robotic control. The speed of the extruder will be linked to the movement speed of the robot and a multiplier will be applied depending of the desired extrusion thickness.

Page 19: Experiments in r3dp

Remarks

Short term goals

Software

Translate code to python to enable integration robot and extruder control.Start adding some functionality to Onyx for 3d printing.Explore if its possible to recycle some of the components of silkworm, specifically the part that calculates the extruder settings based on speed and wanted resolution.Explore the possibility of using blender for robotic control and simulationAdvantages would be - very robust open-source framework community robotics in blenderBuilt in IK solverThe possibility to integrate everything in one framework (kinect, robotic vision, ik solver, simulation)

Hardware

Machine end effector based on design set design goals discussed previously.Replace extruder for an extruded with a different filament drive wheel and add the capacity to to feed multiple filaments.Replace to hotend with a full metal one with a larger heat block so as to allow the maximum freedom in material choice and achieve more stable extrusion temperatures.

Long term aspirations

There are no specific long term for the project, I want to see where the research takes me that being said this first part of the project has convinced me there are some interesting research opportunity’s

firstly to answer the question posed in the first part, do we need dedicated machines for 3d printing if we have access to industrial robots.

Material computationMultiple filament feeds going to one rotating hotend with multiple nozzles. Could this open the door to being able to extrude material with different structural properties.

adaptive fabrication protocolsExtruding in the air with no support below allows to take full advantage of the movement freedom of the robot. However this technique will not be able to deliver a high precision so a feedback will be necessary possibly augmented with robot vision to access printed results and adapt the fabrication.

Referenceshttp://projectsilkworm.com/

http://www.grasshopper3d.com/group/onixhttp://wiki.blender.org/index.php/

Community:Science/Roboticshttp://www.warp1337.com/content/blender-

robotics-part-1-introduction-and-modellinghttp://www.openrobots.org/wiki/morse/

Page 20: Experiments in r3dp

Index of open source references used to develop the projects

generalhttp://reprap.org/wiki/RepRaphttp://www.thingiverse.com/

precedentskamermaker 3d printer (2.2 by 2.2 by 3.5 m) DUS architectshttp://vimeo.com/510910002010, Endless Process, Dirk Vander Kooijlow resolution thermoplastic extrusion combined with industrial robot.http://vimeo.com/17358934vAlmond technique, end effector for 3d printinghttp://www.youtube.com/watch?v=6I05NXxV3ygMataerial by Petr Novikov, Saša Joki, Joris Laarman Lab and IAAChttp://vimeo.com/66401994Pet flakes, IAAC 2012http://issuu.com/thepetflakesproject/docs/petflakesthebook

extruder and hot endhttp://reprap.org/wiki/Category:Extrudershttp://reprap.org/wiki/Category:Hot_Endhttp://reprap.org/wiki/Wade%27s_Geared_Extruderhttp://reprap.org/wiki/LulzBot/Budaschnozzle

electrical circuitshttp://bildr.org/?s=thermistorhttp://bildr.org/2011/03/high-power-control-with-arduino-and-tip120/http://bildr.org/2012/11/big-easy-driver-arduino/http://www.instructables.com/id/Arduino-Motor-Shield-Tutorial/

Arduino codehttp://www.instructables.com/id/Guino-Dashboard-for-your-Arduino/http://arduino.cc/en/reference/serialhttp://arduino.cc/en/Reference/Firmatahttp://firmata.org/wiki/Main_Pagehttp://processing.org/reference/libraries/serial/index.htmlhttp://playground.arduino.cc/interfacing/processinghttp://www.airspayce.com/mikem/arduino/AccelStepper/

Processing code http://en.wikipedia.org/wiki/Thermistor (formula)http://reprap.org/wiki/Temperature_controlhttp://www.sojamo.de/libraries/controlP5/processing

materialshttp://reprap.org/wiki/Printing_materialshttp://en.wikipedia.org/wiki/RepRap_Project#Replication_materials

robot control and kinematicshttp://projectsilkworm.com/http://www.grasshopper3d.com/group/onixhttp://wiki.blender.org/index.php/Community:Science/Roboticshttp://www.warp1337.com/content/blender-robotics-part-1-introduction-and-modellinghttp://www.openrobots.org/wiki/morse/