Robotics & ML Systems Engineer · Switzerland
I am an R&D engineer specializing in robotics, artificial intelligence, and real-time interactive systems. I earned a BSc in Communication Systems from EPFL and an MSc in Computer Science from ETH Zürich. My work spans robot autonomy, perception, reinforcement learning, computer graphics, and character animation, with experience at the ASUS Robotics & AI Center, Disney Research Studios, and GFaI.
I enjoy turning research ideas into practical, well-engineered systems—from autonomous navigation and learned locomotion to GPU simulation and interactive tools. Outside of robotics and research, I design and publish games through Kokoa Interactive.
Studio website where I publish and showcase my games.
I build research and production software across robotics, simulation, machine learning, and interactive applications. My recent work includes autonomy stacks, reinforcement-learning environments, real-time planning, GPU-accelerated simulation, and game systems.
I am passionate about game development and in fact, it is what drew me into programming. I have some past projects that you can
discover down below and, hopefully many more on their way in the upcoming years!
My background in analysis, probability, linear algebra, optimization, and geometry supports the systems I build. I apply these tools to motion planning, reinforcement learning, computer vision, simulation, geometry processing, and computational models of motion.
Java
C
C++
C#
Python
Scala
SQL
Rust
PyTorch
Tensorflow
CUDA
Unity
UE5
Blender
Development and deployment of autonomy stacks for robotics including perception, pose estimation, navigation, planning with both traditional and machine learning approaches.
Joint Master Thesis at Disney Research Studios and ETH Zürich: development of a data-driven character locomotion system within Unity, within the Animation Group.
Teaching Assistant for the Game Programming Lab course at ETH Zürich: Course preparation and mentoring student groups.
Research Engineer at GFaI: Research and Development of AI-based computer vision solutions in the Image Processing Group.
Software Engineer at EPFL Xplore: Development of rover navigation software, path planning optimization.
Student-assistant in:
A sci-fi survival simulation built for GMTK Game Jam 2026. Guide an unstable Uranium-238 atom through its radioactive decay chain, survive the hazards of an interatomic environment, and reach the stability of Lead-206.
Play on itch.io
The game turns the Uranium-238 decay chain into a roguelike survival journey. Players master mechanics inspired by alpha and beta decay while protecting each isotope long enough to progress toward a stable state.
A reinforcement-learning system that trains an ANYmal C quadruped to follow planar velocity commands across flat and procedurally generated rough terrain, progressing from stable standing to robust command-conditioned locomotion.
View GitHub
Build and study reproducible PPO policies for quadruped locomotion in Isaac Lab, including rough-terrain traversal, disturbance recovery, controlled gait evaluation, and robustness beyond nominal training conditions.
An autonomous navigation stack for a Flappy-Bird-inspired 2D environment. Nimbus builds a rolling local map from sparse laser scans, estimates obstacle clearance, and selects acceleration commands at 30 Hz using Cross-Entropy Method model-predictive control.
View GitHub
Develop a bounded real-time autonomy pipeline that converts sparse range measurements into safe acceleration commands while navigating a dynamic game environment through ROS 2.
A secure audio notification system that allows a Flutter mobile app to record short voice messages and automatically play them on an ESP32-S3 speaker device. It leverages a serverless architecture with Firebase Cloud Functions and MQTT over TLS for secure delivery.
View Github
The goal was to create a complete end-to-end IoT system for voice notifications. Use the mobile app to record 1-5 second clips, which are then uploaded to a private Firebase Storage bucket. A Cloud Function is triggered to generate a short-lived signed URL and notify the ESP32-S3 device via MQTT over TLS.
Real-time 2D heat and fluid simulation with CUDA and OpenGL interop. It uses the GPU for high-performance physics computations and visualizes results efficiently through direct memory mapping. I documented the implementation details in a series of articles on Medium.
View Github Read on MediumThe project demonstrates high-performance simulation kernels for heat diffusion and Navier-Stokes fluid dynamics. By using CUDA-OpenGL interoperability (Pixel Buffer Objects), the simulation data stays on the GPU for both calculation and rendering, avoiding costly CPU-GPU memory transfers.
A solo-developed game published on Steam after three years of development. Ink Link is a sleek world of action in 2.5D! Outsmart enemies, piece together platforms, and upgrade your skills to take on powerful bosses. Discover hidden paths as darkness creeps in and your ally-turned-enemy, Ink, tests your skills—and your will to survive.
View on Steam
The objective of this project was to create an end-to-end pipeline for in-hand object scanning with the Hololens 2. This project was developed together with Zikai Liu, Minguyan Chi, Dumeni Manatschal
View GithubIn this project, we developed a pipeline to scan objects in-hand. Roughly, speaking, we had to stream raw point cloud data from the Hololens, send them to PC via TCP, process them (clipping, denoising, hand removal, register and reconstruct the point cloud), while visualizing the intermediate results by sending data back to the Hololens. When the scanning is over, we post-process the obtained point cloud to obtain a corresponding mesh. More details can be found in our report.
This is the final project for the Computer Graphics course at ETH. We had to create a renderer during assignments and extend it with features of our choice.
View Github
I implemented support for both homogeneous and heterogeneous media, as well as textures, environment maps, textured area emitters, anisotropic phase functions and camera blur.
Together with Kay Lächler, we created a short fantasy animation of a Supernovae explosion as part of a project for the Computer Graphics course.
The Goal was to create a 1 minute animation of a supernovae explosion and get some practice with Unity.
A PyTorch/Tensorflow Machine Learning framework for Road Segmentation, developed in the frame of the Computational Intelligence Lab course at ETH, together with Mateusz Nowak, Alexey Gavryushin and Anne Marx.
View Github
The goal of this project was to get more expertise in image segmentation and Deep Learning architectures in general. The paper accompanying this project can be found here.
The objective of this project was to create a geometry processing pipeline that automatically determines skeletal deformation using various skinning techniques.
View GithubTypically in computer animation, when we create a specific animation sequence for some rig, we want the deformations to be automatically computed for any mesh controlled by the said rig. Indeed, manually modifying vertex-by-vertex is just unfeasible. This is solved by an algorithm known as "skinning". In a nutshell, each vertex is moved according to the underlying joints of the rig. This implies that each vertex needs to know which joint it belongs. Again, this can be computed automatically, and to have smooth transformations, we assign to each vertex a set of harmonically interpolated weights. Various skinning techniques are implemented such as 'Per-vertex Linear Blend Skinning', 'Dual-Quaternion Blend Skinning', 'Per-face Linear Blend Skinning'. To have even more compelling results, we also implement 'Context-aware Blend-Skinning', where using example poses helps give more realistic transformations.
More Geometry Processing algorithms can be found here
A rudimentary program that simulates the flocking behavior of birds. While the implemented rules are simple, they can give rise to complex social behaviors.
View Github
While not technically challenging, this small project was a great way to get some hands-on experience with various integration schemes (explicit/implicit/symplectic Euler etc.), as well as their respective (un-)stability.
More Computational motion algorithms can be found here.
In a team, we developed a complete video game from scratch, in approximately 3 months. The game is published on itch.io. You can find a review of the game on freeappsforme.
The Goal was to develop an enjoyable complete game in a short time frame. We managed to created an RPG/Dungeon crawler with a very special mechanic: In order to cast spells, the player has to draw symbols on the ground. The symbol is recognized and the corresponding spell is cast.
We studied the SZR model (similar to the well-known pandemic SIR model, but for zombies, just for fun) on a lattice. An interesting part of the project was to let agents automatically learn mitigation strategies using Reinforcement Learning, and more specifically the DQN algorithm.
View Github
I wanted to get some hands-on experience in RL algorithms. This was a good opportunity as I got to implement DQN in the multi-agent setting to automatically infer zombie pandemic mitigation strategies.
The objective of this project developed with Mateusz Nowak and Alexey Gavryushin was to automate the process of segmenting the mitral valve in medical videos. This can be useful as a first step for diagnosing heart diseases.
View GithubOne of the common architectures for image segmentation is the U-Net. We trained this neural network architecture on a few dozens of labeled (segmented) images in order to segment complete videos in a test set. As the number of parameters was of the order of tens of millions, we had to use Google Colab hosted GPUs in order to accelerate training and to have enough RAM to fit the batches of images in memeory. The preprocessing includes histogram equalization, data augmentation (crucially important to prevent overfitting to the very limited original dataset), reshaping, rescaling etc. The post-processing includes various filtering operations as well as as a final ensembling operation to reduce variance in predictions and increase robustness.
Given a neural network and some input that is classified to some class, it is surprisingly easy to maliciously impercitibly modify the input so that the network misclassifies it. In today's world where the trend is to employ AI Systems in increasingly critical domains (healthcare, security, etc.), it is of fundamental importance to certify that a network is robust against this kind of attacks.
View Github
The goal of this project was to build a DeepPoly verifier that provably certifies a given network is
robust against any L-infinity perturbation attack for some input images (MNIST). The idea is instead of
propagating the input values through the network, we propagate a whole convex shape around the given image.
The key challenge is to maintain soundness (never certify the network if it is actually not robust), while
being as precise as possible (being able to prove the robustness property when it actually holds). To this end,
the verifier network (The network verifying the original neural network) is contiuously optimized for precision
using backprop/gradient descent on its parameters.
For more details about DeepPoly, have a look at the DeepPoly original paper.
The step-by-step development of a ray-tracer.
View GithubThe goal of these mini-projects was to discover ray-tracing algorithms and acceleration datastructures, as well as getting familiar with writing shaders.
In this project we designed a road collision database, analyzed and optimized the query plans.
Learn how to design a database as well as get familiar with the impact of query optimization using indexes. The detailed report can be found here.
The aim of this project was to develop the navigation software for a rover developed by the EPFL Xplore student association. This includes environment map acquisition and processing, such that it can be used by a global planner for planning an optimal path to a given destination, as well as by a local planner for local collision avoidance.
View Github
The goal of this project was to develop the software necessary to enable a rover to safely
navigate in an unknown mars-like terrain, having as only source of information a Lidar-generated
map of the environment.
The detailed report can be found
here.
This modest simulation framework was used to easily prototype, test and compare different path-planning algorithms, with a focus on A* and RRT*. It provides a simple interface to visualize path metrics and profile, as well as means to easily tweak hyper-parameters.
View Github
Gain some insight into the implementation details of different path-planning algorithms and setup a framework to quickly prototype, test and compare different solutions.
My very first experience with programming and proudest achievement. I developed this little shoot'em up game within the frame of my high school maturity work. It includes 10 levels and bosses, 4 ships with unique characteristics, 5 spells, hidden levels and much more!
View Github
The goal was to have a first contact with the programming universe by developing a simple 2D game.
I went beyond and spent hundreds of hours working on this project because I couldn't get enough of it.
The result is still quite modest but it allowed me to have some solid experience in Java, designing
special effects and even music composition :)
The project report can be found
here (in french).
A little strategy game I developed together with Genc Kqiku
within the frame of a high school final year informatics course.
It includes about 10 thousands pseudo-randomly generated stellar systems, ships, various resources,
inventory system etc. Earth is in danger and your mission is to find a new planet suitable for life!
The goal was to create a strategy game with a background story and have to deal with databases to store all the data of the generated stellar systems. The LibGDX was chosen for its interesting features in UI design, but also for the ability to deploy on many platforms, mainly Windows, Android and iOS. However, due to time constraints, the game ended up only targeting Windows.
This little program was part of an introductory course to C++. It simulates a basic dodgeball game between simulated agents and thus requires no user input. The agents use the Dijkstra algorithm to search for each other.
View GithubTogether with David Schroeter, we developed this application that can display the night sky for any date, any time, anywhere on earth. It includes most visible stars, asterisms, as well as planets of the solar system. It allows the user to track a given celestial object, get information about it and much more!
View Github
The goal was to write a clean, easily maintainable, tested and robust GUI application using JavaFX, and have performance and usability.
This is a little Zelda-inspired game developed within an introductory Java development course, together with David Schroeter. It includes various enemies, weapons, maps, a short story and an inventory system.
View GithubWrite a simple RPG game in a clean fashion, especially regarding collision detection and interaction between different actors
The objective of this project developed together with Yingxuan Duan and Sofia Artioli was to enable the player to control in-game board movement by using a physical board. This involves capturing a webcam feed, applying various image processing techniques (smoothing, filtering, thresholding etc.) to retrieve the edges of the board, and a Kalman filter for continuous tracking.
View Github
The goal was to get familiarity and hands-on practice with fundamental elements of computer graphics (projections, perspectives, UI design), as well as implement various image processing techniques seen in the introduction to visual computing course.
This is a little program developed within an introductory Java development course, together with David Schroeter. It allows the user to generate a QR code for anything he would like to encode. Try it out!
View GithubThe goal of this project developed together with Yingxuan Duan was to recreate the well-known game Tetris on an FPGA, with an increasing score counter for each cleared line. It was great fun working closer to the hardware!
View Github
The goal of this project developed with Yingxuan Duan was to better understand the inner workings of a multi-cycle processor and develop some familiarity with VHDL. Though not handling all possible instructions, it still had everything needed to run on an FPGA the Tetris game presented above :)
View GithubI turned my master thesis at Disney Research Studios into a scientific article which got accepted at the ACM MIG'23 Conference. The paper is published and can be viewed at the ACM Digital Library.
Gueddach et al. Runtime Motion Adaptation for Precise Character Locomotion. In Proceedings of the 16th ACM SIGGRAPH Conference on Motion, Interaction and Games (Rennes, France) (MIG ’23).