Friday, May 29, 2009

Contiki tutorial, May 26

On the 26th of May the project organized a Contiki programming tutorial where participants were introduced to the mysteries of sensor network programming. The tutorial was the second in a series of events aiming to build cross disciplinary understanding of the challenges associated with creating supple systems. The tutorial was held by Adam Dunkels from the Networked Embedded Systems (NES) group at SICS. It started with an overview of what sensor networks are, what they are used for, some of the problems associated with developing them, and what Contiki can do to overcome those problems. Contiki is an operating system for networked embedded systems and wireless sensor networks developed by Adam and his colleagues. It is highly efficient and is used in numerous applications and contexts worldwide. Contiki provides solutions to common problems, e.g. short battery life-time, encountered when developing battery powered wireless sensor networks through the use of techniques such as power saving MAC protocols. Based on the somewhat counter intuitive observation that listening for radio transmissions in sensor networks, is more expensive than transmitting radio, power saving MAC protocols can regulate the amount of time that the radio transceiver in sensor nodes spend listening for radio transmissions in clever ways.

Adam's introduction also dispelled a number of other common misconceptions about wireless communication, e.g. that it can be thought of in terms of direct links between nodes, or that transmissions from nodes reach out circularly from the source. Instead the reality of wireless communication is instead non-uniform and non-symmetric. Transmissions do not spread evenly out from the source due to e.g obstacles, nor is it certain that a node that has received a transmission from another node actually has a route back to the sender. For project members that are not familiar with the peculiarities of radio communication those were valuable lessons for the future. Radio communication is definitely an aspect that has to be taken into consideration in the projects future designs. It may even be fruitful to think of radio as a design material in its own right.

After the introduction we moved on to a hands on session where we installed the instant-contiki development environment and stepped through some examples illustrating how to program sensor nodes using contiki. In particular we focused on how to make nodes talk to each other using unicast, broadcast, and mesh communication. This all turned out to be easy enough and could be accomplished with just a few lines of code. By the end of the tutorial we had all gone through several examples and learnt enough to be able to take our first solo steps in the land of wireless sensor networks and embedded systems programming.

Overall participants were surprised that using contiki was as easy as it was. They shouldn't be, as one of the design goals of contiki is to demystify the process of programming wireless sensor networks, allowing developers to use the same languages, tools, and constructs that they are used to. When developing prototypes in the supple project working with contiki will definitely make our lives easier.

Installing instant-contiki on OS X

During the Contiki tutorial we used Instant Contiki a development environment that contains all tools that are required to compile and run Contiki, packaged as a VMWare Virtual Machine image. Using the free VMWare Player PC users can boot the Instant Contiki environment (a Ubuntu linux installation with all the necessary tools) and immediately start developing their contiki applications. Currently there is no free VMWare Player for OS X meaning that unless you own a VMWare Fusion licence Mac users will have to look for other options to get the Instant Contiki environment running. In this post we will step through the process of setting up Instant Contiki for Parallels Desktop 4.0 and a future one will show how to set it up for VirtualBox. The former is a commercial application while the latter is a free alternative. Regardless of which VM software you choose your first order of business is to download the Instant Contiki archive from . Once the download is complete unpack the archive in a location of your choice.

Parallels Desktop 4.0

To use the Instant Contiki environment in Parallels all you have to do is to convert the VMWare image to a Paralells image.

To do this start Parallels and run the parallels transporter which can be found under File -> Run Paralells Transporter.

When asked to choose Migration mode stay with the default (express) mode which works fine unless you have specific wishes about how your VM should be configure.

Choose the "Virtual Machine" option in the Migration Source Type dialog.

Choose "Entire virtual machine" unless you only wish to convert a disk image and hook it into an existing virtual machine that you have.

The virtual machine definition that you want to convert is in the "instant-contiki.vmx" file. Browse to the location where you unpacked the Instant Contiki archive and choose it. Continue the conversion process when that is done.

The conversion process will take a few minutes but once it is done you are ready to start Instant Contiki! Your newly converted VM will be added to your list of Virtual Machines. From there you can start it like any other VM you have.

When the VM has booted you have a full linux installation and all necessary Contiki tools available. For more information about how to use those please refer to the Contiki site. Note that the Username/Password for logging on to the linux installation is user/user.

Installing instant-contiki on OS X, part 2

In contrast to Parallels, setting instant contiki up for use with VirtualBox does not require you to convert the virtual machine image. It does however require you to set up a virtual machine that can run it. As for Parallels your first order of business should be to download the instant contiki bundle and unpack it in a location of your choice.


After starting VirtualBox click new to create a virtual machine for your instant contiki environment. In the following step just click next to continue to set up of the VM.

Give your VM a name, here I named it Instant contiki, and set the operating system to Linux and the version to Ubuntu. In the following step stay with the suggested default value for VM memory (384 MB in my case).

Choose use existing hard disk and click on the folder icon to the right of the drop down box to bring up the virtual media manager.

In the media manager click Add and navigate to the instant-contiki.vmdk file in the directory where you unpacked the instant contiki bundle. Once you are done your new virtual drive should appear in the list. Choose it and click the Select button. This brings you back to the Virtual Hard Disk dialog where you just click next to continue.

Your VM is now configured and you are shown a summary of the settings that you have made. Click Finish to add it to the list of Virtual Machines. From the list you can start your instant contiki VM by selecting it and clicking the start button in the toolbar.

Sometime during the startup process this dialog, which explains how to get your mouse pointer back from the VM, is displayed. By default this is done by pressing the left command button but to avoid frustration be sure to take note of how to do it.

Now you have your instant contiki environment up and running and can start developing software. Note that the username/password for the linux installation is user/user. To learn more about how to use the environment or contiki pleaser refer to the Contiki site.

Tuesday, May 19, 2009

First hardware bootcamp

During May we have planned for a series of events intended to educate partners about challenges within the different disciplines involved in the project. The first of these events is the hardware bootcamp that is actually going to run twice to accommodate all participants. The bootcamp is a four day event - organized by Prof. Mark Smith at Wireless@KTH - during which participants learn circuit board design in a hands-on fashion. Starting with a schematic of the board that they create themselves using the Eagle tool, participants work their way through routing, CAM processing, milling, and finally soldering of their boards.

A board schematic and first stages of routing

Completed routing and milling of a board

Eight participants took part in the first hardware bootcamp, 8 -9 and 11 - 12 May. During these four days Mark did a fantastic job of demystifying the process of creating circuit boards. Evidence of this is that the bootcamp so far boasts a 100% success rate: none of the completed boards has spectacularly burst into flames or even malfunctioned beyond repair! Moreover participants showed a great amount of creativity in designing their boards. Examples include Fredrik Österlind's face shaped board, Annelie Schwanecke's circular one, Claus Weymann's asymmetrically rounded one, and Marcus Lundén's elegantly elongated one.

Fredrik's face shaped board ready to go and Annelie soldering her round board.

The bootcamp was fun, but it was also very informative. After four days particpants without a background in electrical engineering left with a sense of being much better equipped to understand the challenge of designing supple systems from a hardware perspective. Once we start designing our next prototype that understandig will be very important.

Project kick-off 6th of March!

On the 6th of March the project partners came together for a day of activities intended to get the project going. The day was a mix of presentations and hands on experiences of supple systems that the partners had developed or were in the process of developing. In addition we were very pleased to have Associate Professor Katherine Isbister from New York University's Polytechnic Institute with us on the kick-off, to give a talk on What is this thing called suppleness? We also had talks by Adam Dunkels from the Networked and Embedded Systems group at SICS on software related challenges posed by supple systems, by Prof. Mark Smith from Wireless@KTH on hardware related challenges, and by Jarmo Laaksolahti and Prof. Kristina Höök from the Involve group at SICS on design and evaluation related challenges. Last but not least Tove Jaensson and Jakob Tholander from the Mobile Life Centre presented some background and ideas for future work on a system called FriendSense.

In between talks there were two sessions where participants had a chance to get some hands on experience of supple systems such as Affective Health and FriendSense.

The Affective Health System
The affective health system

We also had the opportunity to experience some of Katherine Isbister's supple game designs for the Nintendo WII console. The Wriggle game, where you wear a knitted cap fitted with a WII controller, was particularly popular. In this game you move your head and body in various ways to control your game character and perform actions within the game. Participants agreed that the experience of playing the game is truly unique and definitely supple.

Two participant's preparing for the Wriggle game!

All in all it was an eventful and interesting day that provided a good starting point for the project.

Monday, May 18, 2009

What is the Designing Supple Systems project about?

This project explores the concept of supple systems and how to design them. A supple system is a device that combines custom-built hardware, sensor technology, and wireless communication, to interact with end-users and create a physical, emotional, and highly involving interaction.

Supple systems rely on subtle signals; rich human communication and interpretation strategies such as emotion, social ritual, nonverbal communication, and kinesthetic engagement; and emergent dynamics, to provide engaging moment-to-moment experiences. There are two main factors driving the evolution of supple systems. One is the rapid growth of leisure and entertainment use of technologies and the other is the commercial availability of sensor technology for tracking human expression which has lead to an increasing number of systems attempting to use such technology to provide compelling experiences. Successful examples of existing supple systems include the Nintendo WII and Apples iPhone. Designing and building supple systems is challenging because it is an unfamiliar “material” for interaction designers but also because it requires a wide range of competencies. The quality of an experience arises in interaction between users and systems. This interaction is in turn affected by a systems hardware as well as its software, and how well they work together. Even seemingly simple artefacts, such as pulse-meters, require holistic design of specialized hardware, specialized software, and specialized user interfaces to be successful. Each factor is equally important: a problem concerning any one of them can ruin an otherwise great experience.

In this project, we aim to develop a process for rapid, integrated, development of supple systems. We will focus our efforts on building so-called life-style applications, mobile systems that are tightly integrated into our every-day lives, as their often advanced use of technology highlights the challenges for future applications of supple systems – be it in factories, vehicles, or applications on our mobile phones. The systems developed within the project will explore new materials, such as fabric or paper, integrated with sensors and wireless technologies.