Doblo factory version 1: Difference between revisions

The educational technology and digital learning wiki
Jump to navigation Jump to search
Line 469: Line 469:
== Printing ==
== Printing ==


Some printing hints for the [[RapMan]] (skeinforge settings)
We shall discuss some skeinforge printing settings for the [[RapMan]] below. You may consult the [[Skeinforge for RapMan]] to understand these. Also, [[Netfabb engine for RapMan]] will be able to print high quality DUPLOs in some near future. The current 4.5.1 Beta version cannot correctly print the overhangs of the Duplo tops yet - [[User:Daniel K. Schneider|Daniel K. Schneider]] 20:14, 30 April 2010 (UTC).


You may want to read the [[Skeinforge for RapMan]] to understand what mean here.
* Try small objects first, e.g. a 3x3x3 doblo brick with PLA or a 2x2x3 block with ABS. ABS warps !
 
* Try small objects first, e.g. a 3x3x3 doblo brick


; Calibration
; Calibration
We used the following setup:
We used the following setup for ''larger'' structures
* Layer Thickness (mm) : 0.4
* Layer Thickness (mm) : 0.4
* Perimeter Width over Thickness (ratio), i.e. how wide the filament should be compared to it´s height: 1.8
* Perimeter Width over Thickness (ratio), i.e. how wide the filament should be compared to it´s height: 1.8
Line 487: Line 485:
* Temperature: 210 (all) and Fan on
* Temperature: 210 (all) and Fan on
* Raft: One interface layer
* Raft: One interface layer
* Flow rate: At least 380 (for horizontal structures)
* Flow rate: At least 380 for a layer thickness of 0.4 (for horizontal structures)


; Other
; Other
Line 497: Line 495:


Since skeinforge does not really produce what I want, I'd suggest to produce sort of a normal "fat" raft code, then edit the [[g-code]] file and double up M108 and Fxxx values. Make it twice as fast, else it takes hours to get just the raft printed ....
Since skeinforge does not really produce what I want, I'd suggest to produce sort of a normal "fat" raft code, then edit the [[g-code]] file and double up M108 and Fxxx values. Make it twice as fast, else it takes hours to get just the raft printed ....
; Precision objects
* See the [http://www.thingiverse.com/thing:2608 Hand on duplo-compatible block] example discussed on Thingyverse. E.g. a good quality/print time setting for Skeinforge is:
* Layer Thickness = 0.35
* Clip Over Perimeter Width = 0.15
* Cool Type = Orbit
* Min Layer time = 1
* Extra shells on Base = 2
* Infill perimeter Overlap
* Infill solidity = 0.3
* Solid surface layers = 4
* Jitter = activated
* Temperature = 210 for ALL
* Flow Rate = 250
* Feed Rate = 16


; Printing pauses and recovery from print abortion.
; Printing pauses and recovery from print abortion.

Revision as of 22:14, 30 April 2010

<pageby nominor="false" comments="false"/>

Introduction

Doblo Factory is the name of a set of OpenScad modules we wrote to generate duplo-compatible structures and bricks.

Download: The OpenScad modules and example designs are available on Thingyverse. You will need two things:

  • doblo-factory.x-y.scad - Take the latest version, e.g. doblo-factory-1-2.scad
  • doblo-factory-examples.scad

These modules are based on:

Since OpenScad allows to "union" bricks, it is fairly easy to stack up bricks made from parametric OpenScad modules in order to create larger structures. Since the Doblo factory modules use grid-based positioning and size parameters, they are fairly easy to use for non-programmers. However, you are expected to be familiar with using a formal languages (e.g. HTML or SPSS or a simple scripting languages). See the example section for some module usage code.

See also: Lego Dacta, i.e. an article describing a Lego product line for education.

Usage

The positioning framework

Doblo uses a grid like a chessboard. Origin is in the middle like in most 3D representation languages.

  • Column = left to right (x axis)
  • Row = forward to backward (y axis)
  • up = upwards (z axis)

All blocks, except the doblo block has the origin in the upper left. Since one only uses the doblo block once for the base plate, it has is x,y origin in the middle.

Parameter names used

  • col: the x axis (left-to-right)
  • row: the y axis (forward to backward)
  • up: the z axis (down to up), each block has relative z = 0.. I.e. a block of up=1 would sit on a block of height=1.
  • width: length on the x-axis. Except for the doblo block whose origin is inthe middle, origin is upper left
  • length: length on the y-axis, Except for the doblo block whose origin is in the middle, origin is upper left
  • nibbles_on_off: true = nibbles on top, false = no nibbles

Units

  • Units for columns, rows, with and length: 1 unit = 16mm
  • Units for height: 1 unit = 4.8 mm
  • Units for rotation angles around z-axis: Only 0, 90, 180, 270

Parameters and calibration

Duplo dimensions

According to the german-speaking 1000steine.de forum , retrieved 13:12, 15 April 2010 (UTC), the approximate dimensions of Lego brick are the following (double for Duplo):

Approximate Lego dimensions according to Paddie

Another theory from the same forum thread claims that Legos have been designed in terms of special Lego units, i.e 1/64 inches.

Approximate Lego dimensions according to Chris
Digital Calliper

Finally, I suggest to buy a digital calliper (about 17 Euros) and measure both original bricks and your own bricks.

Doblo factory parameters

To create somewhat DUPLO and Lego-compatible bricks, one does not necessarily use real dimensions. For example, filament-based 3D printers will not produce accurate nibbles if you provide correct data, i.e. printing may be too fat. You will have to compensate by editing the parameters in the *.scad file.

Doblo factory is fully parametrized and you certainly will have to adjust the nibble-related parameters with respect to your type of 3D printer, polymers used, and your print setting like print speed, extrusion speed, layer width, and Perimeter Width over Thickness ratio. See for example the Skeinforge for RapMan article.

Parameters define in principle all dimensions. They are close to DUPLO dimensions but not identical, since the printer will distort things.

Depending on your printer and your layer/thickness printing parameters you may change parameters for nibbles and walls. The figures below are for a V3.1 RapMan with the following print params:

  • Perimeter Width over Thickness (ratio) : 1.8
  • Layer Thickness (mm) : 0.4
  • Flow rate: 440 (44 RPM)
  • Speed: 16

All units are mm.

But check the openscad file you use, I could have made changes.

Dimensions: 
* A typical small 2x2 nibbles on top DUPLO compatible brick with one nibble underneath is
32mm x 32mm x 19.2mm (plus a nibble height of 4.5mm)
* LEGO-compatible bricks are half that size in all three dimensions

*/

// ------------ SCALE 
// For DUPLO-compatibility, use SCALE=1
SCALE = 1;
// this would be Lego-compatible,
// but does not yet work because of ilament thickness problems !
// SCALE = 0.5 

// minimal doblo block dimensions (rounded up)
// Real 2x2 duplo = 31.7 / 2 = 15.85
PART_WIDTH   = 16.0  * SCALE;   
// Real duplo = 19.12 / 2 = 4.78 - roughly, also 19.09, 19.16
PART_HEIGHT  = 4.8 * SCALE ;    

// nibble size definitions
NO           = PART_WIDTH / 2.0;  //nibbleoffset
NBO          = PART_WIDTH ;       // nibble bottom offset, it's in the middle
NH           = 4.5  * SCALE ;     // height of normal nibble, DUPLO is 4.6

// Not totally accurate, but since the printer prints in certain way ...
// Real DUPLO Block = 9.41
// 9.5 -> much too wide, DUPLOS will not fit on top
// 9.1 -> too wide, really tight - but ok with layer -> 0.35 ?
// 9.0 -> too wide, tight - but ok with layer -> 0.3 ?
// 8.9 -> very tight
// 8.8 -> very tight
// 8.6 -> ok with 0.4 layer size and 1.8 flat/up ratio
// 8   -> too small, DUPLOS would float, Legos don't fit
NB_RADIUS        = 8.6 / 2.0  * SCALE; 

// 6.90 = Real DUPLO block
// at 6.8 -> Legos (small ones) will not fit inside
// at 8   -> much too loose
NB_RADIUS_INSIDE = 7.4/2  * SCALE;  

// Bottom nibbles matter less, since with a normal 3D printer one can't print nibbles
// that start higher as in real DUPLO bricks.
// 13.2 = loose on top of a normal DUPLO brick
// 13.6 / 10 = a bit loose on top of a normal DUPLO brick

// Real DUPLO = 13.22 on top - gets wider inside (13.75 and more)
NB_BOTTOM_RADIUS        = 13.7 /2  * SCALE;

// Real DUPLO = 10.73 - but it's not a real circle
// 10.2 = too little, can't fit on tree
NB_BOTTOM_RADIUS_INSIDE = 10.6 / 2 * SCALE;

// ------- Walls and little walls sticking out underneath

// walls - may have to adjust for other filament
// Real DUPLO size = 1.48, but this is not consistent
DOBLOWALL = 1.50 * SCALE;
// Real DUPLO size = 1.7, not consistent	
INSETS    = 1.50 * SCALE; //little inset walls to make it stick

// ------ some derived parameters (leave alone)

// Sizes of a standard 2x2 square brick, normal height
// Not used very much, may be pratical in your custom modules

DOBLOWIDTH  = PART_WIDTH   * 2.0  * SCALE;
DOBLOHEIGHT  = PART_HEIGHT * 4.0  * SCALE;


Using openscad doblo modules

To create your own more complex custom shapes, there are several modules (functions). All of these use the same position system.

Typically, you could either edit the doblo-factory-examples.scad file or create your own file. e.g. to create a standard 2x2 duplo-compatible block with nibbles on top, create a new *.scad file and insert:

 include <doblo-factory-1-2.scad>;
 doblo (0,   0,   0,   2,   2,     4,    true);
Doblo factory OpenScad module bricks - top
Doblo factory OpenScad module bricks - bottom

doblo brick

Creates a typical duplo-compatible brick. Typical use is to create a Doblo base on which you then can add other structures. You also can pile up (union) these bricks, but that may lead to a waste of processing time and plastic. Doblo bricks are just like Duplo bricks, however you can make the nibbles on top optional.

Syntax
doblo (col, row, up, width,length,height,nibbles_on_off)

doblo light

Same as above, but with a grid instead of nibbles undederneath. Faster to generate and to print (probably).

Syntax
doblo_light (col, row, up, width,length,height,nibbles_on_off)

Merge STL files

Positions an stl file, you may have to find out by trial and error what z offset to use. Tip: embed the STL into a doblo or a block.

Syntax
merge_stl (file, col, row, stl_z_offset_mm)

Block

Creates a building block for larger structures with x,y,z positioning. A block does not have nibbles underneath and may or may not have nibbles on top. Also could be used to print a base plate.

Syntax
block (col, row, up, width,length,height,nibbles_on_off)

Nibbles

To insert nibbles on some spots of a nibble-less block or an imported STL. For use in larger structures.

Syntax
nibbles (col, row, up, width, length)

Bottom nibbles

To insert underneath an imported STL. Not very usefull I think, I'd rather stick a doblo block to the feet of an imported object.

Syntax
bottom_nibbles (col, row, up, width, length, N_height)

Support triangles

Support triangles are used in larger structures to support a roof.

  • Thickness = 1 doblo width, e.g. = PART_WIDTH.
  • Sometimes you may want rational numbers. E.g. 1.5
  • Height/length proportion is 4.8/4 (i.e. typical Lego proportions).
  • Only use angle arg of 0,90,180,270 !!

WARNING: You may want to have these bricks overlap a bit, e.g. if 2 corners are just touching, the model will be not be "simple" and can't be exported as STL. In other words, make them a bit higher and position a bit off (embed into the block that you will put on the back and embed the back in a side block). See the stronghold example included.

Syntax
support (col,row,up,height,rotation_angle,thickness)

ramp

ramp is the opposite of the support triangle, but with a flatter angle. Can be used to anchor a high and slim block or also to build a real ramp (then you might place 2-4 next to each other.

  • Height/length proportion is 4.8/16 (i.e. typical Lego proportions)

Syntax:

ramp (col,row,up,height,rotation_angle)

Notice: I'll have to add width to this one

Cylinder

cylinder is like a block, but round.

  • Can have nibbles on top.

Syntax:

cyl_block (col, row, up, bottom_r, top_r, height, nibbles_on_off)

Glyph

Is a letter, a number or a special character. This module is based on OpenSCAD Bitmap Fonts Module

Syntax:

glyph (col, row, up, height_mm, char)


Text

Is a text with glyph characters (see above).

Syntax:

text (col, row, up, height_mm, chars, count)

count is the number of letters chars is an array.

Example

text (1, 6, 2, 4, ["T","H","i","N","G","Y"], 6);

Simple mashup blocks

module merge_brick ()

Syntax
merge_brick ()

Allows to create a mashup brick with a duplo-compatible block at the bottom, a "presentation brick" in between and an imported .STL file on top. Not very powerful, but a quick way to create new kinds of Duplo persona for example.

Usage: Edit the first section of the merge_brick module and change the parameters below.

// BASE PLATE PARAMETERS

// 1 = standard doblo with (i.e. 16mm on the x axis)
    doblo_width = 2;           	 

// 1 =  standard 4x4 doblo length (i.e. 16mm on the y axis)
    doblo_length= 2;          

// 1 =   minimal doblo height (i.e. 4.8 mm on the z axis), 4 = typical brick
    doblo_height = 2;          

// true or false - not needed if presentation block is same size
    doblo_nibbles = false;      
    
// STL file PARAMETERS
    
// filename (a string), middle of object should be x,y ~ 0 !!
    stl_file = "duck.stl";     
    
// units are mm - how much move the STL up/down with respect to the presentation block - TRY !
// if the STL sits on z=0 then about half height. Just try until it's ok ;)
    stl_lift = 0;            
                             
// Positioning - moves STL and support block right and forward/backward by columns and rows. 
// pos in N doblo_width/2.  0 = left border of base plate
    STL_col = 0;             
// pos in N doblo_length/2. 0 = upper border of base plate
    STL_row = 0;             
    
// Size of the block underneath the STL
// height of the presentation block in terms of doblo_height, can be 0
    block_height = 3;        
// width of presentation block in N doblo_width, e.g. 2 means 2 nibbles
    block_width = 2;         
// length of presentation block in N doblo_ width, e.g. 2 means 2 nibbles
    block_length = 2;

Examples

A simple brick

A simple 4x4 brick without nibbles (for mashups) and a typical 2x2 brick with nibbles commented out

// define a module if you like
module doblo_brick ()
{
    //    (col, row, up, width,length,height,nibbles_on_off) 
    doblo (0,   0,   0,   4,   4,     3,    false);
 // doblo (0,   0,   0,   2,   2,     4,    true);
}

// Call the module
doblo_brick ();

Doblo structure - A stronghold

The following structure was my first creation and it did have some design flaws. But it did print.

Strong-hold in progress

But it did print:

Stronghold printed

See the happy Duplo persons !

Happy duplo persona enjoying their new home
Module name
stronghold ()

Below is a revised design which I didn't print yet. It's included in the doblo-factory-1.scad file.

Stronghold - version 2 as seen in Netfab

The code is fairly complex, because we needed some support triangles. These should be replaced by pillars some day ...

module stronghold ()
{
    union()
	{
	    //    Base plate, for faster printing replace by block
	    //    (col, row, up, width,length,height,nibbles_on_off) 
	    // doblo (-5,  -5,   0,  10,   10,    1,     false);
	    doblo_light (-6,  -6,   0,  12,   12,    1,     false);

	    //      (col, row, up, width, length)
	    nibbles (3,   -6,   1,  3,     3      );
	    nibbles (1,   3,   1,  5,     3      );
	    nibbles (-6,  3,   1,  3,     3      );
            //    (col, row, up, width,length,height,nibbles_on_off) - blocks
            //    (col, row, up, height,degrees) - ramps    
	    // back

	    ramp  (-5,  -5,   1,  2,   0);
	    block (-5,  -5,   1,  1,   1,    12,     false);	    

	    ramp  (-3,  -5,   1,  2,   0);
	    ramp  (-3,  -5,   1,  2,   180);
	    block (-3,  -5,   1,  1,   1,    12,     false);	    

	    ramp  (-1,  -5,   1,  2,   0);
	    ramp  (-1,  -5,   1,  2,   180);
	    block (-1,  -5,   1,  1,   1,    12,     false);	    

	    ramp  (1,  -5,   1,  2,   180);
	    block (1,  -5,   1,  1,   1,    12,     false);	    
	    // left
	    block (-5,  -3,   1,  1,   1,    22,     false);
	    block (-5,  -1,   1,  1,   1,    22,     false);
	    // front
	    ramp  (-5,  1,   1,  2,   0);
	    block (-5,  1,   1,  1,   1,    12,     false);	    

	    ramp  (-3,  1,   1,  2,   0);
	    ramp  (-3,  1,   1,  2,   180);
	    block (-3,  1,   1,  1,   1,    12,     false);	    

	    ramp  (-1,  1,   1,  2,   0);
	    ramp  (-1,  1,   1,  2,   180);
	    block (-1,  1,   1,  1,   1,    12,     false);	    

	    ramp  (1,  1,   1,  2,   180);
	    block (1,  1,   1,  1,   1,    12,     false);	    
	    // right
	    // block (0,  -4,   1,  1,   3,    8,     false);
	    // big arc
            //      (col, row, up, height,degrees) 
	    support (-5, -5,   9,   14,   270, 1) ;
	    support (-4.1,  -5,  21,  2.2,  0, 7);
	    support (-3.9,  -5,  21,  2.2,   180, 7);

	    support (-3, -5,   9,   14,   270, 1) ;
	    support (-2.1,  -5,  21,  2.2,  0, 7);
	    support (-1.9,  -5,  21,  2.2,   180, 7);

	    support (-1, -5,   9,   14,   270, 1) ;
	    support (-0.1,  -5,  21,  2.2,  0, 7);
	    support (0.1,  -5,  21,  2.2,   180, 7);

	    support (1,  -5,   9,   14,   270, 1) ;
	    
	    support (-5, 1,   9,   14,   90, 1) ;

	    support (-3, 1,   9,   14,   90, 1) ;

	    support (-1, 1,   9,   14,   90, 1) ;

	    support (1,  1,   9,   14,   90, 1) ;
	    
	    // Roof
            //    (col, row, up, width,length,height,nibbles_on_off) 
	    block   (-5,  -5,   23,  7,   7,    1,     false);
	    nibbles (-3,  -3,   24,  3,   3);

	    block (-5,  -5,   24,  7,   1,    4,     false);
	    nibbles (-4,  -5,   28,  5,   1);

	    block (-5,  1,   24,  7,   1,    4,     false);
	    nibbles (-5,  -4,   28,  1,   5);

	    block (-5,  -4,   24,  1,   5,    4,     false);
	    nibbles (-4,  1,   28,  5,   1);

	    block (1,  -4,   24,  1,   5,    4,     false);
	    nibbles (1,  -4,   28,  1,   5);
	    //          (col, row, up, bottom_r, top_r, height, nibbles_on_off) 
	    cyl_block   (-6,   -6,  1,  2,       2,     32,   true) ;
	    cyl_block   (1,   -6,  1,  2,       2,     32,   true) ;
	    cyl_block   (-6,   1,  1,  2,       2,     32,   true) ;
	    cyl_block   (1,   1,  1,  2,       2,     32,   true) ;
	}
}

To use this "as is", just uncomment the following line in the doblo-factory-examples.scad file:

// stronghold ();

Some mashups

In the following picture you can see two kinds of mashups:

  • Larger STL models put on top of bricks. I actually did these with Meshlab before I learnt how to use OpenScad.
  • Doblo bricks with webdings on top. Produced with either OpenScad alone or with Netfabb Studio. The basic version of Netfabb does have a 3D text. The pro version can directly export a mashup. Users of Netfabb Studio basic should also use either OpenScad or Meshlab for merging.
Some Doblo bricks (Duplo compatible). Various Skeinforge settings, some bad

Printing

We shall discuss some skeinforge printing settings for the RapMan below. You may consult the Skeinforge for RapMan to understand these. Also, Netfabb engine for RapMan will be able to print high quality DUPLOs in some near future. The current 4.5.1 Beta version cannot correctly print the overhangs of the Duplo tops yet - Daniel K. Schneider 20:14, 30 April 2010 (UTC).

  • Try small objects first, e.g. a 3x3x3 doblo brick with PLA or a 2x2x3 block with ABS. ABS warps !
Calibration

We used the following setup for larger structures

  • Layer Thickness (mm) : 0.4
  • Perimeter Width over Thickness (ratio), i.e. how wide the filament should be compared to it´s height: 1.8
Fill
  • Fill of 0.1 should be ok (I tested with 0.05)
PLA
  • Use PLA on large objects to prevent warping (Notice: I should create a version of the bricks with big holes in the side walls for ABS printing)
  • Temperature: 210 (all) and Fan on
  • Raft: One interface layer
  • Flow rate: At least 380 for a layer thickness of 0.4 (for horizontal structures)
Other
  • Solid Surface Thickness for both ABS and PLA: 4
ABS

Since skeinforge does not really produce what I want, I'd suggest to produce sort of a normal "fat" raft code, then edit the g-code file and double up M108 and Fxxx values. Make it twice as fast, else it takes hours to get just the raft printed ....

Precision objects
  • See the Hand on duplo-compatible block example discussed on Thingyverse. E.g. a good quality/print time setting for Skeinforge is:
  • Layer Thickness = 0.35
  • Clip Over Perimeter Width = 0.15
  • Cool Type = Orbit
  • Min Layer time = 1
  • Extra shells on Base = 2
  • Infill perimeter Overlap
  • Infill solidity = 0.3
  • Solid surface layers = 4
  • Jitter = activated
  • Temperature = 210 for ALL
  • Flow Rate = 250
  • Feed Rate = 16
Printing pauses and recovery from print abortion.

A larger structure like the stronghold takes over 24 hours to print. If you use PLA, it's ok to interrupt (hit the ESC key) while you sleep or do other stuff. I don't know about ABS.

However, if you encounter a card read error or a filament problem after 20 hours of printing, frustration can be high ! In the g-code article, we described how we managed to recover. It's not so easy, but certainly less painful than to restart.

Educational use

(will be completed later, probably as a separate piece - 14:33, 13 April 2010 (UTC) ....)

Design of constructivist play kits

One of our goals is create a kit that allows the creation of 3D duplo-compatible "play" boards for various purposes from Kindergarten to Master level.

“In the LEGO System, complex cause-and-effect relationships can be built from the ground up by the relatively simple act of combining individual elements” (Ackerman et al. 2009: 76). While ready-made playmobil-like boards to not necessarily favor creativity, building such boards does. LEGO (ibid:77) argues that the benefits of playing with LEGO Systems are: Curiosity (bricks encourage exploration naturally), courage (one can take risks and make mistakes), exploration and investigation (Lego has an easy start, but can reach high levels), experimentation (change and fiddle), imagination (infinite combinations), reason and discipoline (uses a fixed logical structure), sociability (can be shared) and reflection (builders can step back and evaluate).

The same paper (p. 81)also argues that the system will support systematic creativity:

  • Preparation (problems that arrise curiosity)
  • Incubation (ideas being generated and unlocked)
  • Insight (thing falls in place and construction can begin)
  • Evaluation (decide if the insight is worth pursuing and may lead to "hard fun")
  • Elaboration (create the final form)

“The LEGO System is a system to think with. It encourages the process of making and reflecting, then making and reflecting again, in a thoughtful circuit of activity. In LEGO Serious Play participants are encouraged to build quickly and spontaneously, but then to take a step back and consider what they have made, and then review and change it as they see fit, with multiple iterations of individual and the collective activity. This build-then-reflect approach is really just one of the standard ways of using LEGO bricks which people naturally adopt.”

Teacher and educational technologists training

In a fall 2010, class we will work with a small group of students to create both half-baked play platforms that leave enough space for thinking and new kinds of little blocks to support some classes of pedagogical scenarios. - 14:12, 13 April 2010 (UTC).

A few notes on childhood learning

Ackerman, in an interview (retrieved 11:22, 13 April 2010 (UTC)) states that “LEGO provides a unique building system that encourages children to give form, or expression, to their wildest ideas in the most rigorous ways (hard fun)! Two things I enjoy most about LEGO: 1) the system offers endless possibilities. Yet, at the same time, not anything goes! The bricks have a mind [or logic] of their own, that the child learns to compose with to achieve their creations; 2) the system grows with the child, thus allowing the children to grow with it. As a constructivist at heart, I like play materials that let you in at different levels, and you can add complexity at will (low floor, high ceiling). Most children love to build things, and then bring them to life through play – or for real by adding special bricks, such as a motor, a light, or even a sensor.”

“Systems are crucial for creativity. Systems of science channel creativity towards asking specific questions, and solving or problems as in maths, chemistry and engineering. Systems of art channel creativity into many different and unique expressions, giving form to our imagination, feelings and identities, as in painting, music and sculpture. LEGO offers a unique—and widely recognized—system capable of channelling both, simultaneously. With LEGO you can bridge a stream, or transport an apple from A to B (scientific creativity) or build a fantasy creature, spaceship or landscape; or create metaphorical arrangements to evoke, project and represent feelings or identities (artistic creativity).” (Defining Systematic Creativity, retrieved 11:22, 13 April 2010 (UTC)).

Frans Orsted Andersen (2004) also argues that high PISA performances of the Danish Schools can be partly explained by the fact the learners more often encounter flow through "optimal learning environments". Scandinavian education is based on the three child i'es:

  • initiative
  • independence
  • intrinsic motivation (which in turn is part-of flow). “Being able to base the learning processes on high levels of pupil

intrinsic motivation through a special teaching model enhancing flow experiences - indeed seems to be the key to understanding the successful optimal learning environments of the sampled Danish schools in this study.” ([Anderson, 2004: 14).

In addition to using such bricks and systems in normal schools and at home, DUPLOs and other construction kits seem to popular in special education (refs. needed).

Adult learning

Another potential avenue for the doblo factory comes from so-called simulation and gaming. Some adult gaming environments only use physical support, others rely entirely on computer-support and, finally, others on mixed support.

Our aim is to procude visual, mostly 2D, iconic languages to support various kinds of project-oriented learning.

CAD/CAM, 3D and CS education

  • Introduction to 3D graphics and design (learn about positions) and simple use of OpenSCAD
  • "End-user 3D programming" environment (e.g. students could add other primitives)

Bugs, to do

Bugs
  • cyl_block nibbles can't handle top_r < 2 and rational numbers
Needed
  • a pillar with both supports for bottom and top (i.e. 2x4 directions)
Improvements
  • replace support modules by triangle_forward, triangle_right, etc.
  • Parametrize all numbers
  • Make it also Lego compatible
Adjustments
  • make the nibbles underneath a bit fatter maybe
  • Figure out the best skeinforge settings for ABS and PLA

Links

Credits for the OpenScad code

OpenScad
End-user programming / microworlds
Lego
What's the relationship between playing with Lego and creation of Google ?

Bibliography

  • Ackermann Edith; David Gauntlett and Cecilia Weckstrom (2009). Defining Systematic Creativity, LEGO Learning Institute, Summary, PDF download
  • Andersen, Frans Ørsted (2004), Optimal Learning Environments at Danish Primary Schools, LEGO Learning Institute Abstract/PDF download
  • Claxton, Guy (1997). Hare Brain, Tortoise Mind, Fourth Estate, London.
  • Claxton, Guy, What’s the Point of School, One World Publications, Oxford, 2008.
  • Winnicott, D.W. (1989) Playing and Reality. London, New York: Routledge.