We are the Robots


On Mondays we have a different class, a lecture called Introduction to Creative Technologies. The first lecture defined creativity from several perspectives and explored the history of creativity. It's interesting to note that creativity has changed from being regarded as something spiritual and outside of people, to a talent that was available to only certain people to something within everyone that is easily taught and brought out. My personal view is (put simply) that everyone is capable of creative thought, but for some people it's much more instinctive. Just like any other talent really. We also received an assignment designed to increase our awareness of creative thinking and practice by critically thinking and reflecting upon events - basically keep a review blog. We can review anything that we can define as an event, be it a concert, an exhibition, a film, a performance, a dining experience... Whatever as long as we can pull it off. At least 8 different things over the next 3 months. You will see the link in the sidebar to this blog/assignment.  The blog itself looks incredibly ugly at the moment, I'll be fixing that in due course...

On Tuesday we started to build on knowledge from our first week with 2 short exercises over 2 days followed by a main project set to continue into the following week. In the morning we were introduced to the concept that all games have rules and every element in the game has a protocol to follow. For example, chess has 6 different pieces each with their own protocol such as a pawn can only move forward. We were to divide into groups of 4 and come up with a new chess piece based on a type of character and work out what characteristics that character has (the example we were given was a "The Politician" who'd always sidestep and go back on their word). From there design protocols for the piece to follow based on those characteristics (The politician for example would side-step and move 2 steps back for every step forward). We'd then draw a diagram of it's movements and present it later in the morning. Our group devised the Terrorist, a character that sneaks around and then blows itself and everyone around it up. The protocol was simple. It could only move in a forward direction, 2 units straight but only one sideways. I'm not entirely sure why the group decided that it could only move forward, but I consider it interesting given an article I read in New Scientist a few years ago about the psychology of a terrorist and the people surrounding one in the days/months leading up to a planned attack. There basically is no going back because of the social pressure and expectation placed upon them (although it really amounts to nothing but manipulation by the superiors).

When an opponent jumped the terrorist a roll of a dice would determine how many immediately surrounding elements (including friendlies) would be taken from the game. I quietly wasn't keen on a terrorist at first (though I didn't speak up), but I thought the translation into an actual game piece was rather well done in some respects, and quite different.

Once we presented the piece, the robots came out. Lego Mindstorms is a lego set (obviously) that also comes with various sensors, 3 actuators (motors), and a controller unit. Hmmm, something familiar about this... It also comes with a visual programming language. When I say visual, I mean that commands are drag and drop blocks on the UI. Very visual, very basic (Not BASIC). Our next task in the same groups was the build a tribot (3 wheels) that replicated the protocols of the chess piece we made. It was also not to bump into all the other robots other teams would be making, tomorrow when we placed them all into the same 2m x 2m square at 10am the next morning. The other three members were very intent on building a lego robot so I decided to get familiar with the programming.

The next morning (Wednesday) the rules had changed slightly but the main idea was for the robots to not bump into each other or they were disqualified. I'm not entirely sure what happened with our robot, it seemed to get caught in a pile up of robots. It had been programmed to stop and manoeuvre around obstacles (at 45 degree angles like the chess piece), but we could not program it to back up as the terrorist cannot go backwards. We could not control robots running into us. Our next challenge, in the same team was to rebuild the robot and program it to find it's way from the outside entrance of the BCT class through the corridor and to the administrator's office where it would knock on the door and deliver a message. Just how we would achieve this was up to us.

The Mindstorms robot comes with an Ultrasonic sensor which detects objects and their distance. This can be used as a crude form of vision. A microphone that detects sound (obviously) and it's volume level. A light sensor, that detects the intensity of the light. That sensor also has a light of it's own shielded from the sensor. It can be used to bounce light off surfaces. It also comes with a push-button switch sensor. There are other sensors available though the Mindstorms website, but that is what is available in the basic package. We could make use of whatever resources were available, and we quickly found a program that used the light sensor to follow a line on the floor, and we reversed one comparison made in the code so that instead of following a black line on a white floor, it would follow a while line on a dark floor (such as BCT's carpet), and we laid paper masking tape down.

There were 3 versions of the same program available to us, each one more complex but faster than the last. We stuck to the basic program because the UI of Mindstorms frankly needs some work. Basics like scroll bars are missing. There is a hand tool, but as yet I'm unaware of the shortcut key to switch quickly between the hand and the selection tool, making navigating large programs clunky. Reverse engineering the most complicated program was out of the question, particularly as the group had a working robot and were weary of improving it and potentially breaking it (I'm a bit more gung ho in my approach to things which is why I find collaboration challenging at times). However, it was nice to have a working robot fairly early in the day, other teams looked like they were struggling a great deal.

Thursday morning at 10am our groups demonstrated our robots. A number of teams had simply programmed coordinates into their robots so that they didn't really sense anything. This tactic relied heavily on the placement of the robot at the beginning and it turned out that traction on the carpet was an inconsistent variable. This was not a successful method. Our team and one other who we shared the code with has robots that tracked the line, and they made it to the end (albeit slowly). But the team that impressed me the most had made use of 2 light sensors on each side of their robot which allowed it to run at full speed slowing only to correct when one sensor hit the line. See our approach had the robot detecting one edge of the line and making minute adjustments to stick to it. Their robot drove in a general direction and only adjusted if it got too off track. They had also made the program themselves. It would have been simpler yet more effective. This quietly annoyed me a little bit as I'd probably have done this myself if left to my own devices. Anyway at least one member in that team was also responsible for the Powerpoint slide show last week that looked really good (and despite being Powerpoint to boot) so we have some pretty smart cookies to watch.

We were then given our assignment. In the same groups - possibly merge with another group - conceptualise, design and create a robot that draws based on sensory input. Drawing does not necessarily mean pen and paper, but I had a bit of difficulty at first grasping what else it could mean. Our group merged with another group and we all decided that it would be best if we went home and came up with ideas to present to one another the following day. Suited me, I had lots of life-admin to do, I cannot wait until things have settled for me on a personal basis (a few weeks off). I struggled with thinking about the mechanics and limitations of the robots, and more of the limitations of the programming language. It has loops and conditions, but as far as I can see it cannot branch out to other parts of the program. I did not have the language installed at home to investigate though and could not find a copy of it on line (I'm pretty sure that its open source and I imagine free as it's the hardware that lego is selling really). But I considered ideas such as a plotter and then perhaps connecting it to a Etch-a-Sketch as that has 2 dials with which to draw.

Friday morning I came in to find our group had detached from the other group but reattached to a different group. oookay... Not entirely sure about the events leading up to that but it was no big deal. Just... odd. A few ideas had been presented, and for the first time I was feeling quite content to be in a group as I felt a bit stumped with ideas at first. One member of our group had considered the use of lasers in some sort of light show which at first I thought it was a bit too performance oriented and too abstract for my liking, but then I saw a Photoshop doodling fall out of another member's visual diary and it was very colourful and there as something inspiring about it for me. Suddenly I realised how one can draw without the use of paint, pencils, felts, pens and 2D media such as paper. In a pretty decent collaboration of thoughts from various members we decided to use 2 robots, one would do the sensing and transmit instructions based on that input to the second robot that would execute the drawing. The drawing would be the use of laser pointers, prisms, mirrors, lights and whatever else we could think of to project an image onto a wall that would then be recorded as both a performance but also as a single piece of art by a still camera set to a continuous long exposure. We could produce potentially beautiful artwork. Both creative, technical and what appealed to me most of all is that it was ambitious. I usually find groups to lack ambition - it was very very pleasant to see a group striving for great goal without worrying about whether it can really be done. Of course it can be done, anything can be done when people stop questioning every single thing. The rise of the personal computer industry was precisely because the people that bought it about were not aware that "it could not be done".

We divided into 2 teams, one building the sensing robot, the other building the robot that executes. The sensing robot is of course a lot easier, and our team of 2 people had it done by midday. The next task is to program it. My feeling is that the sensors should interact with each other in some way mathematically to produce more interesting instructions for the other machine. Of course I have no idea how to do this and while I'm aware of what an algorithm is, I don't have the faintest idea on how to produce one. But I'll learn. The other team have not had as much success yet and current designs are a little bit unsettling so once our team has some code under way perhaps we will rejoin and see if we can also contribute. It is a complex task, especially as we have only 3 motors to control a number of lasers and prisms etc. Perhaps we could try to get a hold of a third robot...