Image of PaRC project

Joe Verbist

My Portfolio

In this cozy corner of the web you will find my personal projects, such as a Portable Raspberry Pi cluster, projects I was involved in at DARE (a student rocketry association), general coding projects, and some academic projects.

Projects

Aerospace

 Member of DARE

   In the first year of my Bachelor I participated in the Delft Aerospace Rocket Engineering (DARE) Small Rocket Project, building the electronics, including telemetry. In the second year, I formally joined DARE as part of the Electronics department. I was part of the Stratos IV project, an attempt to be the first student rocketry team to reach space. Due to corona the launch schedule has been moved to be after my departure.

 Internship at satsearch

   In my first year at the TU Delft, I did an internship at satsearch.There, I wrote a python library to interface with their database, and also wrote a tutorial to show how to use the library to select a thruster for a satellite to perform a Hohmann transfer.
Satsearch is the global marketplace for space-based applications, if you need to design a satellite or satellite subsystem, satsearch.co is the place to look for partners and suppliers.

 Earthquake prediction project

   As part of the 'AE2223 - Test, Analysis and Simulation' course during my bachelor, I was part of a group that was tasked with trying to predict earthquakes using GPS data from base stations in SE Asia. First the data was ingested into Pandas DataFrames, outliers data-points and seasonal variations removed. Then two methods were used to attempt to predict earthquakes: Linear Regression and Recursive Neural Networks. While the first method produced reasonable estimates, the Long-Short Term Memory (LSTM) RNN produced erratic results. The source code for the project is linked below.

 Design Synthesis Exercise

   At the Aerospace faculty of TU Delft, the bachelor end project is called the Design Synthesis Exercise (DSE). It consists of a group of 10 people designing an Aerospace related system in 10 weeks. The DSE group that I was a part of performed the conceptual design of a distributed propulsion bush plane. My main contributions were on the performance analysis and the general optimisation process.

Computational

 Deep Q-Learning Agent Connect-Four

   To explore reinforcement Learning, I built a Deep Q-learning algorithm playing Connect Four. In Python, both the plant and agent were written, using Pytorch for the neural network. Hyperparameter tuning was done on my Raspberry Pi Cluster, using grid search to optimize the time behaviour of the discount factor, the neural network learning rate, and the neural network. Performance quantization was done by placing the agent against a fixed opponent. Initially, I tried to use my Cluster for generation of training data to overcome the instability that comes with self-play, but this procedure needs more work to function properly.

 Solving ODEs with neural networks

   This isa Computation Case study for solving Ordinary Differential equations with neural networks. It provides a brief introduction to neural network, followed by the the general solution structure, and some examples. The report then provides some hyperparameter tuning techniques and an overview of the results.

 Neural network optimization

   For the 'B6.2 Optimization for Data Science' course, taken as part of my Master's program, I investigated the learning process for deep neural networks, from an optimization perspective. The report starts by introducing a classical benchmark problem: MNIST classification and explains how the learning process differs from pure optimization. Then, we start building an appropriate optmization algorithm, starting from steepest descent. After introducing SGD, Nesterov and RMSProp, we explain Adam, and compare the performance of the introduced algorithms.

Electronics

 MarsRover Project

   As part of the 'EE3130TU - Marsrover Project', part of my bachlor minor 'Electronics for Robotics' I am part of a group designing a robot in VHDL. This is a very simple line-tracking robot including extra features such as the ability to take shortcuts. Due to the pandemic, this course was taught fully online, meaning we couldn't flash our VHDL to an FPGA to test it out as in previous years of the course, but we used Matlab Simulink to simulate this.

 Home Heating System

   In an effort to reduce energy consumption at home, and learn about distributed systems, I am building a radiator valve control system. The nodes in this system will have motors connected to radiator valves, which can then be controlled over a network. They will have ESP32 microcontrollers connecting via MQTT to a central server that is also running a Homekit server. The most interesting requirements are that the system needs: 1) a temperature sensor on a wire (which is needed because the radiators have covers), and 2) a manual fallback in case the electronics fail. Two challenges remain at this point: 1) implementing an energy efficient and cost effective way of turning the radiator valves, and 2) creating an intuitive interface that allows the user to input both a schedule, and occasional exceptions.

Modelling

 Modelling the inflation of incompressible hyperelastic shells

   For the 'C5.1 - Solid Mechanics' course, which I took as part of my Master's program, I wrote this investigation into the inflationary behaviour of hyperelastic incompressible shells (read balloons). After a qualitative introduction to balloon instability, it proceeds by deriving models for spherical and cylindrical shells before analysing the resulting governing equations. Only basic knowledge of solid mechanics is assumed. This report has not yet been reviewed, and may be updated later.

 Modelling axonal growth

   This is a Modelling Case study regarding the modelling of axons. After introducing relevantbiological background, we introduce the two main growth theories (shaft and tip growth) and corresponding models. We then combine the governing equations of both models to create a combined model, and finally introduce an extended model that discretely incorporates both growth models. This was a group project with individual report and extension.

Software

 Self-Built and Hosted Website

   To learn web development, I decided to code and deploy my own portfolio website. This was done without CSS or JS libraries and with a backend written in Python3 using the Flask library. This website is deployed in using a docker container and updated using gitlab's CI/CD systems, ona locally hosted runner. An nginx reverse proxy is then used for routing and SSL encryption.
Due to my lack of knowledge about the security of Flask and Docker instances, I will secure myself in the only way I can: hiding in obscurity and not publishing the code for this website. However, below my Gitlab and Github accounts are linked where one can find other projects.

 Raspberry Pi Cluster

   To research distributed computing, I have designed and built a portable raspberry pi cluster. The 6 raspberry pi's (1 main and 5 workers) fit inside a rugged box equipped with a switch and wifi router to enable portable edge computing. The software running on the Cluster (linked below), is written in Python and uses a HTTP server and ssh for communication and file-sharing between the main and worker nodes. Some planned hardware upgrades include a 12V power supply with buck converter to be able to run the fans between 5 and 12V, and a hardware shutdown button rather than having to shutdown the devices over wifi. An initial version of the report on this project is linked below

 C++ for Scientific Computing

   For the 'C++ For Scientific Computing' course taken as part of my Master's program, I learnt the basics of C++ while build a simple linear algebra library, on top of which a electrical network solver was built. The focus of this report was not the finished code, but rather the development practices that where used to ensure the code was tested, documented and well structured.