I'm a dedicated full-stack software engineer with a passion for embarking in new projects and pushing the boundaries of technology. Leveraging my expertise in object and component oriented programming, as well as both client and server side programming, I have gained experience in most industry standard languages such as C, C++, C#, Python and MATLAB, as well as web and interface programming such as HTML, CSS, PHP, Javascript, SQL and XAML. I've contributed to diverse projects, from enhancing factory automation systems to developing software solutions for live athlete data tracking. Thus, my knowledge and skills have left a mark in both prestigious industry and academic institutions, like the Museo Reina Sofía in Madrid.

SOFTWARE

GHOST IN THE MACHINE

CHECK MY GITHUB PROJECTS HERE -->

Software

A list of some of the software projects that I have completed:

University of York

  1. EVA (Automata Robot Arms) – Simplified user control class. "Armbot" control class developed in Python for two Automata "Eva" robot arms, using Automata EVA API calls, solving forward and inverse kinematics for the end efector position by applying lagrangian-jacobian matrix computation. Using Python.

  2. YORA (York Open Robotics Arena) – User interface for an interactive robotics arena LED visual system. Communication algorithm and web-interface using an ESP32 board for LED visual system on a custom-designed robotics arena. Programmed using Javascript, HTML and C++ using the Arduino IDE.

  3. RLIS (Robotics Laboratory Inventory System) - Asset management system for the robotics teaching laboratory. App developed using Javascript, Google Appscript, Google Appsheet and Google Sheets as database for data storage and accessibility.

  4. RPRK (Raspberry Pi Robotics Kit) – Serial communication interface algorithm between Raspberry Pi 4 and Arduino Nano 33 BLE through UART for a custom "RPRK" mobile robot that solves a maze. Generalised modular C++ control class to interface with platform sensors and send data through serial registers, couples with a general Python class to receive data and send commands.

  5. RPRK – PID Controller for the RPRK mobile platform, solving parametric proportional, integral and derivative control for the robot micro metal gearmotors, using encoder feedback to achieve accurate point-to-point movement and solve adaptative mapping and localisation.

  6. ARB (Arduino Robotics Board) – Simple modularised serial interface to send data through the UART serial registers, read data from all sensor pins for a custom PCB board for student projects.

  7. RASH (Robot Arm Servo Harness) – Arduino firmware for a custom servo harness that attaches to the EVA robot arm end-efector. The firmware interfaces between the two GPIO pins of the arm and an array of breakout servo pins. Using Arduino IDE and C++.

  8. RAPP (Robot Arm Pick & Place) - Pick and place algorithm using OpenCV and the Armbot kinematics class, as a demo project. Using the algorithm, the EVA arm can detect an object, pick it up with an implemented custom gripper, and place it elsewhere. Using Python.

Labman

  1. ARAD_CAPFEED (Cap feeder system) - Demo cap feeder system for bottle capping industrial robot. Increased throughput by improving the control process state machine. Using .NET WPF, C# and XAML.

  2. ANPR (ANPR Automated Parking Security System) - Created interface software to communicate with ANPR camera, building a computer vision algorithm to detect permitted cars at the company parking lot, for security purposes.

  3. ASWT1 (Particle Sizer Instrument) - Created a control algorithm and state machine for a particle sizer instrument, reading and writing output information into a an SQL database, generating an output file and SDS documentation.

  4. VWR (Vial Weighing Robot) - Control algorithm for a vial weighing and labelling robot using .NET WPF, C#, XAML, Linq and mySQL.

  5. STW (Software Training Workshop) – Shape, Calculator, etc test interface and database communication apps, for training purposes.

  6. PGRA (Particle Grinder Robot App) – Particle grinder interface and simulator using .NET WPF, C# and XAML.

ATLAS

  1. RACE (BLE Bluetooth Pods Antenna Testing Software) - Developed a test console application in .NET WPF to read Bluetooth Low-Energy Pods and output their name, signal strength and timestamp. Used to test a new antenna device to improve data capturing on finish line during races. Communicated with SQL database to store BLE data. Displayed data in public server and altered JavaScript based web-interface using React.js.

Complutense + Museo Reina Sofia

  1. SPAPS (Stereo-Photogrammetry Art Preservation System) – Manual and autonomous MATLAB control application, interface and control class for a static stereophotogrammetry cartesian robot used for the orthogonal 3D scanning of paintings and sculptures, dynamically adapting to the topological characteristics of the figure.

University of Leeds

  1. SMAPS (Stereo-Photogrammetry Mobile Architectural Preservation System) – Robot simulation for interior 3D mapping, path planning and localisation for a custom mobile sterophotogrammetry robot for 3D architectural preservation. Performance analysed against three different navigation algorithms and virtual environments. A navigation and computer vision algorithm was programmed using Python, ROS and OpenCV. Developed as final-year Individual Mechatronics and Robotics Project. Achieved a First (1st).

  2. RCB (Remote Control Buggy) – Arduino remote control algorithm for a designed remote control buggy between a ESP8266 and an Arduino UNO with a ESP32 antenna. PWM modulation and application of a PD algorithm for motor control. Establishing a dedicated WiFi network for responsive control, employing TCP (Transmission Control Protocol) for reliability and efficient data serialization for sensor data transmission.

  3. CVLP (Computer Vision Localisation Project) – Localisation and mapping algorithm using Gazebo, OpenCV and ROS for a simulated mobile robot. The robot had to navigate to a specific room in a virtual environment, find a card containing a cluedo character picture and detect which character it is using a neural network trained using Keras and Tensorflow.

  4. SRSP (Swarm Robotics Simulation Project) – Swarm robotics algorithm for a group of simulated turtlebot robots to achieve fast mapping of an obstacle course, utilizing CoppeliaSim and C#.

  5. STP Search-Tree-Algorithms (Queen coverage & Knight coverage algorithms using search tree methods) - Implementation of A*, breadth first and best first search tree algorithms to solve chess coverage problems using different chess pieces (Queen and Knight), using Python.

  6. MGP (MBED Gamepad Project) – 2D style Terraria game for MBED microprocessor. Using C to control graphics, joysticks, create control and object representation classes.

  7. MGDL (MBED Gamepad Demo Labs) – Test programs for every component, puffin crossing simulator state machine, other projects.

  8. LABA (London Autonomous Bus Animation) – Animation to promote autonomous buses for Transport for London.

  9. NVC (Night Vision Camera) – Handheld night vision camera

Chelsea Independent College

  1. Mario Web-Based Game - Simple Javascript HTML-based videogame about avoiding pipes as Mario.

  2. Keras MNIST Image Classification Algorithm - Neural network project to identify objects within a given picture, training the model on different generated datasets to vary object specialisation. Using Keras and Tensorflow.

Personal

  1. Web development

  2. MXSV (Mars Exploration Simulation Videogame)

  3. UAV (Unity Asteroids Videogame)

  4. UPV (Unity Pong Videogame)

  5. ARA (Arduino Robot Arm) - Control Algorithm

  6. Line-Following Robot - Control Algorithm