Robert's repositories
PID-controller-simulator
This can be considered a homework for students who want to learn to implement a Proportional Derivative Integral (PID) Controller so I will not provide a solution just yet. This program is a simulation of the physics of a drone ascending. The drone has mass, it's in a gravitational field and has to reach a certain height. The drone is equipped with motors that do not have an instant response to simulate motors in the real world. The student has to write a PID Controller in the "pid.cpp" file and when he runs the program, the drone has to reach the target height as fast as possible with a minimal overshoot.
API_NXP-CUP_release
For now it supports only the ARC Board.
Clustering-and-K-Means
An University Project where I implemented the K-Means algorithm for clustering data points in a multi-dimensional space.
Distributed_Text_Processing
An orchestrator node distributes work (text to be processed) to other nodes on different machines. Each completes its tasks using a self-made thread-pool and reports the results back to the main node.
ELF_loader
A basic ELF file loader and dinamic memory alocator that loads pages into virtual memory on demand through the Soft Page Fault system call.
Flappy-Bird-Racket
A Flappy Bird game written in the state-less (funcitonal) programing language, Racket.
Image-compression-and-Face-recognition
A practical example of Linear Algebra and just how strong matrices are in mathematics. We compare different compression ratios by how much information is retained in the image as we use less and less memory. To reduce the memory we use the Singular Value Decomposition (SVD) algorithm on the matrices. We can retain a smaller part of the singular values obtained in the S matrix of the SVD algorithm and by doing this we lose some image quality. To perform the face recognition algorithm, we take a few images that we know contain faces and extract the eigenvalues of the images (that are after all only matrices of values). After this we check on other images that we give as input to obtain a certain percentage of the eigenvalues similar and after a certain threshold, we consider there are no faces in that image.
Intelligent-Car-Drivers
My written code for controlling the NXP car mottors, direction, reading sensor information etc
linux-io_uring-server
Asynchronous Linux web server using the io_uring async IO API
process_scheduler
A process scheduler simulator that swaps in and out of the running state multiple threads while also doing context switching.
Roll-the-Ball-Haskell
The game "Roll the Ball" implemented in Haskell and a solver for the game using the A* algorithm.
Router-packet-simulator
Used the Internet Protocol (IP) and the Ethernet/Industry Protocol (IP, I know, funny coincidence) to implement the ARP and ICMP protocols on a simulated router. The really nice part is the lookup time in the routing table that is very efficient. The lookup time is asymptotically O(1) by using the following data structure: a vector of 32 elements, and those elements are hash-tables. A position in the vector represents the network mask and there are only 32 possible network masks (practically there are only 31 but to be rigorous I implemented for 32) and for an incoming packet I must find on which interface to send it by making a logical AND between the destination IP and a network mask, prioritizing the smaller masks first. So I start in the vector from the 32nd element and see if the result of destination_IP & mask is in the hash-table. If it is, I found where to send the package. If not, I look further at the bigger masks. TLDR: because I hold my information in a vector of size 32 which has hash-tables as it's elements and my information is in those hash-tables, I can extract the information in a constant time.
sound-IDing-crazyflie-firmware
Based on the main firmware for the Crazyflie Nano Quadcopter, Crazyflie Bolt Quadcopter and Roadrunner Positioning Tag. Modified for identifying drones pseudo-uniquely based on the mottor sound.
superapp
Kotlin implementation of Trustchain and IPv8 with rich networking: multihoming of local Bluetooth+4G, decentral social networking, UDP hole punching, etc.