20130313 Cubs Talk

From rlab.org.uk
Jump to: navigation, search

Talk to two Cubs groups on consecutive nights.

TL;DR 25 Cubs are UNBELIEVABLY LOUD!!!, Minecraft is stronger then catnip, young minds enquire.

  • Talked about the joy of making things and the importance of understanding how things worked.
  • Showed them the 3D printer and asked them to describe the parts, and speculate how it worked.
  • Started printing and asked them to guess the object.
  • Handed around some 3D objects, some mechanical others decorative. Yoda [1], and a printed Lego/K'nex hybrid brick [2], and especially Woggles [3] were popular.
  • Talked about printing parts for the printer itself, and the TVRRUG.
  • Talked about using 3d printing to prototype the ZSL camera mounts [4].
  • Had a game where they had sit still enough that the camera didn't detect their movement (they found this very challenging).
  • Talked about stereo vision (and the importance of redundancy), and demonstrated a stereoscopic 3d viewer [5].
  • Talked about using off the shelf webcams and cheep Raspberry Pi's rather then expensive custom designs.
  • Showed that the Raspberry Pi was a 'proper' computer that could play Minecraft.
  • Demonstrated how short Python programs could be used to build large buildings in Minecraft.
  • Showed how programs could also effect the real world, hooking up light-bulb and relay to be controlled by a Minecraft torch [6].
  • Showed how Minecraft could be used to create models for 3d printing.
  • Split them into groups getting most to pen+paper draw their design ideas, taking it in turns to realise them within Minecraft.

Having the experienced, and known to the kids, leaders to maintained control was probably the only thing that held of the Lord of the Flies; however once settled I was very impressed with how the young kids managed to concentrate. They remained attentive for an hour, but I wouldn't have wanted to try and push it much longer. The first night I just had them group around, the second night they sat on benches which reduced jostling. I tried to ask them questions and every opportunity and encourage participation, this resulted in lots of good questions. On the second night the kids already knew the scheduled so the first group had obviously reported back, which seemed to validate the exercise.

Minecraft proved the most difficult section to mange. It's nature as a game may have put the kids in the wrong mindset. Whilst they all thought the demonstrations were extremely cool, they didn't want to know how they were done, just how big a pile of Diamond/TNT/Gold I could create. Similarly when trying to construct 3d designs the majority of the groups reverted to mining and creating large piles of TNT. I expect only having one Pi was the main limit here; with the more forceful kids leading the groups astray. Individual computers may have allowed more expression.

The 3d drawing groups saw themselves as 'not playing Minecraft' so participation varied. In the limited time, I did not manage to explain 3D drawing very well. Only a minority of the kids grasped the difference between drawing a 3d shape and a 2d design.

Create a simple building. We then went back and adjusted the dimensions/materials:

import minecraft
import block as b

mc = minecraft.Minecraft.create()

p = mc.player.getPos();
for x in range(20):  # Like Latitude when you are Map reading
 for y in range(10):  # Height
   for z in range(20): # Longitude
     if x == 0 or x == 19 or y == 0 or y == 9 or z == 0 or z == 19: # Only the edges
      mc.setBlock(p.x+x, p.y+y, p.z+z, b.BRICK)

Then the building was too dark so they asked for a torch:


But the is another way to create light:

import serial
s = serial.Serial('/dev/ttyACM0',9600)

on = False
while True:
 np = mc.player.getPos()
 if int(np.x) == int(p.x)+10 and int(np.z) == int(p.z)+10:
  if not(on):
   on = True
  if on:
   on = False

Extract SCAD from Minecraft-pi:

p = mc.player.getPos()
with open('mc.scad','w') as o:
 for x in range(-5,5):
   for y in range(0,5):
    for z in range(-5,5):
     if mc.getBlock(p.x+x, p.y+y, p.z+z) != block.AIR:
      o.write("translate([%d,%d,%d]) cube(1);\n" % (x,z,y))
Personal tools