Programming

Minor Software

Minor Software

Project details

Project type:
ECTS:
Time:
Client:
Nature:
Keywords:

 

 

 

 

Minor
30
2016/2017
TU Delft
Individual & Group
AI, Bayesian network, C#, Evolutionary algorithms, Genetic algorithm, Java, Neural network, Object-oriented programming, Scrum & Unity

Project type:
ECTS:
Time:
Client:
Nature:
Keywords:

Minor
30
2016/2017
TU Delft
Individual & Group Project
AI, Bayesian network, C#, Evolutionary algorithms, Genetic algorithm, Java, Neural network, Object-oriented programming, Scrum & Unity

Summary

During my bachelors, I did my minor in software at the TU Delft. During this, I followed several courses in computer science and did a project within the minor where we had to apply our knowledge and create a game in Unity. During this time I learned how to program in Java and C# using the Object-Oriented programming paradigm. I also took a course on computational intelligence where I learned the basic of artificial intelligence, Bayesian networks, evolutionary algorithms and neural network. During the game project, I led our multidisciplinary team and learned how to work using Scrum.

Courses

During my minor, I took several computer science courses. During my course in object-oriented programming (OOP), I learned how to program in Java and how to program in an object-oriented way. During my course on computational intelligence, I learned the foundation of AI in general and we learned how to apply three types of AI, Bayesian networks, evolutionary algorithms and neural networks. The neural networks were created inside of MATLAB and compared to the build-in tool in MATLAB. The evolutionary algorithms were programmed using Java.

Game Project

During the second half of the minor, we had a project where we had to apply our knowledge by creating a video game in Unity. This was a group project consisting of 6 members from the minor, each from a different study of the TU delft. During this project, my main responsibility was to lead the group in successfully creating a game. To do so we utilised Scrum and I learned how to be the scrum master. Next to being the scrum master, I helped out with the game design, game UI and game Graphics. I also programmed an evolutionary algorithm into our game which made created a dynamic difficulty with the enemies adapting to the playstyle of the player.

Interactive Technology Design

Interactive Technology Design

Creating Interactive prototypes for future scenario making.

Project details

Project type:
ECTS:
Time:
Client:
Nature:
Keywords:

 

 

Master Course
9
2018
TU Delft
Group Project
Arduino, C++, Product design, Programming, Prototyping, Max MSP, UI, User testing & UX

Project type:
ECTS:
Time:
Client:
Nature:
Keywords:

Master Course
9
2018
TU Delft
Group Project
Arduino, C++, Product design, Programming, Prototyping, Max MSP, UI, User testing & UX

Summary

During Interactive Technology Design (ITD) we were asked to create interactive prototypes that are a form of design fiction. The assignment was to create a future scenario for the year 2050 and design an product & experience. The future scenario was created by extrapolating current trends. The product and experience should help the participants immerse themselves into our future sceneario. The experience and product should provoke the participatns to critically think about the possible future and the current trends in the world. During this course, I mainly focused on programming and creating the interactive prototypes.

Process

During the course, we went through an interactive process and created serval prototypes differing in size and extensiveness. Below three different prototypes will be highlighted each getting more extensitve.

AR experience

An early future scenary we had was a world filled with smog. In this world we envisioned a protoble device that could help clean this smok. To communicate this world to our participants I created an AR app in Unity. This app runs on android and untilised android ARCore. The phone is put into a cardboard ar headset and shows the participants what they would normaly see but with smog placed in the world around them.

Shopping experience I

One of the bigger and more extensive experiences we created was shopping experience. During this exprience you first have to recycle something before your allowed. This experienced was guided by a compute voice.

Shopping Experience II

The second shopping experience we created was related shopping clothes and possible risk poor quality clothes could have on your skin. This experience was even more extensive. Participants had to go through several steps, anwsering very personal questions and scanning their hand. All for the product to determine what kind of clothing would be the least harmfull for their skin.

Overall learnings

Within this course, I learned how to make quick and interactive prototypes utilising several tools but mainly Arduino. These prototypes grew in complexity, both in terms of electronics and interaction. This forced me to be more structural in my programming and pushed me to learn how to use Objetc Oriented Programming in arduino by using libraries.

Improving the Intelligence of a Roomba

Improving a Roomba

Desining and programming a more inteligent Roomba using Machine learning.

Project details

Project type:
ECTS:
Time:
Client:
Nature:
Keywords:

 

 

Elective
3
2018/2019
TU Delft
Group Project
A* pathfinding, AI, Data, Genetic algorithm, Programming & Traveling Salesman Problem

Project type:
ECTS:
Time:
Client:
Nature:
Keywords:

Elective
3
2018/2019
TU Delft
Group Project
A* pathfinding, AI, Data, Genetic algorithm, Programming & Traveling Salesman Problem

Summary

The goal of this elective was to analyse the functionality and intelligence of a basic Roomba and to then redesign and improve this. To do so we modelled the behaviour inside of MATLAB. We then used this to create simulation inside of matlab to generated datasets of the Roomba. They consisted of data of the location of the roomba, and the amount of dirt it collected on each location. After collecting the data we split up. My groupmenbers set out to use these data sets as input for machine learning to generate maps of a room with hotspots of dirt. I then used their maps to generate an effictient route for the roomba to take inbetween each dirt hotspot. This allowed to roomba to more efficiently clean the room.

Understanding the Roomba

At the beginning of the project the goal was to understand the roomba and create a simulation of the roomba inside of matlab. To do so we learned the basic of simulink, simscape and control logic. We also played around and tried different contorl logics for the roomba. Next to simulation we also trested how the actual roomba collectects data. Here we did an expirement gathering the position and dirt data from the Roomba. Using the simulations we created data sets of the roomba running in the room and colecting data on the location of the room and the amount of dirt on each location

Optimizing

Having generated the data we set out to optimize the Roomba. To do so we wanted to create a map of how the room looks, what hotspots of the dirt are and how they changed throughout the week. With that map, we wanted to create an optimal route for the Roomba to run sometimes to only clean the hotspots of dirt and do a full clear of the room once a week. Making the Roomba overall more efficient and effective. 
To do so we split up the work, my group mates set out to create the maps using classification learning, fitting neural networks and time series neural networks. I set out to generate the optimal path for the Roomba to take through a certain room.

A* search algorithm

As a first step towards creating an optimal path through a room was to determine the quickest path between each spot. To do so I implementen an A* search alogrithm in MATLAB. Then I let it run and determine the shortest path inbetween each hotspot of dirt.

Genetic Algorithm

Having generated data on the distance between each point, the optimal order of points to visit needed to be determined, the travelling salesman problem. To attack this problem I programmed a genetic algorithm inside of MATLAB and let it run to generate the optimal path between all the points.

Disco Wheelchair

Disco Wheelchair

Designing a wheelchair that is the centre of attention at a party by connecting the wheelchair to the music and lights.

Project details

Project type:
ECTS:
Time:
Client:
Nature:
Link:
Keywords:

 

Elective
3
2019
TU Delft
Group Project
GitHub
AI, Data, Programming & Prototyping

Project type:
ECTS:
Time:
Client:
Nature:
Link:
Keywords:

Elective
3
2019
TU Delft
Group Project
GitHub
AI, Data, Programming & Prototyping

Summary

The goal of this elective was to create a working prototype of an IoT product. As a product, we were given a wheelchair. We specified this to a wheelchair that allows children to become the centre of the party. We envisioned a wheelchair which could control the music similarly to how a DJ could control the music. In this project, we created a working prototype of a wheelchair which could pause, play and skip tracks, adjust the play speed, and high and low pass filters. The input for these controls is based on gestures and postures. For the gestures a adafruit gesture sensor was used. For the postures, several pressure sensors (FSR) were used. The presure from each sensor was used as input for a classifiaction algorithm created through machine learning.

Sensors, Actuators & Controllers

At the centre of the electronics in the wheelchair lays an Arduino mega and a Raspberry pi. The Arduino is a microcontroller and is the interface between all the sensors and the LED strip. The Raspberry Pi is a single-board computer and is used for the more computational intensive processes such as playing and adjusting music and running the classification algorithm. Connected to Arduino are a led strip and all the sensors: a microphone, a  proximity sensor, a gesture sensor and 4 pressure sensors. Connected to the Raspberry Pi is a speaker.

The music

To play and manipulate the music we used Pure Data on the Raspberry Pi. Pure Data is a visual open-source programming language for multimedia. It gives us basic music controls, such as pause, play, forwards and backwards but also more advanced such as speeding up or slowing down the music and adding low and high pass filters.  Pure Data receives its command to apply these controls through TCP communication from a python script that is also running on the Rapsberry Pi. This python script gets input form the adruino through the serial port uses this to determine what commands to send to Pure Data.

Proximity sensor

The proximity sensor is a SHARP 2Y0A02 and is used to determine whether somebody is close to the wheelchair. It is connected to the Arduino which preforms a bit of processing, translating the voltage values to a distance in cm. The Arduino then sends this data to the Raspberry Pi through the serial port. On the Raspberry Pi, the python script reads the serial port and uses the values to determine if sombody is close to the wheelchair. If that is the case is passes a command to Pure Data using TCP to add an sample on top of the music that is already playing.

Gesture sensor

To detect gestures the Adafruit APDS9960 is used. It is connected to the arduino and uses a library provided by adafruit. This library procces the input from the senors and classifies this into 4 gestures, up, down, left and right. These were then communicated to the raspberry through the serial port and passed along to Pure Data through TCP.

Pressure sensor

To determine the posture of the person sitting in the wheelchair, four pressures sensors were added to the sitting and back surface of the wheelchair. Each sensor is connected to the Arduino which passes the values along to the Raspberry Pi. On the Raspberry Pi, it passes the values to a trained classification algorithm determining the posture the person is currently sitting. The output of this algorithm is them again communicated to Pure Data to apply the appropriate commands.

Lights

To add ad bit of extra flair to the wheelchair we also added an LED strip. To control this strip we used a Sparkfun sound detector. This allowed us to detect the beat and use this to match it to the output of the LED strip, creating a disco like effect where the music and the lights are in sync.

Demonstration

Graduation Project

The making of a smart pillow

Designing an object with intent through a data-enabled design process

Project details

Project type:
ECT:
Time:
Client:
Nature:
Grade:
Links:

Keywords:

 

 

 

Master Graduation
30
2019/2020
TU Delft
Individual Project
9.0
Tudelft repository, Dutch Design week
Co-Creation, Data visualisation, Desk research, Interviews, Product design, Programming, Prototyping, User observations & UX

Project type:
ECT:
Time:
Client:
Nature:
Grade:
Links:

Keywords:

Master Graduation
30
2019/2020
TU Delft
Individual Project
9.0
Tudelft repository, Dutch Design week
Co-Creation, Data visualisation, Desk research, Interviews, Product design, Programming, Prototyping, User observations & UX

Summary

For my graduation, I did research on designing intelligent artefacts, their interactions and how data could be used in the process. This was done in the context of leisure in the living room. The result of this was a smart pillow that could actively provide comfort to users through hugging and by helping them to avoid slouching. The pillow prototype could sense the pressure applied on it, how it is positioned in space, and how warm it is. To get to this result traditional methods, such as user observations, interviews, tests, prototyping, desk research and co-creation, were used and sensor data was integrated into them. This was done by visualising the data and connecting it to the behaviour and experience of participants. The visualisation that proved most valuable in this is one were the pillow was recreated digitally and had the sensor data projected on it. This created something similar to a digital twin. By placing a video from the user next to it, the direct relationship between the usage and data could be seen. This allowed data to be used as a creative material and sparked a constant back and forth between data and usage. Based on this and other insights the interaction with the pillow was designed. 

Process

The goal of this project was to research on the design of intelligent artefacts, their interactions and how data could be used in the process. To do this I used leisure in the living room as a case study. The project consisted of four phases, context exploration, concept development, perspective and finally concept design. During each phase, I utilised three types of data, machine data, behavioural data and subjective data. Each provided a unique perspective and more insights were found at the intersections between data.

Types of data

Context Exploration

Couch equipped with sensors

During the first phase, the goal was to thoroughly understand how people relaxed in the context of a living room. To do so, a user test was set up where users were asked to relax inside a living room for an hour. During this time their behaviour was recorded and observed. Afterwards, they were interviews about their time and their daily lives with regards to relaxation. As an additional layer, pressure sensors were placed on the couch and covered with a blanket. This provided an additional perspective on their behaviour.

Afterwards, the data from the user test processed and analysed. For the interview, this meant transcribing the test and using ATLAS.ti to select and categorize quotes. Then these were analysed both inside of ATLAS.it and on paper. From here a model was created about their behaviour. The behavioural data was processed by labelling specific behaviours and visualising when they took place. The data from the sensors were placed on top of this to compare the two.

The results of these three types of data were compared to psychology research. Most noteworthy was the paper of Newman et al (2013), leisure and subjective well-being: a model of psychological mechanisms as mediating factors. To help me put the psychology research and my own research into perspective and formulate a clear design goal I organised a creative facilitated session. The session was let by a peer and was done in collaboration with students and users. Based on the performed research the following design goal was formulated.

Design Goal

I want to increase people’s subjective well-being during leisure after work by improving the quality of recovery-detachment and enforcing them to take control of how long they recover-detach.

Concept Development

As a first step in the second phase, a rough storyboard was created. This was done to translate the design goal into a situation and possible interaction. (1) The product should detect the presence of the person in the room or on the couch. (2) The product should then invite the person to use the product. (3) Based on the input of the user, a timer for how long the user wished to relax should be set. (4) The product should then support the relaxation of the user. (5) When the time is over the product should stimulate the person to leave the couch and stop recovering.

Based upon doing field research and the previous phase it was found that a pillow would be the most fitting product to transform into a smart object that can improve people’s time on the couch.  On the image below, the different stages of creating the shape and a prototype of a pillow are shown. The pillow is shaped to allow it to be used and comfortable in a wide variety of different postures. This was done because during the first user test it was found that people naturally and regularly switched there sitting positions. The pillow aims to provide comfort is as many of the postures found in the user test.

Final prototype
Electronics

Next to designing the shape of the pillow, the first part of its intelligence was also designed, its senses. The goal of these senses was for the pillow to be able to “see” how it’s being used. To do so, the temperature, the orientation and the pressure were being measured. The temperature and orientation sensors were bought and the pressure sensors were made. They were placed inside the pillow and together they were able to collect data about its usage and sent this data to a server.

Perspective Discovery

The goal of the thirds phase was to understand the perspective of the user and of the product. To get this understanding, that data-enabled prototype was used during a user test. This test consisted of three parts, usage of the pillow, interview about the usage and co-creation about the further development of the pillow. The data from this test was then processed into visuals to enable analysis. To do so, the machined data was first put into excel and get an initial image of what the data looked like.

Pressure sensor data in excel

The Excel graph, however, did not provide many insights. Therefore I looked for a better, more inspiring way to visualise the sensors data. I landed on creating digital twin that represented the pillow in real life. To create this digital representation blender was used. First, the model was created, afterwards, the data from the server was used as input for an animation.

Creating a 3d model in blender

This animation was then put next to a video of the observation to link the two together. Some interesting behaviours were compiled into a video. This video was then used to analyse the data gathered from the user test which was then used as an input for further designing the product.

Concept Design

Final design drawing

During the fourth phase, the concept of the pillow was further designed. During this procces the visualisation from the previous phase was used continously. First the shape of the pillow was redesigned. The inner, ergonomic, shape was kept but the outer shape was changed to look more like a throw pillow.

Secondly, the pillow was given actuators to allow it interact with the world around it. The first actuator that was added was a conductive fabric. This fabric heats up as a current is applied to it. This allows the pillow to provide the user with extra warmth. Secondly air pockets are added to the pillow. This allows the pillow to encapsulate and hug the user. It also provides the pillow with way to communcate with the user. For instance by activating all air pockets for a short burst the pillow creates discomfort for the user letting the user know their time is up

With the addition of actuators, the interaction with the pillow was further developed. This was done by creating a storyboard. Each drawing in the storyboard consists of 3 parts, the top part shows the situation. In the bottom left part the pillow is displayed, blue shows pressure applied by the user, grey shows air pockets that are activated by the pillow. In the bottom right two graphs can be seen, the top shows the pressure applied by the user over time, the bottom the actuation of the air pockets over time by the pillow.

More Info

For more info, you can view my complete graduation presentation, or read my graduation thesis. If you have any additional questions, feel free to contact me.