About my blog
I am multithreaded, and sometimes the threads get tangled.
- December 2012 (1)
- March 2012 (1)
- December 2011 (1)
- May 2011 (1)
- April 2011 (1)
- March 2011 (1)
- January 2011 (1)
- December 2010 (1)
- October 2010 (2)
- September 2010 (1)
- June 2010 (1)
- May 2010 (1)
- April 2010 (3)
- February 2010 (2)
- November 2009 (2)
- October 2009 (1)
- September 2009 (1)
- August 2009 (2)
- July 2009 (1)
- June 2009 (2)
- May 2009 (1)
- April 2009 (2)
- March 2009 (6)
- February 2009 (5)
- January 2009 (3)
a Studiolab production.
the wind I am enjoying
Posted in April 2010
This is of particular interest to the ITD groups working on the Studiolab brief, but everybody might want to take a look at the Braun Lectron system as it will be featured in the Talk to Me exhibition (longer juicy article here).
(picture grabbed without permission from the Talk to Me site)
Designed by the great Dieter Rams and Jurgen Greubel as an education tool for basic electronics. Every block contains an electronic component, and the blocks connect with magnets. The user was supposed to use the paper patterns as a guide. Of course, all analog electronics. Why don’t we have something like this today? Good looking and effective.
Petri nets are a graphical formal tool to model systems that can be described in terms of activity steps: like legal procedures, industrial processes, recipes and algorithms. State machines and UML can be described as subsets of Petri nets. Industrial designers could use them, because they are general enough for most problems and they provide a blueprint for programming. A good place to start for general information is the Petri Nets World page.
This silly net says that, if you are a human being with a BA, you can enroll in a master program: then you can either go through the graduation process and graduate, or change your mind and become a rock star. Your activities are also fed into a big database somewhere. The model can be made fancier by annotating it with time, for example: so that you can have estimates of how long it takes to graduate etc. or whether it is possible to get stuck somewhere in the process. By the way, this network is also a state machine, something that makes computer scientists very happy.
I recenty looked up a few tools for working with Petri nets. I walked my way down this convenient list page from Petri Nets World, ignored things that looked dead, costed money or would not run on Windows. I was interested in tools that can also deal with time. Here are my notes:
Renew is a big Java application that seems able to do many things. I really don’t like Java, so I installed it with great reluctance. It worked nicely, but then it steadily refused to save anything. This is a bit of a drawback, so I uninstalled it and cursed Java for the hundredth time.
Snakes is a super cool Python library for doing Petri Nets. I was very tempted to start playing with it, just because I like programming in Python, but I decided to be a responsible person for once. It looks very Linuxy.
Tina is the TIme Petri Nets Analyzer. A collection of tools for editing and analyzing and doing very fancy things with Petri Nets. Looks very tasty, maybe will play with it in the future. Explicitly available for Mac, Win and Linux.
Yasper is an entry level tool for playing around with Nets. It is very easy to use and it comes with a manual that also introduces some general modelling concepts. And it is a Dutch product, written in dot net at the TU Eindhoven. I am using it currently, mostly because it is easy to install and kind of friendly.
CPNTools looked very promising, but they want you to obtain a license. The license is free, but I will put up with the tedium only if other tools are not enough.
StpnPlay also looked very promising, but their project page appears to work only with Internet Explorer. Gamestopper for this guy.
Snoopy is also rather friendly and easy to install. I am playing with it currently, and it looks more general that Yasper but still reasonable.
(added on July 21st 2011) WoPeD is visually pleasing, and it seems oriented to colored Petri Nets with fancy extensions like AND transitions.
(added on July 21st 2011) There are also tools that work as plugins of Eclipse. Eclipse is a way of life, a religion, and I am not sure I want to inflict it on myself or my students. Of course writing an Eclipse plugin makes perfect sense to computer scientists, becaus they are already running Eclipse anyway.
After looking at the big list of Petri Nets software I have come to a realization: whenever a computer scientist does not know what to do, he gets together
with a gang of other bigger and smaller computer scientists, some with
PhDs and some not. First they agree on which of the thousand flavors of Petri Nets they like best; then they write a Petri Net tool, or
at least a Petri Net library that understands some subset of PNML. Then they refactor it, add colors, add
extensions, add importers, add exporters and generally speaking add a
kazillion other things to the original beautiful idea. Then they get
bored or finish their PhD, and do something else that nobody has ever
done before, like a raytracing engine or a compiler that can compile all
the compilers that cannot compile themselves.
I realize that, if I wait until all is done before writing it up here, it will simply never happen. Also, the motto of this blog means "a little and frequently" in my hometown dialect: I should heed my own advice.
I have more or less succeeded in subverting the bread machine for my purposes, and I have added temperature control via a PID controller running on an Arduino (I am using the arduino-pid-library). It works, after a fashion, although
- I have not calibrated the NTCR (aka thermistor), so I have no clue about real temperature, only very arbitrary units: room temperature is around 90.
- this thing is sluggish. It takes several seconds before you see any effect from the 500W heater.
- the bread machine has a built-in thermal safety that will melt and cut the power when the vessel overheats. But I have no clue at what temperature this happens, so I feel very nervous whenever it gets a bit hot.
The idea behind this activity is that, ultimately, a bread machine is just a pot surround by a vessel with a heater, plus a stirring device. If you ignore the bread aspect of it, you could do many things with such hardware, ranging from pasta sauces to desserts to rice. But, all the bread machines I know of are not programmable. They have a number of pre-programmed sequences of stirring, heating and cooling, and you are limited to them – I became acutely aware of the issue when playing around with sourdough bread and very long raising times.
Just for fun, here is the temperature graph with the current parameters:
Tick marks on the X axis are at 250 seconds divisions, and the setpoint is at 400. The Y axis is, as I said before, in arbitrary units where 400 is probably around 100 degrees and 1000 is even brandweer bellen (call the fire brigade, please). The PID controller is running with a 1 second duty cycle, and the parameters are
P = 10.0
I = 0
D = 2.0
In the graph above you can see a little overshoot at the beginning, moderate oscillations, a sag at the 4th division when I opened the machine and then recovery. The noise on the pink line is due to sensor noise being amplified by the derivative term – I think. Since I am just driving a heater, the noise is not a reason for concern. You can also see that the temperature never quite reaches the setpoint: this is as expected, because the integral term is zero. I tried to give the integral term a non-zero value, but this gave me big scary overshoots, even with ridiculously small values (I went as low as 10-17 before I gave up.) This is relatively easy to fix by adding a little bias to the setpoint. Since everybody likes graphs, I am including another one with a longer run. Here I am changing the setpoint, as indicated by the orange line.
Tick marks are again at 250 second intervals. The orange line is the setpoint. Somewhere around the 10th division I had to go to teach in Food, Design and Culture (that I keep mixing up with a journal called Food, Culture and Society). Since I don’t trust my hardware or software at all, I cut the power to the heater, but did not stop the PID, who tried desperately to do its job without any control authority. The temperature decays beautifully along what looks very much like an exponential. I am not publishing any pictures of the hardware because it both very simple and very messy. Just wires and loose components, not even a breadboard.
(I realize that any Industrial Design Engineering bachelor student can build and tune PID controllers in his sleep, but I did not study at TUDelft. Heck, I did not even know about the very existence of control theory until five years ago).
The temperature "program" here was just a switch statement inside an Arduino program, but in the future I will make it much more generic.
The next steps are: building a programming interface, so I can load my own sequences of activities and doing a workshop with food-obsessed people here in Delft. I trust that they will provide me with brilliant ideas on what to do with my toy. Publish the design (HW/SW) so that other people can play with it. And write a brilliant paper about it all. Maybe I will claim that it is action research, who knows.
In other news, ITD is going strong, and so are UTAR and Food, Design and Culture. Two papers are making their way through the review process, I am trying to get funding, together with Aadjan et al., for a startup (this sounds unnecessarily grand), there may be an exhibition project happening in Qatar this summer and of course my lovely and wonderful graduations students are progressing. Some of them will even graduate soon! There is indeed light at the end of the tunnel. I am also wondering if Petri Nets are an appropriate representation for recipes – this makes it difficult for me not to start playing around with a wonderful Python library for doing all things Petri. It is called, appropriately Snakes.
In other other news, I am currently in Romania on vacation. Will be back in Delft next week, right on time for the flavorful, exciting ending of Food, Design and Culture. I will be bringing back a typical Romanian product called ţuica: it is colorless, it smells good and it can knock you under the table with no effort at all.